The secret to a really productive desktop environment

I recently discovered how to increase your productivity by 300% or more*. I’d like to share this with you, so that when you follow my advice, you can PayPal me €100 for every hour you save.

  1. Buy an SSD. Really, this is important.
  2. Switch to a minimalist desktop environment like XFCE.
  3. Turn off any and all distracting eye candy, transitions and animations.
  4. Replace the slow software you use with faster equivalents.
  5. Enable e-mail notification, but don’t look at the e-mail exactly when it arrives, leave it for a few hours or at least until you’ve finished what you’re working on at the time.

And here’s a screenshot of what that looks like:

I use Terminator instead of gnome-terminal or xfterm so I can look at multiple terminals and multiple tabs at the same time. One terminal has a red background so I immediately know it’s my local root terminal without having to read any titles. This saves me from switching between lots of tabs before finding the right thing.

The desktop environment is XFCE, which is super-fast out of the box, and I’ve set up the bottom panel so that it makes the best use of Fitts’s Law. The panel is 32 pixels tall, the window buttons are nice and big so it’s fast and non-annoying to switch windows. The bottom right has instant messaging, calendar and mailbox notifications and a volume slider — and nothing else! I could even remove the volume.

Also, there is a second monitor to the right of this one showing more stuff, so I can look at what’s really important right now with one glance instead of having to unfocus from the task in front of me.

The mail client is Claws Mail, which is fast as hell and has many time-saving features for hardcore mail users like me.

The web browser is Chromium, which is Chrome without the Google in it. It’s very fast, still faster than Firefox, and more stable IMHO, so that crashed browser sessions don’t lose me any productivity.

With this setup, every response I want from my PC is almost instantaneous. I click check mail, whoosh, there’s the new mail. I ctrl-enter to send an e-mail, fthagn, the window is gone, the mail is sent. No effects, no wobbly windows, no desktop cubes, no sliding shit, stuff just happens super-quickly instead.

The rest is just discipline. Focus on the task at hand and build a desktop environment for yourself that doesn’t distract you. No Twitter, no Facebook, no games, no news, no RSS feeds. Do those in your spare time. I’ll pretty much guarantee you’ll be more productive like this.

Now about that PayPal donation (thanks!):

*YMMV, IANAL.

Avoding “Invalid byte sequence in UTF-8″ with Ruby and CSV files

If you’re running into a ton of problems reading e.g. an ISO-8859-1 encoded CSV file into your (probably UTF-8) Ruby or Rails application, and if the error you get is “Invalid byte sequence in UTF-8″ even though you’re giving CSV.open the correct encoding options, here’s a solution.

The example CSV file is a tab-separated, ISO-8859-1 encoded file with CRLF line endings. You’d expect the following to work:


CSV.open(@infile, "r:ISO-8859-15:UTF-8", {:col_sep => "t", :headers => :first_row})

But it fails mysteriously! Even though the conversion to UTF-8 goes without problems, you get an ArgumentError complaining about some illegal byte sequence. If you analyze deeper, you might find (in this case) a complaint about rn. The solution is very, very non-obvious: You need to specify the row separator in addition to your encodings!

mjtko from the #rubyonrails channel on Freenode discovered this. If we change the line to the following:


CSV.open(@infile, "r:ISO-8859-15:UTF-8", {:col_sep => "t", :row_sep => "rn", :headers => :first_row})

Boom, there’s your working CSV object, with working encodings.

Watch TV on your PC, no ads, no Flash

Roman Haefeli strikes again: Watchteleboy makes it possible to watch dozens of live TV channels using mplayer in your very own machine, without the need for Flash, a web browser or any other such nonsense.

Here’s the source code: https://github.com/reduzent/watchteleboy

Here are Ubuntu packages he maintains: https://launchpad.net/~reduzierer/+archive/reduzent

And here’s an Arch Linux package of it that I maintain: http://aur.archlinux.org/packages.php?ID=52232

Caveat: This only works if you’re located in Switzerland or in some other place that Teleboy’s geotargetting likes (such as Italy).

It’s Quality Assurance Duck!

My development team got a new member: A rubber duck that goes “öööp” when tests fail:

This is an all-analog, no-automation thing. When I see tests fail on our integration server, I smash people over the head with the squeaky duck. Eventually I’ll hit someone hard enough to produce a graceful öööp.

So far it’s working well, test success is back to 100% green :)

Schweizerdeutsch erhält das “womit”

In dieser Reihe von Blog-Postings verfolge ich den Einfluss des Deutschen auf das Schweizerdeutsche, die meistgesprochene alemannische Sprache.

Heute im Tram musste ich hören, dass es dem “mit was” vielleicht an den Kragen geht. Zwei Mädels vor der Lehrabschlussprüfung. Fragt eine die andere: “Womit häsch am meischte müeh?”

“Womit” gab es in der schweizerdeutschen Sprache bisher genausowenig wie “wofür”, “weshalb”, “worauf” oder “wessen”. Stattdessen sagt man “mit was”, “für was”, “warum” (kausal) bzw. “uf was” (lokal) und “wem sis”.

Sowieso gibt es im Schweizerdeutschen eine ganze Menge weniger Adverbiale als im Deutschen. Wenn Zürcher Lehrabschlussprüflingerinnen da einen Trend vermuten lassen, nicht mehr lange!

“Übercho” wird schleichend ersetzt durch “becho”

Und gleich noch etwas zur Verdeutschung der schweizerdeutschen Sprache: Wenn man etwas bekommt, heisst es in den meisten Dialekten entweder “übercho” (Zürich und die meisten Dialekte) oder “kriaga” (Khûrertütsch). Baselditsch macht vielleicht eine Ausnahme — ich weiss es nicht.

