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!
Very cool! Thanks Nick…
Prattle on! I would like to hear more about your development process.
Thanks for taking the time to share.
More development related posts would be much appreciated.
As an active developer, I’m always interested in hearing what others do.
Cheers,
Pete.
Always interested to hear more on how you accomplish your amazing work…
This is very interesting. Thanks for sharing.
Btw, if you do load objects at startup, how do you manage their ‘positions’? What happens when user resizes their Topstyle/FeedDemon window? Do the Delphi components do heavy lifting OR you have coded it yourself? I am interested in knowing because you might know that in VB it’s kind of pain to create these kind of App which ‘scales’ along with window size and screen resolution.
JD
Behind the Scenes at Bradsoft
Nick Bradbury posted a behind-the-scenes look at how he develops FeedDemon and TopStyle, including design-time screenshots of what his products look like in Delphi. Cool stuff. Like Nick, I also do most of my work in Delphi (NetCaptor and other
TRS-80! Wow!
I remember writing assemby language stuff for the Commodore64, Load X, Load Y, all that good stuff. I thought I was a dinosaur for this, but I think you’ve got me beat by 6-7 years, in terms on ancient technology.
Did you have a cassette drive, too?! ;-)
JD,
I cant speak for Nick, but Delphi has always had excellent capabilities for creating resizable windows with no code required. This is another of the things we say to .NET programmers “I’ve been doing that since 1995”. :-)
SOFTWARE: FeedDemon 1.5 and ATI Catalyst 5.2 Released!
Bring on the development related posts!!
Thanks. I still use (pre-Macromedia) HomeSite to manage the SiteMeter.com code although at some point I suspect I’ll switch to Visual Studio. And your TRS-80 comment got my attention. You may remember a game I wrote back in those days called “Volcano Hunter”.
Alex, yes – I did have a cassette drive :) BTW, this was a TRS-80 Color Computer, which was out about the same time as the C64.
How do you test your applications? Do you have a team or use and automated tool?
Nick has lots of eager users to beta test for him ;)
Excellent post Nick I am not a developer but it is still very interesting to read.
I work as a Network Admin for Xerox in the UK howeve I have been toying with the idea of learning a ‘simple’ language such as VB.NET just to make life as an admin easier (at the moment I rely on Windows Scipting Host using VBS files). I have never even seen Delphi code before so it was pretty cool reading your post.
As for testing, I have wondered if you do have a group of users who test FD for you or if you do the testing yourself?
Feed Demon
Nick Bradbury releases FeedDemon 1.5 and shows us a bit on how he develops.
Ugh. Better you than me. I thought writing XHTML and CSS using Topstyle was a pain. It’s becoming clear to me that there are programmers, and there are users of programs. I’m a user…most definitely a user…
L-SHIFT-O,8,1 BABY!! Keep writing about the development stuff!
Excellent post. Even though I’m a c++ developer I still gain a lot from what others use. Case in point: timing. We’ve been looking for something at work for timing VB6. It’s one thing to read a review on the product site, it’s another thing entirely to read a recommendation from someone who actually uses it for decent development.
Outstanding Post.
I love hearing how other developers work.
One question if you do not mind.
What version of Delphi do you use (obviously 7 from the pics), but Enterprise/Personal Architect.
Also, who sells it the cheapest ?
Thanks!
Tim
Yes, keep the development posts rolling. I’m one of the folks that have probably asked you a half dozen times over the years (since the HomeSite 1.0 days) what tools you use for various things (being a Delphi dev myself).
Curious though, I see that FeedDemon was loaded into D7, but was shocked to see that TopStyle was only in D4. Really? TopStyle hasn’t been moved up to at least D7? Right now all of our stuff is in D6, and I’m considering making the move to 2005 once all the 3rd party controls catch up. (I mainly use the same set of 3rd party apps you do, so I feel good about my decisions )
…ah yes, and I also would like to hear if you currently use the Enterprise or Pro versions of Delphi. (And if you plan on making the move to Delphi 2005, and if so, which level)
Thanks for the post.
One question . . . do you use databases? XML stores? files? How do you handle the storage/persistence sde of things?
Great read Nick – you should consider putting this stuff into some focused articles. I’m a Java guy but it’s DOA as far as the desktop goes – and I’m not keen on the .Net runtime either – maybe Delphi is the way to go!
Very interesting, specially the comments on how and why you do what you do :)
And about beginnings… SYS 64738 :D
Oh the luxuries of a Commadore 64 – I started on a Vic 20 without tape drive! Hours of typing in code from Byte magazine, seconds of run time, then *poof* gone. Then I moved up to the tape drive. Ah, fond memories of “could not load”…
Despite that, I’m not really a programmer (I’m safely confined to a bit of PHP and JavaScript). So my question is, how long does it take to create a program like TopStyle? I realize that is a bit tough to answer, so how about from concept to “working” model to beta to release candidate?
Thanks for sharing that. Yes, more developer related posts would be great! :)
Nick,
What do you use for source control? Do you keep off site backups as well?
Thanks!
Humberto: How do you test your applications? Do you have a team or use and automated tool?
Nick: I’ve never had much luck using automated testing tools with GUI applications. Instead, I rely on open betas for a large (and varied) group of testers. I also “eat my own dogfood” by using my own software every day, which really helps uncover usability issues.
bry: I see that FeedDemon was loaded into D7, but was shocked to see that TopStyle was only in D4. Really?
Nick: Yep, really. I have no reason to upgrade TopStyle to D7, since that would result in a larger EXE with no real customer benefits. I use Delphi Pro.
Lauchlan: do you use databases? XML stores? files?
Nick: I try to use human-readable data files, since I’ve never liked the idea of locking customers in by keeping their data hostage. In FeedDemon’s case, I use XML to store data wherever possible.
Tim: how long does it take to create a program like TopStyle?
Nick: That’s hard to say, since so much work is done in my head before I “officially” start coding (ex: I designed TopStyle 3.0 in my head during many long, solitary bike rides and runs). If I had to guess, I’d say about six months from initial conception to actual working product.
TownDrunk: What do you use for source control? Do you keep off site backups as well?
Nick: I use SourceSafe, which has always worked well for me as the sole developer (but I have some SourceSafe horror stories when I did team development). I make regular backups onto an external hard drive, and every month or so I backup to CD and give the CD to a friend to hang onto in case my house burns down.
Very interesting stuff. I am also curious, what do you use for issue tracking? I have yet to find a decent web-based issue tracker that I can use and I really wish I had one.
Kevin, I use FogBUGZ (http://www.fogcreek.com/FogBUGZ/ ) for bug tracking.
Hi Nick, Re: DLL / installer / encapsulation – you might be interested in Thinstall (shhh. secret)
Nick, you have posted the providers of the components you use and I use some of the same too. However I am interested what kind of tab control do you use for the TopStyle documents. Is it custom build or is it from any of the mentioned providers?
Petko, that tab control is my own creation.
Nick, that was a nice little insight! I’d really appreciate more of this.
Are you using a code formatter? In not, why not? I for one cannot live without one any more, it’s just great to hack away, press a button, and see everything indented nicely! :-)
Ohm and Kevin, I can recommend Mantis for web-based bug tracking. And JediVCS/FreeVCS for source control if you are a Delphi developer, but I might be biased on that one! ;-)
Holger, I don’t use a code formatter – truth is, I write my code so that it’s logically formatted to begin with. Most likely that’s because I started programming before code formatters were all the rage :)
So, Nick, have you tried inline XP-style test cases? This has saved me a load of trouble in C/C++/C#.
I can’t say I’ve tried using Delphi.. looking at that syntax hurts my eyes more than VB.
Nick Bradbury und Delphi
Bin gerade auf einen ziemlich interessanten [Artikel](http://nick.typepad.com/blog/2005/02/behind_the_scen.html#comments) bei [Nick Bradbury](http://www.bradsoft.com/index.asp) gestoßen, der einen kleinen Einblick in die Entwicklung von FeedDemon und …
Hmm, I thought you were using Delphi 5 or 6 still, but I see you moved over to Delphi 7? Since when?
Nick, did you create the code editor component or purchased it? Do you know any third party component that offers syntax highlighting for xml files?
Nick –
As a Delphi developer who’s quite a few miles behind you (grin), I really appreciate your openness and humility. You’ve been a tremendous encouragement to me — and I suspect many others — in more ways that you probably even realize.
I’ve had many of these same questions re: what you use, things you’ve learned along the way, etc., but have always figured you have enough questions in your inbox as it is… so I’ve generally abstained from asking. Thanks for responding to the others who were a little more invasive. : )
I’m posting this just so you’ll know that there are many of us who appreciate the “experience-based developer findings” that you post, and to encourage you to continue to post them. Posts like this are worth their weight in gold.
Behind the Scenes
Over the last while, I have had a few of requests to share more information of how I develop my software. Today I noticed that Nick Bradbury (author of HomeSite, TopStyle and FeedDemon) did just that, as well as Adam Stiles (author of NetCaptor). So I …
FeedDemon 1.5 “Behind the Scenes”
The honorable Mr. Nick Bradbury, whose most distinguished honor is to have written the only software titles that ever made me consider getting a Windows system on the side, has a write up about the tools of his trade, the very handful of utilities that…
Umm, are other budding developers listening? Note the elegant interface folks — it makes a difference.
FeedDemon v1.5 RSS Reader Reviewed
Een uitgebreide test van de FeedDemon v1.5 RSS Reader op HowtoBLogForFun
Behind the scenes
Nick Bradbury gives us an inside look on how he develops TopStyle and FeedDemon.
Adam Stiles follows up Nick’s post with an inside look at the NetCaptor development process.
You’ve got a lot to do so I really appreciate the time you’ve taken giving us this.
Some things that interest me (I work in .NET, so excuse any mindset differences in here!):
1) What do you do for source control?
2) If you take a break (say 1 week and 4 weeks) how long does it take to get back into the swing of programming? (Measured as days to full speed and estimated days lost!)
3) What technologies have you tried and found to waste time rather than improve the job?
4) What’s your take on design modelling (UML….)?
5) Unit testing? and code coverage?
Cass, thanks for dropping by a letting me know that this has been a helpful post. Given the number of comments here, it looks like this is a popular topic – so expect to see more posts like this one in the future.
Really interesting! I would like to see more of this. As a developer myself I find it intereesting to see how other developers work and what they work with (which utlities, languages etc.). So keep on writing Nick :)
Behind the Scenes at FeedDemon
Nick Bradbury, who wrote the legendary HomeSite and now FeedDemon, made a really good post to his blog about the…