aqcom epistula Imported From Epistula

New Comments

Okay, new Comments interface now live.

Magic thing that detects Livejournal usericons for people who use their LJ as the URL has been temporarily disabled until I convince it to stop ass-raping LJ’s servers (in LJ’s opinion. Aquarionics’ server has now got a 24 hour ban from LJ. Which would improve it’s productivity were it human).

The new interface passes the acid test of stupid length comments threads, and now gives an indication of the time distance between comments.

It remains the only threaded comment system on my feeds list, apart from LJ, which interests me a lot. I wonder why the major locally-hosted blogging engines all stick to linear comments?

aqcom epistula Imported From Epistula

Damn Lies

Popular Statistics state that I start too many journal entries with the word “So”.

Also, Google’s fairly new charts API suffers from lack of debugging information. The bit where the canvas area has to be less than 300,000 pixels keeps catching me out, and “Your client has issued a malformed or illegal request.” may be true, but is less than helpful…

(Existence of “Im” and “Ive” in the above linked page is related to the statistics system, not my abuse of the English punctuation system. Mostly).

Also, going back though the archives, this is historically the week I add features to the site. It disturbs me that I’m this predictable.

aqcom epistula events Imported From Epistula Projects

Edit this site

Open source applications. Epistula – the engine that runs this site – has just got its new trac install & SVN repo, as has AqWiki and my other projects. Yay.

So I’ve joined them up, and opened the first public aqwiki instance.

You can now edit the main CSS file on this wiki page over here. Go forth, redesign my site

aqcom epistula Imported From Epistula

Hey look, new stuff

Look, photoset:

(Aquarionics Gallery System 2.0 coming soon. Photoset icons being one of the things already working.)

As I am updating Twitter more often than anything else right now, I’ve put a feed of Twitter onto the front page. Front page is now notably a different data-set to the generic feed, as the latter doesn’t contain twitters. I’m moving slowly to turning the frontpage into a lifestream, but currently adding modules to Epistula is not quite as easy as it should be (I made two shortcuts when building the architecture which are now biting me in the arse five years later (Yeah, Bits of Epistula are five. Not sure if I have more than two readers left from when I did that)).

As far as actual content goes, though. Look to the stars.

epistula Imported From Epistula programming web development

Vizzinibugs, Heisenbugs and the vanishing birthday

Heisenbugs are bugs that vanish when you turn debugging on.

Schrodinbugs are bugs that don’t manifest until you read the code and realize they could never possibly have worked, whereupon they don’t. These are impossible, yet happen despite this.

Vizzinibugs are the single most common type of user interface bug. They are when the user follows an action path inconceivable to the original programmer. These include things like “What do you mean ‘Esc’ isn’t part of ‘Press Any Key To Continue’”, “I always fill out the password field first”, “I put in October in the ‘From’, and March in the ‘To’ so they’d come back in the opposite order” and the all-time classic, “But what if I want to put commas in my titles?”.

Okay, not an all-time classic, but one bug that Epistula doesn’t have anymore. I’m not sure why anyone would want commas in titles, but there you go. Vizzinibugs are such not because they are inherantly stupid requests, but more that the programmer just didn’t even conceive someone might do that.

But my favourite Vizzinibug of all time was actually my fault. It was in a piece of software for a company I worked for ages ago which, as part of the signup form, requested the date of birth for the customer. It was part of a batch of changes, so I duped another column, built some Crazy drop-downs to input it & change it, take the result, format it and dump it into the date column in the database. So far, so hoopy.

I tested it. Over the next couple of months my coworker tested it, the line manager of our traditional-webdev no-person-over-35 team tested it, the young, hoopy client tested it and ran though the whole thing, and it went into internal beta, all were happy.

A little while later, we started getting back some reports. Apparently some people couldn’t get the thing to save their birthday. The young, hoopy client tested it, and couldn’t reproduce it. My line manager couldn’t reproduce it. Neither could me or my coworker.


Okay, could you send us the user id of an affected user please? Meantime marked as WTF.

