This version of the site is now archived. See the next iteration at v4.chriskrycho.com.
Filed under: “Posts”

User Agent Detection Will Get You In Trouble

One of the joys of corporate IT policies is seeing how things break when you’re in an unusual configuration on the web. Like, say, running Firefox behind a corporate proxy that tells every site out there that you’re actually running IE7. This morning, I paused from other tasks to read an article on a well-known religious commentary website, and saw a message at the top alerting me that I’m using an out-of-date version of Internet Explorer (which I would be if I were running IE… but this is on a relatively up-to-date version of Firefox).

Bad enough that for whatever reason our corporate IT has taken to spoofing outgoing traffic this way when routing through their proxies. (One wonders just how much of the reported IE6 or IE7 traffic on the web comes from this sort of thing.) But the real problem is that the site I visited was broken. Horribly, horribly broken.

That message – “You’re using an outdated version of Internet Explorer” – told me why. Read on, intrepid explorer →

You’ll pay more tomorrow

I’ve spent a fair bit of time recently working on a project that, all things considered, really shouldn’t be that difficult. A client wanted a change made to his web application, a change that is simple in concept and – in theory, at least – should be equally simple in execution.

But it isn’t, and it’s not because of any hidden complexity in the task itself. Rather, the problem is that the code base for the web application is, to put it bluntly and without a hint of hyperbole, awful. I’ve worked on a fair amount of legacy code on various projects, in various languages, over the last few years. This one is the worst.

Individual functions hundreds (perhaps thousands) of lines long. No comments. No object orientation to speak of. Hackish solutions to problems all over the place.

But this isn’t a complaint post. It’s a request to the thousands of people in the world who are tempted to say, “Well, this will work for now…” Some of you are developers yourselves; others are simply dabblers. Whoever you are, whatever your context, whatever your project: there is a problem with “This will work for now,” and that problem is called tomorrow. Read on, intrepid explorer →

Unfortunate lookalikes

One of my great pet peeves with Arial is the relationship between ‘r’ and ‘n’ when set next to each other. If one compares rn and m, they’re nearly identical. The kerning is off, and the letters designed too similarly.

My mind glitches every time I see them in writing – particularly when the alternative is nonsensical or bizarrely out of place, as in the common abbreviation of postmodern as ‘pomo’, which has the unfortunate lookalike of ‘porno’ in Arial. Certainly not the sort of mistake one wishes one’s readers to make.

Typography matters.

A Plea for Open Data

One of my current side projects involves some database work for a client in an academic context. There is an enormous trove of data being collected by the project, but the local administrators refuse to publish the data on the internet themselves. This despite the fact that it’s already being published to their academic intranet. This despite the fact that they’re willing (with some persuasion) to pay an outside contractor to develop a means of displaying the data for all the public to use.

I’m not sure what’s driving this sort of recalcitrant refusal to share the data, but I can’t see there being any good reason. Read on, intrepid explorer →

Responsive Design, Server-Side Feature Detection, and a Big Mess

A couple days ago, Jason Gigsby (@grigs) highlighted this post by Dave Olsen on responsive design from the server-side. The biggest thing that caught my attention was his focus on user-agent detection for altering the delivery of content.

There is some sensible stuff in there; it’s worth your time. In particular, I can see the value in delivering different kinds of resources to different targets, especially in the case of video or images, where resolution and bandwidth may be constrained. Read on, intrepid explorer →

The Danger of Search Engine Optimization

I recently installed some search engine optimization plugins on the WordPress back end of this site. In the main, these are fairly simple tools with straightforward benefits. However, even in the first day of having them installed on my site, I recognized that there are some significant potential pitfalls in even having these tools present on my site. When every post has beneath it a tool evaluating the search engine efficiency of a given post, there is a significant danger of writing content to the search engines, instead of writing content to your audience. Read on, intrepid explorer →

Upgrading WordPress manually

I was recently hired to do some back end work on Church of Christ the King’s website. (Note that the site design is not mine.) In this case, the initial change I needed to make was small – trivial, even. However, I noticed as I made the change that the site was running WordPress 2.8.4. Unfortunately, that meant I was going to be upgrading WordPress manually. Read on, intrepid explorer →