The Semantic Web

One of my current interests is the semantic web — that is, the push to move from publishing text on the Web to publishing structured data, which can actually be understood by computers (in so far as a computer can truly “understand” anything). By publishing information so that computers can understand it, you make the […]

Read More…

Attention Spammers!

I get probably about 10 to 20 spam comments left on this blog every day. However, nobody ever sees them because, firstly, the most obvious spams are automatically filtered out using content scanning and IP blacklists, and secondly, the remaining messages are checked by a human moderator (i.e. me) before they appear on the site. […]

Read More…

PHP Debugging with Style -OR- How I Learned to Stop Worrying and Love the Bug

PHP lets you define your own error handler, so I decided to get a bit fancy. MegaErrorHandler (MEH) outputs its errors as specially-formatted HTML comments, with the details of the error encoded using JSON. A small client-side script, with an associated stylesheet then pulls this data out of the comments and formats it as a […]

Read More…

Typography in demiblog

I've said it already, and I'll say it again: typography is a very important and oft-neglected aspect of web design. demiblog is my CMS; although great typography requires the conscious effort of the author/typesetter, and can't be handled automatically by a CMS, there are certainly steps a CMS can take to ease the burden on […]

Read More…

URLs in demiblog

URL design is important. For this reason I’ve put a lot of thought into the URLs used by demiblog. demiblog has a PHP object SiteURLSpace that maps between URLs and data queries. This means that demiblog’s URLs don’t necessarily have to bear much resemblence to its code structure. It’s also pretty easy to completely replace […]

Read More…

MySQL WTF?!

I’m currently in the process of extending demiblog’s database support. Version 0.1.0 only supports PostgreSQL, but I plan on also supporting MySQL in the next release, and a few other databases further down the line. Because this cross-database support had always been planned, I’ve been very careful in writing my SQL to make sure that […]

Read More…