Archive for February, 2003

Another update

And a substantially improved version of JujuEdit is posted for beta testing! One of the new features added is a little dialog box for specifying a line or bytes position to jump to. Implementing that reminded me why people who work in Delphi and VB scoff at the complexity of handling UI stuff in C++… it sucks! It probably took me the better part of an hour to implement this thing, when really it should be doable in just a few minutes, given the simplicity of input required.

More downloads

Am starting to get a steady trickle of visitors who actually download something (fairly rare normally). Most of these are people who have kindly volunteered as beta testers, but it is gratifying to note the odd unsolicited visitor who Googles in and downloads something related to their search query (eg a sample book or jujutool, both of which can be found at the delightful page of downloads)

Hmmm… it’s hard to see which might be more boring: talking about site traffic or talking about software. I wish I had something more stimulating to offer. How about… the fact that I’m anti-war! How’s that for a controversial stance, eh?

Speaking of George…

Almost got sucked into working on George again tonight… that project is very off limits because of its amazing ability to make whole months disappear at a time. Part of the reason for this is that testing involves a lot of zooming about looking at pretty imagery of planets and stars, and before I know it I’ve inched another couple of hours along the time line. Unfortunately for my 3d programmer’s ego, it is all a bit old fashioned now, although I’m still not sure if anyone has actually bothered to make a realistic space flight simulator (with realistic physics and no bogus star wars viscous ether to fly around in).

Regular expressions

Warning! Nerd-speak follows…

I don’t know if I’m the only software developer doing it this way but I like to use regular expressions to handle my syntax hilighting. The trick is to get it to return a style code when a match of a certain part of a string is found.

The following regexp defines the format of a CSS document for the benefit of JujuEdit.


This incredibly ugly but fairly compact expression tells JujuEdit to render CSS text thusly:



