Spring-loaded Zooming UI

The fancy new mouse Apple are selling has a neat hardware feature: squeezing the sides together acts like a button click (on some nth button). They combine it, by default, with a kind of okayish software feature: squeezing the new button shows the dashboard until you stop squeezing. Looking at CellDesigner‘s “bird’s eye view” feature…

JSON for MzScheme, and a Portable Packrat Parsing Combinator library

I’ve taken my Scheme Packrat Parser library, ported it to MzScheme, documented it, and implemented a JSON reader-writer library on top of it. The code is all available under the MIT license. A darcs repository is available at https://www.lshift.net/~tonyg/json-scheme/, or you can grab a snapshot tarball including a PDF version of the documentation. $ darcs…

How hard can it possibly be?

Using Squeak over recent months, I’ve found myself wanting to move windows back and forth between various projects occasionally. (Projects in Squeak are a kind of hierarchical multiple-desktop setup, where subprojects of a project are displayed as thumbnails in little windows on the desktop, which when clicked, enter the displayed subproject. The main desktop menu…

JSON, Squeak, and Seaside

Today I implemented a JSON reader/writer library for Squeak, and a small extension to Seaside‘s existing LivePage features for doing XMLHttpRequest-based server-push. The JSON code is available on Squeakmap and also via SqueakSource, under either SqueakL (see here) or the MIT license. The Seaside extension is still in flux, but I’ll release something as soon…

Trivium

Of the many new ciphers proposed as part of the ECRYPT Stream Cipher Project, one of the most interesting is Christophe De Cannière and Bart Preneel’s TRIVIUM. TRIVIUM is designed to be very simple, admit a very low gate count implementation in hardware, and be reasonably efficient in both hardware and software, parallelizing in a…

Audible Ping

Does your internet go away occasionally? Do you have a computer hooked up to a moderately loud stereo system? Want to know as soon as the link comes back? Here’s a script (put it in a file, e.g. ~/bin/audible-ping) that pings some outside host, playing a short .wav file when ping finally starts to get…

From Stateful Parsing to Transactional Parsing

Thinking further on the problem of stateful parsing (from yesterday’s article), the way we’ve done it in the past (essentially by using Scheme’s parameter mechanism) is a special case of a transactional system, with rollback on error and commit after each toplevel expression parsed. This suggests that if Scheme had an implementation of a Software…

Extensible Parsing Systems

Francis reminded me of the Packrat Parsing algorithm the other day, so I took another look at the Scheme implementation I’d thrown together a few months ago for my ThiNG prototype. Currently, it’s just the basic parsing combinators and support data-structures, but I’d like to make it into an extensible reader, just like for codename.…

Semantics in HTML via typographic convention

There’s a summary of an interesting discussion regarding semantics in HTML over on fantasai’s blog. Is the HR element only presentational or does it convey something about the content? It does seem to have a semantic role, but one which comes from it being a typographical convention of using a row of asterisks to mark…

Sun’s disabling coffee beans

As widely reported (even enthusiastically by people other than Sun themselves), Java 1.5 (otherwise known as Tiger, otherwise known as 5.0) has generics. This is done by erasure originally for reasons of backwards compatibility. The idea was that Sun wanted to be able to compile source code with generics in it and run the generated…