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.
iChat AV is broken
You disable firewalls, forward ports in the router and put your laptop in the DMZ but iChat AV still fails to make a simple video call. My son does video chat with grandma over Skype and it “just works”. What the hell were Apple thinking with iChat AV? Do they really expect people to follow instructions like these to get a simple video call going?
Seems like I’m not alone.
Keeping software up-to-date in OS X
I often install apps to try if they work the way I like. Some stay, some I delete almost immediately. Some of them have built in functionality that alerts you when there is an update available. I find that very annoying. If you have many apps these little reminders tend to pop up all the time.
So, I was looking for something to keep tiny apps up to date and found AppFresh. AppFresh will scan your programs folder when you want it to and alert you of any updates it can find. Downloading and installation is automated for most apps as well.
It will also tell you when you lasted used an application – nice if you want to clean you programs folder from unneccessary apps.
You can download AppFresh here.
OS X package management
Mark Pilgrim writes about the benefits of the easy-to-use package manager in Ubuntu and then feels sorry for his Mac OS-using friends.
RDF vs Microformats and the Semantic Web
James Simmons writes about some of the pros and cons of Microformats and RDF (with an extended discussion at InfoQ). On the benefits of Microformats (with which he means Microformats.org-style microformats) he mentions:
- Designed for humans first, machines second
- Modularity / embeddability
- Enables and encourages decentralized development, content, services
- A design principle for formats
- Adapted to current behaviors and usage patterns
- Highly correlated with semantic XHTML
I am new to RDF and the semantic web (but have used microformats in previous web projects) but to me the advantages of RDF and RDFa (the “sprinkling” framework) are clear. Microformats may work for a limited set of use cases but I have not yet understood how to use microformats efficiently for the bulk of what I need. However, it is great that a lot of development is going on in the area of embedding machine readable data in documents. Without microformats the pace would probably have been much slower.
Here are my thoughts on the items that James mention:
Designed for humans first, machines second
: For me the HTML document that carries the information is for humans. With it we apply styling and markup to allow humans (and their assistive devices) to understand the content. The embedding of data is for machines primarily. Although advanced editors may be great at editing HTML, the fact is that most users are not.
Modularity / embeddability
: Embeddability is of course necessary. The problem is that the current versions of (X)HTML were not designed for embedding data. This means that Microformats have to rely on the attributes and elements available of which none were primarily designed for stuffing machine readable information in. RDFa, on the other hand, is making rapid progress. You can use XHTML 1.1 with RDFa right now and validate it with the W3C validator.
Enables and encourages decentralized development, content, services
: I am not sure I understand this one, at least not for the development of vocabularies. Microformats encourages a centralized way of storing vocabularies on their web site in a format that isn’t machine readable. The power of RDF is that vocabularies can be stored anywhere in a machine readable way. The world is big and the web has been built to support interaction in a decentralised way. Development of a vocabulary is a local thing for me.
A design principle for formats
: See above. Why have a design principle for all? Everyone has different needs and resources and I would prefer to adopt the vocabulary design process to each business case. The Microformats.org website lists design patterns to use when sprinkling a document with embedded data. Instead of calling them design patterns you could say “seeing how far we can go in interpreting the current HTML specification”.
Adapted to current behaviors and usage patterns
: Sure, if you limit yourself to a few HTML-adept bloggers. I would venture to guess that there are more people publishing information on the web that know little to nothing about markup than people who do. And they shouldn’t need to. Peple working with information need tools. Tools should help out with the actual markup and embedding of data.
Highly correlated with semantic XHTML
: And this is good. But it contradicts the previous statement. Current behaviour is to not use semantic XHTML. It is only a limited number of websites that use valid markup. Both RDFa and Microformats will hopefully help in raising awareness of semantic markup.
What do you think?
Fixing OS X Leopard menu bar transparency
Update: As many readers now noticed, as of 10.5.2 there is now a preferences setting for the menubar transparency.
For some reason Apple decided to make the menu bar in Leopard transparent. With my background image this means that the menu bar will be in a shade of blue. It doesn’t look good and makes my computing environment less comfortable (I’m picky, I know…).
Someone created a software hack to remove the transparency. There is also a system setting (thank you Johan) to trick the window manager into thinking it is in older hardware. I am not sure of the side effects so I’m not that keen on installing that. Here is the pragmatic fix: take your background image and paint a white stripe, 21 pixels high, at the top. Problem solved. My menu bar is now easy to read with black text on white background (see picture above).
Before painting the white stripe you may have to resize the picture to the exact size of your desktop, otherwise the OS will resize it and it won’t fit the size of the menu bar.
Update: As Peter points out in the comments below, if you use black instead of white the menu will look similar to the default ash grey style of other Leopard apps.
Interacting With a Stockholm Public Transport Ticket Vending Machine
This will be a field day for industrial designers and usability experts. The new ticket vending machines for the Stockholm public transport system have been met with a lot of criticism lately. People are finding them difficult to use and apparently there are very few tickets sold. On top of that they look like the machines seen in parking lots. Oh wait, they are apparently from the same manufacturer.
Stockholm public transport has a tradition of being late to the 21st century. Pre-paid tickets are still paper based and stamped by the bus driver. Previously you could buy them directly from the bus driver. However, robbery prompted the public transport authorities to remove all cash handling from the bus drivers, hence the increased need for outdoor ticket vending machines.
So, how do you interact with these machines?

