Marian Steinbach: Blog

Six Principles of URL Design

2011/01/192 comments

Completely without notice here in my very own blog, last year I offered a session on URL design at the User Experience Bar Camp (UXCamp) in Berlin. Now that this space serves as a spot worthy of content, I re-post it here.

Unfortunately, Myriad renders horribly when embedded into a Powerpoint presentation / PDF and then uploaded to slideshare. So please do your eyes a favor and watch the slides as large as you can. Here you can find the presentation on Slideshare: Sexy URLs don’t end in .aspx?id=23859

As a sneak preview, these are the six principles:

  1. Simplicity
  2. Meaningfulness
  3. Hackability
  4. Unambiguousness
  5. Persistence
  6. Canonicalization

If you’re interested in my background thoughts, find them after the break.

Read on and discuss (2 comments)

What’s Wrong With Youtube’s Statistics Graph?

2011/01/15

Youtube allows all visitors to see access statistics for videos. This is how it looks like.

I love that feature. Not that I really need these figures all that much, but I’m a viual person, and often I just click on the statistics button out of curiosity. Sometimes the graph reveals interesting facts. For example, the fact that the Double Rainbow video (for which you see the current graph displayed above), with now more than 24 million views, took 6 months before really taking off. Actually the annotations (letters A to G above the graph) suggest that a mention at huffingtonpost.com was the first important publication driving traffic for the video.

But why, why have Youtube folks decided to show us these figures as an accumulation?

It’s a matter of fact that the overall number of views can only stay the same or grow. It will never fall. So the fact that it rises over time is not that exciting. It would rather be interesting to see when it rose and by how much. So why not show us the number of views within a certain time period instead? Analytics does it. Goo.gl does it. Feedburner does it.

The benefit would be that the Y-axis wouldn’t have to go all the way up to 24M in the example above, but it would scale to the maximum number of views per day instead and allow for much more detailed reading of the figures. That means: We would get much more information on the same space.

I have only two guesses as an explanation:

  • Youtube wants to show something positive to all users all the time. The graph for every video eventually rises at some point.
  • Youtube doesn’t want to give us all the details and the ability to compare views per time span.

Who knows?

Discuss

On Intuitiveness and the iPhone

2010/12/235 comments

Every now and then in a discussion about usability and user experience, people bring in the iPhone and how easy it is to use. Then the word intuitive comes up and people usually state how intuitive the iPhone is to use.

While I do believe that the iPhone is a great product and it has been defining the category “smartphone” for good reasons, I don’t think that this is true. The iPhone isn’t intuitive to use. Or, at least, it hasn’t been intuitive to use when it came out.

(Watch the video on Youtube)

Do you still remember the first time you held an iPhone in your hand? How you scrolled lists by swiping the finger up? How you tried out flicking through photos left and right with a swipe of your finger? How you pinched to zoom a Google map?

You didn’t have to come up with these gestures all by yourself, fortunately. When you first touched an iPhone, you knew most about it’s use already. And that wasn’t by accident. It was due to Apple investing (probably) hundrets of millions of dollars in commercials that appeared everywhere. These commercials were the first in a long time that I can think of which where mostly product information.

The purpose of these commercials was to tell you that there is a new device that does things which others don’t do. To give you an idea that you could actually want this. And it was also made in a way that literally gave you hands-on instructions on how to use it. Watch the video above now, after these 3.5 years, and see just how obvious it is. (“This is how you turn it on. …”)

Given that massive effort for the introduction, which was most likely well-invested money, let’s not state that the iPhone is intuitive to use. Now, to those of us primed by Apple and well aware of a bunch of ways to interact with the device — such as shaking the phone to refresh content within an app — there might be some gestures that appear more obvious than others, and some are easier to remember than others.

But the important thing is: Most of this we had to learn.

Discuss (5 comments)

I Want My Data in the Cloud Swiss Army Knife

2010/12/2017 comments

My personal data appears unmanageable to me. I have 1250 GB of external hard drives which hold my personal data from about 15 years now, plus some additional dozens of CD-ROMs and DVDs here and there.

