I just stumbled upon this nice and convenient collection of Metaprogramming Spells that Paolo extracted from his Metaprogramming Ruby book. If you've read the book and want a nice and short recap of some techniques, look no further. If you haven't read the book: What are you waiting for?

posted on: 06-19-2011

Yesterday I finally got around to publish the Argonaut iTerm 2 theme. It is based on the TextMate Theme by David Lee which i have been using for quite some time now. Though I like to try out new ones from time to time, I always fall back to argonaut.

Screen Shot

For the sake of completeness I also put my vim port of the theme on gitHub, find it here.

posted on: 06-01-2011

Normally, when a new feature goes live, we use to do a new deploy to enable it. Some time ago however, I needed to enable a certain Feature on a Sunday. I don't like the idea of having to work on a weekend, especially not if it involves deploying. So I came up with a few lines of code that would automatically enable the feature when the time is right:

[@language="ruby"]
    [@caption="xample in ruby."]
    
    def foobar
    end
    

ruby class Ruby def dosomestuff end end


    def foo
      "asdf"
    end
    

Basically, you define the conditions for the Feature to be live inside the Proc, and then use Feature.is_enabled? :key to build conditions into the code.

Of course, this has come in handy for serveral other use cases, like having a certain feature live on the dev server, but not on production.

posted on: 05-10-2011

A deep understanding of reality is the exact same thing as lazyness... have you ever seen Buddha jogging? From the Dilbert Strip for March 20, 2011

posted on: 03-27-2011

While installing the Ingredients app (which is a great and free Cocoa Documentation Viewer) this wonderful loading screen showed up:

Things screenshot

As you can see, I'm a tic tac toe pro.

posted on: 03-20-2011

Was genau in eine Commit Message gehört, und wie diese strukturiert sein sollte beschreibt dieser Blog Eintrag von Tim Pope sehr gut. Worauf ich besonders achte in letzter Zeit: Commit Messages sollten in Präsens geschrieben werden. Schliesslich macht es Git selbst auch so. Also beim nächsten bugfix: Nicht "fixed #123123" sondern "fix #123123". Ein paar andere Wichtige Punkte:

Also dann... git commit -m "fix your commit messages!"

posted on: 01-31-2011

posted on: 12-27-2010

If you ever happen to be in the position of building a web app, or maybe just designing it's interface. and wonder wether you should name stuff like profile or account links "my profile" or "your profile". Please read this. It's seems like just a small detail, but details matter!

posted on: 10-31-2010

...so really, if you like to rely more on your keyboard than your mouse and already use apps like Quicksilver, Launchbar, Alfred or SizeUp etc. you will probably love The Hit List...

It's been about 2 years now since I first heard of GTD and started applying some of it's principles to my own todo's. I can't say I do a 100% GTD but let's say it inspired me. For most of the time in those 2 years I used Things by Cultured Code to manage my todos on my Mac's and later, to some extent, on the iPhone (more about that further down the post). Things looks quite nice. It has a very clutter free UI that has worked pretty well for me so far:

Things screenshot

However, syncronisation is an issue. I can sync between the 3 Mac's I use regularly by keeping the Things' Database.xml on my dropbox. Occasionally I forget to close Things on one Mac and then dropbox' restore functionality saves the day, so it's not really a smooth and painless way of syncing. It gets even more painful when you add an iPhone to the mix. The Cultured Code team has been promising cloud sync functionality for quite a while now (I believe it's been more than a year now) and there's still no beta, demo or official statement other than the "FULL SPEED" on their status board. I know there's some people quite frustrated about that lack of updates about that feature ;-)

This post is not a rant about Things or Cultured Code though. A few days before my holidays, my todo lists started piling up, as it was a busy period at work and I had quite a lot of other things to deal with in the bureaucratic department. During my holidays I never even looked at my todos (thankfully!) but after I got back things didn't get much better obviously. So I fired up Things recently and was a bit overwhelmed by the quantity of items on my lists. Many of the todo's were already obsoleted or needed an update, and I wanted to reorganize and clean up some lists.

Somehow I realized that Things was not so very handy at managing a lot of todos and keeping them organized the way I wanted them. Or I just needed to procrastinate a little bit. So I went googling for some alternatives, with the syncing issues described above in mind as well. Unfortunately I didn't find any new GTD app for the Mac that would do cloud syncing, and I had already looked at OmniFocus, which I turned down because I just couldn't live with it's UI (yes, I care a great deal about aesthetics of a user interface and how it feels). But I stumbled about this blog post in which the author explains why he thinks Things is not a real GTD app. Though I don't really agree the post was quite interesting and in the comments several people mentioned an OSX app called The Hit List. I looked it up and downloaded the Beta since it looked interesting enough.

The Hit List screenshot

It is still in beta, and does not offer any cloud syncing yet, so don't get your hopes up to high. But I definitely recommend you give it a try if you're currently using Things or OmniFocus. It might be just right for you, as it was for me. The UI looks a little bit more cluttered than Things but is still quite minimalistic as you can see in the screenshot. You can organize and manage your todo's in lots of different ways according to your preference and workflow, which I found quite awesome. The Hit List is generally speaking a bit less minimalistic (UI and feature wise) than Things and therefore quite a bit more flexible in the ways you can use it but it is still focused enough so you don't get lost in it's menu's.

And the little dark bar you can see at the bottom of the screenshot is the most amazing thing about The Hit List and the reason why I've been using it instead of Things ever since I installed it: It displays hints for the keyboard shortcuts currently available to you which is quite handy. Pretty much everything I want to do in the app I can do by using my keyboard, so really, if you like to rely more on your keyboard than your mouse and already use apps like Quicksilver, Launchbar, Alfred or SizeUp etc. you will probably love The Hit List. And thanks to the hints bar, the learning curve is very shallow.

In the end, my biggest issue with Things has not been solved by The Hit List either. You could even say it is a step back since there is no iPhone app available just yet. But the ability to keep my todo's organized exactly how I want them and the awesome keyboard interface made me switch without hesitation. I like the way The Hit List handles keyboard input so much that I wish I could have a ruby IDE that does the same.

By the way, if you open Things and The Hit List side by side, you can select your todo's in Things and drag them over to The Hit List all at once.

posted on: 10-28-2010

I hate setting up mail infrastructure. I haven't gotten around to look into Zed Shaw's Lamson, which looks promising, but in general, setting up and maintaining mail servers is just painful. So when building little sidekick apps and private projects in Rails I'm always looking for an easy way out. I still have to try it out, but the aproach in this post looks promising. It uses Google's App Engine and the remail gem to send and receive mails in a RESTful way. If anyone is using this aproach or has tried it already, I'd be glad to hear your thoughts.

Or... any better ideas?

BTW: You can receive/send 2000 Mails/day from Google App Engine for free. For me and my little sidekick project this is more than enough for now.

posted on: 09-12-2010