This is just a placeholder page: slides etc will appear here closer to ...read more
So some ludicrous proportion of SQL these days is generated by one ORM or another. And all the cool kids have decided to move on to the next thing anyway. So that got me thinking ... when we talk to an SQL database through an ORM, we're turning a bunch of operations on objects into a human readable query language, then turning that back into a query plan. Why?read more
Improving on the design of the NodeMCU modules ...read more
A project to create mini robots for education purposesread more
Bringing databases into the Blue-Green Deployment process by using CQRS and idempotent work queues.read more
Working on a graphical dataflow language for educational robotics.read more
I like the idea of ephemeral, immutable servers in light containers but what I really want is to put the entire state in a Git repo ...read more
Linuxconf 2016 was held in Geelong ...read more
Anyone at #BuzzConf interested in adding permission scopes to token payments and drafting a standard? Hallway track with @mnemote & I tmz ...
I was talking to $PERSON from $BIG_COMPANY the other day, and they happened to mention that around 80% of their CPU time was spent on serializing and deserializing data ...read more
OSDC 2015 "Talking with Leviathan: Interfacing Open Source to SAP"read more
Distributed Disruption of Surveillance ...read more
Apple uses a signing mechanism for in app purchases, but its behaviour is a bit weird. This post outlines how to confirm the validity of Apple's receipts in Python.read more
Accidentally putting a foreign key between an InnoDB table and a MyISAM table results in an error "Cannot add or update a child row: a foreign key constraint fails"read more
The Oculus Rift DK2 ends a 20 year wait for consumer VR ...read more
A vulnerability in 'bash', popularly called 'ShellShock' has been all over the news this week. I've spent a lot of time talking to clients about it over the last couple of days, and checking up on systems, so I thought I'd write some of those conclusions down.read more
From the "Ideas I'm Never Going To Implement Myself" bucket:
NoMail is an email service which doesn't store anything. Anything at all. Email received by NoMail is ephemeral and exists only in your client.read more
I presented a session on 'Programming for non-Programmers' talk at General Assembly Founder's Bootcamp ... here's some notes which I jotted down afterwards ...read more
Perhaps instead of looking at cookies as a proxy for passwords, we should be looking at passwords as a transport mechanism for secrets! The desired result is to share a secret key between the server and one or more browsers, and the password is merely a mechanism to prove the browser worthy of the secret ...read more
Tranquil is a protocol framework which is designed to be very simple and very extensible.read more
I was setting up Django using Gunicorn behind an Nginx proxy the other day, and hit this problem which took a while to find an answer for ... all Django would do was return 400 Bad Requestread more
Django REST Framework: The Good, the Bad and the Ugly. Presented at MelbDjango 0.9 on 6 Feb 2014read more
A (somewhat sketchy) connector between HTTP and postgres stored procedures ...read more
A short rant about a common beginner's mistake in dynamic languagesread more
A couple of people have mentioned that while they like the idea of offloading their site to a CDN, they're not ready to have their site look like some relic from 1999 ...read more
Using CSS to make nice looking buttons for Native Apps (using PhantomJS)read more
The current storm in a teacup seems to be about static vs. dynamic website design. As usual, this is a False Dichotomy ... actually, there's a whole range of options to explore.read more
I presented at the MelbDjango user group on 11 July 2013, here's the slides and some quick scribblings re: the content of my talk, and the feedback from the Djangonauts present.read more
This site is now created using Pelican and hosted on Amazon S3.read more
I want to discuss some weirder things on this blog, but I think it'd be a good idea to start off with an overview of how to build a very simple HTML5- or Native App friendly architecture.read more
Mostly, getting stuff done fast in the web world requires doing things in parallel. However, every now and then you bump into a problem where this just doesn't work ...read more
HTML5 Canvas reminds me of the good old days of the APPLE ][ ... this article looks at how to do some interesting things with Canvas and numeric.js Splines.read more
I've used this authentication method on a couple of different client projects so far, so I thought it might be useful to write up a quick explanation of how it works.
The webserver can be configured to ask for a client-side certificate, for example in apache:
The module makes it very easy to interface a microcontroller to Bluetooth using various of the standard human interface profiles: you can make your microcontroller act like a bluetooth ...read more
So I’m playing around with Google AppEngine (still!) trying to put together some kind of sensible use for it. AppEngine is neat-O, but it is also quite limited in what it can and can’t do. One of the most glaring problems (for my toy app) is the datastore ...read more
It turns out that repeated keyword arguments (kwargs) were illegal in python 2.4, ignored in python 2.5 and illegal again in python 2.6. This means that if some have crept into your codebase, you’ve now got a handful of syntax errors!
For example, here’s test ...read more
An odd little one: I was compiling some older code on gcc 4.6 / Ubuntu 11.10 and it failed to make, with the traditional error:
undefined reference to `sqrt'
My Makefile was trying to do something like this:
gcc -c -o eg.o eg.c gcc -lm -o eg ...read more
HTML5 apps can use Cache Manifests to configure the browser's Application Cache, allowing faster startup of HTML5 apps and also offline operation.
There is a problem, however. The behaviour of cache manifests can make development a smidge tricky . This is because the browser will only check if the contents ...read more
There have been a lot of very interesting articles posted recently about the cause and effects of the April 2011 AWS outages. This article is an attempt to tie some of them together.
According to Amazon, the outage was caused by:
[... H]igh error ...
Virtual Localization is a technique for Mesh Network routing. It tries to make it easy to route packets across the mesh by assigning each node a “Virtual Location”, which can then be used for Greedy Forwarding. It is a fully distributed algorithm … no one node holds the whole map of ...read more
Just a quick note for anyone trying to do FreeTDS through a tunnel or a firewall pinhole or whatever: If you specify an Instance name, FreeTDS goes and probes UDP 1434 to determine the port number for that instance, even if you also explicitly specify the TCP port number you ...read more
I stumbled across this problem because I was reading a protocol document for a device connected by RS-232. The document described what bytes to put in a text file, and how to use Hyperterminal’s “send text file” to send them. That all worked great. But as soon as I ...read more
I saw an article on reddit about SSH trickery. SSH is a very subversive protocol, able to work around many kinds of unwise security policies. Here’s a couple more useful things to know.
Where you’ve got machines lurking behind other machines, inaccesible ...
I find myself writing some C# code while still thinking in Python. One thing in particular caught me out … it seems, at first, that C# doesn’t have first class classes. This is annoying, because I’d started writing some device driver classes where each class is a type of ...read more
Ever since I started working on Internet Stuff, I've been wrestling with crazy Template Languages. This article is an attempt to compare some of the more common template languages out there.
I've consolidated this from a series of blog articles I wrote back in 2009. As a result ...read more
wget 1.10.2 seems to silently fail to use an SSL client certificate unless you specify both –certificate and –private-key:
wget --certificate=$PEMFILE --private-key=$PEMFILE
Even though both things are in the same .PEM file. It does read and check the PEM file if you specify only the former ...read more