January 31, 2003
PhotoStudio 2.5
ps_screenshot3s.jpg
My mate John has finally released a new version of his photo organising tool Photo Studio. About time!        
Posted by Simon at 02:53 PM
January 30, 2003
Build Management

I go on about this every so often, and a while back posted to my blog about it. I was reminded about it again by a recent article on JoelOnSoftware. I want a tool to build everything for me - installers and all. This tool should be completely automated, and should probably be able to make me a cup of coffee as part of a build - if I wanted it to.

More importantly, this tool must not be batch files or anything too make-like. In the past couple of days, I've evaluated these: scons, tmake, make, ant, nant, FinalBuilder, cons and jam.

Here are my thoughts:

Tmake, SCons, make, cons and jam are all very focused on doing the build bit right (some more than others) and I'm sure they do this well. Unfortunately, most have syntax that is too complicated for casual users, and don't deal too well with the less build-centric tasks such as retrieving code from a source repository, or zipping the build result up. Therefore, I went looking for better stuff.

Ant: Fantastic. So much work has gone into this it's incredible. Unfortunately 1: It's written in Java. Unfortunately 2: This means that everything is java-centric. There is very little support for doing anything non java-related, and this makes it unusable (IMHO) for anything but a java project.

Nant: Hmmm... I want to say fantastic, but I'm left short. I wrote a build script, and it did everything I wanted. It checked my source out of source control, built the project, moved some files around and built the installer. The only problem is it looked a bit like this:

<exec program="cvs...
<exec program="msdev...
<exec program="issc...

Now, I don't know if it's my imagination, but this looks a bit like a glorified batch file to me. Nant just doesn't have the multitude of excellent tasks that ant has, leaving it sorely lacking in the functionality department. Don't get me wrong, I didn't exactly expect it to have a task for building an Inno Setup installer, but CVS should surely be a no-brainer feature. Nant itself is available from CVS! Also, there are some tasks not normally bundled with Nant in the NantContrib project, but these don't even seem to have a nice download page (or any web page for that matter) with the tasks in compiled form.

Also, Nant is too .NET and VS.NET focussed. This could be a fantastic tool if only it diversified away from its .NET roots a bit. Also, offering simple tasks like ones to build .sln or .dsw files would make many build scripts a lot simpler. A task to enable/disable the Platform SDK for those of us building old VC6 projects? Things like this would make it an indispensable tool. I've not given up on Nant yet, but it's only a matter of time if I don't find developing the tasks myself simple enough... I've begun writing a simple VersionInfo updating task - that's right, one which doesn't just update an Assembly Info thingy. Gotta love us old-fashioned (non .NET) windows developers.

FinalBuilder: Lovely product developed in Delphi, which wins it a special place in my heart. It's very fully featured offering lots of exciting capabilities (although I thought that it could possibly fall a bit short in building and dep-checking complicated C++ projects without VS project files). It even has Inno Setup support. However, FinalBuilder is $300 and therefore is not suitable for my open-source software needs.

So to summarise, I didn't find anything that did what I wanted. What I picked was Nant - for now. If I manage to create some productive tasks, then maybe me and Nant will survive fine. Otherwise, I'll be off looking again.

Posted by Simon at 11:37 PM
January 28, 2003
MCP Magazine Review

From this issue of the Developers Central column from Microsoft Certified Professional Magazine Newsletter written by Mike Gunderloy:

- Programmers Notepad is a freeware editor that features customizable color-coding for many file types, the ability to save and load projects, bookmarks, indentation control, HTML preview, hex editing, regular expressions in search and replace, and all the basic text-editing tools that you'd expect. It's not a full-fledged programmer's editor in that it doesn't have a macro language or hooks to call compilers and linkers. But it's very fast to load, despite a fairly full plate of features.
http://www.pnotepad.org/

Thanks Mike! I should note, that I regularly call compilers and linkers from programmers notepad, so the review isn't entirely correct, but it's great all the same.

Posted by Simon at 11:05 AM
January 20, 2003
Re-Creating INN Overview Files

I run a linux mail and news server at home, and I use the news server to monitor all of the mailing lists I read - nothing can beat proper threaded news. I discovered the other day that I wasn't receiving messages in a couple of groups, and today discovered why. The error in my news logs contained the phrase "server cant store article : File exists" (their bad grammar).

An improper shutdown a week or so ago had corrupted some of my "overview" and / or history data. I gathered from google groups that I needed to rebuild this, but it took me ages to find the information that told me how to do this. Therefore, in the name of helping some poor soul like me, this is how I did it:

I am using debian linux and my history files are stored at:
/var/lib/news

My news binaries seem to be here:
/usr/lib/news/bin

The commands I typed were:
cd /var/lib/news
rm -f /var/lib/news/history*
rm -rf /var/spool/news/overview/*
/usr/lib/news/bin/makehistory -O -e -f history.n -l 600000
/usr/lib/news/bin/makedbz -s `wc -l <history.n` -f history.n
mv history.n history
mv history.n.dir history.dir
mv history.n.hash history.hash
mv history.n.index history.index

I hope that helps somebody. These commands successfully rebuilt my history and overview files and I'm now receiving all of my news properly again. Now I just need to find some way to avoid losing mail if my server ever dies again.

Posted by Simon at 08:34 PM
January 14, 2003
Templates, you've gotta love 'em

Templates are the best discovery that I've had in my software development life - or they are at least in the runnings.

In the last year or so I've begun to really get into powerful C++, beyond the basic function of the language. Almost all of the things that have excited me are template related. Today, in one simple action I generalised a string tokenising function to work on any basic_string derivative class, saving quite a bit of work. I did this simply by making the function a template function.

My windows application writing has switched almost entirely to using WTL and I really feel like I am lots more productive using this than when writing using MFC. Also, through using WTL (and more win32 code) I understand the work that I do with MFC a lot more. I can't help but think that abstracting away the underlying operations like MFC does is harmful to the MFC developer.

It upsets me when I think that I'm only beginning to discover the real power of C++ when Microsoft is trying to persuade me to use the wonderful new C#. This language has no templates, and from what I've seen offers me little more than Delphi does - with a slower execution speed.

Posted by Simon at 10:35 PM
January 13, 2003
Happy New Year and Update

A very happy new year to anyone who actually reads this, and I hope you all had a great holiday break. I took time off development over christmas, having released a new build of pn2 to sourceforge just before (which I didn't announce anywhere, slapped wrists).

The new build includes style customisation (yes, an options dialog!), printing and some other basic services missing from the last release. I've now started work on v0.3 which will include keyword customisation (already complete, testing needed), and tools support. Once basic tools support has been implemented, I will launch v0.3 as this feature will need quite some testing.

After 0.3, we move on to some less-core functionality like the docking windows (or helper windows). I also have some interest in branching the project at this point into two projects. First, the fully-featured MDI application that we know and love as PN2. The second project would be a mini-pn style application which would be a lightweight base-services only notepad-style program. I will only do this if I can keep a large amount of the code shared between the two to ease maintenance.

Please remember, all comments and bug reports on pn2 are always welcome. Please feel free to enter such things into the sourceforge tracker.

Posted by Simon at 11:33 PM