One week to go.
Five weeks have passed since I decided to give up my day job and go full time developing and selling my own software, only one week left working for someone else. Where has the time gone, it’s just flown by!
I’m really excited about my impending freedom, every day I think of new features for CaseDetective or have them suggested by users, I can’t wait to have the time to implement them.
As briefly mentioned in my last post I’ve really started to get a good solid bunch of tools and workflow together over the past few months while producing the Betas and eventually the final release of CaseDetective. I thought it would be nice to quickly itemize them:
Hardware
My main development machine at present is my PowerBook running Mac OS X 10.4.3, I’ll no doubt switch back to my dual processor G4 once I’m based in my home office permanently. At present it’s convenient to have a laptop while I’m spending most of my day away from home, catching the odd half hour during lunch to update docs and the occasional bit of development.
My main server is a Mac Mini running Mac OS X Server 10.4.2, this box runs my version control, main FogBugz application and all other server like stuff (DNS, domain control, home dirs etc).
I also have a few Wintel boxes, 1 is running Small Business Server with FogBugz running under MS SQL Server, another is a WinXP client and another is my old Debian Linux server. They all come into play for testing, but aren’t used for any development itself.
I also use Virtual PC on my laptop for quick (well, convenient) tests of Windows builds on various flavours of Windows, from Win98 through to WinXP. I also use it for building my Windows setup application for CaseDetective as it can read all the files off my PowerBook’s hard drive without network access.
Development IDE
As regular readers are most likely aware I use RealBasic by Real Software to develop CaseDetective for both Windows and Mac. I started off using RB5.5 over a year ago now, and only switched to using RB2005r2 a couple of months ago.
I really like RB2005, the improvements in the language from RB5.5 to RB2005 have made the change in IDE more than worthwhile, and I’ve grown to love the single window format of the IDE. I also like the new window design guides very much, and love the fact that I can have objects such as timers sitting outside the window on the back canvas and not cluttering up the window. Although search within selection is still missing I find the new search results tab very usable, I love that I can see all the matches in a list and select which ones I want to replace all in one go, it has seriously sped up search and replace (which you do a lot of when re-factoring young code). It’s all very VB.NET like, but in my opinion much much nicer.
I’ve since moved on to RB2005r4 which brought with it some nice additions to the language but also a couple problems, which may be due to bugs in the IDE or my code. I had developed some custom bindings to link up different data provider and consumer objects within my UI without having to duplicate lots of code, it worked really well until I moved to RB2005r4 when all of a sudden I got some assertion errors when compiling. To this day I don’t know whether it’s something I’ve done wrong and was just getting away with earlier or whether there’s a bug in the compiler, but I’ve found some neat ways round it by implementing a MessageCentre module. It’s working nicely for the conversations I had the errors with, I think I’ll start using throughout as it actually brings with it some nice features I’ll find useful in the future.
Anyway, using RB makes it a snap to design and write code once and compile for both Windows and Mac (could do Linux as well if I wanted, but I’m not going there just yet), it’s great for working with databases and without it CaseDetective probably wouldn’t have been built.
Graphics
Photoshop. Need I say more? Oh, OK, Photoshop 7.0, it costs way too much to upgrade every blinking release, so I’ll wait until the version ready for Intel Macs is ready before upgrading again. If it were cheaper I’d of upgraded every time and probably given them more money in the long run, but from their revenue it looks like they’re doing OK as it is!
Website Creation / Help Doc Content
I’m using RapidWeaver from RealMac Software for both website development and user guide content creation.
I’m a refugee from CityDesk, which was very nice while it was being developed and supported, but Fog Creek have all but officially dropped it, Joel has mentioned in a couple of interviews that it’s not been that successful and he’s got no interest in it any longer. Which is a great shame as it was a great little app that allowed me to design a basic template for my website once and then just write content for ever more afterwards. However, since then I’ve moved to a Mac as my main desktop and even though I continued to use CityDesk in Virtual PC it wasn’t too long until I started looking for something a bit better.
Then I found RapidWeaver, which has quickly found it’s place in my arsenal of tools. It’s just so darn easy to use, with great built-in and third-party themes and plugins. The community around RapidWeaver is fantastic, a great (huge) bunch of people that recognize just how nice the app is.
Since I’ve started using RW I’ve found it very easy to build my website, and now I use it for creating the basic HTML for my help docs too with a very simple plain theme I’ve created especially.
Help Doc Publishing
for converting my HTML help docs into properly formatted indexed and searchable help docs for Windows and Mac I use HelpLogic from Electric Butterfly.
HelpLogic is a superb little app that allows me to structure and add meta data to my help docs and then output to Windows HTML help and Apple’s Help Doc formats, as well as a nice web ready format. I originally used Electric Butterfly’s UniHelp module to display my help in CaseDetective but found the naming conventions it needed the html to be too constricting, and also felt it would be nicer to use native Windows and Apple help formats just for userbility and consistency.
Once I’ve got the output from HelpLogic all I have to do is drop the folder with the Apple Help Doc stuff into the Help Indexer that comes with Mac OS X to give it all the indexes etc that Apple’s Help Viewer application needs and then copy the whole folder inside the Bundle created by Real Basic when I compiled. For the Windows help I flip over to Virtual PC to run Microsoft’s HTML Help Studio which loads the file generated by HelpLogic and compiles it into a CHM file. I could have used the Microsoft HTML Help formatted output from helpLogic as it was, but I prefer the single file format, which HelpLogic does all the prep work for already.
Application Setup
For building the final Windows setup application I use Jordan Russel’s Inno Setup. Inno setup is a breeze to use and builds nice simple compressed Windows setup files that save a lot bandwidth and do all the heavy lifting needed when setting up Windows software. It takes virtually no time for me to build the setup file, I simply update a couple of strings which hold version info and then click compile, that’s it.
For the Mac OS X disk image with it’s simple drag the app to install interface I use FileStorm. It’s child’s play to use, and now takes me exactly two clicks of the mouse to use once open. One click to say “finalize” which starts the build off and another to confirm that I want to replace the .DMG I’ve already got from the previous build, so if I deleted that first it would be a one click wonder once opened.
Both of the setup compilers above took a little bit fiddling to get right at first, but now they just work.
Version Control
I use Perforce to version all my source and third party objects. It’s fast and has a nice easy to use GUI, so I’m more than happy with it.
Wrap Up
To get everything up on the servers I just hit the Publish button in RapidWeaver, my download page picks up the setup files if they’ve changed and sends them on their merry way to my domain host provider.
The online docs get transferred via Transmit, a quick Sync of the folder on my Mac and they’re up online. Transmit is a great FTP application, no Mac user should be without it.
And that wraps up this post, I’m bound to have forgotten a few things, if you want to know anything else about how I develop CaseDetective, please post a comment and I’ll try and answer.
Oh, nearly forgot…
Bug/Feature/Inquiry Tracking