Why I Use Delphi

Every now and then someone will ask why I develop my software using Delphi.  After all, there are more "modern" languages for Windows like C#.  And besides, Delphi is going to die eventually, right?

Funny thing is, 15 years ago when I was developing HomeSite I was getting razzed by some geeks for using a development tool that they said would soon disappear.  And yet 15 years later I'm still going strong writing software in Delphi.

Here's why:

  1. Speed.  Delphi isn't an interpreted language – it compiles to machine code, making it exceptionally fast.  Delphi's string handling is particularly fast, which is important when developing a string-heavy application (such as HomeSite, TopStyle or FeedDemon).
  2. No runtime. Languages such as C# and VB.NET require the .NET runtime, which is a separate 20MB+ download for customers that don't already have it.  I don't want to worry about whether potential customers have the .NET runtime installed, or have the correct version installed – I just want them to download my software and use it without any additional headaches.  The latest version of FeedDemon is a mere 3.4MB download (yes, download size still matters), and no additional download is required.
  3. Startup time. Related to the above, well-designed Delphi applications start quickly because they don't have to wait for any runtime to load (assuming it's not already loaded).  To me, this is a critical benefit.  Applications that take a long time to load have a low perceived performance, regardless of how fast they are once they're loaded.
  4. It's not created by Microsoft. Don't take this as vague Microsoft bashing, because I like much of what Microsoft does (if I didn't, I wouldn't write software for Windows).  However, past experience with Microsoft development tools has taught me that they're willing to sacrifice the needs of developers in order to push forward their agenda.  I like the fact that Delphi is created by a group of dedicated programmers whose single goal is to make it the best development tool possible.

I realize that many Windows developers are put off by the fact that ownership of Delphi has changed hands so many times, but I see that as a testament to how strong the Delphi community is.  By many accounts, the latest version of Delphi is the best yet, so if you're writing software for Windows and are lucky enough to be able to choose your development tool, you should give Delphi serious consideration.

BTW, I'm far from the only one to develop a popular application with Delphi – for example, Skype, Ad-Aware and Macromedia Captivate were also developed with Delphi, and there are plenty of other well-known Delphi applications.

 

HomeSite Discontinued

This is an ex-product Last night I found out that HomeSite has been discontinued.

I was surprised to hear this, but not because I thought it was premature – truth is, I was surprised HomeSite hadn't been discontinued a long time ago.  It's been almost 15 years since I created HomeSite, and I stopped working on it in 1998 when I left Allaire Corporation.  Several other developers took over after I left, but to the best of my knowledge nobody has touched it for several years, so the fact that it was still being sold until now is a nice testament to how useful people found it.  Kudos to Macromedia and Adobe for keeping it around, despite the fact that it competed with some of their other products.

Sometimes in this blog I've made disparaging remarks about HomeSite, but that's not because I disliked it.  It's just that it's hard to look at something you created so long ago without seeing all the mistakes that you've learned not to make since then.  I'm actually very proud of HomeSite, and very thankful that it enabled me to quit my job and work at home.  And, funny enough, HomeSite is also what paid for the home I'm living in now.

I'm also incredibly thankful to the great community that sprang up around HomeSite and helped make it so popular.  The Wikipedia page on HomeSite captures a bit of this history:

"Nick Bradbury and then Allaire had a policy of having an open support forum for those interested in its products, both current customers and prospects. The fans of HomeSite would contribute to the development of the product by making suggestions on-line and refining those suggestions amongst themselves. The Allaire developers would join in the discussion, participating and really incorporating user suggestions…Users responded to that respect and love for the tool by supporting each other and by creating and sharing a wide variety of HomeSite extensions."

These days it's common practice for programmers to actively involve customers in the creation of their software, but back in 1995 it wasn't the norm.  I certainly wasn't the first developer to take this approach, but I like to think I was one of the pioneers.  That more than anything is what I'm most proud of with HomeSite: in some small way, I hope I helped to break down the invisible wall between developers and users.  So much of our society's future depends on technology that we absolutely must open the lines of communication between those building the tools and those using them.

Anyway, I hope you'll forgive my patting myself on the back a bit here.  I've never had one of my creations go the way of the dodo, so I'm feeling a bit nostalgic at the moment, and I'm looking back and remembering the things (most of them accidental) that got me started down this path I'm on.

Update: I have to add that TopStyle 4.0 is an excellent replacement for HomeSite. It even has the tabbed HTML toolbars that were so popular with HomeSite customers.

 

If You Want to Write Useful Software, You Have to Do Tech Support

Before I fell into the world of shareware, I worked in the bowels of corporate America developing client-server applications.  And I hated it.