Whenever I ask myself if I still have that file from that cool old school project or the coding thing I started once, I am screwed. The only help is Spotlight which helps me to find the indexed files residing on the hard drives, if I happen to use the right search terms.

I don’t even want to think about the possible event that one of these discs just might brake one day.

I’m so ready for a new solution to this. I am even willing to hand over my data to some third party, trusting in the fact that they are happy to store it redundantly and fail safe. I got used to Google managing my email, and they did a good job. I trust in Dropbox for a couple of files I share with others. So why not go the whole nine yards?

Here is what I need:

  • Big storage. I’d need about 500 GB as a start so I could upload everything that’s of value to me. I would accept the fact that I’d have to sort out some of the old CDs and DVDs. But as every good service, I would hope that my file cloud storage would grow with my needs.
  • I need an affordable price. I think I would pay as much per year as I pay for 1 TB storage hardware. That’s about 100 EUR or 8 EUR per month. But since I’m asking for a lot here, I’d probably be willing to pay up to twice as much.
  • Storing things in the cloud should be seamless. Ideally I would want my complete system to be backed up any time. Whenever I hit save, a file should be uploaded to the cloud.
  • Versioning. I want a history of my files like time machine does it. This means I don’t have to worry about screwing things up.
  • To access the files when not at my computer, a web interface would be important, so I could download single files.
  • Search capabilities. I tend to forget where I stored things, but also how I called things. Everything that helps me to find my stuff would be great. Where are you, faceted search for cloud files? I do know that a search index in itself consumes space. But it’s important!
  • Redundancy shouldn’t matter much. When I decide to add the content of a CD-ROM to the archive and in fact did so already a year ago, this shouldn’t take up more space. The system might tell me that I don’t have to worry about that data any more. Caveat: The service would have to look into my ZIP, RAR and TAR.GZ files in order to decide what’s there already.

And what is out there? It’s tough to get into all the features. I have a fear that there is no offer that has it all for me. But here are some offers I can find.

  • Dropbox offers 100 GB for $200. That is about 1.5 EUR per GB per year. Which is about 7 times more than what I want to spend ideally. It’s really not worth looking at it more closely.
  • SugarSync‘s biggest plan is 250 GB for $250 per year. 250 GB appears too small for me, but at least we’re down to 0.75 EUR per GB. Still pretty expensive, but the feature set sounds compelling. The only thing I am missing is search.
  • Box offers 500 GB for 15$ per month with their business service, which is 136 EUR per year. That’s only slightly more than what I want to spend. The business service includes full text search and version history.

What other services are to be considered that might meet the price target and feature requirements?

I am about to try Box and SugarSync for now. Once I have done so, I will share some of my experiences.

Update 01/22/2011: Notes on my short experience with Livedrive in the comments below.

Update 02/03/2011: Test result for Box.net added to comments.

Discuss (17 comments)

Kreativität in der Dienstleistung. Heute: Die Bahn.

2010/09/06

Die Bahn ist doch immer wieder für ein Anekdötchen gut. Und die gestern Abend erlebte will unbedingt raus, denn sie ist geradezu ein mustergültiges Beispiel für kreatives Denken im Service. Aufgepasst!

Gestern Abend, pünktlich um 19.36 Uhr, stieg ich in Aschaffenburg in den ICE 528 in Richtung Dortmund. Vor mir liegen ca. 1 Stunde und 40 Minuten Fahrzeit bis Köln, mit nur 2 Zwischenhalten in Frankfurt Hbf und am Frankfurter Flughafen.

Kurz nach dem Einsteigen ertönt eine Durchsage mit der folgenden Netto-Botschaft: Der ICE 810 fällt aus. Dieser Zug, der auf der gleichen Strecke verkehrt, übernimmt nun ab Frankfurt/Main Hbf den Fahrplan des ICE 810 und damit die zusätzlichen Halte in Limburg Süd, Montabaur, Siegburg und am Flughafen Köln/Bonn.

