MusicBrainz is moving to Python :)

Januar 4th, 2008

Look here and here. That’s actually just about enough that has to be said. Perl is on the way out, CherryPy and Mako are coming in. Since the very best changes are coming in this way, and MusicBrainz will actually pay someone next year to work full-time on the server part (and there are a couple of obvious candidates), I’m really excited about MusicBrainz finally taking off 2008. And since it’s Python, I’ll try participating in the server part.


Unorthodox opinion of Rails

Januar 1st, 2008

Wow. Just “Wow!” You just don’t read so much frustration and profanity on one day all too often. Both of which seem reasoned:

With Rails I get scrawny cock suckers with carpal tunnel syndrome talking to me like they’re gonna eat my young. Their feeble PHP infected minds can’t grasp advanced shit like objects or closures. When you combine stupid businesses with stupid people using a stupid framework based on a big fat fucking lie on a shitty platform you get the perfect storm of dumbfuck where a man like me can’t find work.

Practical Common Lisp (PDF)

Dezember 24th, 2007

If you are looking for the PDF version of “Practical Common Lisp”, which is not anymore available from the “usual” address at apress.com, you can use this link: http://www.apress.com/resource/freeebook/9781590592397

Alternatively, go to apress.com, search for “Practical Common Lisp” and look for “Free eBook download” link in the left sidebar.


Loving and hating Rails

Dezember 24th, 2007

I’m actually trying to get the grasp of Ruby, but I have a hard time liking it. It’s mostly about people — Ruby itself seems a nice language, but Rails’ community is getting on my nerves. I haven’t seen many things that made me go “WTF?!?”, which could be attributed to pure Ruby, most go to Rails.

Let me give you just one example.

Every now and then I’ve tried to find some information on deploying Ruby and its “gems” system-wide. Apart from me hating the whole concept of “gems”, which rather defeats the whole package management of Linux and MacOS X, it seems to be possible, but at a very high price. Ruby fanboys like their local repositories of “vendor” code. Look at this:

But I highly recommend to freeze
rails (and any other gems you use) in vendor/.

Firstly, your app works with these versions correctly. Can you guarantee
that if a sysadmin decides to upgrade some gems (or downgrade one for
another app?) that your application still works as expected.
[...]
I think freezing all that stuff is just great to do. As far as I know
there are no performance downsides to this.

These people seem to have no clue about security. They don’t have a clue about why package management is good. All they care about is their MacBook, their TextMate und sliding down their Rails (oh, shiny!) Apart from wasting a lot of disk space for all of their “freezing”, there are two main things that piss me off at this stage.

First, it’s the inability to keep their own API stable. Either that, or you shouldn’t be using gems, which are in alpha on production servers. It doesn’t bother Rails advocates enough, it seems. Rails is now at 2.0 and there is still no indication there is any kind of stability. Every other product cares about their users and tries to keep all 1.x version compatible and break the APIs only at 2.x. At Rails the policy appears to be “minor version: minor breakage, major version: major breakage”.

Second problem is the administrator job, which can become a nightmare with Rails. Guys, have you ever heard of a thing called “Security”? Imagine a critical security error in one of Rails versions. A good administrator has to worry about upgrading all of available web servers and guess which servers he won’t be able to upgrade properly? Right, Rails ones, since there might be thousands of separate virtual servers with separate Ruby and gems collections. I don’t envy them. I am actually with Debian on this, who issued a position paper on RubyGems.

Rails community pisses many potential developers and administrators off. They make things easy for the developer, but not to others. I’ll continue to learn Ruby and to get a sense of Rails, but I don’t actually expect to like it a lot. Maybe after I’ve managed to install some Rails application without “frozen” gems — but this could actually take a long time.


Missing the point

Dezember 20th, 2007

Jeff Atwood is missing the point when he talks about JavaScript performance. He’s talking about how “JavaScript is the Lingua Franca of the web”, whether “it [is] possible for browsers to run JavaScript significantly faster than they do today” and so on. Apparently, he doesn’t read Steve Yegge or reddit, since otherwise he would have read about JavaScript moving into the desktop domain:

As it happens, though, I’ve settled on Rhino. I’ll be working with the Rhino dev team to help bring it up to spec with EcmaScript Edition 4. I believe that ES4 brings JavaScript to rough parity with Ruby and Python in terms of (a) expressiveness and (b) the ability to structure and manage larger code bases. Anything it lacks in sugar, it more than makes up for with its optional type annotations. And I think JavaScript (especially on ES4 steroids) is an easier sell than Ruby or Python to people who like curly braces, which is anyone currently using C++, Java, C#, JavaScript or Perl.

Steve Yegge is excellent in talking about one thing and nailing several others on the way. He starts talking about his home-grown open-source game, moves over ranting about Java programmers onto some Gang-of-Four ranting and finally tells the public about his decision to rewrite his whole Java game in ECMAScript4. Actually, he’s talking only about his personal experiences, but these have a gigantic impact on the people. “A growing sense of doom” is a pretty good summary of the feeling. And while Reginald is particularly baffled about Java and millions of LOC, everybody is free to learn from Steve just about anything he mentions.

