Behind the scenes

FeedDemon in developmentI’ve had a number of requests to share more details of how I develop my software, so I thought I’d write about the tools I use. This is probably only of interest to fellow developers, so feel free to skip this if you have a job with normal hours :)

As some of you know, I used Delphi to create all of my shareware programs (HomeSite, TopStyle and FeedDemon), and I’ve been very happy with it (although I will admit that I’m toying with C# as well). One of the main reasons I use Delphi is because it creates fast executables that don’t require runtime DLLs. Before I created HomeSite I was a client-server developer working in Visual Basic, and VB’s runtime DLLs were a constant source of problems. I had enough trouble trying to support people in the same building who had DLL-related problems – I can’t imagine trying to deal with these same problems with shareware, where your application is used all over the world on countless different computer configurations.

Here’s a screenshot of FeedDemon as it appears in Delphi’s IDE while I’m working on it, and here’s one of TopStyle. As you can see, they look pretty boring at design-time – most of the eye-candy is created dynamically at run-time, which enables me to avoid allocating resources (memory, window handles, etc.) for features that aren’t being used. This also means that the apps start much faster, since they don’t have to create every single UI object before they load.

If you’re a Delphi developer, you may be interested in which third-party components I rely on. I try to write my own components when possible, but I do use a number of components from Developer Express, plus a few from TMSSoftware and Shell+. I should add that I’ve purchased the source code for every third-party component I use, and in many cases have customized them to do things they don’t support out-of-the-box (such as Unicode).

One of the things many of my customers have commented on is how fast my programs are compared to the competition, and this is something I’m proud of. Believe it or not, I trace much of this to the fact that I wrote games in assembler on a TRS-80 when I was kid. When you work in assembler, you really learn how things like memory allocation can kill performance. These days I rely on the AQTime profiler to locate the bottlenecks in my code, especially once the code is out of the beta stage. There were many days during FeedDemon 1.5‘s development where I spent more time using my profiler than I did actually writing code.

I use FinalBuilder to automate the entire build process (compile the software, build the help file, create the install program, etc.), and I couldn’t live without it. A few years ago I relied upon WISE to create my installers, but these days I use Inno Setup and recommend it highly.

Well, my inbox has become dangerously full in the time it took to write this, so it’s back to work for me. If you’d like to hear me prattle on about more development-related topics, let me know!

58 thoughts on “Behind the scenes

  1. Definitely keep this kind of thing up. I think there are a lot of us who are interested how you go from idea to design to development to ship. Any chance of showing us some of the design documents and initial thoughts and ideas that eventually became FeedDemon?

  2. Lee: Any chance of showing us some of the design documents and initial thoughts and ideas that eventually became FeedDemon?
    Nick: Hmmm…that’s a good idea, but I’d have to make some pretty serious edits. I tend to be pretty harsh about the failings of competitors when I’m writing my specs :)

  3. Nick,
    More posts like this! I would be interested in hearing about your work habits. What is a typical programming day like, how many hours of that day do you actually spend programming, and how many days a week. Also, how do you organize your programming tasks–how do you decide what you are going to do each day. You maintain such a high level of productivity that it would be quite interesting to learn how you do it.

Comments are closed.