It’s just data

Dealing with HTML in Feeds

Frédéric Wang: Issue with self closing MathML tags in planet

The problem here is that Frédéric takes the same content that he carefully serves as application/xhtml+xml and places it in Atom feed as HTML.  Planet Venus is based on the FeedParser which uses sgmllib to parse HTML content, and sgmllib by design ignores the self closing tag syntax.

There are a few changes Frédéric should consider in order to make his feed consumable by the widest variety of consumers, but the subject of this post focuses on what changes should be made to the feed parser in order to support this case better.

The simplest, and lowest risk, approach is to automatically close mspace, mglyph, msline, none, mprescripts, malignmark, and maligngroup when inside a math element.  This process will need to be repeated for SVG which undoubtedly will have a considerably larger number of such elements.

A more comprehensive, and therefore one which simultaneously provides greater benefit and greater risk, is replacing the calls to sgmllib with calls to html5lib.  There are two parts to this effort: (a) separate out the usages of sgmllib to parse ill-formed feeds from usages where it is known to be parsing html, and (b) if html5lib is available use dom2sax to produce events that can be mapped to sgmllib equivalents.

Implementing both results in a number of failures which I have sorted by severity, and will describe below:

That’s pretty much it.  Not too bad, really, until you realize that there is an effort underway to port the feedparser to Python 3, and efforts to port html5lib to Python 3 appear to have stalled.

Finally, the process of repetitively parsing HTML content into a DOM, producing events from the DOM, looking for simple patterns like href attributes which may need to be resolved, producing a string, and then repeating the process again to do sanitization or microformats or whatever is a bit suboptimal.  A better approach would be to convert all HTML once into a DOM and then traverse and scour the DOM as many times as necessary.  That’s the design of Mars, which is a more ambitious refactoring of Planet.

Monitoring Working Directories

As git gives me no excuse not to, pretty much everything I do is now under version control, be it scripts, web pages, configuration files, personal applications or clones of projects that are hosted elsewhere.  This gives me the freedom to experiment at will, confident that anything that doesn’t work out can be backed out.

What I have found I’m missing is ready access to information about whether my working directories are clean, i.e., whether or not I have uncommitted changes or changes that need to be pushed.  This is easily rectified with a simple script.


21st Century Customer Support

Had a Time Warner cable and internet outage for about 17 hours.  Power, Dish, Phone, and Verizon (including MiFi) remained up.  Time Warner’s phone system was able to do voice recognition and confirm that the outage was known, but did not have access to accurate information regarding progress, plans, and status.  The real story was the role Twitter now plays; clearly major corporations now employ people full time to monitor and respond to issues reported there.


Filtering the ASF Secretary Inbox

It was only a matter of time, but apparently a few spammers have discovered the Apache Secretary mailing list address.  It’s time to integrate SpamAssassin into the Secretary Workflow.


MicroXML vs XLink

James Clark: Relative to XML, my objectives for MicroXML are:

  1. Compatible: any well-formed MicroXML document should be a well-formed XML document.
  2. Simpler and easier: easier to understand, easier to learn, easier to remember, easier to generate, easier to parse.
  3. HTML5-friendly, thus easing the creation of documents that are simultaneously valid HTML5 and well-formed XML.

This page, like most pages on my web site, is valid HTML5 and well-formed XML.  This page also happens to conform to MicroXML.  I can’t make that statement in general about pages on my site, as I do make infrequent use of xlink attributes (page down a bit in the attribute syntax section of the HTML5 spec).

More generally, unless xlink becomes grandfathered in somehow, MicroXML is not sufficient for SVG.


Bill Stoddard: Ruby hacking over the holidays. Doing some web page scrapes with Mechanize to build an MI database #mechanicalinvesting

I’m not sure how this escaped my radar before, but I have a fair number of scripts that do screen scraping using Nokogiri, and I converted one to add Mechanize, and the result felt similar to the first time I discovered JQuery.


Eric Marcoullier: Aaaaaand that’s all she wrote for Delicious and MyBlogLog

Just when I was starting to wonder whether self-hosting my email was going to be a good idea or not, this happens.  I still use this application daily.  The only substantive change: I substituted nokogiri (which is actively supported) for html5 (which is not).

Mail Milestone

Continuing my explorations that started last year at this time.  My goal is to continue to self host my mail archive, while adding allow concurrent access and offline replication on a number of machines.

Following are the components I have installed and configured, with notes of issues I have encountered and resolved along the way.  Everything below is based on Ubuntu 10.04.1 LTS.


Temperamental Applications

Like Ken, I’ve been experimenting with installing my own mail server.  After putting this task aside for a few days, I got back to it just to find dovecot was down.  Investigating, I found:

Last died with error (see error log for more information): Time just moved backwards by 29 seconds. This might cause a lot of problems, so I’ll just kill myself now.

One could almost imagine this application grabbing a beer and sliding down an emergency slide after making this declaration.

In any case, I did an apt-get install openntp and will monitor to see if this problem reoccurs.

Pyrrhic Victory

The Apache Software Foundation concludes that that JCP is not an open specification process - that Java specifications are proprietary technology that must be licensed directly from the spec lead under whatever terms the spec lead chooses; that the commercial concerns of a single entity, Oracle, will continue to seriously interfere with and bias the transparent governance of the ecosystem;  that it is impossible to distribute independent implementations of JSRs under open source licenses such that users are protected from IP litigation by expert group members or the spec lead; and finally, the EC is unwilling or unable to assert the basic power of their role in the JCP governance process.

