It’s just data

Realtime Updates of Web Content Using WebSockets

Three mini-demos showing how to implement realtime updates of web pages using WebSockets.


Achieving Response Time Goals with Service Workers

Blending cache and live responses in order to achieve response time goals.


Service Workers - First Impressions

Created by potrace 1.13, written by Peter Selinger 2001-2015

Cache put and match worked right the first time; cache keys not so much. Authentication is a mystery. Outline of future plans, and a call for help.


Brief history of the ASF Board Agenda tool

the current implementation is a lot more fun to develop and easier to maintain than prior versions.  As an example, if it were decided that the moment the secretary clicked the ‘timestamp` button on the 'Call to order’ page, all comment buttons are to be removed from all windows and all comment modal dialogs are to be closed, this could be implemented using a single if statement as the event is already propagated, and a re-render is already triggered.  All that would be required is to change the conditions under which the comment button appears.

The board agenda tool has been tested on Linux, Mac OS/X, Vagrant, and Docker.  It contains a suite of tests.


Angular.rb update

It does indeed turn out that language macros can reduce the amount of Angular.js boilerplate configuration to a minimum.  In the process I’ve spun off ruby2js is a standalone supporting library.

Ruby bindings for Gumbo HTML5 parser

Jonathan Tang: We’re pleased to announce the open source release of the Gumbo HTML parser, a C implementation of the HTML5 parsing algorithm.

I’ve posted a proof of concept Ruby binding to github.

Breaking the Web with hash-bangs

Mike Davies: So the #! URL syntax was especially geared for sites that got the fundamental web development best practices horribly wrong, and gave them a lifeline to getting their content seen by Googlebot.


John Cowan: I’ve been developing a parser for MicroXML which I have dubbed MicroLark, in honor of Tim Bray's original 1998 XML parser Lark. I didn’t take any code from Lark, but we ended up converging on similar ideas: it provides both push and tree parsers (as well as a pull parser), it is written in Java, and I intend to evolve it as MicroXML evolves.

I’ll openly admit at this point that I’m skeptical about the prospects of MicroXML.  I continue to be more hopeful about XML5.  That being said, my own personal efforts have stalled for the moment, at least as they relate to node.js.


Planetary Exploration

The original Planet was simply named Planet (not Planet Planet despite what the web site says).  It was originally created by Scott James Remnant and Jeff Waugh.  While small, it became difficult to maintain, so I embarked on a radical refactoring.  Later, Mars took a different direction.

Now that I’m exploring node.js, I have the opportunity to revisit this once again.  As this is a journey, I’m not sure where this will end up, or if it will end up with anything useful at all.



L.M. Orchard: This post discusses how you can still use feed auto-discovery, even restoring the icon to the toolbar with a few clicks and a drag

Les also has a post on the thoughts behind this change.


I’ve posted a rough beginnings of an implementation of xml5 for node.js.  The core of this work is the tokenizer, for which I wrote a simple script to do the conversion of Anne van Kesteren’s implementation of the parse state methods to the style that Aria Stewart used for html5.  Pretty much the remainder was “borrowed” from html5.

Plenty still needs to be done.


Mime Fail

unicorn: The mime-type of your document (application/atom+xml) is unsupported by this task.

HTML to Atom

Edward O’Connor: Hixie’s not the sort of guy to leave things underspecified, so HTML5 defines (in excruciating detail) how to convert an HTML document to Atom, even when the HTML document in question is, shall we say, less than ideal.

This has spawned a lengthy thread.  In that thread, I requested (one, two, three times) that:

I suggest that you actually test out how common feed aggregators react when they are presented with the same feed differing only in the entry ids.


Foundation for new standards

I’m pleased to see Atom as a foundation for a number of emerging standards in quite a number of venues.


Two Pings For Every Post

Joseph Scott: Today we’ve turned on PuSH support for the more than 10.5 million blogs on There’s nothing to configure, it’s working right now behind the scenes to help others keep up to date with your posts.


Pick One, Revisited

Mikel Lindsaar:

wants.rss do
  redirect_to feeds_path(:format => :atom),

Pure poetry.



Joe Armstrong: After a small amount of experimentation I was able to make Erlang talk to a web page using pure asynchronous message passing.  I think this means the death of the following technologies:

I see the appeal for a single node Erlang or Eventmachine or node.js server.  (Can sockets be passed between servers?)

I’m less clear about how this could work with request/response servers like PHP or Rails.  Event loops on the server are not typically application patterns for applications using such frameworks — shared nothing is more of the norm.

XSS Protection by Default in Rails 3.0


Michael Koziarski: Switch to on-by-default XSS escaping for rails.:

For existing applications, the changes needed will tend to be small and easily spotted.  The biggest impact will be to books and tutorials.  For new applications, this is all goodness.  Edition 4 will be updated to reflect this change.


Humpty Dumpty

Steven Pemberton: I’m not arguing about processing, I’m arguing about the document. And as far as I am concerned, when it comes to saying what sort of document it is, the author is most certainly normative.

While I doubt that I will ever understand why there are people who insist on calling their pages they produce with the intention of being processed as HTML by the name “XHTML”, I can’t deny that there clearly is something that such people want.  A conformance checker can assist such people, and to that end I’ve development a patch to’s Tokenizer that is this totally unofficial, experimental, and subject to change.



It is a name I don’t care for, but alas, one that likely will stick.  The concept is to provide explicit support in HTML for embedding metadata in content.  Both Microformats and RDFa do related things.

As is common in distributed development, things haven’t exactly happened in chronological order.