Serafettin, part one
I’ve recently been triaging FontForge bugs on Fedora, and hit a problem with bug 600108, in which the latest version of FontForge crashes while building Serafettin.
I patched FontForge locally, so I could identify the glyphs that caused it to crash, but I’ve now come to the conclusion that Serafettin itself is the problem, and FontForge’s validation says as much, in these lines:
- Two glyphs have the same name.
- Two glyphs have the same unicode.
I’ve never met these errors before. Sure enough, close examination of Serafettin reveals that there are three copies of some of the glyphs in the font, with the same name and Unicode point. Now that Orcan has given me access to the Subversion repository, I’m currently working on removing the incorrect copies of glyphs, before simplifying the outlines of the rest, to allow it to build again.
Off-curve misrendering
Adam Hyde came up with a question about a misrendering of a font on the FontForge Users’ mailing list. A colleague had designed a font in FontForge which looked fine except when used in Adobe Illustrator (of unspecified version). He provided two examples of characters whose shapes had developed distinct “ears”.
Peter Baker suggested that the common feature in this case was that the first point of the contours was not on the curve. My investigations proceeded along the same lines, and suggested that more than just these two characters were affected.
The undervalued bool
A colleague of mine wanted to reduce the repetition in this fragment of C++:
funcA(false);
funcB(false);
funcC(false);
funcD(false);
funcA(true);
funcB(true);
funcC(true);
funcD(true);
and, in a burst of sheer genius, came up with this solution:
for (bool status = false;
status <= true;
++status) {
funcA(status);
funcB(status);
funcC(status);
funcD(status);
}
He then scratched his head as the program looped for eternity.
Who could have predicted that a common-or-garden bool could have so many values? Let me count them. The possible values of bool
are false, snopes, statistically_significant, almost_true, true,
very_true and tautology. ++tautology gives you tautology right back, as any fule
kno.
An old video terminal, in vector form

I still have VT100 terminal, but it’s in storage. I figured I could pretend that it was on my desk if I made a font that looked like the old beast, including the gaps between scan lines.
Once I’d started, I needed the reverse video form of it, and the forms correctly underlined, and double width, and double height and double width. Blinking is more problematic 😉
Resurrecting fonts

A while ago, I recovered my old font files from some crufty old SuperDisks, but did nothing more with them than copy them to my network storage, in the hope that that is a safer home.
Last weekend I was reading about the Fedora Fonts SIG, and decided to bring the old font files back to life. The Fonts SIG is concerned with packaging fonts for Fedora, but their pages have some interesting pointers on how they might be created as well, so I grabbed an old font and explored the tools that are available.
I am a Time Lord
I’ve been working on a project to fake some network protocols to test one of our systems at work. One of them is Network Time Protocol. I daren’t just set my PC to random years and then serve this time to the target system, so I wrote a little NTP server in Perl, which allows me to lie about time to other people.
First steps with OpenStreetMap
I’ve just signed up for an OpenStreetMap account and thought I’d try out the offline map rendering, as I’ve just started a project to document the changing face of Alderney.
The wiki gives some good instructions for downloading the rendering XSLT scripts, but my first attempt to use them resulted in some very strange coastline clipping in the final SVG.
With a bit of hunting, I came across a Perl script in their collection that cleans the coastline data up nicely.
From jewel cases to where?

It took me several months to rip my 1500 or so CDs to a network drive, from where I can stream them wirelessly to my Squeezebox Classic. I’m very happy with that solution.
Now, the problem becomes “what do I do with the CDs?” You can see from the picture that they take a lot of space. I’ve been searching for a way of storing the CDs and artwork without the jewel cases.
The not so super SuperDisk
In 1997, I bought a new PC, and specified that I wanted a SuperDisk drive on it. It seemed like a good idea at the time. The LS-120 drive was a reasonable alternative to the Zip drive, and it had the advantage of being able to read 3½″ floppy disks as well as the 120 MB SuperDisks, at nine times the speed of a normal floppy drive. I had one at home, my mate CMoS bought one too, and we bought a new web development PC for work with a third drive.
My Perl and MySQL UTF-8 crib
Over the years I’ve had various ways of dealing with data beyond the ASCII range in web applications. I’ve had horrible things go wrong when maintaining a “home” and a “live” version of Manx, when I had machines with different versions of MySQL, and I never understood why dealing with UTF-8 across the Perl–MySQL bridge went wrong so much. However, time has healed these wounds, so here is my little crib sheet for getting things right.