From us to manager to client contact to users to contact to manager to us, and we had an example. Time to go database diving…

… This user has a birthday set. Oh, that’s a coincidence, it’s January 1st 19… oh. Nineteen seventy.

January the first 1970 is an important date in the Unix world. It’s zero. The Unix Epoch time format is defined, in fact, as seconds since then, and quite a few things work in it. My dropdowns didn’t. The database didn’t. But the functions to format the dropdown results and make sure they were a valid date, and not allow the 31st Feb?


Clicky, Clicky, Fix.

The thing is every person who tested it, from us right to the client, used their own birthday. And since not a single person had a birthday before 1970 – one person was _in_ 1970, but didn’t trigger it – we entirely missed the problem. One of those things that makes you look twice at data validation things, really.

And testing, of course.

aqcom epistula Imported From Epistula


Bored of spam now. Hacked on Epistula a bit. Policy change.

Journal Entries (Distinct from Articles) more than 90 days old now cannot have comments added to them.

(This means I now have the ability to turn off comments on arbitrary articles also. Considering this for certain articles)

aqcom epistula Imported From Epistula weblog

Akismet Spam Checking

Recently this site has been somewhat overrun with spam comments. Not that anyone who doesn’t follow the Recent Comments page or syndication feed will ever have seen them, as they’ve been spread over the last six years of entries. Either way, it’s annoyed me, and so I’ve done something about it.

What I have done is enhanced my existing trust network system so that if it doesn’t see you as a “trusted user” it runs your comment though the all-singing, all-dancing Akismet system.

Now, I’m not entirely sure about this as a system, because the idea of posting all the comments from my site though someone else’s service is not exactly ideal (Esspecially since the authors of it have a not entirely spotless record), but distributed spam systems seem to work better than my old regex system.

It’s on trial until I forget about it and leave it in.

The code for it is in the usual place, I’m using Bret Kuhns’ PHP Class for the difficult bit.

epistula Imported From Epistula

Valentines Updates

Okay, apart from the little redesign thing, a few other things have gone into Epistula today, and these are they:

Wildcard Archives Part One

You can now put a wildcard in the year (so*/01/26 for articles written on my birthday)

Ideally, this would work for all things, but I can’t really see the point. All articles written on a date (or within a range, see below) is handy, whereas all articles written for, for example, any March is less useful. And all entries written on the 14th of the month is just silly. Not that this will stop me, but only when I rewrite the archive query builder to be a little more supportive of this kind of thing.

Ranged archives.

Only for days, unfortnately, but you can now put in to get all entries within a day of today, or even*/12/23-27 to get all entries around christmas any year.

epistula Imported From Epistula

More Postcodes

And so it came to pass that part two of Postmark, the comment authentication system for Epistula, was written. I can now authenticate comments without going into MySQL and doing it manually! Yay! Anyone with more than two comments should be recognised now…

This was because, annoyingly, I had to go into the sysadmin code to change the crossreferencing system (…that also does Track- and Ping-back) so I can mass-delete spam trackbacks. I’ve also hooked it in to the comment spam detection system so it will reject anything from domains with “Viagra” in, for example. You’re still not allowed to talk about poker on the site, though 🙂

I could have disabled Trackback entirely, but that would have been giving in…

aqcom epistula Imported From Epistula PHP web development

Handing 404s over to Google

This site once won an award from a perl web hackers site – now defunct – for the 404 system.

The system was really simple. If you hit a 404 on this site it would apologise, then redirect you to a google search of Aquarionics for whatever you were looking for. This has worked for a while now, with the apologies getting ever more extravagant and the redirections being turned into google links (Because I hate being redirected places without a chance to stop it).

The latest iteration of this has just been finished (Yay the lunch break). It uses the Google API to display the first ten results alongside the apology. Finally a real use for the thing 🙂

The next stage is to automatically wander though the mysql table of my access logs and automagically reply with 410 Gone if it used to exist but doesn’t anymore