December 21, 2008

Real World Haskell - First Chapters

Yesterday, I've got the Real World Haskell book from amazon.co.uk and am now at chapter 3. The first two chapters are ok. There are some typing errors and little logical things (they name a function which obviously count lines "wordCount") but that's nothing really dramatic.

I've already learned the Haskell basics a year ago with the book Programming in Haskell by Graham Hutton, which is IMHO a very good intro book for Haskell but on a more theoretical basis.

So, I'm looking forward to the more advanced Real World Haskell topics. The book refreshes my Haskell knowledge and it begins to make fun again. Haskell is a wonderful language.

December 10, 2008

Arch Linux rocks!

Some weeks ago, I switched from Ubuntu Linux to Arch Linux as my primary OS for my Desktop PC. Why did I switch? I have the feeling that Ubuntu gets slower and more bloated in every new version. I don't know why, but I don't like it anymore.

I've read some positive comments about Arch on reddit... so I tried it out. The Beginners Guide is a good starting point. After two or three month with Arch Linux, I just have three words: I love it.

Here are some points I like about Arch:
  • The Arch Way is the right way to do it. Keep It Simple, Stupid.
  • The package management with pacman is faster than dpkg and you can easily create your own packages with makepkg.
  • Incremental updates! You never have to wait six month just to get a newer version of some software from your distribution. Arch updates its stable tree continuously, so you just have to do "sudo pacman -Syu" and the chances are high, that you get new software every one or two days. Today I got the current git version 1.6.0.5 which was officially released two days ago. How long do you have to wait to get the current git version into stable Ubuntu? You have to wait for the next Ubuntu version till the next year. Sure, you could compile git yourself or download the package from other sources, but the Arch way feels so much better.
  • The boot process is different from Debian based distributions. You have a single /etc/rc.conf file, and there you have also the daemons that start at boot time on a single line in the file, and you can change this very easily... If you prefix a daemon there with an @ sign, the daemon starts in parallel, so you can decrease your boot up time very easily. I'm starting my network connection daemon in parallel, so while it's working out its DHCP stuff, the rest of the system just goes on. That works really well.
  • Arch has a great community.
  • With the ArchLinux User-community Repository (AUR), you can get additional packages which are not in the official distribution, maybe applied with some patches. Yesterday, I've installed urxvt with 256 color support and fontfix-patch applied from an AUR package.
Let me tell you my experience with this great package management: Some weeks ago Gimp 2.6 was released. What did I do? I've created my own PKGFILE for Gimp 2.6. A PKGFILE is a build instruction for a software package, very similar to ebuild files from Gentoo Linux or ports files from FreeBSD. So I've created the simple PKGFILE for Gimp 2.6, ran makepkg and installed the resulting package via pacman.

Now, that's nothing special. But what really surprised me was, that four or five days later, Gimp 2.6 was in the official stable tree of Arch Linux. I did my daily "sudo pacman -Syu" and what happened? It updated my self created Gimp 2.6 package with the newer Gimp 2.6 version from the Arch stable repository! That absoluttely rocks! My own packages integrate itself into the update system! That's possible because you supply version informations in the PKGFILE.

Today I had the same situation with Python: Some days ago, Python 3 has been released. So, I've created a PKGFILE and build my own package. Today, I did my "sudo pacman -Syu" to update my packages and boom: My python3 package got updated by the python3 package from the stable arch tree! Arch Linux rocks!

November 18, 2008

Python

In the last post I talked about Ruby and that I like it more because of the feeling the language gives to me. I like Ruby as a language more than Python as a language. But in the last days I realized more and more that I like Python as a programming environment more than Ruby.

Primarily it's because of libraries. Python does not even have a solid standard library, there are at least four very solid 3rd party libraries I would love to use and have used some of it already:
  • PyQt4 - I'm a big Qt fan and used it in some C++ projects. PyQt4 is the best Qt binding to a dynamic language.
  • Pygame - a solid binding for SDL
  • Twisted - I didn't use Twisted until now, but read many positive things about it and have to check it out. 
  • Django - a very solid web framework
Yes, Ruby also has some interesting projects, but I think what sells me most on Python is PyQt4... the Qt4 bindings for Ruby are not that great and lack documentation.

November 15, 2008

Ruby



I got interested in the Ruby programming language again, after I read about the release of the Merb framework on reddit. I've tested Merb a little bit, but web frameworks are not really the type of things I'm very interested in at the moment.

I've learned some Ruby 5-6 years ago, even before the "Rails-era". I don't know why, but Ruby is the language that feels "best" for me compared to the other scripting languages.

In the last weeks I've done some Perl stuff but the language feels ugly at many aspects. CPAN, DBI and perldoc is very cool stuff and I have big respect on the work all the perl hackers do and have done, but perl as a language seems to be something I personally can't get used to.

I've the same feeling about Python. The language is much cleaner, but there are some things that don't make sense to me like closure support with this local-variable-array-hack and limited lambda. Everytime I read and think about Python I say "I have to take Python for all my stuff because everybody else likes it..." but everytime I try to use Python, it just doesn't feel natural to me.

So now I'm in my "Ruby phase" again...

I find it interesting that some big players in the computer industry have "their own" ruby implementations: Sun has JRuby, Microsoft has IronRuby and Apple has MacRuby.

MacRuby seems to be some sort of an Apple strategy to push the development with Cocoa and dynamic scripting languages. Lately the Apple website released a tutorial for MacRuby with Cocoa and it seems to be very interesting, because the whole MacRuby object system is based on the Cocoa/Objective-C classes i.e. no sort of wrapper classes are needed and you can speak to Cocoa directly. This seems to be one of the best scripting language integrations with a native operating system framework I've ever seen.

Lately Apple also released their Cocoa/Objective-C GarbageCollection named AutoZone under an OpenSource license. An interesting note in the README says something about MacRuby:
While AutoZone was tested and deployed with a focus on supporting Cocoa application development, the implementation is language agnostic. For example, the MacRuby project uses the AutoZone collector to provide fully automatic garbage collection of object graphs that span between Ruby and Objective-C!

This verifies my speculation about a bigger role of MacRuby in the future at Apple.