
Continuity is a great little Flash game. It’s an original hybrid of platformer and sliding block puzzle. Playing through it cost me an hour or so of sleep last night.
This tumblelog is a noisy stream of consciousness from Anthony Bailey. (And not Amazon.)
For a lower traffic, more obsessively edited Anthony, see the real blog.

Continuity is a great little Flash game. It’s an original hybrid of platformer and sliding block puzzle. Playing through it cost me an hour or so of sleep last night.
The EFF have been looking into how many bits of identifying information your browser provides to the sites you visit. They suspect: very many. They have an experiment called Panopticlick running to test this out for real. It’s fascinating. As an example, my own fingerprint was unique amongst the 50K they’d sampled so far.
Bob Martin wrote a great article on the overuse of mocking frameworks.
His position is that whilst they are sometimes useful, they shouldn’t be the hammer with which you hit every nail - which is how they are often presented.
He advocates hand-rolled mocks for the simple cases, and realizing that when this gets painful, you have a code smell re the coupling of the classes in the system under test.
Recommended Listening: Software Carpentry (great concept, poor name.)
Greg Wilson talks about teaching condensed coding wisdom in this episode (53min) of Jon Udell’s Interviews With Innovators. He has for many years run a stand-alone course for university scientists summarizing important software concepts. Wilson is very pragmatic about both the value and the difficulties of having some kind of computational thinking taught throughout education.
It is software carpentry as a limited subset of subset engineering - “About putting an extension on the house, rather than building the Channel Tunnel.” I hate this term; I greatly dislike the engineering metaphor, and carpentry also triggers the differently valuable software craft metaphor for me.
Toward the end they discuss how outdated some of the key concepts in the course have already become (Wilson is hoping to work on a new version) given the rise of networks and agile. I was reminded of a recent conversation with an ex-colleague on which abstractions and worthy books on coding survive such changes.
OnLive demo - could cloud really get game?
Steve Perlman of OnLive demos the cloud gaming service at Columbia NYC (48min video.)
You plug a box into your TV, or a 1MB plug-in into your low-end PC or mobile device. You subscribe to the service (now in public beta) and rent/”buy” access to games. They lease the very high-end main servers the games run on.
Eighty milliseconds from input to output at the player’s end is the magic number they enforce for acceptable interactivity. The servers are in data centers max one thousand kilometres from the player, and use UDP over (I think) circuit-switched connections from pretty much every provider, and optimize for latency elsewhere in the last mile too (e.g. their wireless controllers use a more aggressive protocols than standard console ones.)
They compress on specialized hardware two ways: one on a frame-by-frame basis for the live stream that the player sees with various measures to tune for the connection, correct/conceal errors due to packet loss, etc., and one slightly more conventional media stream IP multicast within the center for replay and broadcast to a wider audience.
Proof of the sufficiently low latency and the plausibility of the business model (hardware is expensive!) will be in the pudding, but this idea sounds less implausible the more I hear…
People keep speculating that Apple’s tablet will be called the iSlate. Seems a bad idea unless they’re really confident it won’t get delayed.
So yeah, Google Wave can be confusing, and certainly isn’t sufficiently dense in the average social/thinking circle to have been useful yet to, say, me.
But I am impressed by its potential as a platform for prototyping new collaborative workflows. There are already some intriguing demos. I think this is fertile ground and wonder what else might blossom?
See, I think this kind of application is very hard to develop from the ground up - but Wave gives you a framework for delta-based multi-party editing, a network of users running clients to embed the widget housing your great idea, and perhaps most importantly, all the other multimedia communication channels that you have to surround the key interaction with to make it work the best it can. (The old chestnut is that useful software grows features until it can read e-mail; I suspect contemporary group-think apps will prove to have IRC-envy.)
This post contains a collection of thoughts about coding katas.
A fair few are gripes - apologies for this negativity. I should start by saying I do love many aspects of the idiom:
But (perhaps because with passion comes a desire for perfection) I do find a few aspects of the movement irksome:
Right now I’m further feeling (quite unreasonably!) discontented by the recent wave of performance kata as seen at e.g. Katacasts. In principle these should be great - a chance to sit briefly with a fine programmer and watch them play through a problem that they understand well. (I really do appreciate people for giving it a go, and would recommend Bob Martin on Prime Factors despite the criticisms below!) But in practice I’ve found myself somewhat underwhelmed.
That last bullet point at least provoked me into trying out some other testing approaches for one of the kata myself.
Static props are considerably easier to create from scratch and script than are animations of a character model, so this won’t be as significant a time saver for machinima as character mo-cap is. Nevertheless, University of Cambridge present an interesting demo of capturing the mesh, skin and registered movement of real world objects through analyzing video from a single camera. [tag: machinima]
I recently encountered some wwweirdness I’m hoping someone smart can explain to me.
So there’s a client computer A1, and a host C serving some web pages. If you ping or traceroute C from A1, the round trip time is consistently around 200ms. if you use a web browser on A to visit one of the pages that C hosts, then most of the time individual requests are served in a similar time.
But for around 25% of requests, it takes orders of magnitude longer to serve the file: around 20s. The behavior doesn’t seem related to the URL being fetched: all are usually fast, sometimes very slow. Logs on C always show responses being turned around rapidly once requests are received - the delay is never visible within the server side.
A1 is a machine in a domestic residence using a particular Net connection from a particular ISP. The problem is reproduced for another client machine A2 when it uses the same connection. C actually serves a variety of different domains, and the problem is reproduced across all of its websites, and when using its numeric IP address.
It appears that tens of other clients use C’s websites without encountering the issue. A1 is reported to occasionally see anomalous delays when browsing other websites, but nothing quite so remarkable - could be regular network unpredictabilities.
And finally, on overriding A1’s DNS to persuade it that awebsite is actually served by host B, and telling host B to reverse proxy all requests for pages under that domain through to C, then the issue disappears.
So it seems that A’s ISP and C just don’t get along with each other, but they do get along with the rest of the world. I can postulate some kind of blacklist on one side or the other, with a deliberate policy of throttling through introducing huge delays for a random sample of HTTP requests, but that sounds like quite a stretch.
(Especially since A and C are both perfectly reputable. Probably irrelevant concrete values for my abstract identifiers: the ISP for A is VirginMedia / Blueyonder. C is a virtual host I rent from Slicehost. B is another virt rented from Bytemark by a friend.)
Anyone have a halfway plausible explanation?