django is a hip hopper now… and i thought django was playing jazz. And obviously he’s unable to pronounce his name correctly.
Archive for September, 2007
You’re hired. D’oh, you’re not!
Someone gave me a link to one of DHH’s old blog posts where he was referring to Mac OS X as best operating system for developers. And what made me wonder a few words later was this:
While I can certainly understand the reasons why some people go with Linux, I have run all but dry of understanding for programmers that willfully pick Windows as their platform of choice. I know a few that are still stuck in the rut for various reasons — none of them desire.
And furthermore
I would have a hard time imagining hiring a programmer who was still on Windows for 37signals. If you don’t care enough about your tools to get the best, your burden of proof just got a lot heavier.
That’s ridiculous. It might be true that more and more hackers buy themselves apple notebooks and obviously I’m one of them, but I would never consider Mac OS X being the best developer platform. Being in the linux community for not so long and a pupil until two months ago I had to work with Windows for a long time. And I would never say that Windows is a bad operating system or that you cannot develop good applications on a windows machine. In fact the only reason why I don’t use Windows is the bad terminal and the missing apt-get. In one of the comments on the linked page DHH states that “I’m primarily charging the lack of passion for your tools, which seems to be what a great many developers still left on Windows are citing at least in part for staying. ‘…covers both needs just fine’, ‘Windows simply because we are able to quite easily’.”.
Except of rhythmbox and some other GNOME applications I used on a daily basis I can get all of my developer tools for a windows box too. It’s just more work. And god I know that there are many people using Vim on Windows. Even better, if we’re talking about good tools, there is an awful lot of good tools only available for windows. For example there is Visual Studio. You won’t find an IDE that can compete with it, although Eclipse is certainly on a good way. Still, there are tools you cannot get on Linux and Mac OS X. The only tool I can think of DHH could have had in mind is “TextMate”…
And I can tell you what’s the problem with TextMate: It’s just a normal editor. I admit that everytime I watched a something screencast TextMate in it, I wanted to use that cool thing. But then again, now where I have a TextMate license it’s just a normal editor. And not even the best I fear. I’m used to Vim and over the last years I configured it to such a high level that everytime I use a different editor I’m just less productive. So in general, that’s not my sort of tool. Though, obviously it would stop me from getting hired by somethingsignals.
So what does people think Mac OS X is the best operating system? There are things solved very well on OS X. dmg and bundles is something that looks really nice. I think Linux is definitively missing something like that. ALso the Design of all the apple products and especially of their user interface is gorgeous.
But then again whenever I see a apple user interface I wished the font rendering was powered by libfreetype which gives me the possibility to configure my font rendering in the way I like my fonts to be displayed. I’m used to the fact that I’m the only person interested in the font rendering but that’s one of the things I just hate about OS X. The only thing you can configure regarding font rendering is the threshold for non antialiased fonts (And the strength of the hinting which doesn’t make things that better). And text is the thing I look at most of the time. Whenever I complained about that in the last few weeks people pointed me to articles that showed off that apple decides to render the fonts like they would appear on the paper and that this approach is better. Well, TextMate is better too, isn’t it? But I can use Vim instead of TextMate. I cannot get OS X to render fonts like I want them to be rendered.
The next problem you have with OS X is that it’s darn expensive. OS X as such might be a darn lot cheaper than Windows. But every single piece of software consts. Tired of mud mousing? Pay 30 bucks. Tired of Finder? Pay 30 bucks. Chaotic window manager feeling? Pay 15 bucks. Want to have more than one QuickTime window? Pay 30 bucks. Virtual Desktops? Wait for Leopard or pay 30 bucks. Different themes for your OS X? 20 bucks. Those are problems you don’t have on Windows (because of tons of freeware) or Linux (because of tons of open source software).
And still, I’m not that unhappy with my Macbook because there are good aspects too. Though. I hate it when people praise OS X as the best developer platform or find amusing or bad accuses for problems you have on OS X. Apple is not a religious group or enlightened or whatever. They make mistakes too, not less than any other software company. Just that you have to pay more for them. So please. Don’t let the decision of hiring depend on the operating system a developer users. They might have good reasons for doing so. And not everybody has the same idea of aesthetics.
Weekly Updates
Wohoo. We finally migrated all of our subversion hosted projects to mercurial. And the best part: we now have a separate trac instance for each of those projects. mod_wsgi does a great job hosting all those tracs without having to add each trac to the config separately. I will post a commented version of our mod_wsgi config in the next days, for the moment still some other things are in the pipeline.
The new developer platform of Jinja, Pygments and all the other projects is on dev.pocoo.org. Note that most tracs are still empty because we haven’t had the time to move the tickets and wiki pages over. For that we have to write a conversion script first.
The plan for the next weeks is releasing Jinja 1.2 and Werkzeug 0.1. The latter is missing some unittests. After that I want to work on pocoo to finally get a working version. TextPress itself is now in the repositories (if you don’t know what it is, just ignore it for now), guess most of use will contribute some code in the next weeks but don’t expect an release. Want to convert this blog here soon though.
Last but not least: hello planet django :)
Django Support in Jinja 1.2
Jinja 1.2 is about to be released, I just want to switch all the pocoo projects from subversion to mercurial first. One of the new features in Jinja 1.2 is the django support. Thanks to Bryan McLemore from curse for his contributions.
I refactored his code a bit so that it integrates a little nicer into django applications, the original code had some other names for functions and used idioms from curse that feel unnatural in django applications.
Basically to get started in Jinja 1.2 you have to do nothing more than adding the following thing into your urls.py file, right at the beginning:
from jinja.contrib import djangosupport
djangosupport.configure()
That automatically configures Jinja for django and adds a virtual module called “django.contrib.jinja” that contains versions of the django shortcuts that work with Jinja. This module also provides the environment that is automatically set up based on your django configuration.
Basically if you have used in your views this code so far:
from django.shortcuts import render_to_response
def foo(req):
return render_to_response("foo.html", context_dict)
The only thing you have to change is the import:
from django.contrib.jinja import render_to_response
Another change is that Jinja users a plain old dictionary instead of a Context instance. So there is no RequestContext. Just pass it a third parameter that points to the request object to get your context processors called.
What the jinja contrib module also provides is a `render_to_string` method that works like render_to_response, but returns a unicode object, a register object that you can use to register filters, objects and tests on the jinja environment. If you want to use some django filters that are not known to Jinja you can use the `convert_django_filter` function that returns a converted filter if you pass it a django one. The Jinja environment instance is available as “env” in that module too.
If you want to try it out right now you can check out the new-parser branch. Information about the usage of the django integration are so far only in the module docstring. Happy testing :-)
Mad World Tabs
When I was on holiday in Tuscany with my family we were there with a second family, that happened to be the family of my friend Lukas (the photographer of this picture). I had my guitar with me and played some tunes down there. His sister Isabella asked me if I could play Mad World (Tears for Fears or Gary Jules, both versions are interesting). Unfortunately I had no tabs with me, nor was i able to find proper chords for the melody.
That weekend I invited my friends to my place and Isabella asked me once again if I could play that. Now I decided to play that but I wanted to experiment a little. So here the tabs I wrote for that song:
Mad World
=========
Tabbed by Armin Ronacher
Capo on first fret, standard tuning (E A D G B E)
Intro
|----7--------------------------|----7-----------------------------|
|------7p8-5p7------------------|------7p8-5p7-8p10-10-------------|
|--------------7p6----2-----2---|-------------------9-----2-----2--|
|------7--------------2-----2---|-------------------------2-----2--|
|--------------7---0-----0------|------7---------------0-----0-----|
|--0----------------------------|--0-------------------------------|
Verse Progression
|-------------------------------|-------------------------------|
|-------------------------------|-------------------------------|
|-------------------------------|-----1------1------1-------1---|
|-----2------2------0-------0---|-----0------0------1-------1---|
|-----2------2------0-------0---|----------------0------0-------|
|--0------0------3------3-------|--1------1---------------------|
Refrain
(3 times)
|----||-------------------|-----------------||
|----||:-----------2------|----2---2-------:||
|----||----0---0---2------|------2---0------||
|----||--2---2---0---2----|--2---------2----||
|----||:-2----------------|------------2---:||
|--0-||-------------------|-----------------||
|----7--------------------------|----7-----------------------------|
|------7p8-5p7------------------|------7p8-5p7-8p10-10-------------|
|--------------7p6----2-----2---|-------------------9-----2-----2--|
|------7--------------2-----2---|-------------------------2-----2--|
|--------------7---0-----0------|------7---------------0-----0-----|
|--0----------------------------|--0-------------------------------|
Please keep in mind that I’m very bad at tabbing (that’s my first tab ever) and that I changed some harmonics a little bit. Makes it more interesting :-)
Maybe one finds it useful.