Does your webserver give HEAD?

In the process of constructing a crawler that finds and checks PDF documents on a website I discovered a lot of sites that don’t return information for HEAD requests. A HEAD request should return the same set of HTTP headers as a normal GET request only without the actual payload.

The typical response seem to be status 500 (internal server error) on a lot of IIS sites. So, now is a good time to check your own sites to see what you get back from a:

curl --head http://www.mysite.com

Microsoft Word 2007/2008 Interoperability

Opening a particular Word 2007 document in Word 2008 can yield this error:

Microsoft word interoperability error message

Seriously? Can’t Microsoft get their own implementations to cooperate better? And this has just been approved as an ISO standard?

What’s your history|awk…

Via Bill de hÓra. Run this from the command line:

history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s ",a[i],i}}'|sort -rn|head

I get:

108 ls
78 cd
53 sudo
29 python
13 cap
9 django-admin.py
9 ruby
8 vim
6 easy_install
3 bzr
1 ex
1 python2.5
1 ln
1 mksir
1 cat
1 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

In short:

  • I have trouble with my default python installation.
  • I am trying Django for small project.
  • I was hit by the Leopard keyboard repeat freeze bug.
  • I am poor at spelling simple commands.
IR glove that lights up an IR LED when the index and thumb touch

Building a Wiimote glove for virtual card sorting

Thanks to Johnny Chung Lee, everyone and their mom seem to be setting up their own Wiimote whiteboards these days. I tried it too but disliked the pen-based interaction. So, I built a simple glove that allows you to pinch an object to drag and drop it somewhere.

Usability test of the iPhone yields interesting result

The swedish usability consulting firm inUse did a usability review of four mobile phones including Apple’s iPhone, the HTC TyTN, Sony Ericsson W910i, and Nokia N95. Users performed common tasks such as making a call by dialing a number manually and then by calling a person from the address book, change volume during a call add a new contact to the address book, create a new calendar event and more.

The result should be useful for those who are trying to convince their IT department:

Stunning. The iPhone has introduced a new interaction paradigm to the world, in an uncompromising way that proves that “less is more” when it comes to true user experience.

Some other interesting quotes from the report include:

Most of the subjects did not mention the HTC at all when speaking of which device they would prefer. [...] Only one of the users was able to carry out all tasks [on the HTC] without the assistance of the test leader and all five users had severe difficulties with at least three of the tasks.

What is it then that makes the iPhone different? Most importantly, it has removed one level of abstraction by allowing the user to act on objects using the finger directly on the phone’s surface. The difference between this and having to press keys on a keyboard and watch the screen to see what happens is striking.

The full report is available in PDF from the inUseful blog.

Synchronizing RDF data from files with the ARC triple store

I have been playing with the excellent ARC framework for a small legal information project (more on that soon). I am beginning to think that many RDF usage scenarios involve data in files (stored in a file system) combined with a triple store that preferrably should be kept in sync with the files. Inspired by Niklas Lindström’s Oort I wrote a small plugin to do that in ARC.

The plugin extends the ARC2_Store class with a sync_with_folder($path_to_folder) method. Here is the source code for the initial version if you want to play with it. Rename the file to ARC2_FilesystemSynchronizerPlugin.php ansd save in the ARC plugin folder.

By popular request, here is a simple usage example:

 //Include ARC and configuration
include_once(‘path/to/arc/ARC2.php’);
include_once(‘path/to/arc/config.php’);

$store = ARC2::getComponent(‘FileSystemSynchronizerPlugin’, $config);
$store->sync_with_folder(“/root/path/to/file/store”);

Save the above code to a file called sync.php and run from the command line with php sync.php

Come celebrate Niklas Lindström’s birthday

You may ask yourself “who is that?” or “wtf?!” but the fact is that in the near future he will have a much greater impact on your life than you may think. Here is why you should head over to his blog and post a random comment about Yak shaving and, if possible, create a link containing the words “Yak shaving” pointing to his blog. With a little bit of effort and luck Google will pick it up and Niklas will be the number one result for people from inner Mongolia.

Software architects as management deadwood

Two interesting quotes from Dietrich Kappe:

So no, we don’t hire architects. We hire developers. In a small team, there is no room for management deadwood.

I agree completely. My view is that the title “Software architect” is a misnomer for what most architects in the software industry do, or at least what they should be doing.