Perhaps the thing I hated the most was that I rarely talked with the people who ended up using my software.  I was given a list of requirements, told what was expected, and that was it.  I never found out whether my work met the needs of those using it, never got to ask them how I could improve it, never knew if my software was a blessing or a burden to them.

Apparently that was smart business, because the companies I worked for charged their clients an obscene amount for my work.  But it was a lousy way to write software.  The whole point of writing software is to create something useful – to create something that, even if in a small way, makes someone’s life better.  And how can you know whether you’re doing that if you don’t talk with the people who use your applications?

I broke out of corporate development by getting lucky with HomeSite, which I never expected to become as successful as it was.  Looking back, it’s clear that its success wasn’t because it was a “killer application” (it wasn’t), but because I opened the floodgates and directly communicated with my customers.  HomeSite wasn’t a very polished application (honestly, the UI is hard for me to look at now), but by talking with customers I ensured that it met their needs, which is the best any developer can hope for.

It seems so obvious: if you want to develop software that’s useful to people, you’ve got to talk with them.  But too many developers take the anti-social approach and consider customer support to be beneath their status.  Besides, talking with customers would distract them from important code-slinging.

Look, I can understand that viewpoint, especially if you’re working on something that’s very popular.  You can’t create anything if you spend all your time doing support.  But avoiding support completely is a big mistake. 

If you've never supported your own software, spending just one day doing tech support will be an eye-opening – not to mention humbling - experience.  You'll have to keep your ego in check, because most people who contact tech support do so because they're having problems with your software, some of whom will use colorful language to describe the annoyances they're running into.

But that's the stuff you need to hear.  You need to hear it because you're the one who can solve those annoyances.  You're the one who can get rid of all the things that prevent your software from being that kick-ass program that people recommend to their friends and co-workers.

You also need to hear an unfiltered view of what people want your software to do for them.  If you rely solely on your tech support team to tell you the features that customers want, chances are you'll develop those features without really knowing why people want them.

And that's not meant as a criticism of your tech support team.  When NewsGator was still doing tech support for FeedDemon, they did an excellent job of answering people's questions and forwarding feature requests to me.  But I would still follow-up with customers to figure out exactly why a feature was necessary, and quite often it turned out I didn't really need to add a new feature, but instead needed to change how an existing one worked.  A lot of feature requests were the result of people being annoyed with how an existing feature worked, and they wanted some way to get around it.

If you really want to write useful software, stop spending all your time keeping up with technology.  Don't worry if your resume isn't filled with the latest buzzwords.  Instead, invest your time in talking with your customers. They don't care what programming language you use - they only care whether your software meets their needs, and the best way to ensure that is by breaking out of your cone of silence and opening the lines of communication.

 

Dog Rescue

My daughter has wanted a puppy for as long as I can remember, but I always said "no way."  It’s not that I don’t like dogs; it’s just that we already have two of them (including the asshole), and I couldn’t imagine adding another one to the mix.

Well, last month, after years of playing the role of "evil Dad," I caved.  I finally said that she could have a dog – and there was an immediate rush to visit animal shelters before I changed my mind.

Visiting an animal shelter is always heartbreaking because you wish you could take every dog home with you, but none was more heartbreaking than the last one we visited.  This place was nothing short of inhumane.

Dogs left to sit in their own feces for days, cramped cages designed for one dog holding as many as three, an old, shaggy dog left outside in the heat without shade, etc.  I could say more, but I need to skip the rest of the details because we’re working to get the place cleaned up, and I don’t want to say anything here that could interfere with that process.

On each visit to this hellhole, my wife and I were drawn to a white German Shepherd/Husky mix who shared a dirty cage with her nine-week old female puppy.  These two beautiful dogs were in sharp contrast to the conditions they lived in.  It’s hard to explain, but if you’re a dog lover, then you know what I mean when I say that a dog’s eyes tell you so much about them.  The mother’s eyes radiated intelligence, warmth and courage.

So we decided to get them out of there.

Two days later they were in the back of my car taking a ride into the good life.  After a brief stay at the vet, they came home and were introduced to the two dogs we already own (who we hope have since forgiven us).  And it turns out our initial impression was correct – the mother is a wonderful dog, impressively smart and well-behaved, and also incredibly strong despite being underfed.  She loves to take long walks, runs faster than I can believe, and is a sucker for a double-handed backrub.

Her puppy, of course, has the energy of a cheerleader on crack.  One minute she’s fast asleep; the next, she’s pouncing on her mother’s head just for the fun of it.  The only thing on this planet that has more energy than her is my daughter, who bonded with her immediately.