As standards organizations are created over the upcoming decades, people will be asking themselves how they can avoid becoming another JCP, i.e., merely a purchasable asset reported on quarterly in P&L statements.


SQLite3::CorruptException: database disk image is malformed

Call for testers.  In addition to making sure that the scenarios described in Agile Web Development with Rails work with Rails 3.0, I’m monitoring the development on Rails 3.1.  At the present time, I have a highly repeatable scenario that produces the error mentioned above.  I’d appreciate any help people can give in running the simple instructions mentioned in this bug, and reporting on the results you see.


Making JQuery TableSorter work with XHTML

Tablesorter fails with thead is undefined when used within content served as application/xhtml+xml.  The fix is simple: lowercase the tag names, as recommended.

Replacement jquery.tablesorter.js and jquery.tablesorter.min.js.

IBM Open Client RHEL 6

Periodically I try the various internal distributions IBM provides for Linux, and each time in the past I’ve come to the conclusion that I’m better off sticking with the public distribution.  Until now.

While there currently are distributions based on Ubuntu and Red Hat, at the moment the Red Hat distribution is more current, so I went with that.


Hobgoblin of Little Minds

Brendan Eich: So, you kids want CoffeeScript, do you?

I tried out CoffeeScript, and was impressed.  A clean and consistent syntax, optimized for modern use cases including string interpolation and event based programming, and one that generates human readable JavaScript.  Couple it with HAML and SASS, and the maintainability of web pages goes way up.

Apparently, Brendan has a thing against significant newlines, but has no problem with the word in having different meanings depending on whether or not its usage is surrounded by parenthesis or not.  My preference leans towards languages with a higher degree of internal consistency.

Full Beta

Dave Thomas: Brought some gerbils back in from early vacation to help crank out a new release of the Rails book...

At this point, the book is off to indexing, copy-editing, layout, and what-not.  This means that the book is at the delicious point where it is done enough to be considered complete, and yet not done to the point where there is no more opportunity to address feedback before the whole thing goes off for final printing.

Also, on Friday everything at Pragmatic is 40% off.

Reconnecting with

Ed Fisher: It seems the certificate that Microsoft uses to secure access to your buddy list was updated with a new wildcard certificate

Instructions adapted for Ubuntu/Firefox:

You don’t even need to restart pidgin.

Stage Five

ASF Board: The ASF will terminate its relationship with the JCP if our rights as implementers of Java specifications are not upheld by the JCP Executive Committee to the limits of the EC’s ability. The lack of active, strong and clear enforcement of those rights implies that the JSPA agreements are worthless, confirming that JCP specifications are nothing more than proprietary documentation.

After Denial, Anger, Bargaining, and Depression comes Acceptance.

Related: history, and how this affects existing projects.

Github Breaks JQuery on Rails

$ rails generate jquery:install --ui --force
    fetching  jQuery UJS adapter (github HEAD)