In Zürich hört man aber immer öfter das neue “becho”. Beispiele:

“Ich han es buech becho”, “Bechunsch du bscheid?”, “Bechunt er ä rechnig?” statt “…übercho”, “Chusch du bscheid über?” und “Chunt er ä rechnig über?”

Wie man schön sieht, geht in der dem Deutschen angeglichenen Deklination sogar die Trennung verloren.  Etwas, das für viele solche schweizerdeutschen zusammengesetzten Verben grammatisch so charakteristisch ist, wie in Bayern die Doppelverneinung (“…wo sich koa mensch ned hisetzt”).

Wäre schade, wenn so etwas der Verdeutschung zum Opfer fiele.

Khûrertütsch scheint nicht betroffen, dort kriegt man Dinge traditionell, man bekommt sie nicht: “häsch dia rechnig scho kriagt?”, “kriagt dä herr döta’n'an kaffee?”, “miar kriagend bald a neus sortiment.”

DuckDuckGo: Finally a decent Google replacement

I get very annoyed about Google from time to time. They refuse to honor the language settings in my browser and insist on translating everything to German just because I’m in Switzerland (or Finnish when I’m in Finland). They boost German search results to the top even when I’ve set everything to English. Some Google services, such as Google Groups, sometimes can’t be switched to English at all, there is simply no setting for it and the completely fragmented mess that is Google’s account settings system is not capable of saving the language properly and using it in all Google services.

A few months ago, I started looking at DuckDuckGo as a search alternative thanks to a hint from Tomáš. Back then, the search engine was quite slow, but that’s been improved quite a lot. How does DuckDuckGo solve the problem of fucked up language settings, forced localization and unwanted biasing of search results towards your geographical region? By offering you a god damn setting for it:

There, the “World Traveler” option. It gives you non-language filtered, non-geobiased, non-boosted search results. Praised be ye!

And if you still need Google or e.g. Google Images, just use the handy bang shortcuts and other goodies. Along with all that, DuckDuckGo has some very useful little touches such as favicon display next to search results, keyboard navigation (also with vi keyboard mapping) and a way to disambiguate search results. All in a minimalist interface with gradual exposure of more advanced features.

I’m happy with it so far. Maybe you want to try it as well.

Microsoft pays people to advertise MS products on StackOverflow

Check out this user:

http://stackoverflow.com/users/599829/denis

His only contributions to several project management and PPM questions were to say “Microsoft Project is best, yay!” And the marketing talk he uses is so damn transparent, I don’t think anyone would mistake him for a proper human being. They could at least have instructed him to write like a coder.

Astroturfing is weak, Microsoft.

Update: A screenshot to prove the Marketer Speak in case his account gets deleted:

Denis the Marketeer, I salute you.

We’re hiring junior software developers!

If you’re fresh from university and want to get paid for, among other things, working on Free Software in Zürich, here’s a job in my team:

Die Zürcher Hochschule der Künste (ZHdK) mit über 2000 Studierenden und rund 1200 Mitarbeitenden vereint unter ihrem Dach ein einmaliges Studienangebot in den Bereichen Design, Film, Kunst, Medien, Musik, Tanz, Theater und Vermittlung der Künste.

Für das Entwicklungsteam im Informationstechnologie Zentrum (ITZ) suchen wir im Rahmen einer Nachfolgeregelung per sofort oder nach Vereinbarung eine/n

Junior Software-Entwickler/in, 80 – 100%

In dieser Funktion sind Sie für die Entwicklung von Web-Applikationen basierend auf Ruby on Rails sowie PHP zuständig.

Unsere Erwartungen:

Wir wenden uns an eine initiative Persönlichkeit mit rascher Auffassungsgabe, die gerne teamorientiert in einem künstlerischen Arbeitsumfeld arbeiten möchte. Sie kennen sich gut aus mit HTML, CSS und auch JavaScript ist Ihnen vertraut. Idealerweise verfügen Sie zudem über erste Erfahrungen in einem aktuellen Web-Framework (z.B. Ruby on Rails, Symfony, Zend, Django) oder einem CMS (z.B. Typo3) und einem aktuellen JavaScript-Framework (z.B. jQuery, Prototype, mootools, YUI). Gute Deutsch- und Englischkenntnisse in Wort und Schrift runden Ihr Profil ab.

Zusätzliche Vorteile:

  • Erste Erfahrungen mit agiler Software-Entwicklung, z.B. nach Scrum oder XP
  • Kenntnisse von Test-Driven-Development (TDD) oder Behavior-Driven Design (BDD) (z.B. mit Cucumber, Rspec, htmlunit)
  • Interesse am Umgang mit digitalen Medien (Bild-, Video- und Audiodateien) sowie deren Konvertierung.

Wir bieten Ihnen eine anspruchsvolle und vielseitige Aufgabe in einem lebendigen Team und einem spannenden Umfeld und freuen uns über Ihre Bewerbung bis Ende Juni 2011 an: Zürcher Hochschule der Künste, Personalabteilung, Vermerk ITZ, Limmatstrasse 45/47, 8031 Zürich oder per E-Mail an hedi.schoch@zhdk.ch

Für Auskünfte steht Ihnen Ramon Cahenzli, Software-Entwickler/Projektleiter, gerne zur Verfügung: Tel. 043 446 31 63, ramon.cahenzli@zhdk.ch

Informationen zur ZHdK finden Sie unter www.zhdk.ch