I had completely forgotten how much work a puppy is, though.  It’s like having a new-born baby: it keeps you awake at all hours of the night, and you just can’t believe something so small could poop so much.  Like babies, if puppies weren’t so cute, then I’m pretty sure that out of sleep-deprived desperation we’d find some way to flush them.  But then they grow up a bit, you get some sleep, and realize they were worth the effort.

PS: We named the mother "Bella," and the puppy was named "Ripley" by our daughter.

 

Bing Search in FeedDemon

Now that Microsoft’s Bing search engine is live, I figured I’d create a "search definition" for FeedDemon to simplify subscribing to Bing search feeds.  Here's how to use it:

  1. View this page in FeedDemon, then click here to install the Bing search definition
  2. Click the Subscribe button, then type the keyword you wish to search for and click Next
  3. Select "Bing" from the list of search engines and click Next
  4. Select the folder you want to place this feed in, then click Next
  5. Click Finish

After installing this search definition, you’ll also be able to search Bing directly from FeedDemon’s address bar.  Before you can do this, though, you’ll first need to select Bing as your search provider from the search button at the right of FeedDemon’s address bar, like this:

Note that FeedDemon’s address bar supports all of Bing’s advanced search keywords, including the feed: keyword which enables finding RSS feeds about a specific topic (ex: type feed:fitness to find fitness-related feeds).

Update: FeedDemon's automatic error reporting shows that there's a bug in older versions of FeedDemon which may cause a file access error downloading the above file when not logged into Windows as an admin.  This bug was fixed in FeedDemon 3.0 RC2.

 

ANN: TopStyle 4.0 Final Release

Several months ago I announced that Stefan van As had taken over TopStyle and was hard at work on version 4.0.  Today I get to announce that the final release of TopStyle 4.0 is here – and it’s a whole lot better than even I anticipated.

Seriously, Stefan has done a great job turning the aging TopStyle 3.0 into a tool that I believe every Windows-based web author should own.  There’s a ton of new stuff in this release, including:

  • Unicode support
  • Live FTP editing
  • Extensible toolbars
  • Script insight for ASP (both JavaScript and VBScript), PHP and ColdFusion
  • Live spelling
  • CSS definition support for IE8, Firefox 3 and Safari 3
  • IE8 document compatibility

My favorite new feature is probably the embedded WebKit preview which enables seeing how your site will look in Apple Safari, along with a very slick preview of how it will appear in an iPhone or iPod Touch:

Head over to the TopStyle 4 web site for complete details, including update pricing and trial version download.

ANTI-DISCLAIMER: I no longer earn anything from TopStyle sales, so I don’t benefit from gushing about the new release :)

 

A-Listers Are Late to the Stream

Lately the geekosphere has been buzzing about how RSS is being replaced by the real-time stream.  Instead of getting our information from syndicated blog feeds, we’re now getting it via streams from Twitter, Facebook, FriendFeed, et al.

This isn’t new.  The only thing that’s new is that “A-list” bloggers are finally getting wise to it.

Outside the geekosphere, people have long relied on RSS to bring them a real-time stream.  But this stream doesn’t flow from Twitter or FriendFeed – it flows from the companies they work for and from the feeds they rely on to do their job.

Since introducing FeedDemon back in 2003, I’ve talked with countless people who are subscribed to feeds which tell them when their company (or a competitor) is mentioned anywhere on the web.  They’re subscribed to intranet feeds which let them know when a customer sends a complaint or compliment.  They rely on internal feeds to bring them the latest information about other projects going on inside their company, or tell them when an HR policy has changed or when an impromptu company-wide meeting is taking place.  More recently, they subscribe to SharePoint feeds which involve them in a real-time conversation with their co-workers.  Some of them even have feeds which alert them to the status of their web servers.

These people have relied on RSS-based real-time streams since the first day they used an RSS reader, and I count myself as one of these people.  For example, I’m subscribed to several feeds from NewsGator’s FogBugz server which are absolutely critical to me -  especially right after a product release – because they bring me error reports that customers send from FeedDemon.  If I get several similar error reports, I have to drop everything and focus on figuring out the problem so I can release a fix as soon as possible.

BTW, this is also why the river of news approach doesn’t work for everyone.  If you’re subscribed solely to feeds from popular blogs and web sites, a river of news is ideal – you get a flow of information that you can scan for stuff that looks interesting.  If you miss a story, no big deal – it’ll float by later if it’s important.

But if you’re also subscribed to feeds critical to your business, this approach is unacceptable.  You don’t want a flow of uncategorized, unprioritized information that combines articles from Boing Boing with items from your company’s internal feeds.  You need separation between the stuff you read for fun and the stuff you read because it’s critical to your job.

 

