Forestry, a Static Site CMS

Forestry is a content management system that runs in your browser. On the backend, it integrates with a static site generator such as Hugo, letting you edit your static website in your browser just like any other content management system. I am writing this blog post with it on my iPad, using voice dictation.


» Continue Reading (about 300 words)

Why Outlook is the best iOS GMail App

I switched to an iPhone about 6 months ago and have found it superior to the Android phones I’ve used, except for one baffling thing. The GMail app on iOS is awful compared to the Android version. Unusably awful, actually. Fortunately, Outlook is very good. Better than the alternatives. Here’s why.


» Continue Reading (about 700 words)

Minimal Social Meta Tags for a Blog

When someone shares your blog article on a social network, odds are it will appear with some descriptive text, images, and so on. If your blog lacks explicit instructions, in many cases these properties are just guessed-at and won’t be great.

I’ve seen a lot of blog authors and template creators go too far the other direction and add tons of redundant meta tags, which will make the page larger, heavier, and slower.

What’s the minimal necessary set of tags?


» Continue Reading (about 400 words)

Help Me Make This Blog More Accessible

Dear Reader,

Hi! I probably don’t know you, but I’d like to make this blog better for you. If you’re disabled—for example, perhaps you use a screen reader, a special device, or have other needs that I might not anticipate, I’d really love your feedback on what I can do to make my content easier for you to read and enjoy.


» Continue Reading (about 300 words)

Digg Reader and Feedly, Two Great Google Reader Alternatives

I used Google Reader since time out of mind, but of course by now you know it was discontinued a while ago. I still live and breathe RSS feeds, and I really don’t pay much attention to social media, news sites, or the like of Hacker News and Slashdot. I like the flexibility and unhurried pace of subscribing to updates from specific individuals and companies.


At first, I didn’t see a reader that offered the experience I was looking for: a GMail-like user interface with feeds clustered together in categories, navigable with keystrokes. Importantly, some subtle features such as marking an item unread are a key part of my usage.

» Continue Reading (about 700 words)

Using encryption? You're suspicious

Yesterday more details on the NSA’s secret and illegal monitoring activities were revealed. (Yes, the NSA revealed some things themselves, but as far as I can tell, that was only a conciliatory effort and didn’t actually reveal more details – just more talk.) Remember my recent series of blog posts, where I claimed that privacy in today’s world is impossible without trustworthy hardware/software, privacy is impossible unless it’s default, and privacy is essentially unachievable because of the scope of the problem, and the way we’ve built our society and technologies?

» Continue Reading (about 400 words)

Model-view-controller considered harmful

In 2001 I created a PHP 4 web application framework from scratch as the backbone of a sophisticated application. Back then frameworks weren’t cool. Smarty templates were the hotness.

My framework had URL routing, templates with a capable templating syntax similar to mustache, loosely coupled and tightly cohesive object-oriented design, an elegant way to access the database without dumbing it down, and nicely separated business logic and presentation layers – among many other nice things you find in good frameworks. As the application grew more and more complex, the framework continued to serve well with only occasional enhancements. It’s still in use more than a decade later.

I mention this because I think I’ve been reasonably capable of designing maintainable systems for a long time. But the so-called MVC paradigm (model, view, controller) has never made sense to me.

Rectabular Excrusion Bracket

» Continue Reading (about 700 words)

Using AdBlock to clean up the UI on sites I use a lot

I use LinkedIn a lot. I also use various Google properties a lot. Both of them have a bunch of distracting and annoying UI features that just get in my way. I know Google and LinkedIn have a vested interest in catching my attention and trying to get me to use their products in the ways that will make them the most money, but as a user, I don’t care what they want.

» Continue Reading (about 600 words)

Updated spam controls

I’m not using my previous combination of Bad Behaviour + WP-Gatekeeper anymore. I’ve removed them in favor of ordinary reCAPTCHA. Although it lets a lot of spammers through (almost a thousand spam comments in the day I’ve had it enabled) and Bad Behaviour let only 1 or 2 a month through, it became clear that a lot of people were getting blocked wrongly by Bad Behaviour. This means that I can’t practically moderate the spam queue.

» Continue Reading (about 200 words)

Thoughts on REST web services

I usually keep pretty quiet on things that are controversial, and goodness knows you can start a holy war fast with any comments about REST web services. But I’ve been thinking and working on these things for years – REST for over a year, SOAP and friends since 2003 – and maybe my opinions will be interesting to someone. I dislike SOAP. I’ve worked a lot with it, doing about a dozen major integrations with platforms from companies like Amazon, Google, and Yahoo, using several different programming languages, primarily .

» Continue Reading (about 1100 words)

