My Twitter Following Strategy

Apr 8, 2018

I have a deliberate strategy that guides who I follow on Twitter, and the tools and techniques I use to curate my feed. I’m not sure how unusual it is; perhaps many of us do the same types of things but don’t share our thinking with each other. I wrote this post in case my thinking is useful to others.

Switching From Swiftype to a Static JSON Index and LunrJS

Feb 17, 2018

I was shocked how easy it was to add a browser-based search engine to this website using LunrJS and Hugo’s new content types. With a few small changes and less than 30 minutes of work, I had a great search engine up and running. I moved it under the menu and made it into a separate search page.

Forestry, a Static Site CMS

Nov 4, 2016

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.

Why Outlook is the best iOS GMail App

Dec 16, 2015

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.

Minimal Social Meta Tags for a Blog

Dec 13, 2015

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?

Help Me Make This Blog More Accessible

Nov 14, 2015

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.

Digg Reader and Feedly, Two Great Google Reader Alternatives

Apr 3, 2015

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.

Xaprb now uses Hugo

Jan 15, 2014

I’ve switched this blog from Wordpress to Hugo. If you see any broken links or other problems, let me know. I’ll re-enable comments and other features in the coming days.

Using encryption? You're suspicious

Aug 1, 2013

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?

Model-view-controller considered harmful

Apr 17, 2013

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

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

Apr 6, 2013

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.

Updated spam controls

Feb 18, 2013

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.

Thoughts on REST web services

Nov 30, 2012

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 .

Organize to resist SOPA in DC

Jan 16, 2012

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.

Using the Nook Color as a full-featured Android tablet

Jun 4, 2011

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.

The drawbacks of shortlinks

Apr 21, 2011

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.

Why measure pageviews per month?

Oct 1, 2010

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.

Breaking news: SHOW INNODB STATUS ported to XML

Apr 20, 2010

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 ===================================== .

How to lie beautifully with FusionCharts

Sep 28, 2009

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.

Stopping spam on Google Groups

Sep 13, 2009

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.