maetl

Code

Strongly Connected Components in Ruby

I've had a massive pile of code and experiments sitting around for too long. It's time to move on, but I thought, why not throw it out to rot instead of just disposing of it? Who knows, the stuff…

10 LET M EQ MIND ROT 20 GOTO 10

I hate to agree with grouchy old Dijkstra, but unfortunately now it's impossible to deny: BASIC is what killed my ability to be a truly great programmer. Dijkstra was right, GOTO completely rots your…

Reconstruction 3: Pipes Feed Caching

Various parts of this site are meshed from other services such as ReBlog, Google Reader, and del.icio.us, and I use a Yahoo Pipes assembly to merge these publishing streams into a single RSS feed…

Java Chases Its Tail Calls

John Rose talks about implementing support for tail call optimization in the JVM. I've been waiting for this one, as in my mind, it has long been one of the biggest holes in the leaky dike of…

Running multiple virtual hosts under Apache on Windows XP

This will be of no interest to most people but it's useful to note for future reference. The various click-installer solutions to set up Apache and PHP under Windows such as WAMP don't seem to automate…

Rethinking Persistence

People are starting to catch on to two very powerful ideas - that functional languages are ideal for building persistent storage repositories, and that a huge subset of web applications don't need…

Thinking Beyond Java

Last year, I picked up this curious book which seemed to sum up the zeitgeist of web programming in 2005 - an interesting and polemical twist from O'Reilly

Google Web Authoring Survey

Google have released a bunch of high level statistics from a recent survey (SVG capable browser required), looking at the relative frequency of HTML elements across more than a billion web documents.…

XHTML Design Patterns

The key concept that underlies the modern web is the separation of presentation and structure, and recently, there has been a lot of interest in documenting the synthesis of human friendly and…

Howling arrays of wolves

Physical/Mental side-effects include howling arrays of wolves that cannot be popped out;

Entity Relational Diagrams in HTML

This is a prototype of a language modelling tool, created for the purpose of helping designers, information architects, and developers collaborate better. If you want to check it out, and have access…

Mandatory Greasemonkey Update

Any users of Greasemonkey who aren't on the mailing list, and didn't see the latest round of security discussions should immediately read this and follow the requisite steps... Update: Simon has…

Asynchronous Representational State Transfer

AJAX is not new(s). Previously, I've been critical of the nomenclature, perhaps more for aesthetic reasons than anything else, but I have to agree with Simon Willison, who…

Ajax and UX

Amongst those of the user experience and information architecture persuasion, there seems to be a growing trend that involves taking interesting new technological and interactive…

Py3000

Python 3.0a1 release hits the network, with significant backwards incompatible changes. The best way to describe this is a shedding of the snake's skin, sloughing off a whole bunch of weird ambiguities…

Putting Python and Django on the iPhone

Not for the weak of heart, but the prospect of wrangling the call database with Django is a tantalizing hint of things to come...

Reconstruction 2: PHP5 Migration

Finally found some time to work on rolling this big ball of mud onto a more robust foundation. Before going any further, I need to get the site up and running on PHP5 (as well as Apache2 and Mysql5…

Building a Treemap Reporter for SimpleTest

Treemaps emerged in the mid 90's as a method of visualizing heirachies, and have since been widely used throughout the software design community. But very little work is out there exploring visualizations…

Reconstruction 1: Uri Path Completion

Well I went to upload some new writing and just snapped - I couldn't write here until I was happy with the way it was presented. So I tore down all the styles and javascripts, leaving just a structural…

The problem with CSS dropdown menus

This technique been mentioned in passing for a couple of years now, and recently seems to be gaining a fair amount of attention. Many web designers love the idea of building dropdowns like this.…

Dohpacity

Joel on Software has published the first draft of a short essay on usability, where he makes the salient point that: Something is usable if it behaves exactlyas expected. This principle of usability…

Higher Order Primitives in PHP (and more...)

Thanks again to Harry, I stumbled across two fascinating projects that tackle a particular fundamental problem in PHP5. The ambition of metaphp is to take over the world, and that's actually not such…

Zen and the Art of Template Engines

Without exception, programmers espouse separation of logic and display as an ideal principle. In practice, however, programmers and template engine producers are loath to enforce separation, fearing…

Hoodlum Scripting

Why and MenTaLguY show how to upwink javascript into web requests - is this a replacement for Greasemonkey, or just total insanity?

You Get What You Pay For

This piece landed in my inbox twice today, and immediately caught my attention. It's well written, and makes some excellent points that I think are exactly on the mark. Paul Graham has elaborated…

do.del.icio.us

I've started a simple repository of Greasemonkey User Scripts. Mostly experiments I've been playing with in my spare time, and occasional annoyances with sites that I feel compelled to fix. The most…

Multicolumn Layouts in CSS

Gecko support for CSS3 multicolumn layouts looks interesting... I know next to nothing about CSS3 in Mozilla, but this is something that I have wanted to use on a…

Style Object Stew

Think you understand the basics of HTML and the Document Object Model? Start with a basic CSS selector: #items { width:180px; height:220px; } Now the HTML that this CSS decorates: …

Software is not made of Bricks

Raganwald dissects the misguided metaphor from a software process perspective. I have come to believe that these kinds of problems are even more prevalent in the web development world than in…

Is PHP Doomed?

There's a tide of opinion suggesting that PHP is threatened with extinction as standard hardware begins to favour widening multicore processors. This would be a fair argument if PHP was a general…

Running multiple hosts on OS X

The process is just as straightforward on OS X as it is on Windows - if you do things manually. The catch for me was that I needed to set up a script to automate the process. Normally, OS X expects…

CSS Is Unmaintainable

Everyone thinks that the major problems of CSS are mostly due to incompatible browser implementations but that's not quite the full story. It can be hard to see how cascading style sheets are not…

The Difference Between Programming and Software Development?

Why learning Haskell/Python makes you a worse programmer: So, learning Python and Haskell has demoralised me and encouraged me to write code that is bizarre and difficult to understand, and,…

Thoughts of a Lonely Programmer

The writer is doubtless stricken with writers block And can thus, for weeks, vanish into a myriad of dark rooms Where conversation dangles under glistening rows of liquor. The programmer is expected…

Resource Dissonance Format

Recently, I've been looking for good case studies of the practical benefits of RDF adoption, and while I've found a little interesting stuff, I've been noticing a severe dissonance in the volume of…

Google and Link Relationships

Google is based on the concept of the web as a gigantic directed graph. Edges in this graph are determined by directional hyperlinks between web pages. How many of us understand how the usage of rel…

How Microformats are Different

In response to More Thoughts on How Microformats are Different, I'm starting to wonder if maybe there is room for another proper noun that describes "a specific compound of semantic XHTML units",…

I really thought it was over

But it's not... Yet the author of this new RSS 3 spec has made a more-than-insignificant oversight: he's missed the fact that RSS 3 already exists and it's a f**king joke... Aaron Swartz certainly…

On Semantic HTML

Having slogged through the trenches on some pretty large scale HTML and CSS builds, I tend to have a somewhat jaundiced view of declarative syntax. There’s only so many hundreds of hours you…

Only Send What You Need

Managing RESTful AJAX operations is an open problem. While I say that aspects of managing HTTP requests, and designing UI feedback cannot be understood in isolation and must…

Four reasons...

Why you would choose PHP over Java on your next major CMS development project: You want to write anywhere, run once. You want to work directly with classes,…

Extracting Tabular Data from HTML Tables

Despite having been a significant catalyst for the success of the world-wide-web, use of the humble 'ol <table> has been drived to the backroads with current conventions…