/home/rubys/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/open-uri.rb:174:in `open_loop': redirection forbidden: -> (RuntimeError)

I presume that we have firesheep to thank for this.


Larry Masinter: Boy am I in trouble now #w3c #tpac talk

Good talk

Zap X

Ken Coar: CTRL-Alt-Backspace is being ignored (i.e., not restarting Xorg)


setxkbmap -option "terminate:ctrl_alt_bksp"

There is a packaged up version of this for Ubuntu users.

The Robbed that Smiles

ASF Board: The ASF fully supports the Apache Harmony community as it moves forward, past this regretful decision on the part of Oracle.  With respect to the many other projects in the ASF that implement JSRs, we remain committed to those projects as they are, and any new projects that wish to implement JSRs that have appropriate TCK licensing terms.

I don’t believe that Harmony is a fork of JSR 176, any more than I believe that Carakan, Chakra, JaegerMonkey, Nitro, Rhino, or V8 are forks of ECMA-262.

It always is a good idea to keep your options open, say by — just for example here — learning another framework.

Scoping out a C++ HTML5 parser

Henri Sivonen: the idea is the have a library that does HTML5 parsing and is API-compatible with libxml2

I decided to run libxml2 against the html5 tokenizer and tree-construction tests.  My conclusion: libxml2’s HTML parser is far from HTML5 compliant.


Ubuntu Unity

Ubuntu: Ubuntu Netbook is a simple, secure and reliable way to use your netbook. It gives you instant access to all the free applications you’ll need, wherever you are.

Ubuntu Netbook introduces a new interface, named Unity.  The documentation for that interface is either missing or at least well hidden.


Unintended Consequences

Joe Gregorio: Today I took my Twitter profile private.  I haven’t deleted the account yet…

What about lanyrd?

Friend of the Court

EFF: Today EFF, joined by Public Knowledge, the Computer & Communications Industry Association and the Apache Software Foundation, filed an amicus  brief asking the U.S. Supreme Court to hear a case in which Microsoft is trying to make it easier to invalidate an issued U.S. patent. If successful, this challenge should help in the fight against bad patents by lowering the standard required to prove that the patent is invalid to the same one required to prove infringement. It should especially help the free and open source community.


Richard Hillesley: A significant difference between LibreOffice and is that there will be no copyright assignment, and the code will belong to the individual developers, as it does on many other free software projects.


Feed Standards

Mike Davies (Isolani): The upside of starting with a clean state of Atom was we could think through every part of the specification, and use the collective experience of the syndication developers to produce a better specification. Also the discussions around the Atom Publishing Protocol helped kickstart REST as a viable and simpler way of offering web services.

I look at it this way: in the 70’s there was a push in the US to adopt the metric system.  While the metric system is preferred by scientists, use of English units still abounds.

In any case, you can still put a 2-liter bottle of Diet Coke inside the same shopping cart as your half-gallon of 2% milk.  What matters most to consumers isn’t the packaging but what is inside.

PDF Viewer in Google Chrome

rhiannon: The recent releases of Google Chrome (6 and up) have PDF support built-in, but it’s not enabled by default.  Here’s how to enable the PDF viewer in Chrome. [via Paul Hoffman]

Unfortunately, it doesn’t work for me.  Ubuntu 10.04, Chrome 6.0.472.63 beta.  The plugin itself does seem to be present at /opt/google/chrome/

Star Struck

John Gruber: What I didn’t foresee was the tremendous amount of software out there that does not properly parse non-ASCII characters in URLs, particularly IDN domain names. Twitter clients (including, seemingly, every app written using Adobe AIR, which includes some very popular Twitter clients), web browsers (including Firefox), and, for a few months, even the website wasn’t properly identifying DF’s short URLs as links.

Makes me want to get an IDN domain name...

New Dawn

I’ve delayed posting this as I wasn’t sure what was OK to post and what was not, but during the second week of this month my son deployed to Kirkuk Regional Air Base where is will be maintaining radar equipment, currently during the night shift.

It is odd to have him without access to a cell phone, but we do talk to him once a week or so, and keep in touch via IM and Facebook.  He’s also received a number of care packages that we and other family members have sent.


Tony Gentilcore: WebKit nightly builds now support the HTML5 async and defer script attributes. This makes it easier for web pages to load faster by downloading JavaScript without blocking other elements of the page.

I’ve done some informal testing, and it appears that defer does have an effect on XHTML pages, at least on Firefox.  I’ve started to modify my pages accordingly.  If anybody sees any problems, let me know.

IE9 Beta

Ted Johnson: I can confirm that your bug report was received and the bug will be fixed for IE9 beta.

And I can verify that the bug was fixed.  At the present time, everything on my site displays and works the same with the latest versions of all the major browsers, with the exception of a few CSS3 features that not all browsers support, namely gradient, box-shadow, transition, and (possibly) border-radius.

One True Way

Anil Dash: some problems are better solved with lots of different efforts instead of one committee-built compromise.

Perhaps I have an odd sense of humor, but I find it a bit amusing and ironic Anil’s page triggered a reaction that the ASF should have One True Page to capture the ASF gestalt on this subject.  The [

So, of course, I can’t resist the opportunity to fork that discussion.


MPL Alpha 2

Luis Villa: The highlight of this release is new patent language, modeled on Apache’s. We believe that this language should give better protection to MPL-using communities, make it possible for MPL-licensed projects to use Apache code, and be simpler to understand

I love that the Apache License, Version 2.0 is becoming effectively the preferred universal donor license for communities which care about patent protection.

Be Liberal in What You Accept

Yehuda Katz: you basically never, ever want to use a >= dependency in your gems.

Jeremy Kemper: Loosen activesupport dep to float on 3-0-stable or master

My guess is that Yehuda has had a bit of much bad experience with depending on somebody to honor their interfaces.  The problem with such an approach is that you essentially stop all forward progress.  In this case, 3.1’s Active Record depends on arel and Active Support, and arel also depends on Active Support.


Sticky Perceptions

Joseph Walton: It’s always illuminating to see the different levels of argument. Is this an obvious bug or a personal preference? It’s like an optical illusion.  Once you’ve seen it one way, your brain really doesn’t want to flip back.

Ruby 1.9.2 incompatibility

Yuki Sonoda: Ruby 1.9.2 has been released. This is the newest release of Ruby 1.9 series.

I have one test that fails with this release.  The problem is easily reproducible.  The same test passes with 1.9.1.  It only affects Rails 2.3.x, Rails 3.0 does not have this problem.

Empty Nest

Melyssa Allen: Meredith College will welcome new students during Move-In Day this Saturday, Aug. 14.  The College expects approximately 375 students.

One of those is our daughter.

Syndicating SVG

Eric Seidel: One of the cool new features of the HTML5 parsing algorithm is the ability to embed SVG and MathML directly in HTML pages. To embed SVG, you simply add an <svg> tag to your HTML page and you can use the full power of SVG.

Unfortunately, his example was sanitized by Venus.  FixedTest.

IE9 Platform Preview 4

Dean Hachamovitch: Please continue to report issues on Connect if your site doesn’t look or work right, and you’re giving it the same code as you’re giving to other modern browsers.

Seeing that the huge watermark issue that I noted with preview 3 wasn’t picked up by osmosis by the IE team, it would seem to be time to enter feedback using Connect.  I’m not thrilled with having to enter information about my employer’s size and my address, but hopefully this time the issue will be picked up by the proper people.

Mime Fail

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

Rails and Snowmen

People have started to notice that Rails is adding a snowman to their URLs.  There even is now a website devoted to this.

The fact that people care about such things to complain indicates that socialization of the concept of that URIs are to be meaningful is working.  Alternatives being discussed to date include renaming the form field, choosing a different character, moving the field to the end of the query, and providing a mechanism to opt out.


Rails 3.0 Release Candidate

Many things have changed since Rails 2.3.x.  Few changes (except for those affecting views and mail) affect existing projects beyond the normal cycle of deprecation.  Lots affect books, and the way you learn Rails.

If you are the type that prefers to learn from a book, there are lots of good Rails books out there.  In all, I would say that the most important criteria is picking a book that matches the version of Rails you plan to be working with on.  Agile Web Development with Rails is available for Rails version 2.x and for Rails version 3.x.


Community over Code

Noah Slater: Joining the ASF was an interesting experience for me. I had come from a free software background, and proudly wielded my email address around. At some point along this journey, I gave up on my publishing software. There was no other reason for my continued involvement with the project, beyond the fact that I loved being a part of the community. It was, and remains, so vibrant and positive. All of the aggression, and trolling, and arguments I had become used to on the free software lists just didn’t exist. It was comparatively idyllic! It slowly occurred to me that free software misses the point, and so does open source. It isn’t about enforcing freedoms and political agendas. It isn’t about more eyes for shallow bugs. It’s about community. Without a throng of decent, friendly people who are open to new ideas, discussion, and who enjoy collaborating and helping each other, a project like this is nothing. A good community can make up for poor documentation, and lack of features. A good community can make up for anything!

I love CouchDB, but I love the CouchDB community even more.

Feedback Loops

Allen Wirfs-Brock: Web standards are complex software artifacts and like all software, they contain bugs. Sometimes the best way to find and fix compatibility bugs is to implement and deploy the standard on widely used browsers. This generally takes place in the context of early releases such as the IE9 platform preview builds. So, when you as a web developer are providing feedback on such releases you aren’t just providing feedback on a specific browser you are also providing feedback on the new and emerging standards that it implements. Of course, for this feedback to be worthwhile, browser implementers and standards authors need to be able and willing to quickly respond to feedback that identifies significant problems. The rapid response to the ES5 jQuery toString problem and other issues on es5-discuss show how browser implementers and other TC39 members can and do work closely together to create a more compatible and interoperable Web. But it all starts with your feedback, so please keep it coming.

Back in Line

Total weight gain on in the 9+1 days of cruise and travel: 4.6 pounds.  Total weight loss on the 6 days since we’ve returned 4.5 pounds.

I expect some dampening oscillation to occur, but seem to be back on track.

Inventory Checklist

Just got back from a 9 day cruise, with no email, internet, or cell phone.  Recommendations for future preparations:

Expensive lanyards and watches are available; oddly water shoes and card cases were hard to find.

Growing Pains

Stephen Shankland: One possibility is a growing rift between two camps that are both deeply involved in the standard. But given the players' commitment and their continuing work together, a rosier scenario is perhaps more likely: oversight of the future Web isn’t collapsing, it’s just rebalancing.

Balanced piece that neither sweeps under the rug nor sensationalizes the differences that we are working through.

HTML5 Interoperability

Brian Hogan: I am getting really, really tired of Mozilla screwing up the HTML5 specification. First it’s video, and now "we’re never supporting Web SQL"

By video, I’m assuming that Brian is referring to the fact that Mozilla does not plan to implement H.264.  With respect to Web SQL, what would be needed is for somebody to define an interoperable dialect of SQL which would be support multiple interoperable implementations.


Remote Application Removal Feature

Rich Cannings: Every now and then, we remove applications from Android Market due to violations of our Android Market Developer Distribution Agreement or Content Policy. In cases where users may have installed a malicious application that poses a threat, we’ve also developed technologies and processes to remotely remove an installed application from devices. If an application is removed in this way, users will receive a notification on their phone.

ProActive Energy Systems

The upgrade is complete, and yesterday the temperatures hovered around the 100-degree mark.  In total, the air conditioners ran 3:14, 5:52, and 5:49 on the first, second, and third floors respectively, and at all times each and every part of the house was comfortable.  I don’t have a baseline to compare it to, but I do recall that in prior years the air conditioner on the third floor was unable to keep up, and therefore ran continuously.

The company that did the work is ProActive Energy Systems.  They were courteous, cleaned up after themselves, and addressed other problems that they noted along the way, such as sealing the air conditioning unit for the second floor.  If others in the area are considering taking similar measures, I would recommend this company.


Running Linux and Firefox, I’m pretty safe from most viruses, but worms are another story, and I was fooled into propagating one earlier this evening.  I haven’t pieced together all the details yet, but as near as I can tell Facebook doesn’t care to police such things despite many people reporting the issue.

Looking deeper into the worm itself, it appears that Google is hosting key portions.  I’ve reported the abuse to Google; meanwhile I’m hoping that somebody at Google who reads this could expedite the taking down of this blog.

IE9 Platform Preview 3

Dean Hachamovitch: Our continued ask, is that you download the latest preview, try the samples on the test drive site, and try your own sites. Send IE9 the same markup that you give to other browsers.

Much improvement (in particular, SVG width, height, and clipPath seem to be supported now).  One issue, which is rather glaringly obvious.



Paul Irish: Because HTML5 and its related technologies cover so much ground, it can be a real a challenge to get up to speed on them. That’s why today we’re sharing HTML5 Rocks, a great new resource for developers and teams looking to put HTML5 to use today, including more information on specific features and when to use them in your apps.

I encourage advocacy sites to validate their content, and either conform or submit bug reports on intentional differences.

Note: Google is not unique here, see also Apple, and Microsoft.

OPML Interop

Dave Winer: Chris Janton pointed out that some of my OPML isn’t properly handled by another OPML-processing application, and that my own validator rejects it as invalid.

I’ve corrected the feedvalidator to not report that message for OPML 2.0 feeds.  The message still is produced for OPML 1.1 feeds, per the test case.

Other problems I noted: it looks like the example isn’t well formed xml, as it includes duplicate attributes.  Additionally, it also contains a number of attributes which are not defined on this page that are not in a namespace.

Planet Venus as a PubSubHubbub publisher

Matt Domsch: Following are 3 patches which implement PubSubHubbub publishing

By the time he was done, there were a total of 1, 2, 3, 4, 5, 6, 7 patches.

To enable, simply pull the latest Venus and add the following to your config.ini, tailoring to taste:

pubsubhubbub_hub =

Foil Covered FROG

Phase two of our whole house upgrade has begun.

Yesterday, a Minneapolis Blower Door was used to depressurize our house, in order to detect leaks.  Overall, the house fared fairly well.

Today started the installation of the aluminum foil energy barricade, starting with the area over the FROG.  I’ve not taken any formal measurements, but on a day like today (92°F) that area generally would be considered unbearable.  I wouldn’t say that it was exactly comfortable, but it was bearable — roughly equivalent to sitting in the shade on a 100°F with no breeze.  By contrast, the foil itself is definitely hot.  This barrier alone has to make a difference.


RailsConf Slides

Slides from the presentation that will start in just a few minutes.

The live dashboard snapshot referred to in the presentation is showing a number of NO OUTPUT failures due to the recent change to 1.9.x breaking my usage of test/unit.

Other pages referenced: bug 4781, bug 4786, changes.

A Rose by Any Other Name

Brad Neuberg: Do they really care that things like Local and SQL Storage were broken out of the main HTML5 spec? Do they care that the Web Socket protocol actually lives with the IETF now rather than being inside the HTML5 spec itself, as it originally was? Do they care about the “how many angels fit on the head of a pin” battles between HTML5 Microdata, RDFa, and Microformats? They don’t. They just want to come up to speed on the newest developments and apply them to their jobs.

I agree with all of the above, with one exception.

Irrevocable Promise

DeWitt Clinton: what is important is how a company licenses a particular technology, regardless of their patent holdings.  As Brett points out in the comments, PSHB is covered under the OWFa, which was signed by all the many contributors.

Deleting Flash Cookies

I’m A Super: What if there was a type of cookie that ...Couldn’t be deleted by your browser

Count me in the set of people who were previously unaware that such cookies existed.  As to deletion, I prefer a more direct approach.


Android Market

Antonio Cangiano: Fine folks from Canada, Australia, New Zealand, Denmark, Sweden, Ireland, Russia, China, India, etc, are all excluded from this platform.

Antonio lives in Toronto.

Beta on Paper

Andrew Hunt: The Fourth Edition of Agile Web Development with Rails has grown to more than 300 pages already. While the beta is still ongoing (and will keep going until Rails 3.0 stabilizes), you now have the option of buying a paperback snapshot at any point in time. This is a separate purchase from the beta ebook and/or final book, for those of you who just have to have paper now, warts and all. Beta and beta-on-paper available from, also see the FAQ at

Ruby 1.9.2-preview3

Yuki Sonoda: I have just released Ruby 1.9.2-preview3 [via DHH]

This is the first 1.9 release that I consider compatible with Rails 3.  1.9.1 works fine with Rails 2.3.8 but not with Rails 3.


Brad Neuberg: Whoa: new Newsweek site uses HTML5 and RDFa!

Compare checkrdfa vs W3C Markup Validation Service: at least one of those two needs to be fixed.

AC Power in the Air

I don’t know how new this is, but it certainly was new to me.  Prior to flying, I generally try to pick a seat that has power.  The first surprise to me was that on my flights the past few days, every seat on the flight had ready access to power.

It wasn’t until I boarded that I noticed the second change.  Instead of a 15V DC “cigarette style” outlet, there was a 110V AC semi-universal (US/EU) receptacle.

Need for More System Tests

Rails 2.3.6, 2.3.7, 2.3.8, all in less than 48 hours.  My tests played a role in getting rails back on course.  Overall, I continue to believe that it is much more important for a project to be responsive than correct.  Ideally, however, these problems would have been noted before shipping.  At least two corrections make sense in response.


Comparing Sanitizers

Sanitizer Differences


Some differences may make sense given the difference in purposes for the codebase.

Gourmand with a Touch of Tangerine

Raph Levien & David Kuettel: Today we are excited to announce a collection of high quality open source web fonts in the Google Font Directory, and the Google Font API to make them available to everybody on the web.

Thus launched a yak shaving journey.  First stop: the Lobster font, which initially seemed like it would be a delightful replacement for the font used in the header of this page.  Then onto experimenting with Tangerine.


Wii Fit Plus

I just completed my second year with my Wii Fit.  I started out at 203 pounds, and by the completion of the first year I was below 180.

Along the way, I bought the Wii Fit Plus software (a minor but worthy upgrade), and got a physical (my doctor was pleased).  While my weight didn’t go down in absolute terms, the only measurement I track did: my waist went from 34" in 2008 to 33" in 2007 to 32" now.  Rings that were once tight now are loose.  Shoes that once fit have had to be replaced.



Alf Eaton: Automatically mounting a remote directory in Ubuntu using autofs + sshfs

Not sure how I missed knowing about autofs before.  Using fstab is problematic for drives on machines that may not be awake at the moment.  Using sshfs would be great for casual use, but as it doesn’t persist across sessions it generally is easier to simply either rsync from or ssh into the machine desired.  This solves both problems.

Step 6 (test that root can log into the remote host) is important if only to add the target host to the root’s known_hosts list.

HVAC Upgrades

North Carolina.  Home office with multiple computers.  On the third floor.  During the summers, the air conditioning unit struggled to keep up.  This year it was time for a two phase upgrade.

Phase one completed yesterday, with the replacement of the 18 year old heading and cooling unit that serviced the third floor with a modern and more efficient model.  Despite a temperature of 90°F (32°C) outside, it is comfortable inside and the unit only needs to run for a few minutes at a time.

Phase two is scheduled to occur next month and involves creation of an energy barricade.

DVCS Interoperability

Michael Greenly: Lucky for me it’s easy migrate from bzr to git using svn as an intermediary.

Based on the comment by Pietro, I should be able to do this directly now.  Unfortunately, it does not appear to be working for me.  Reported as bug 580146.


Venus and HTML5 Video

Mihai Parparita: We’ve added support for the HTML5 <video> and <audio> tags, so that when you come across an awesome video you can share it in such a way that your mobile device-using friends can see it too.

I’ve updated Venus similarly.  This involved pushing out a minor fix to the feedparser.  I’ve also resynced with the latest feedparser and html5lib.

This should allow to support open video.

Moving FeedValidator to GitHub

This involved moving from Google Code, using SVN, to GitHub which (obviously) uses Git.

There were only two minor hurdles in all of this.  The first is that SVN tracks users by their Unix ids, whereas Git tracks users by email addresses.  The next (and final) hurdle was that the feedvalidator project contains two subprojects, each in separate subdirectories.


You Don’t Have to Chase Me

Bob Sutor: No, I don’t want to store my data on your site

People may have noticed that I don’t use Flickr,, etc; have set up my own XMPP, barely use Facebook, intermittently use Twitter, etc.  The sentiment that Bob expressed very much resonates with me.


Allegiance to No Flag

Maciej Stachowiak: Scribd explains their new #html5 publishing platfrom using their new html5 XHTML 1.0 Strict HTML mongrel publishing platform


Simon Willison accurately deciphers the newspeak.  See also Willful Violations.

Serving XHTML to IE9

Dean Hachamovitch: Web browsers should render the same markup – the same HTML, same CSS, and same script –the same way. That’s simply not the case today. Enabling the same markup to work the same across different browsers is as crucial for HTML5’s success as performance.

The only difference in markup that I am sending to various browsers is the MIME type.  While the IE9 Platform Preview is capable of processing application/xhtml+xml, I had no way of distinguishing requests from the first preview from the behavior I see when users of IE8 request “Open in a New Tab” or “Open in a New Window”.


Subversion Write Support

Scott Chacon: Today, we’re announcing write support for our previously released Subversion support Developers and designers in your company can now use existing SVN tools like Versions or Tortoise SVN to collaborate on Git projects.

This weekend, I plan to move feedvalidator to github.

Example System Test Failure

Next month, I will be presenting at RailsConf on System Testing Rails Itself.  At the present time, there is a example of this at work.  The scenario involved is fairly straightforward, and is likely to affect a lot of people, but is just complicated enough that it doesn’t manage to be caught by any of the existing Rails unit or integration tests.


Universal Browser

Mads Ager: this is the first Chrome beta that features initial integration of the Adobe Flash Player plug-in with Chrome, so that you can browse a rich, dynamic web with added security and stability

When will Google Chrome bundle Moonlight?

Beta 2

Beta 2 of Agile Web Development With Rails, Edition 4 is now available.  Over 100 comments were addressed from over 30 individuals.  Special thanks go out Trung LE, David Hadley, Manuel E Vidaurre Arenas, Wayne Conrad, and Steve Nicholson.

This beta adds coverage of sending email and integration testing.  I’m continuing to keep on top of Rails and Ruby changes, and am opening bug reports on what I find.



Upgrading to Lucid Lynx went smoothly as usual, though by upgrade I mean do a complete backup, wipe disk, do a full install, install of the packages I need, and then copy back in the various data directories.  I’m keeping with Pidgin and Thunderbird versus Empathy and Evolution.  I also don’t expect to use Gwibber.  As I had done a test install first with a beta, I was prepared what floatflt went missing.  Looking at my Apache logs, that entry is gaining a steady stream of search results.  I like being able to give back to the community in such a manner.

Having literally terabytes of storage and a 100Gb Ethernet sure makes this process smoother than it was a decade ago.


WS-Rest Slides

Slides from my WS-Rest keynote.

Added bonus: I finally got to meet Leonard Richardson, with whom I co-authored of the RESTful Web Services book.

Restoring floatflt.sty

floatflt has an unusual license which has been deemed unfree.  It was included in Ubuntu 9.10, but has been removed from Ubuntu 10.04Build instructions, however, are provided.


Open Graph Protocol

Open Graph Protocol: is currently being consumed by Facebook (see their documentation) and is being published by IMDb, Microsoft, NHL, Posterous, Rotten Tomoatoes, TIME, Yelp, and others.

I think it would be helpful if there was a validator for this vocabulary, as well as and a migration path to html5.

Flash & the Arrow Keys

Bruce Tognazzini: He did the same thing with the original Mac, although then, Flash was not the issue. Few will remember, but, when the Mac debuted in 1984, there were no arrow keys on the keyboard. That was a big deal.

Kevin Lynch’s and Tim Bray’s take.


Twitter as a Tuple-Space Platform

Daniel Lucraft: Twitter is turning itself from a social network into a gigantic tuple-space pubsub platform that just happens to have a big social network implemented on top of it. [via Simon Willison]

Marcel Molina: We want to provide open-ended utility for all the developers to innovate on top of.

I’d love to see this cloned at the desktop (think: NotifyOSD/growl), and at the LAN level (based on something like CouchDB).


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.


Edition 4

The first beta of Edition 4 is now available.  It is based on Rails 3.0 beta 3, which was released yesterday.  Yes, it will be out of date in a week, but that’s part of the fun. 

We also have a new addition to the team: Development Editor Susannah Davidson Pfalzer.  She is keeping me on my toes, and in particular is interested in making the book to be more useful for developers who may not only be new to Rails, but also new to Ruby itself.


HTML5 Input Types

Mathias Bynens: Not “completely” — still no use of the new input types, while a comment form is the perfect use case.

Easily enough addressed.  I’ve added type="search", “email”, and “url” to my search and comment forms, as well as added placeholder text to my search form.  This is a template change, and I’ve not flushed my cache of web pages, so while it takes effect immediately on my front page and this blog entry, it may take up to four days to propagate across my site.

What difference does will this make to most visitors?  At the moment, not much.

Memory is Fungible

Robert Love: No hard drive means no swap file [via Tim Bray]

I don’t follow.  I don’t have a hard drive on my 4GB EEE netbook, yet I have a swap file on it.  I see no reason why a 16GB iPod couldn’t have a swap file.


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.


System Testing Rails Itself

My proposal got accepted at RailsConf.  Along the way, I’ll be discussing and demoing cgi-spa, gorp, awdwr, and my dashboard.  Should be fun, and I look forward to meeting many of the people I have been working with.

GitHub support for Subversion

Scott Chacon: Ever wanted to use SVN to grab code from GitHub? Well, now you can, and just like that GitHub is the world’s biggest Subversion host.

Tried it with svn co  It works.  Way cool.  [via Simon Willison]

Gamma Correction Gone Wrong

Henri Sivonen: instead of fixing the original problem PNG gamma “correction” created a new, even worse problem: inconsistent color within a Web page.

Another leaky abstraction that has puzzled me for a while now has an explanation.


Inbox Failure

Mark Pilgrim: My attempts at compartmentalization have failed. There is only one inbox.

Nearly three decades ago, I had an opportunity to witness the effect of an email sent to a select group being widely forwarded.  I no longer remember the details, but I do remember the decision that I made at that time.  Ironically, it is not a decision that I widely publicize as I do not condone breaking of netiquette.  But it was that decision that leads me to open source, open standards, and blogging.

But this post isn’t about that.


Prepping for IE9

Sylvain Galineau: As the specification nears Recommendation and browser vendors are working on their final implementations and testcases for submission to the W3C, we recommend that new content always include a border-radius declaration without vendor prefix.

It turns out that I hadn’t consistently done that on this blog.  That has now been fixed.


Authoring Conformance Requirements

The HTML5 validator will produce both errors and warnings. I personally believe that many of the so-called “errors” are at best shoulds and at worst pose no real interoperability problems and are so frequently violated that the message produced only serve to obscure real problems.

To help evaluate this thesis, I’ve analyzed a few sites, categorized each error and warning, and taken a first pass at sorting the message.


Non-Draconian XHTML?

Simple test script - Output with various browsers.

Note the one in the top right corner.

Gardens and Gates

Tim Bray: The iPhone vision of the mobile Internet’s future omits controversy, sex, and freedom, but includes strict limits on who can know what and who can say what. It’s a sterile Disney-fied walled garden surrounded by sharp-toothed lawyers. The people who create the apps serve at the landlord’s pleasure and fear his anger.

One question: Why can’t username contain an @?

Solar Cycle

Unlike previous years, this year we have a week long set of events planned: Angus, Fluffy, Clapton, Foxworthy.  Key difference: we are (nearly) empty-nesters.

PubSubHubBub Publisher

Previously, I had been pushing pings to, blogrolling, technorati, and weblogs.  I removed all of these, and added  This involved two steps.


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.


Ruby Installer on Windows

RubyInstaller has an RC2 version of Ruby 1.8.7-p249.  Base installation is a snap.  Update RubyGems.  Install sqlite3.  Install rails.  Run a few tests...


Constrained Data and Interoperability

Tim Bray: Any standard that tries to constrain the way in which data, once received, is processed, is broken.

HTML5 is clearly broken by Tim’s definition.  And while it may go too far in places, I can say that there are definitely many areas where that definition is a good thing.  I wouldn’t have agreed with that statement a few years ago, but I do now.  Enthusiastically.  But to explain why, I need to first back up.


Adobe’s non-Formal non-Objection

No work stopped.

At no time did the current, up to the minute, versions — complete with occasional typos and botched commits — of the editor’s drafts become unavailable: HTML5, RDFa, MicroData, 2D Context, Markup, Diffs.

The absolute most that anybody, anywhere, ever proposed was that these very same documents be published with different labels


Willful Violations

ws://rest.2010: Keynote: Sam Ruby, Willful Violations

A few things that you can be sure of.  The format of the presentation will be HTML5.  And that it will be made available either on the web either concurrent with, or shortly after, the presentation itself.

Buzz Blogs

DeWitt Clinton: The idea is that someday, any host on the web should be able to implement these open protocols and send messages back and forth in real time with users from any network, without any one company in the middle. The web contains the social graph, the protocols are standard web protocols, the messages can contain whatever crazy stuff people think to put in them.

DeWitt posted this within Buzz.  If I want to keep up with things DeWitt’s posts via buzz, there’s a feed for that.  This particular post generated a lot of comments, and there is a feed for that.  I do have some issues I would like to see addressed, but basically what this means that Google just made available a blog to every GMail user.

Pick One, Revisited

Mikel Lindsaar:

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

Pure poetry.


WYSIWYG SVG Editing In Instiki

Jacques Distler: thanks to the great work by Jeff Schiller, Alexis Deveria and their collaborators on the SVG-Edit project, you can create, edit and manipulate inline SVG and mixed MathML/SVG content, right in Instiki

Share Rather Than Transfer

Simon Phipps: While Matthew’s discussion is good (and the links are very useful), he misses the key point: that communities where one member has significantly more rights than all the rest tend to fail. If you must aggregate copyright, share rather than transfer, and aggregate in the hands of a community-controlled entity.

Facebook does XMPP

Florian Jensen: just use your Facebook Username and Password, and use the server

Also ensure Require SSL/TLS is not turned on.  Other than that, seems to work seamlessly.

Participating is Key

Tim Bray: the Net is the greatest listening engine ever devised. These days anyone can choose, with its help, to be well-informed

Yehuda Katz: It’s easy to spit out “” or RTFM, but in truth, these beginners barely know where to look. All too often, we (open source leaders) assume that if someone couldn’t figure out the right search term on Google, they can never become a viable community member.

I claim that there is a third ingredient that makes this all work.  That ingredient is participating.


Chromie and Inline SVG

Anthony Laforge: The Dev channel has been updated to 5.0.317.0 for Google Chrome Frame.

This release addresses the issue I reported in September.  Accordingly, I have set these pages to opt-in to the use of Google Chrome Frame if the User Agent header indicates that this is supported.


Rails 3.0 Beta


David Heinemeier Hansson: You thought we were never going to get to this day, didn’t you? Ye of little faith. Because here is the first real, public release of Rails 3.0 in the form of a beta package that we’ve toiled long and hard over.  It’s surely not perfect yet, but we were out of blockers on the list, so here we go. Please give it a run around the block, try to update some old applications, try to start some new ones, and report back all the issues you find.

For those who have purchased (or who have yet to purchase) Agile Web Development with Rails, Edition 3, I’ve begun a page which details the differences that affect what is described in the book.


Rails 3.0 on Cygwin

Rails 3.0 requires 1.8.7 or later. Both InstantRails and the (current, released) version of RubyInstaller bundle Ruby 1.8.6.  The files on the Ruby site seem to be a scavenger hunt.  While the next release of RubyInstaller will address this, we can run today with Cygwin.


FireBug + Ubuntu + AMD64

Tools => AddOns => Extensions => Firebug 1.5.0 => Uninstall => Uninstall => Restart Firefox

sudo apt-get install firebug

Restart Firefox

Fixes bug 449744.

Evolution of Tinkering

Jim Stogdill: The automobile went through a similar evolution. From eminently hackable to hood essentially sealed shut. When the automobile was new, you HAD to be a mechanic to own one. Later, being a mechanic gave you the option of tinkering and adapting it to your specific interests. In fact, that’s how most people up until about 1985 learned to be mechanics.


Secretary Workflow

The next step of automating the workflow of the Apache Software Foundation secretarial task went operational today: automatic sending of confirmation emails once documents are received and filed.


Think Different

Tim Bray For creative people, this device is nothing.  Tim also is quite concerned about losing access to emacs.

Imagine a 2.66GHz Intel computer with five USB 2.0 ports, one FireWire 800 port, a mini-DVI port, and a DVD burner.  Comes with a wireless keyboard and a 9.7 inch wireless display.  The display is fully touch enabled, and can even support a virtual keyboard.  Yes, this system runs EMACs.  It also can run J2EE, Ruby on Rails, and Django.  The display connects to the base station via 802.11, and supports both canvas and AJAX.  Comes with OS/X, but you can also install Windows 7 and/or Linux alongside it if that is your preference.


Retro Virus


How timely.  Within the past week, both my sister-in-law and my wife’s netbooks got hit by viruses.  I spent yesterday wiping and reinstalling my wife’s machine.  While many of the details have changed, the overall process was very familiar.



Yesterday, I collaborated with Joshua Peek on improving the parsing of the Content-Disposition header in Rack.  Content-Disposition is used on file upload scenarios.

The previous state was that rack used a simplistic regular expression that didn’t match either the RFC or what browsers actually sent.  What the new code does is first try to strictly follow RFC 2183.  When that fails, it tries to follow what browsers actually do.  And in this case, what browsers actually do is slap quotes around the file name, independent of whether the file name contains backslashes or quotes.  A notable exception to this is recent versions of Chrome.

Peg svn revisions

Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato: You need only append an at sign to the end of the path, such as news@11@

But only for versions of svn >= 1.5.  Very annoying.  Especially if you have a script that works for everything you throw at it, until it comes across a file with name containing an ‘@’.  So you dutifully add the ‘@’ as others have done, find that the code passes all of your tests and then fails on a co-worker’s machine who is running a different version of svn.