Your leaking thatched hut during the restoration of a pre-Enlightenment state.


Hello, my name is Judas Gutenberg and this is my blaag (pronounced as you would the vomit noise "hyroop-bleuach").


decay & ruin
Biosphere II
dead malls
Irving housing

got that wrong

appropriate tech
Arduino μcontrollers
Backwoods Home
Fractal antenna

fun social media stuff

(nobody does!)

Like my brownhouse:
   frontend, backend, ax head, and ax handle
Friday, September 21 2007
I hope that this evening everyone had a sufficiently glum beginning for Yom Kippur. Gretchen is a three-day-a-year Jew, so she naturally went to services tonight in Woodstock. I'm a mandatory-two-services-a-year husband-of-a-Jew, so I didn't have to go.
I spent most of the day hacking an open-source AJAX-based rating system (the familiar Web 2.0 kind with stars) to get it working with a backend I'd developed for my old Flash-based rating system.
That Flash-based system has an interesting history. Back before AJAX, there weren't many ways to affect a database change from a web page without causing the page to completely reload. With Flash, though, a web page could be visibly altered and a change made to the database without a ponderous page reload. The orginal Flash rating widget was developed by an unknown developer for before I started working there (and before the company was acquired by Snooping around in the company code repositories, I managed to get my hands on those sliders and the documentation for the algorithms used to send data from them, but not the actual encryption key embedded inside the .SWF (I didn't have the .FLA or a way to crack the .SWF). Sometime in 2001 I was able, on company time, to reverse-engineeer the .SWF to discover its encryption key, which allowed me to use the slider system on for rating things like posts and users to make an automatic moderation scheme. Like Launch's site, Vodkatea was based on Microsoft VBScript ASP and shared some common code that I'd written.
Years passed and I moved on to PHP-based server development. A few months ago I finally rewrote the server-side slider processing scripts in PHP and redid the supporting database in MySQL so that those seven year old sliders could change columns in a live modern database. It was onto this backend that I wanted to graft the AJAX-based rating system. This took a fair of amount of work, most of it redoing the PHP to satisfy my æsthetics and then figuring out ways to implement the additional functionality of my system. It needed, for example, to log ratings based on user IDs, though the open-source system I was starting with only tracked IP addresses and had no sense of users. My system's rating widgets also send a two-part ID, one called an "Entity ID" and another called an "Entity Type ID." The first is a primary key of a table and the second is basically a table ID. This allows me to add ratings to any entity with a table in the database.
The resulting AJAX-based rating widget looked nothing like the old slider. Indeed, there is nothing about it that bears any resemblance to that original system. Not a single line of code from the original persisted to today's version, and not a single column name in the old database tables has been preserved. But in a sense it was still the same system. This is analogous to a musical group which has none of its original members but still plays the same music from its classic repertoire. Or it's like an ax whose head wore out and was replaced and then, years later, its handle broke and it too was replaced. The replacement head had to fit that original handle, and the replacement handle had to fit the replacement head.

For linking purposes this article's URL is:

previous | next