I wasn’t as amazed about Java, I rather had a lesson about JavaScript becoming mainstream. Real mainstream, a general-purpose language like Python or Ruby. Interpreters, JITs and compilers for ES4 are being developed, they are getting faster and it’s just a matter of time when JavaScript in browsers becomes a simple plugin, just like Java is now. JavaScript is the heart of Web2.0 now, but it’s extending to outer domains rapidly. Everyone who is not aware of this might be left far behind.

By the way, it feels good to be a part of a minority.


Ubuntu Hardy, Qt4.3 and anti-anti-aliased fonts

Dezember 19th, 2007

Just for the record: ugly fonts in all of Qt4-applications in the current Ubuntu development release Hardy Heron result from a bug in Qt and this bug is triggered by the ttf-arphic-uming package. Remove it and you are ready to go again. Otherwise, you’d have to re-enable anti-aliasing for these fonts somewhere in /etc/fonts/conf.d/70-ttf-arphic-uming.conf.


Three steps to Google’s world domination

Dezember 15th, 2007
  1. Create this new what-are-my-friends-sharing feature, Robert Scoble is so fond of, stripping LiveJournal of one of their benefits en passant (Friends’ Feed). At this point Google and LiveJournal, as just about any social platform, are closed up silos.
  2. Open up Google Reader (and thus Google Account) for anyone with an e-mail address, not just @gmail.com, thus making all of my non-googlified friends willing to use Google Reader now appear in my reading list (one more point for Google as opposed to LiveJournal) and enable anyone not willing to get a Google account to get a blog at Blogger (there you are, LJ, you are actually obsolete now). Google would be halfway-open now, since anyone can use their services without opting in for a Google Account.
  3. Convert Google Account to a full-fledged single-identity account (technically very challenging). Et voilà!

By the way, it’s actually creating a social network “that sucks less”™, since you already have messaging and IM, and you get to choose your friends according to what they do and what they like, not according to what they look like. Could be really interesting if Google adds a small text under each Google Reader article: “Shared by XX people”. Oh well, we’d need comments too, but it’s a good start.


Google is useless

Dezember 15th, 2007

It seems an update for Google’s core, the search engine, is long overdue. Apart from tons of spam in it, Google also tries to be smarter than me, providing me with more useless search results. Ever tried searching for ubuntu islsm? islsm is a wireless driver. Apparently, Google doesn’t believe me I’m capable of writing my search terms correctly, so it silently corrects my search term to ubuntu islam. Yahoo is at least honest:

We have included ubuntu islam results - Show only ubuntu islsm

But, sadly, the best one in team is Live Search, which barely asks me, whether I’ve meant “ubuntu islam”.

That used to be Google’s default behaviour. It seems these glory times are over.


“Natural” Sorting

Dezember 13th, 2007

Life could be so easy, according to CodingHorror.

Perhaps a more human-friendly natural sort option should be built into mainstream programming languages, too.

Just like that. So simple. Windows Vista Explorer does it right. Or does it? Maybe, if you are only considering English language and are only concerned about numbers. In any other case, we are talking about full-blown AI here. What about “The Beatles”? Should it sort under “B” or under “T”? How about Chinese language? How about lexicographical order in telephone books? What about diacritics in other languages? What about ordering “5 feet” and “2 meters”?

I could go on forever. “Natural” sorting is only about perception. It’s personal. It’s different for every person. It’s context-sensitive. Actually, the word “natural” is a problem too: something natural for a German is not natural for a Japanese. It’s not something we can decide either. Do we really want our computers or, even worse, our programming language to decide for us? Don’t think so.

If you ask me for a solution: maybe we should stick to putting context next to our data. If we know it’s a date, sort it like a date. If it’s a file name, sort it “naturally”, i.e. in the context of a file system. And if you really need to, implement a “natural”, context- and number-sensitive algorithm just for this file names list. Don’t bother including it into every single language in the world, since everyone needs something else, you’ll risk turning your language into PHP. If you really want to, make a class and implement sorting on it. Or maybe write a lot of mixins for different kinds of numbers-aware sorting — bad luck if your favourite language doesn’t support mixins.

There are a lot of alternatives. I agree that ASCII-collating is the easiest one, which should be avoided. But keep in mind that there is no such thing as a “natural sorting order”.

Update: Yes, Jeff and also most of the commenters on his article are mainly talking about sorting file names. Like I stated above, sensible sorting is only possible within a context and with file names there is no context since we don’t know anything about the naming principle. File names is a principle that should be abandoned in the near future, we should be using meta-data instead. File sorting problem would become non-existent then.


I feel like a prophet

Dezember 8th, 2007

Today I’ve remembered something I posted on MozillaZine a long time ago and was eager to find it. It wasn’t that difficult, I still have an account there. Here it is.

Today that post is five years old. Holy crap. That much time I’ve been true to Mozilla. Sometime in year 2000, I’ve been using Mozilla M16 and told people it’ll be the next-gen browser. It became true with the release of Firefox 1.0. In that five-year-old post, I’ve said it’d be nice to have a common runtime and applications running on top of it. GRE has been a reality then, Firefox and Thunderbird were already born, but nobody really cared about GRE. Which is called XULRunner today and guess what they are basing future versions of Mozilla’s flagship products on.

I feel proud of myself.