“Toll”, denken wir Fahrgäste im Zug uns, wie flexibel das geht. Der Bahnmitarbeiter verliert in seiner Durchsage kein Wort darüber, dass vier zusätzliche Halte und der Umweg über den Köln-Bonner Flughafen länger dauern könnten, als einfach von Frankfurt Flughafen bis Köln-Deutz durchzufahren. Wir gucken uns erstaunt an, viele Fahrgäste diskutieren schon darüber, ob das für sie eine Verspätung bedeutet oder ob wir das wohl aufholen können und ob sie ihre Anschlusszüge bekommen werden. Das Bordpersonal war wieder mal unsichtbar und konnte daher nicht weite befragt werden. Auch die späteren Wiederholungen dieser Durchsage enthalten keine Hinweise auf Verspätungen.

Als wir um 21.48 Uhr, also 34 Minuten nach der planmäßigen Ankunftszeit des ICE 528 (in den ich eingestiegen war) endlich in Köln-Deutz ankommen, enttarnen sich auch einige der bis dahin unsichtbaren Vertreter des Bordpersonals und steigen mit uns aus. Über uns in diesem Moment unübersehbar die Anzeige auf dem Bahnsteig: ICE 528 hat ca. 30 Minuten Verspätung.

Ich gönne mir den Spaß und Frage den Bahnmitarbeiter, der neben mir zum Ausgang eilt, ob wohl in einer der Durchsagen erwähnt worden sei, dass der Zug Verspätung haben würde.

Daraufhin er mit Blick auf seine Armbanduhr: “Nee, wieso? Aus meiner Sicht haben wir ja überhaupt keine Verspätung. Wir sind ja nach dem Fahrplan des 810er pünktlich.”

Ich, zögerlich, weil erstaunt: “Ach so ist das.”

Er: “Aber selbst wenn, das wären jetzt auch nur 30 Minuten, da würden Sie eh nichts für bekommen.”

Da dachte ich mir: Was die sich einfallen lassen! Die sind schon ganz schön kreativ bei der Bahn.

Discuss

JavaScript und CSS automatisch zusammenfügen und minimieren

2010/07/16

In diesem Artikel zeige ich, wie ich mittels Perl das Zusammenfassen und Minimieren von CSS- und JavaScript-Dateien automatisiere, um die Ladezeiten für Endnutzer möglichst kurz zu halten. Möglicherweise ist das Vorgehen und der Code ja auch für andere nützlich.

Wer schnelle Websites und Webapplikationen bauen möchte, wird sich bald mit dem Zusammenfügen und Minimieren von JavaScript-Code beschäftigen. Denn Frameworks wie YUI, JQuery oder ExtJS haben die Eigenschaft, den eigenen Code um zusätzliche Dateien zu erweitern. Jede einzelne dieser Dateien will zum Client des Nutzers übertragen werden, und das bedeutet jeweils einen HTTP-Request. Aber HTTP-Requests kosten Zeit.

Also ist das Ziel, wenn wir schnelle und responsive Applikationen entwickeln wollen, die Anzahl der HTTP-Zugriffe auf externe Script- und Stylesheet-Dateien auf ein Mindestmaß zu begrenzen. Hintergründe dazu gibt es z.B. von Yahoo und von Google. Und eine einfache Methode, um das zu erreichen, ist das Zusammenfassen von Dateien. Und wenn man schon mal dabei ist, will man natürlich direkt dafür sorgen, dass die Dateien dabei so klein werden wie möglich.

Während der Entwicklung ist es allerdings in vielen Fällen ein Hinderniss, wenn man Script-Dateien und CSS vorzeitig zusammenfügt und minimiert. Sie werden dadurch weitgehend unlesbar und verteiltes Arbeiten wird praktisch unmöglich.

Also bietet es sich an, mit nicht-minimierten und vereinzelten Dateien zu arbeiten, die dann bei Bedarf einfach und schnell zu einer CSS- bzw. JavaScript-Datei zusammengefasst werden.

