RFC3339: Simple, canonical date parsing and formatting for Python

Tony Garnock-Jones wrote “As part of a customer project some years ago, we wrote an [implementation](http://github.com/tonyg/python-rfc3339) of the interesting parts of RFC [3339](http://www.ietf.org/rfc/rfc3339.txt) for Python. The abstract for the RFC says > This document defines a date and time format for use in Internet > protocols that is a profile of the ISO 8601 standard for > representation…”

Network server programming with SML/NJ and CML

Tony Garnock-Jones wrote “My experience with [SML/NJ](http://www.smlnj.org/) has been almost uniformly positive, over the years. We used it extensively in a previous project to write a compiler (targeting the .NET CLR) for a pi-calculus-based language, and it was fantastic. One drawback with it, though, is the lack of documentation. Finding out how to (a) compile for and (b) use [CML](http://cml.cs.uchicago.edu/) takes real stamina. I've only just now, after several hours poring over webpages, mailing lists, and library source code, gotten to the point where I have a running socket server. Read on for a full, commented, example.”

Snarl: A Growl-like notification system for Squeak Smalltalk

Tony Garnock-Jones wrote “I’ve just released Snarl, a Growl-like notification system for Squeak. To use it, Snarl label: ‘Something happened’ body: ‘What could it have been?’ I’ve recorded a quick demo: (It’s pretty blurry, so I’ve uploaded it to vimeo too, but it’s still in the queue for conversion; when it’s converted, it’ll be here.) The code is…”

HTML email from Squeak using Seaside

Tony Garnock-Jones wrote “Recently, as part of a Seaside-based application running within Squeak, I wanted to send HTML-formatted notification emails when certain things happened within the application. It turns out that Squeak has a built-in SMTP client library, which with a small amount of glue can be used with Seaside’s HTML renderer to send HTML formatted emails using…”

Achieving Scale with Messaging and the Cloud

Tony Garnock-Jones wrote “On the 9th, last Thursday, I spoke at the Online Gaming High Scalability SIG at Skills Matter. The talk covered – an introduction to Messaging (what it’s for, why you might like to use it), – a couple of pointers in the directions of examples of Messaging being used at scale in the cloud, and…”

PubSub-over-Webhooks with RabbitHub

Tony Garnock-Jones wrote “RabbitHub is our implementation of PubSubHubBub, a straightforward pubsub layer on top of plain old HTTP POST — pubsub over Webhooks. It’s not well documented yet (understatement), but that will change. It gives every AMQP exchange and queue hosted by a RabbitMQ broker a couple of URLs: one to use for delivering messages to the…”

Yahoo doesn’t know what an email address is

Tony Garnock-Jones wrote “Many websites refuse to accept email addresses of the form `myusername+sometext@gmail.com`, despite the fact that the `+sometext` is perfectly legitimate1 and is an advertised feature gmail offers for creating pseudo-single-use email addresses from a base email address. My guess is that the developers of these sites think, because they’re either lazy or incompetent, that email…”

OpenAMQ’s JMS client with RabbitMQ server

Tony Garnock-Jones wrote “OpenAMQ has released their JMS client for using JMS with AMQP-supporting brokers. This afternoon I experimented with getting it running with RabbitMQ. After a simple, small patch to the JMS client code, to make it work with the AMQP 0-8 spec that RabbitMQ implements (rather than the 0-9 spec that OpenAMQ implements), the basic examples…”

Reverse HTTP == Remote CGI

Tony Garnock-Jones wrote “I’ve been working recently on Reverse HTTP, an approach to making HTTP easier to use as the distributed object system that it is. My work is similar to the work of Lentczner and Preston, but is independently invented and technically a bit different: one, I’m using plain vanilla HTTP as a transport, and two, I’m…”

Streamlining HTTP

Tony Garnock-Jones wrote “HTTP/1.1 is a lovely protocol. Text-based, sophisticated, flexible. It does tend toward the verbose though. What if we wanted to use HTTP's semantics in a very high-speed messaging situation? How could we mitigate the overhead of all those headers? In this post, we invent a simple alternative syntax for HTTP that drastically reduces the wasted bandwidth. For the specific example of the OPRA feed, the computed bandwidth requirement of the experimental syntax is only 11% higher than the raw data itself — nearly 300% better than ordinary HTTP.”

Jeff Lindsay on Web Hooks

Tony Garnock-Jones wrote “From Jason Salas‘s interview with Jeff Lindsay, the guy who invented the term web hooks: “For example, the Facebook Platform, although pretty complicated and full of their own technology, is still at the core based on web hooks. They call out to a user-defined external web application and integrate that with their application. That’s quite…”

Erlang/OTP’s global module

Tony Garnock-Jones wrote “Erlang/OTP’s global module helps with atomic assignment of names for processes in a distributed Erlang cluster. It makes sure that only a single process at a time holds any given name, across all connected nodes. Unlike the local name registration function, names aren’t limited to being atoms: with global, they can be any term at…”

Erlang’s GC only runs when you’re running

Tony Garnock-Jones wrote “Recently, as part of RabbitMQ server development, we ran into an interesting issue regarding Erlang’s per-process garbage collection. If a process is idle — not doing any work at all, simply waiting for an external event — then its garbage-collector will not run until it starts working again. The solution is to hibernate idle processes,…”

Where did all my space go?

Tony Garnock-Jones wrote “Over the last little while, I’ve started to suffer from lack of space on the hard disk in my laptop, which is ridiculous, since there’s an 80GB disk in there and there is no way I have that much data I need to hang on to. I decided to do something about it last week.…”

Toy raytracer in Python

Tony Garnock-Jones wrote “I spent a few days in Wellington recently with my 12-year-old brother. We somehow got to talking about ray tracing, and so we ran through a bit of linear algebra (vectors, normals, and dot products, basically) and built ourselves a raytracer in Python as a lark. We collaborated on the Vector and Point classes, and…”

Listening to your Webcam

Tony Garnock-Jones wrote “Here’s a fun thing: The Analysis & Resynthesis Sound Spectrograph, or ARSS, is a program that analyses a sound file into a spectrogram and is able to synthesise this spectrogram, or any other user-created image, back into a sound. Upon discovery of this juicy little tool the other day, Andy and I fell to discussing…”