Download Size Still Matters

Is it just me, or has the size of downloadable software ballooned ridiculously over the past few years?

Call me old school, but this bothers me.  It’s like some developers assume their software is so damn good that it’s okay if it takes a long time for you to download it.  Their software is so fantastic that it deserves to occupy a ton of space on your hard drive.

Yes, I know, hard drive space is cheap, and high-speed internet is supposedly everywhere these days.  But that’s not the point. 

The point is this: if you’re a desktop developer, then your software has to compete with web applications.  You know, those applications that you run by simply typing a URL into the address bar?

Can you imagine typing www.google.com into your address bar and then waiting for a couple hundred megabytes to download before you could use it?  Can you imagine visiting a web site that required you to reboot your computer?  Or one that required you to install a ton of updates before you could visit it?  How popular do you think these sites would be?

If you’re a desktop developer, don’t make the mistake of thinking your software only competes against other bloated desktop applications.  It also has to compete with web applications that don’t require downloading anything

The days when you could get away with a 100+MB download just to try out your software are long gone.  You want to stay competitive?  Shrink your download and streamline your install.  Make the download so miniscule that trying it out is a no-brainer. 

PS: The latest FeedDemon 3.0 beta is a 3.4MB download :)

 

Is Your RSS Reader Broken?

Dare Obasanjo believes that RSS readers which are modeled after email clients are broken:

“…it seems to me that the way we think of RSS readers needs to fundamentally change. Presenting information as a news feed where the user isn’t pressured to read every item or feel like a failure is one way to move the needle on the user experience here.”

I couldn’t agree more.  The fact that FeedDemon’s Panic Button is one of its most popular features is a clear sign that information overload resulting from “RSS as email” is a problem among my customers.

It’s no secret that I regret designing the first version of FeedDemon to work like an email client, and every version since then has been an attempt to drag myself and my customers (some of them screaming and kicking) away from that model.  It’s been such a slow crawl out of that hole that I’ve often considered building something brand new instead of trying to morph FeedDemon into a tool that doesn’t make information consumption a chore.

But then I come to my senses, realize that I love being able to focus on FeedDemon, and get back to making it into the application it should be :)

So what do I think it should be?  I think an RSS reader should enable you to read individual feeds if that’s what you’re into, but at the same time it should sift through the noise and find the articles that interest you. 

Many services attempt to do that by aggregating the most popular articles around the web, but I’m not a fan of that approach since it brings you too much stuff you don’t care about (you might not, for example, care about Britney Spears regardless of whether everyone else does).  Instead, my approach has been to have FeedDemon pay attention to the stuff you’re paying attention to, and use that to locate the stuff that’s most relevant.

You can see this most clearly in features like “Popular Topics” (which shows you the most popular articles across all your feeds), and the new dashboard-like start page in FeedDemon 3.0.  If you’re unfamiliar with FeedDemon, or you’re not using the FeedDemon 3.0 Beta, here’s what they look like (click to enlarge):

FD3 Popular Topics   FD3 Dashboard

These are the kinds of features I want to focus much more on in FeedDemon.  I want to eventually build a tool that automatically brings you the stuff that’s important to both you and the people you “follow” with as little effort from you as possible and without violating your privacy in the process.

In my mind the “RSS as email” approach has been dead for quite some time, and it’s been a while since I invested in email-like features.  The real question is whether long-time users of RSS readers are ready to give up how they’re used to consuming their feeds (?).

 

ANN: FeedDemon 3.0 Beta 4 with Google Reader Synchronization

It has been fun watching the news spread about the latest FeedDemon 3.0 Beta even though I never “officially” announced it.  It started with a couple tweets from me, then spread to Twitter at large and on to web sites like Digital Inspiration, Shooting at Bubbles and Lifehacker.

So, I guess I should make it official now: the first beta of FeedDemon 3.0 with Google Reader synchronization is now available from the FeedDemon Beta Site.  If you're new to FeedDemon, you'll be given a choice between NewsGator and Google Reader synchronization at startup.  If you're already synching with NewsGator, you can convert to Google Reader by selecting Tools | Synchronization Options | Advanced and clicking “Convert Now.”

Since this is a beta release, it comes with the usual “use at your own risk” warning.  I try to make my beta releases very reliable, but there’s still a good chance you’ll encounter a hair-raising bug or two, so please don’t download this unless you’re comfortable using unfinished software.