Hierfür habe ich mir ein Perl-Script gebaut, das diesen Vorgang mühelos erledigt. Den gesamten Quelltext habe ich unter http://gist.github.com/478245 abgelegt.

Das Script benötigt neben dem Perl-Interpreter das CPAN-Modul JavaScript::Minifier. Bei korrekt konfiguriertem System und vorhandener Internet-Verbindung lässt sich dieses mit diesem Aufruf im Terminal installieren:

perl -MCPAN -e "install JavaScript::Minifier"

Hinweis: Zum Installieren von CPAN-Modulen benötigt man “make”. Das bekommt man unter Mac OS X über XCode, unter Linux etc. über den Paketmanager der Wahl (unter Debian zum Beispiel über “apt-get install make”) und unter Cygwin über den Paketmanager (Setup.exe).

Um das Script einsetzen zu können, müssen ein paar Einstellungen im oberen Teil angepasst werden. Man erhält so für jedes Projekt eine angepasste Datei, die man am besten im entsprechenden Kontext mit einem sinnvollen Namen ablegt.

Die ersten beiden Optionen sind die Pfade der Ordner, in denen sich meine CSS- und JavaScript-Quellen befinden. Die Pfade werden idealerweise absolut angegeben, so dass es keine Rolle spielt, aus welchem Verzeichnis ich das Script letztendlich aufrufe.

$js_root = '/var/www/s.sendung.de/js';
$css_root = '/var/www/s.sendung.de/css';

Im nächsten Block werden die JavaScript- und CSS-Dateien benannt, die zusammengefasst werden sollen. Die Pfade werden dabei relativ zu den oben angegebenen Root-Verzeichnissen interpretiert.

@js_files = (
'jquery-1.4.2-min.js',
'jquery-ui.min.js',
'functions.js'
);

@css_files = (
'jquery-ui-blueskin.css',
'styles.css'
);

Wichtig: Die Reihenfolge ist hier entscheidend. Die Dateien werden exakt in der aufgeführten Reihenfolge aneinander gehängt. Sowohl bei der Interpretation von JavaScript als auch von CSS ist die Reihenfolge von Bedeutung.

Die nächsten zwei Zeilen Code bestimmen den Namen und Pfad der Ausgabedateien:

$js_outputfile = $js_root.'/compact.js';
$css_outfile = $css_root.'/compact.css';

In diesem Beispiel werden die Ausgabedateien in den selben Ordner geschrieben wie die Quellen. Hier ist jedoch auch jeder beliebige andere Pfad nutzbar. Idealerweise lässt man die Dateien jedoch dort ablegen, wo sie letztlich auch hingehören, also wo sie per href- bzw. src-Attribut referenziert werden können.

Ist die Datei fertig konfiguriert, erfolgt der Aufruf des Scripts per Kommandozeile. In diesem Fall heißt das Perl-Script “make_compact_js_css.pl”. Der Aufruf aus dem selben Verzeichnis:

perl ./make_compact_js_css.pl

Einen kleinen Augenblick später liegen schon die frisch gebackenen JS- und CSS-Ausgabedateien an ihrem Bestimmungsort.

Update, 17. Feb 2011: Eine Variante des obigen Scripts in Python biete ich auf GitHub unter https://github.com/marians/py-css-js-cruncher an.

Discuss

Visualising Twitter Buzz on Football Games

2010/06/22

The Guardian, a great resource when it comes to statistics and visualisation, has done a great job visualising Twitter data about the World Cup 2010 matches in an interesting way. They count how often certain terms are contained in tweets during each match minute.

Here is how it looks during the opening match (Soutch Africa vs. Mexico) in minute 77:

Though I really like the visualization and the behaviour of the items, I was curious of how the data really “looked” when a complete match was displayed. So I created my own interactive visualization using the same data.

The screenshot above shows how all tweets are displayed a histogram with one bar per match minute. Each color stands for a specific term. When hovering the bars with the mouse pointer, all recorded terms are displayed underneath with bars displaying the amount of mentions.

