Behind the scenes

Behind the scenes.

I'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!  [Nick Bradbury]

Leave a comment