It is part of the weird trend that career advancement means getting away from actual programming for some reason. Maybe that is part of a bigger problem when the only way to get a higher pay is to become a manager of some sort? A couple of years ago, most programmers I knew aimed for a project management position. Programming was a dirty job that you had to put up with during the first years in consulting.

When my title was “business analyst” I tried to do as much programming I could and I haven’t regretted that for a moment. In fact, I believe that more people from the business side should get involved in programming to get a better understanding of the fundamental principles. For example, it would be great if business people could write their own acceptance tests and with the booming trend of DSL:s you will probably get involved anyway.

If you’ve made the transition from a hierarchical environment to an agile, self-organizing team, you know what I’m saying. You won’t ever want to go back.

Absolutely. It is the same thing as discovering things like Ruby/Python/Rails: it makes you wonder what the hell you were doing earlier. In many ways I feel sorry for young software developers that go straight into Rails or similar frameworks today. They are not as appreciative as the rest of us:-)

The day the Routers Died…

This pretty much speaks for itself. If I am not mistaken our own packet pro Patrik Fältström is visible in the audience at the end of the clip.

Will Rails ever run on IronRuby?

I met Ola Bini at the local Geeknight the other day and we had a brief chat about platforms, Ruby and RDF among other things. Ola mentioned that he wasn’t sure that Rails wuld run on IronRuby – Microsoft’s implementation of Ruby for the CLR.

I have been following what John Lam has been writing about their progress (and I correctly predicted him joining Microsoft:-) and it appears that running Rails is a goal of the IronRuby project. But, will that be of interest to Microsoft? MS recently launched the first version of an MVC framework for the ASP.NET platform. This seems like an attempt to satisfy the curiosity of .net developers that have seen screen casts and office mates develop apps in Ruby on Rails. The framework is part of the Visual Studio 2008 offerings.

If you were able to deploy a Rails app by dropping a DLL on a Windows web server I can see Rails popularity exploding. The .net platform seems to occupy a mid-level segment of application hosting operations, right where Rails development seem to be.

Only time will tell I guess.

When “standards schmandards” could have been used for something else

I own the domain name standards-schmandards.com which I use for my accessibility blogging. Recent events have made me wonder if I shouldn’t use it to cover recent events regarding IE8 instead. Or, as Mark Pilgrim elegantly writes:

Said the monk:

If you give me non-standard markup, I will render it according to standards.

If you give me standard markup, I will not render it according to standards.

What do you do?

The student sat for a long time and said nothing. Then, without looking up, he raised one finger and said, “There is only one web.” Many years later, the monk was enlightened, but by then it was too late.

I thought the whole idea is that a standard is a contract that tool makers and content producers should be able to rely on. And now you are saying that the standard isn’t enough but that I specifically must inform a particular browser that I want standards standards mode?

Also see Ian Hixie’s entry Mistakes, Sadness, Regret.

Initial thoughts on a request/response flow for a semweb app

Over the christmas holiday I had an idea and developed the foundation for a small application which involves RDF, a SPARQL endpoint and a bunch of ordinary web pages available in a number of languages. Each page is a representation of a paper document that exists in the real world.

UI Inconsistencies…

Consistency is important when designing interaction with user interfaces. Consistency makes it possible to re-use what you learned in one application in another. Unfortunately there are many application developers that invent their own interaction principles, even when their is an established praxis. But, it is even worse when someone who established the praxis provides an inconsistent user experience. Yes, that means you Apple.

Case in point: zooming in and out of a document:

  • Safari: Apple +/-
  • Keynote: Apple </>
  • Preview.app: Apple +/-
  • iPhoto: Alt 1/2

At first I thought that Apple +/- was for increasing and decreasing text, but in that case Preview.app is inconsistent. Oh well, moving on…

Intricacies of PHP compared to Ruby

Via Tim Bray’s blog I found zestyping’s “Why PHP should never be taught”. In it he provides some interesting PHP code that will be difficult for beginners to understand.

Prism – web apps as desktop apps

When people started making applications available in the browser a number of interaction challenges appeared. How do you launch a web app compared to a desktop app? How do you prevent people from navigating away from your app? The Mozilla people have been hard t work with Prism – basically a customized version of Firefox, which lets you create desktop apps pre-configured to load a certain URL at startup. The desktop app is launched like any other application. Pretty sweet as the user experience becomes more consistent. You can also customize the application icon and other parameters.