body {
   margin: 0;
   background-color: #fff;

   font-size: 70%;
   font-family: Verdana, Tahoma, sans-serif;

   margin-left: 3em;

I’m fairly pleased with this particular example, since it demonstrates my first use of a modal regular expression, ie, the expression is like a program which can set a state variable and test that variable later on. This helps it keep track of whether it is currently inside or outside of an element definition, and could even be modified to help flag user errors. It brings a regexp closer to being able to define a grammar [although in the long run it would probably make more sense to use a grammar parser to define a grammar]

Beta testers welcome!

Ok, so I now have 3 bits of software online for testing! JujuEdit, Reader and eLibrary are all available to registered beta testers. I beg you to register, even if only vaguely interested; I just need people testing the software! In fact, even if you don’t want to register, I still want you to download stuff and try it out (if you’re game), so here’s the beta download page.

So, here we go again… hopefully this time I will keep the things online and get some good feedback. Last time (a few months ago) I think I was startled by the lack of it (with a few notable exceptions). There are few things more damaging to a project than the sense that no one wants it…


Finally I’ve made some BookReader improvements! Mostly fairly trivial stuff but makes the thing a lot more pleasant to use. Try out one of the sample books available for download.


I removed the VR applet from this page [you can still link to a popup version from the thumbnail below], as it was drastically slowing load times, and kept stealing focus when the mouse cursor moved over it.

Ok, so the new JRE is way friendlier, installing jar file associations so that a jar file can be run simply by double clicking. If you want to try it, go to:

It is a bit of a memory hog [not quite as bad as aforementioned memo implies], and the sample "web start" apps are pretty clunky. And ugly. Boy, are they ugly. They also take between 7 and 10 seconds to launch on my machine (not including the rather anal constant checking online they do for new versions). Woo!

So why isn’t Java more popular? Why should the average user settle for running a windows app when they can download a 7MB runtime installer and execute hard-to-find non-standard looking apps that take 10 times as long to start up and look really ugly, occupying at least 4 times as much RAM? Your guess is as good as mine…

Just Brilliant

I left several instances of JujuEdit running last night (3 running normally, 1 running in a Win98 emulation) as a sort of stress test. Each one was automatically scrolling back and forth through a large-ish document. I was hoping to see them all still running this morning, so as to be sure that I had fixed the aforementioned GDI resource problem.

Unfortunately, I didn’t get the chance to find out, since the first thing I did when I approached my computer was to hit the power button – the first thing I always do in the morning – automatically presuming the thing was switched off. Of course it wasn’t; the monitor had merely switched off in power saving mode. So I never found out if those apps were still running properly. *sigh* A programmer’s life is nearly always boring.


Found and stomped another bug in JujuEdit while screwing around with HTML avoiding work. Playing with your own toys can be productive! The code I was editing was for displaying a quicktime VR style thing using a little Java app. That’s right, I hereby acknowlege that there are some cool things that can be done with Java! But, that said, how many people in the world know how to run a java application that they’ve downloaded in the form of a JAR file? How many people would even know what the hell I am talking about? The designers of early Java runtimes shot themselves in the foot when they assumed that their users should be able to understand class-paths. If I download a program in the form of an EXE, all I have to do to run it is double click (or press enter or whatever your preference is). If I download a program in JAR form then I have to type some bollocks on the command line like:

jre -cp "C:\Windows\Desktop\JavaApp.jar" javaapp

How unfriendly is that? In theory the new Java runtime fixes this, so I’m downloading it now to give it a go… Anyhoo, enough griping. I am using a groovy little app called ptviewer [created by the generous Helmut Dersch] to display this image. Click and drag the mouse withing the image to pan and tilt.

Absolut Drudge

Debugging under a different operating system than the one you are developing on is time consuming and annoying. The way I do it is to start disabling bits of your program to see if that makes the problem (in this case a resource leak) go away. Each "round" takes several minutes.

Oh joy, debugging can be so much fun, just like a great big mystery treasure hunt! I am currently trying to nail a JujuEdit problem which is only occurring under Win98, and which is apparently related to GDI resource allocation. If you never need to work with the centuries old API which handles drawing under Windows, you are one of the lucky ones. It’s crap!

Later that day…

I finally found where JujuEdit was leaking resources under Win98, and even now I’m not sure I understand why it was doing so. Am I shaming myself by admitting that? If the Windows GDI were beautifully designed, I would be ashamed to not understand its functionality in toto. As it is, it is full of legacy crap and leaves the programmer to manage resources that it should be more than capable of handling itself. Hmmm, maybe I should get a Mac…

More information

JujuEdit, Reader, and eLibrary are all going back online shortly [warts and all] as soon as I can get decent installers set up. I am setting up status report pages for JujuEdit, Reader and eLibrary so as to keep testers (or the interested public) up to date with current bugs/issues. My new plan is that instead of waiting until every last [known] bug has been stomped, I will make stuff available to those who are willing and interested. I did have a plan to hold back until I had dealt with all known issues, but really that is not a great plan. All complex software has the odd "issue" here or there; that doesn’t mean it can’t be useful. So stay tuned [well, come back in a week or so at least].

I knew there was a good reason…

A while back I found myself standing in line behind a git in a supermarket queue who was talking to his friend about their comp sci course. He spoke smugly of how he wasn’t going to learn C++ because everyone would be switching to Java within a few years anyway. What a frikkin idiot.

… to ignore Java! If this alleged internal Sun memo [thanks SlashDot ] is genuine, then it is pretty much an acknowlegement of the fact that Java has been implemented so badly that it’s too bloated and unstable to be worth using. My favourite bit is the revelation that "Hello World" [the classic minimal executable] requires 9 MB to run [on Solaris]. Suddenly Microsoft doesn’t seem quite so evil for trying to exclude Sun’s Java Runtime Engine in WindowsXP…

Of course, there’s a very good chance that the memo is a fake, but since it’s so well written, and I’m fired up anyway, let me just say that I’ve always had a dislike for Java, because despite wild claims about how fantastically great it was, all I ever saw of it were ugly, buggy applets that anyone with half a brain writes in Flash these days.

Untitled #409


A friend working for a fairly large (and successful) software company told me something recently which gave me a bit of a shock: He informed me that his company does not actually have a fixed price for their flagship product! The number one piece of software that they sell might offer itself to you for anything between $15 and $30. It’s basically random!

Since the software is only sold online, it’s a simple matter for an ASP page (or whatever dynamic HTML flavour you prefer) to adjust the price, based on any number of things, including referrers, IP, browser settings or simply a number picked out of a digital hat. Once a visitor browses a page (or sees an ad) which names a price, that user might be issued a cookie in order that they won’t go on to see a different price on a second visit. Sales statistics are collected and the mean price and standard deviation are adjusted accordingly.

This all came as a bit of a shock to the delicate sensibilities of yours truly. It makes what is already a fairly intangible transaction (ie purchasing software) seem almost like a weird joke. Knowing about this makes me paranoid now when buying things online, since I find myself wondering if browsing fresh from another computer might help me get a better price.’s birthday

How much can one person chew anyway?

Am I really stupid for working on multiple projects instead of just concentrating on one? It’s a question I keep returning to, and I still don’t know the answer. I had been planning to get eLibrary back online by today, as well as beta versions of Book Reader and JujuEdit. Not surprisingly, I’m not quite ready. If I didn’t keep skipping back and forth between projects it is possible I might have a hope in hell of actually releasing something.

I look around at [real life] small software companies and find an almost infuriating degree of variation. Some of them sell tonnes of ordinary stuff, and give away tonnes more crap. Some sell just a few products. Some charge four times the norm for what is clearly an inferior (or at least unfinished) product. Some people seem to be doing well, with a real client base, and then they announce that they’re just going to give away the software they’ve been working on for 5 years to start working as a consultant instead.

I have yet to come across anyone whose situation resembles where I’d like to be in a year or two. Is this a bad sign?