I should also add that Google Reader synchronization is still a work in progress.  I’ve been using it for several weeks and overall it has worked very well, but there are some missing pieces.  In particular:

  1. Tags you add in FeedDemon are synched with Google Reader, but tags you add in Google Reader won’t always sync back to FeedDemon.
  2. If you convert from NewsGator synching to Google Reader synching, flags/tags you add to items that existed prior to the conversion may not sync with Google Reader.
  3. If you have thousands of unread items in Google Reader, FeedDemon will not download them all.  This isn’t actually a bug – I do this on purpose, primarily because I couldn’t justify consuming so much of someone else’s bandwidth to download items you’ll most likely never read.  If you have a ton of old, unread items in Google Reader, I recommend selecting “Mark all Read” to be free of them :)

The first two issues are ones I’m actively working on, and my goal is to have them resolved prior to the final release of FeedDemon 3.0.

PS: If you follow me on Twitter, please understand that I can’t provide tech support on Twitter (I’ve tried, but it just doesn’t work).  Our support forums are a much better place to report problems and ask questions!

 

Making Short URLs Suck Less

All this chatter about how short URLs suck makes me want to remind folks about FeedDemon 3.0’s “short URL preview,” which I blogged about a few months back.

As the screenshot below illustrates, just mouse over a short URL to see a balloon tip containing the actual URL it points to:

  

A even better example of this feature can be found in this excellent post from Digital Inspiration, which explains why FeedDemon 3.0 is “an almost perfect Twitter client.”

 

Anti-Virus Software Hates Us

One of the things I despise about Windows is how much time developers have to spend working around problems in third-party firewall and anti-virus software.

Case in point: I’m seeing quite a few error reports about the new FeedDemon 3.0 beta that are caused by AV software locking files that FeedDemon is trying to access.  Many AV programs monitor the file system for changed files, and when they find one, they scan it for viruses – temporarily locking it in the process.  This has always been a problem, but it’s now an even bigger problem since FeedDemon stores your feed content in a single SQLite database file.  Every time that database file changes, your AV software scans it to make sure it's not infected.

In some cases this causes file permission errors when FeedDemon tries to access its database, but more often than not it simply slows FeedDemon down since it has to wait for the file lock to be released.

Most people report that the new FeedDemon is a lot faster than previous versions, so if you’re finding it slower, chances are your AV software is the culprit.

The good news is that you can probably stop this from happening.  FeedDemon’s database uses the file extension .FDB, so if your AV software has an “exclusions” list, try adding the file extension .FDB to it.  If you can’t do that, see if you can add FeedDemon’s cache folder (File | Manage Cache) to its list of excluded folders.  Several customers who have done this have reported dramatic speed increases.

Of course, I can’t expect every FeedDemon customer to do this, so I’m looking into ways to work around these issues.  But in the meantime, give it a shot, and reply here if it makes a difference.

 

ANN: FeedDemon 3.0 Beta 1a

FeedDemon 3.0 Beta 1a (build 3.0.0.8) is now available.  This is an update which corrects some issues reported in the initial beta release (build 3.0.0.7), which was posted on March 30 but not announced here.

Download details and release notes can be found on the FeedDemon Beta Site.  As always, simply install this pre-release directly on top of your existing version - there's no need to uninstall first.  If you encounter any problems with this beta, I hope you’ll stop by the FeedDemon 3.0 Beta Forum and let us know what’s going wrong.

Since this is a beta release, it comes with the usual “use at your own risk” warning.  I try to make my beta releases very reliable, but there’s still a good chance you’ll encounter a hair-raising bug or two, so please don’t download this unless you’re comfortable using unfinished software.

Note: Google Reader integration is not in this beta, but we’re still hoping to get it in by the final release.

 

FeedDemon Beta Expiration?

If you’re using the latest FeedDemon beta release, it may be telling you that it expires later this week. 

Don’t worry – there will be an updated beta available tomorrow (March 30), so the annoying expiration message will be short-lived.  Sorry for not having a new build available before now, but I think you’ll be pleased once you see some of the new stuff:

As you can see from the screenshot, we’re moving straight to FeedDemon 3.0, which offers a shiny new UI and many highly-requested features.  Feedback from private testers has been very positive, and I hope you’ll like the changes, too.

Note: Google Reader integration will not be in tomorrow’s beta.  I’m still hoping to get it into this version, but we have some loose ends to tie up before that can happen (it’s a long story).

 

TopStyle 4.0 Beta 3

Yes, I know – things have been silent here for far too long!  I’ll return to regular posting soon, but in the meantime, if you’re a TopStyle user you’ll definitely want to check out the latest TopStyle 4.0 beta from Stefan van As.  Stefan has done some great work with the new TopStyle, so be sure to try it out if you haven’t yet.

PS: You can hear about all new TopStyle releases by subscribing to the TopStyle News RSS feed.