Now on App Engine Standard

Saturday, November 18th, 2017

If you’re reading this, you’ve stumbled across the HTTPS secured and IPv6 enabled version of the Cafes. This has moved from a classic shared Linux server on to App Engine Standard on GCP. The transition is still in progress and was not without bumps.

Cafe au Lait/con Leche Are Down

Wednesday, March 16th, 2011

Yes, I know Cafe au Lait and Cafe con Leche are down (not that this matters a great deal to anyone right now.) This is the result of a planned maintenance that requires me to do some DNS changes on my end. Unfortunately, I’m a little hobbled at the moment since I’m traveling in Europe without my personal laptop and I’m staying a hotel with pathetic wireless. I’ll try to get it fixed ASAP, but as soon as possible could be as late as next Monday.

Update: I forgot that XOM downloads are also hosted on Cafe con Leche, and these matter a little more than year old news. So I spent a few minutes this morning to dig the password for my DNS server out of some web-based backups (Go Crashplan!) and updated the sites with the new IP addresses. All should be resolved as soon as the changes propagate over the next three hours or so.

Update 2: All is well. Both sites are up.

Upgraded to WordPress 2.6

Saturday, August 2nd, 2008

I’ve upgraded this site to WordPress 2.6. Please holler if you notice any problems. Thanks.

Chapter 3: Well-formedness

Monday, July 14th, 2008

Here’s part 15 of the ongoing serialization of Refactoring HTML, also available from Amazon and Safari.

The very first step in moving markup into modern form is to make it well-formed. Well-formedness is the basis of the huge and incredibly powerful XML tool chain. Well-formedness guarantees a single unique tree structure for the document that can be operated on by the DOM, thus making it the basis of reliable, cross-browser JavaScript. The very first thing you need to do is make your pages well-formed.

Validity, although important, is not nearly as crucial as well-formedness. There are often good reasons to compromise on validity. In fact, I often deliberately publish invalid pages. If I need an element the DTD doesn’t allow, I put it in. It won’t hurt anything because browsers ignore elements they don’t understand. If I have a blockquote that contains raw text but no elements, no great harm is done. If I use an HTML 5 element such as m that Opera recognizes and other browsers don’t, those other browsers will just ignore it. However, if the page is malformed, the consequences are much more severe.

First, I won’t be able to use any XML tools, such as XSLT or SAX, to process the page. Indeed, almost the only thing I can do with it is view it in a browser. It is very hard to do any reliable automated processing or testing with a malformed page.

Second, browser display becomes much more unpredictable. Different browsers fill in the missing pieces and correct the mistakes of malformed pages in different ways. Writing cross-platform JavaScript or CSS is hard enough without worrying about what tree each browser will construct from ambiguous HTML. Making the page well-formed makes it a lot more likely that I can make it behave as I like across a wide range of browsers.


Thursday, July 3rd, 2008

Here’s part 14 of the ongoing serialization of Refactoring HTML, also available from Amazon and Safari.

XSLT (Extensible Stylesheet Language Transformations) is one of many XML tools that work well on HTML documents once they have first been converted into well-formed XHTML. In fact, it is one of my favorite such tools, and the first thing I turn to for many tasks. For instance, I use it to automatically generate a lot of content, such as RSS and Atom feeds, by screen-scraping my HTML pages. Indeed, the possibility of using XSLT on my documents is one of my main reasons for refactoring documents into well-formed XHTML. XSLT can query documents for things you need to fix and automate some of the fixes.