- You start in the middle and press a blue button one to three times to tell the machine if you want a ticket for zone A, A and B or A, B and C.
- Move down and press the second blue button once for a regular ticket or twice for a reduced price ticket.
- Now it’s time to swipe your credit card on the top left side of the machine.
- Move back to the center and press the green button once.
- Ticket appears to the left.
Complaints mainly focus on the illogical placement of buttons (4, 1, 2 if you read top to bottom). In between pushing the buttons you have to look at the two line dimly lit LCD display to see what you are supposed to do next.
I am guessing most people buy a regular priced ticket for zone A (the city center). This involves pressing three buttons. Maybe the most common scenario could be reduced to “press a zone button and swipe your credit card”? Why does it have to be difficult?
I remember the pleasant experience of the Tokyo subway system. On some machines, all you did was to push a button representing your destination on the map, dump a fistful of coins into the machine and it would hand you the ticket and spare change in an instant.
Update: We won the World Usability Day design contest with a redesign of this machine. The design proposal and background is here (only in swedish).
Microsoft to release MVC framework with Visual Studio 2008
As someone hinted in the comments to my previous posts on ASP.NET MVC frameworks, Microsoft is apparently releasing a new MVC framework to make ASP.NET development simpler. According to the latest news, it will be released sometime after Visual Studio 2008. Last time I heard VS2008 is scheduled for a late february 2008 release which means we should be lucky to see this framework sometime in March.
RDF for beginners: Part 1: The URI
This will be the first in a series of posts on RDF for beginners. I hope it will be of use for people who are new to RDF but have some background in software development. One of the reasons I am putting this online is to get feedback on how RDF and the semantic web can be explained without sounding like an overenthusiastic preacher. Another reason is that most of the information I find about RDF is written by bearded researcher men. Sometimes they explain RDF in a way I find hard to understand since I’m not an expert on RDF myself. Also, my beard is much smaller.
Before looking at actual RDF, let’s start with a fundamental concept: the Uniform Resource Identifier (URI). URI:s are used heavily in RDF and it is important to understand the basics. Wikipedia has a nice article on URI:s that states:
A Uniform Resource Identifier (URI), is a compact string of characters used to identify or name a resource. The main purpose of this identification is to enable interaction with representations of the resource over a network, typically the World Wide Web, using specific protocols. URIs are defined in schemes defining a specific syntax and associated protocols.
A resource can be many things, e.g. a record of information such as a purchase order, a person, the online representation of that person (in the form of a wikipedia article). You decide!
One form of URI:s is the Uniform Resource Locator (URL). If you are looking at this article you have a URL in the address bar of your browser. If you know your way around a relational database you can compare URI:s to primary keys or compound primary keys. A cool thing is that a URL also includes information on how to retrieve the resource (e.g. “http”).
Repent
If you have developed software for the web it is likely that you have abused URL:s. Instead of identifying a resource (e.g. a record of information) you may have identified a specific script that acts on the record. By doing so you have made it harder for others to make use of the information you put online.
I have done this on numerous occasions. It typically looked like this:
aHR0cDovL3d3d3cuZXhhbXBsZS5jb20vdmlld2l0ZW0uYXNweD9pZD0xMjM0
I didn’t know better at the time. What it should have looked like is this:
aHR0cDovL3d3d3cuZXhhbXBsZS5jb20vaXRlbXMvMTIzNA==
I guess I never really thought about the R (resource) in the URL. I was more occupied with getting the damn thing online in the first place.
Next time we’ll take a peek at RDF itself.
When PHP makes sense
I have been looking into development frameworks for a web based software product. I want the product to be able to be installed on a variety of platforms, including Windows server with IIS. First I was looking at creating the app in ASP.NET and make it run under Mono. Unfortunately I can’t find an MVC framework for ASP.NET that works the way I want. Ruby on Rails has really lowered the threshold of what I can put up with in the form of configuration and learning curve. Damn you DHH and your rapid web framework:-)
Ruby on Rails runs happily on Linux and in Java environments thanks to JRuby. It does not work well with IIS yet (until IronRuby is here I guess). There is, however, interesting work being done in the RORIIS project (also see Dorje McKinnon’s Set up Rails on IIS blog post). The only problem I have is that I have heard a lot of reports where Rails under IIS isn’t working properly and that the RORIIS bundles several components that Windows server managers may find scary.
Django and Turbogears does not seem to work well under IIS either. For Django, the PyISAPI is required and apparently it hasen’t been actively developed for a while leading to bugs in the latest version of Django (you also have to run Python 2.4 instead of 2.5).
Turbogears seems to be close to work on IIS. Only problem is that it requires a reverse proxy filter that hasen’t been actively developed since 2005 which makes me wary about using it.
So, looking at Symfony, the Rails inspired PHP framework, I am beginning to wonder if that would be the best choice right now. The installation instructions for Windows/IIS seem straightforward. Symfony recommends the commercial ISAPIRewrite filter (lite version os free). For IIS7 it looks like Microsoft is stepping up to the plate with a decent Fast CGI module. Performance seems to be adequate too.
So, right now, Symfony/PHP seems like a decent choice for this app if I can live with the intricacies of PHP. Who would have thought…
Re-enacting Video Transition Effects
Please note the video progress bar. Via Jim Carlberg’s Finstilt.se.
How the Swedish OOXML Vote Was Bought for $57,000
Sweden is represented in the ISO through the Swedish Standards Institute (SIS). This means that our country has one of the 100 or so votes.
The member countries have had six months to consider if the Office Open XML (OOXML) format should become an ISO standard. In Sweden, SIS arranged a working group that have looked through the material. As you may know the OOXML format has been heavily criticized (by many e.g. Google (PDF)) for allowing embedding of closed Microsoft-specific objects in the document standard and thus making it difficult for non-Microsoft software to read OOXML documents.
Unfortunately, SIS is an organisation where anyone can become a member. Member organizations can send participants to a working group for a fee. The current rate is 17,000 SEK (~$2,500). The day before the vote that decided if SIS would say yes to OOXML in the ISO there were a couple of new members in the SIS/TK321/AG17 working group:
| Company name | Relation to Microsoft |
|---|---|
| Exor | Microsoft Partner |
| Formpipe software | Microsoft Gold Partner |
| Cybernetics | Microsoft Gold Partner |
| Ibizkit | Microsoft Partner |
| Emric | Microsoft Partner |
| Strand Interconnect | Microsoft Gold Partner |
| Nordicstation | Microsoft Partner |
| Sourcetech | Microsoft Partner |
| Cornerstone Sweden | Microsoft Gold Partner |
| Solid Park | Microsoft Gold Partner |
| Fishbode systems | Microsoft Gold Partner |
| KnowIT Sverige | Microsoft Gold Partner |
| Modul 1 | Microsoft Gold Partner |
| IDE Nätverkskonsulter | Microsoft Gold Partner |
| Connecta | Microsoft Gold Partner |
| Camako Data | Microsoft Gold Partner |
| Sogeti | Microsoft Gold Partner |
| Tieto Enator Corp. | Microsoft Gold Partner |
And so, Sweden will be voting yes to make OOXML an ISO standard.
For more information see:
- Patrik Fälström’s post “Microsoft managed to buy the vote of Sweden in ISO?“.
- Slashdot.
- Dagens Nyheter (in swedish).
- noooxml.org.
- Matusow: Open XML – The Vote in Sweden
.
SimpleCrawler for your everyday web crawling needs
Over at the standards-schmandards blog I often test websites to gather statistics on specific HTML use, accessibility and other things. Each time I have written a web crawler to collect the data. In Python and Ruby this is a simple task but last time it was like a déjà vu and I decided to create a Ruby library that I could use in the future.
Content-aware Image Resizing
I am guessing this would be a valuable addition to web browsers in the future. With this technique it is easy to target an image for viewing in multiple displays (e.g. a 4:3 screen or a 16:9 TV).
“Seam carving” allows an image to be resized non-uniformly, so you can change the height to width ratio in the image without cropping, but also without distorting important features in the image (such as faces).
The video shows some intresting results when using this method too much, but the overall result is very impressing.
Hackzine has more details.
Looking for ASP.NET MVC Frameworks…
I have been looking for an open source alternative to the default way of buildig web sites in ASP.NET with Visual Studio. After having build a couple of applications with Ruby on Rails it hard to go back to the Page Controller pattern that Microsoft introduced in ASP.NET. Coming back to the ASP.NET page event model makes it clear that they created it for VB6 application developers that were used to Windows forms-centered development. Apparently they didn’t want to those developers to have to learn about HTTP and HTML to be able to write applications.