Most interestingly, the comparison of the two visualisations shows that the Guardians way of visualisation is much more capable of issueing emotions. Looking at their bursting bubbles, one can almost here the Vuvuzelas. Histograms can’t do that, as it seems.

Try it out for yourself

Discuss

Duplicate Contact Manager to be Taken Over

2010/05/13

As I have announced to the mainling list, I will no longer drive the development of Duplicate Contact Manager for Thunderbird.

If you are a user of this tool and willing to contribute to it, please consider taking over responsibilities. Read the details in my message on the list.

Discuss

ZEIT Online, ich wünsch mir was von Dir

2010/03/202 comments

Liebe ZEIT Online,

ich bin großer Fan von Dir. Ich kenne Dich schon lange, und seit Du Dich Ende 2009 hast generalüberholen lassen, mag ich Dich noch viel lieber. Ich kenne auch Deine Mutter aus Papier. Sie kommt jeden Donnerstag zu mir nach Hause und bringt guten Journalismus auf großen Seiten. Ebenso lieb ist mir Deine mobile Schwester, die mich gerne mal unterwegs auf dem Handy mit Inhalten versorgt.

Ich bin keiner von diesen Kunden, wegen denen Deine Familie ihr Geschäftsmodell komplett umkrempeln müsste. Ich zahle Euch jedes Jahr (im Voraus!) für das, was ich von Euch bekomme. Zuletzt habt Ihr im Mai von mir 166,40 EUR gekriegt. Kommenden Mai wird es mehr werden, denn Ihr habt die Preise für Eure Leistungen angehoben. Ist mir Recht! Guter Journalismus, gutes Informationsdesign, all das muss bezahlt werden.

Aber, bei allem Lob gibt es doch etwas, das mich stört. Einen Wunsch, den ich loswerden möchte. So sind wir Kunden. Reicht man uns einen Finger, wollen wir immer gleich die ganze Hand.

Liebe ZEIT Online, ich würde Deinen Content noch viel mehr genießen und wertschätzen können, wenn Du ihn mir ohne Werbung darin servieren würdest. Denn die Werbung stört mich. Egal ob sie mitten im Artikel, rechts neben dem Artikel oder oben und rechts außen neben der Seite steht. Besonders störend ist sie, wenn sie animiert ist. Da kann ich einfach nicht wegsehen. Und das macht mir die Konzentration auf Euren Content zunichte. Das bringt mich so weit, dass ich Dir diesen Brief schreibe. Das bringt mich so weit, dass ich einen anderen Browser wähle als ich eigentlich nutzen möchte, damit ich Werbung ausblenden kann. Das bringt mich dazu, mich mit Themen zu beschäftigen, die mich gar nicht interessieren.

Nein, ich will Deinen Content nicht umsonst. Ich will weiterhin dafür zahlen. Nur frage ich mich, ob ihr mir obendrauf unbedingt noch Werbung anzeigen müsst, die ich verachte und die ich nie im Leben anklicke.

Mein Vorschlag wäre, dass ich mich einfach bei Dir auf der Website einlogge, damit Du mich als Abonnent erkennst. Benutzername und Passwort habe ich für den Premium-Service schon angelegt. Du merkst Dir einfach per Cookie, dass ich es bin. Und wenn Du siehst, dass ich es bin, blendest Du die Werbung einfach nicht ein. Schon kann ich Deine Seiten ohne Werbung genießen. Du würdest Dir sogar noch Bandbreite und Ressourcen für Deinen Adserver sparen, die Seiten würden schneller laden und wären endlich so gut lesbar, wie es dem Content angemessen wäre. Und ich würde all meinen Freunden und Bekannten erzählen, wie toll Du auf Deine Kunden eingehst.

Das wünsche ich mir von Dir.

Dein treuer Leser

Marian

Discuss (2 comments)

uxzentrisch: PDF-Rechnung als interaktives User Interface

2010/03/19

Bei uxzentrisch.de gebloggt: Wie O2 die PDF-Rechnung zum interaktiven User Interface aufwertet.

Der vollständige Artikel: PDF-Rechnung als interaktives User Interface.

Discuss