Organize to resist SOPA in DC

If you’re in the DC area, there’s an emergency meeting of the DC Tech Meetup to get involved in advocating against SOPA and PIPA legislation. If you can’t make it in person, you can use the EFF’s online form to write your representatives about SOPA and PIPA. Don’t wait until it’s too late. The Internet is a vital part of our freedom. Well-intentioned legislators could damage that greatly while trying to solve problems they don’t understand fully.

» Continue Reading (about 100 words)

Using the Nook Color as a full-featured Android tablet

I bought a Barnes and Noble Nook Color e-book reader and ripped out the Nook software, replacing it with the CyanogenMod distribution of the Android OS. It’s really, really nice hardware, and CyanogenMod (CM) is really, really nice software. I love them both, and my regular readers will remember that I’m not a gadget guy. Read on for more. I never thought I’d get a tablet, until my phone died and I got a Droid 2 as a replacement.

» Continue Reading (about 800 words)

The drawbacks of shortlinks

These days it seems that people would rather generate a shortlink than use a real link, even when it’s not much shorter. It’s hip, after all. (Peter actually caught me doing this. It was for a link that used to be long but was shortened recently so a shortlink isn’t needed anymore. I did it to continue a habit, not for hipness.) I’ve begun to see an increasing number of drawbacks to short link services.

» Continue Reading (about 300 words)

Why measure pageviews per month?

I don’t get why companies talk about how many pageviews they get per month. Maybe it is a handy metric when thinking about revenue, but when thinking about performance, it’s not a convenient way to measure. For example, “we get 50M page views per month.” Let’s translate that into something useful for an engineer: 20 page views per second. How about 2.5B pageviews per month? Roughly 1000 per second. Much easier to think about what this means.

» Continue Reading (about 100 words)

Breaking news: SHOW INNODB STATUS ported to XML

If you’re like me, you’ve gotten tired of writing endless test cases for parsers that can understand the thousands of variations of text output by SHOW INNODB STATUS. I’ve decided to solve this issue once and for all by patching MySQL and InnoDB to output XML, the universal markup format, so tools can understand and manipulate it easily. Here’s a sample snippet: <status><![CDATA[ ===================================== 100320 15:46:24 INNODB MONITOR OUTPUT ===================================== .

» Continue Reading (about 100 words)

How to lie beautifully with FusionCharts

Gotta love those three-dimensional charts. They sure are shiny! Look at this: FusionCharts graphs This is a screenshot of FusionCharts graphs. But wait, on closer inspection: 5 and 7 are the same height? 6 is exactly twice as tall as 2? Pseudo-three-dimensional charts are the bane of my existence. Tufte would definitely not approve. (If you don’t have The Visual Display of Quantitative Information, you should really get it and give it a read.

» Continue Reading (about 100 words)

Stopping spam on Google Groups

Spammers seem to have gotten smarter recently, and able to post garbage to Google Groups. There was some spam on a couple of the groups I’ve created, and members helped me find a way to stop it. I’m glad they did, because since then it’s stopped an increasing flow of spam. I just deleted and banned a whole bunch of emails titled “answer group” across different groups, and I see the same crud got through to a group I’m on but don’t own.

» Continue Reading (about 200 words)

Speaking at EdUI Conference 2009

I’m going to present at the EdUIConf conference 2009. This is a conference focused in two directions: Web professionals in higher education, and higher education for web professionals. I believe it’s going to be comparable to, or at least in the same vein as, some of the more popular conferences about user interface design, Web standards, and the like. (It’ll also be much more affordable.) The speaker lineup boasts a number of heavy hitters.

» Continue Reading (about 300 words)

How to add a wiki homepage, sidebar, and TOC in Google Code

I just adore Google Code. But the default wiki view (a list of pages, sorted by last-modified) is lacking something. Fortunately, it’s fixable. Here’s the before: Default wiki list And here’s the after: Wiki with sidebar and default page Here’s how: Create a wiki page called TableOfContents, or something like that. Using normal wiki syntax, enter links and text for your table of contents. The best way to do this is to use bulleted lists to organize and outline the pages.

» Continue Reading (about 300 words)

Wikipedia's concensus: Linux is an operating system

My brother sent me these thoughts, slightly edited: Recently I looked at the [Wikipedia] Linux page. To my surprise it’s not about the kernel Linux, it’s about the “OS”. I looked at discussion and it appears that by general consensus the term Linux applies to the unix like operating system, and so it is correct for Wikipedia to follow that consensus. So, instead of providing information, they are deliberately misleading folks… Often what the majority does is wrong because the majority of people are not the experts.

» Continue Reading (about 300 words)