Usability in Everyday Life
July 21, 2008
Tags: oscon, usability, software engineering, portland, doubletree
As software engineers (especially ones who work on forward-facing user interfaces), we are taught to think about usability. Many of us are not good at it - including me (though I’m making a conscious effort to get better about it and "think more like a user"). Large companies, on the whole, have mastered this because they can expend huge amounts of money on research and focus groups to study what people want and how they interact with their software. Apple is a master at this. And, this is why the GIMP is terrible to use when compared to Adobe Photoshop. Oh, sure, the program itself is perfectly capable, but the interface was clearly designed by an engineer and not a graphic designer.
The other approach is, of course, to separate the engineers from the UI design people. In a company the size of Apple or Adobe, I’m sure this is probably what they do. But small to midsize companies simply can’t afford to do that and, even if they could, somewhere along the line some engineer has to interface with the front end code.
But thinking about the "user experience" is not just related to programming - any industry that has to deal with people who are not native or fluent with that industry can benefit from trying to "think more like them."
The hotel I’m staying in for OSCON here in Portland, the Doubletree, is a good example of this. When you exit the elevator on the fifth floor, there is the standard sign that rooms 500-520 are to the right, and 521-541 are to the left. The room numbers are not on the doors - they are on small plaques next to each door. But, the plaques don’t uniformally face the hallway or face in a uniform direction - some face the way you are walking from the elevator and some, strangely, face the opposite direction so that they will never be seen unless someone is walking from the opposite direction as they would normally walk when looking for a room.
Think about this for just a second. The time when those plaques are needed the most is when someone is first finding their room, and they will almost always be coming from the elevator. After that, you usually remember, generally, where it is. In order to see half of the signs on the floor, you have to turn around and look behind you as you are walking.
To add to this, think about how you would normally look for a room in a hotel. Do you go all the way to the end of the hallway? No - you probably stop about 10-15 feet from the end if you determine that your room is not one of the remaining ones. So unless you are paying careful attention to the plaques on the wall, there is a chance that you will not ever see your room. This is the reason I spent ten minutes walking up and down the hall trying to find my room: it was at the very end of the hall with a plaque that was only visible if you were walking the opposite direction.
Now, it’s not like this breaks my entire world. I found my room, put my stuff down, and went out for a beer. But when looked at through the lens of usability, which software engineers are very familiar with, it could certainly use improvement. I’m sure the design makes perfect sense to the building architect and to all the people who work in the hotel. But to a guest, it makes little sense and requires extra time spent looking for their room.
Search Engine Friendly URLs with mod_rewrite
July 17, 2008
Tags: apache, mod_rewrite, rewrite
By now, I’m sure we all know about search engine friendly (SEF) URLs - that is, URLs that are able to be traversed by a search spider. Spiders don’t like to see a bunch of stuff on the query string (file.html?blah=foo), but do like standard URL patterns like /file/foo.html. Not to mention that it’s a lot easier to read. But what happens when you need to do something more complicated - say, rewrite using different types of conditions with optional arguments?
Say, for instance, I have a script that takes arguments like this:
/file.php?id=1[&view=1]
And I want to rewrite it to look like this
/file/(id).html[&view=1]
In this case, the view argument is optional and could relate to any number of unique cases, such as internal viewing or refcode tracking, for instance. Well, your first thought might be something like this:
RewriteCond %{REQUEST_URI} ^\file\/\d+\.html [OR]
RewriteCond %{REQUEST_URI} ^\/file\/\d+\.html(.*)
RewriteRule ^\/file\/(\d+)\.html(.*) /file.php?id=$1&$2 [L]
But it doesn’t work. This is because the query string isn’t part of the URI available for the rule to match. But, mod_rewrite, being the cool Swiss Army knife it is, lets you get around this by back referencing to the condition. Using the % operator instead of the $ allows you to reference parentesized expressions in the condition, like so:
RewriteCond %{REQUEST_URI} ^\/file\/\d+\.html
RewriteCond %{QUERY_STRING} (.+)
RewriteRule ^\/file\/(\d+)\.html?(.*) /file/file.php?id=$1&%1 [L]
RewriteCond %{REQUEST_URI} ^\/file\/\d+\.html
RewriteRule ^\/file\/(\d+)\.html /file/file.php?id=$1 [L]
It’s described here in the docs. I thought this was a pretty cool solution to a problem that had been vexing me.
Facebook Errors
May 19, 2008
My Facebook news feed hasn’t update since May 15th - a span of four days, in which I know many of my friends have posted or at the very least updated their status.

With 50-something friends, I know for sure some of my friends are updating - my feed just isn’t reflecting it. So, after Googling about (Facebook’s site, for the record, is extremely unclear about contacting the company and/or reporting bugs), I found this:

Great! A place to file a report. So I type in my report and submit …

D’oh. Apparently, I’m not the only one having this issue, either. C’mon guys, get it together! At least let us users know what’s going on.
Live from OSCON
April 8, 2008
Tags: oscon, oscon 2008
I will again be attending OSCON this year in Portland, Oregon on July 21st - 25th. Come and say hello!
Cybersquatting Annoyance
February 24, 2008
I’m getting ready to launch a new open source project, and, as everyone knows, you can’t do that without a cool sounding name.
I’ve picked out about six cool sounding names, and I’ve been looking them up on GoDaddy to see if I could go ahead a register the domain name. And wouldn’t you know, all of them are already taken. Now, this wouldn’t irritate me so much if there was actual content on the sites. But every single one I looked up is squatted by link farms. I am literally 0-6 right now.
<Beeth> Girls are like internet domain names, the ones I like are already taken.
<honx> well, you can stil get one from a strange country
- bash.org
Angry Rob is Angry
January 23, 2008
Tags: geeks, geekcom, hardware failure
… or, beware of deals that look too good to be true.
In my professional career, I have now found only two things that have a 100% failure rate. The first was a batch of Digium TDM-400P FXO/FXS card. Every single one we deployed from that batch at my previous employer failed. I hear they don’t have those problems anymore - using a different fab shop now, I guess. But I still don’t like that card for that specific reason.
The second 100% failure rate came just this evening. The culprit is this little POS: Dual Xeon 2.4GHz 2GB ECC 120GB 1U Rack Mount Server being sold by Geeks.com.
Look, it’s a 1U for $375. I’m not expecting the universe out of these things. With that in mind, let me document the last two days of my life. I ordered two of these little guys about a week ago, and they arrived on Tuesday. I intended to turn one into a general purpose test and development box, and one was going to go to Atlanta to replace the 1U Celeron in my friends’ data center.
So I get the machines home, unpack them and try to boot. The first one won’t POST. No beep, no video, just a bright orange surrender HD light. Research tells me that the motherboard is fried. The other one booted up fine. I figured I was just unlucky, so I RMA’d the first one today and was going to put the OS on this one.
Well, the OS install went fine but when it came time to reboot … presto. The exact same thing as the first. No video, no beep, orange HD light. Of two machines ordered, both of them failed within 48 hours and both in the exact same way. So now I’m out at least $60 in RMA shipping charges - and I have no servers - just because this company apparently has no Q.A.
So take my experience as an example of what not to do when ordering a server. A good deal can turn into a major headache incredibly fast. Me? I’m ordering Dells from now on.
Announcement
January 2, 2008
While in general I only use this blog for discussing programming, computers and my life as an engineer in dot-com, it’s only natural that, every now and then, a personal post will slip in. And this is as good a reason as any.
On December 26th, I asked my girlfriend of almost three years to marry me.
She said yes!