Sapkowski in English is out !


For all my fantasy-loving friends who consider reading in Czech or Polish too inconvenient: the first book of the grand master Andrzej Sapkowski in English is out. It is book of short stories about Geralt, the Hexer (or Witcher if you want), who is the main character of the 5-book saga with the same name.

You can get it on Amazon.

Most important event of the year


I have been pretty quiet during last month. Few reasons why, none of them business related. The summer is not the season where people in our industry are incredibly busy – that’s what winter is for … and end of March, government fiscal year end ;-). We had family visit – my two nephews were staying with us for few weeks. So instead of blogging, I was spending evenings with them and weekends as a tour guide around Ottawa’s attractions. I have even – finally, after 9 years in this country – overcome my dislike for really long car trips and visited Niagara Falls.

The waterfall and nature was amazing. The stuff built around it by tourist industry was not. Even the drive would not be so bad (only too long) – unfortunately somebody did place Toronto between Kingston and Niagara 😦 … with all the consequences like never ending traffic jams and way above average number of crazy drivers. The crazy means crazy even compared to Montreal.

After the nephews departure at the end of the last week, the most important event of the year 2007 happened: the Book 7 alias Harry Potter and the Deathly Hallows arrived. We finally know where was Snape’s true loyalty and whether Harry made it or JKR ignored plea from Stephen King and other writers and killed him. On July 20th in the evening, I was there, in my home Chapters with my wife and daughter and hundreds of others, waiting for the midnight. It was amazing. Not the marketing hype, but the anticipation and the atmosphere (my compliments to the guy dressed as Lucius Malfoy, he was bang on).

There is something strangely satisfying to see people stand in line to buy a book. Other that HP series, I have never seen it happen on this continent. Regardless whether you like the story or not, what JKR achieved (in addition to make some pretty nice wad of cash for herself and others) is bringing people back to books and to reading. Not only kids. Reading books is essential – just watch Idiocracy to see where the TV will lead you 😉

So hour after midnight I was home with the Book 7 and started to read. I have finished shortly before midnight same day – with short break for sleep. What a weekend ! The book seven did certainly not disappoint. I will not go to details – not even now when Connie finished it and hopefully Shane did as well, some of my friends may still be reading. Gabo – wikipedia has full plot outlined, so unless you want to get a spoiler, do not go here

In some sense, the Harry Pottter saga was like a greatly written piece of software. JKR created illusionary world which was very rich and very consistent. Even with allowing magic, there were rules and things worked within the system. In software, you must pay attention to details (otherwise it will not work) and whenever you are writing larger system, your design should be solid otherwise your own creations may get in your way. In the books 1 to 7, I have not found any major contradictions or ugly hacks. Well thought-over plot, nicely designed story development, perfectly implemented – I mean written. Hats off. You can seldom see this gift in fantasy stories – somehow dealing with magic and dragons often lures the writers to be sloppy, cut corners, ignore details and bend the rules. There are few exceptions – such as Belgariad, Discworld or The Hexer Saga (to read this one you better can read Polish or Czech). From “scientific” sci-fi, one of the best “software-like artworks” is IMHO Dragon’s Egg and Starquake.

Thanks for all the magic, JKR.

Book review: Dreaming in Code


Thanks to long weekend and more quiet time in last couple of days (Happy 140th Birthday, Canada!), I managed to read something else than Ruby-ism/Rail-ism. Among others, I finished the Dreaming in Code by Scott Rosenberg, a book promising to explain why software is hard.

It is pretty tough question to answer. The way this books tries to address it is following the story not very well known open source project named Chandler through it’s beginning over period of 3 years. Chandler was – and still is – developed by the OSAF – Open Source Application’s Foundation, founded (and financed) by Mitch Kapor, who was before the founder of Lotus Development Corporation and designer of the “Ur-spreadsheet” Lotus 1-2-3.

The Chandler project – unlike most opensource projects was blessed – or cursed – by very solid financial backing, which allowed to hire fairly large team for fairly long time, without worrying too much about running out of time or out of money. It also contributed to quite ambitious goals (“Outlook killer”) and to lot of time being allocated and spent on design and research projects (known also as BDUF – Big Design Up Front antipattern).

For me personally the most interesting discovery from reading the book was how similar can be the issues in two completely different projects that lacks clearly defined goal and requirements. In Chandlers case, the basic design questions were open for unhealthy long time: what is the platform for the repository ? Is it going to be peer-to-peer system or using centralized server ? What is the proper set of features ? How the user interface would look like ? I found these questions so familiar and reminded me of one other (non-opensource) project …

Throughout the book, you can find lots of quotations, observations and pieces of wisdom related to our profession collected from variety of sources – books, interviews, Web. For illustration few of them:

“Joy is an asset. It may well turn out that one of the most important effects of open source’s success will be to teach us that play is the most efficient mode of creative work” Eric Raymond

“In science, the whole system builds on people looking on other people’s results and building on top of them. In witchcraft, somebody had a small secret and guarded it … Traditional software is like witchcraft …” Linus Torvalds

“In any project that is introducing new technology or design … plan to throw one away, because you almost certainly won’t get it right for the first time” Frederick Brooks

“… we should train developers the way we train creative people like poets or artists…. They study great works of poetry. Do we do that in our software engineering disciplines ? No. You do not look at the source code for great piece of software. Or look at the architecture of great pieces of software. You do not look at their design …” Richard Gabriel

Conclusion: Maybe not as easy read as originally expected – mostly because of the length and level of details related to Chandler, but nevertheless worth reading by all means. If you are professionally involved in building software for living, this books outlines many issues of the field. You may even have feeling terribly strong deja-vu (if you are around for couple of years/decades). Or – if you are younger – it can be a great example of things to avoid 🙂


Best book for Ruby on Rails


During last two weeks I have been reading and playing a lot with Rails.  Now I am in the state where I think I started to “get it” and understand how things work under the surface. Which means I am ready actually start using the framework for real work and become proficient as I get my hands dirty.

To get to this state, absolutely essential and by far the best book is the classic one – Agile Web development with Rails co-authored by the original Rails designer and one of the Pragmatic Programmers. Like other books, the first part is sort of step-by-step code tutorial, which leads you through creation of a Rails application, shows you how you access data, create UI, use scaffolding, etc etc. Unlike other books, this does not stop there and the second part of the book is an excellent coverage of Rails internals – ActiveRecord, ActiveView and templating system. Very well written and offering great balance between covering important features without becoming reference manual.

The best feature of this and other Pragmatic books is that you can purchase it as e-Book in the PDF format (without any DRM restrictions, just customized with  your name in text) which is cheaper, very portable 🙂 and very search-able. As added bonus, you get free updates when Rails changes or an error is discovered. As matter of fact, I just got such email, only few days after I bought the book.

The above book is not the only e-book I have purchased from Pragmatic Programmers. After 9 years, I have decided to buy a book covering such basic and boring thing as an editor. My previous (and first ever) book focusing  on how to use an editor was “Learning GNU Emacs“, back in 1998. You may say that if you need a book to use an editor, there must be something wrong with that piece of software. That is certainly one possible view. But the other explanation is that the editor is so powerful, extensible, customizable that it allows many ways how to be used and deserves the book. In my opinion, the later is very true about Emacs. I was using it for few years, but eventually switched back to Windows alternatives or IDE’s such as Eclipse or Visual Studio.

Now there seems to be another editor that has promise to be such great, powerful and  extensible tool as Emacs was  – but different way. It is TextMate – an editor available only on OS-X platform. I have got the license as part of the Mac Heist charity sale over Christmas and so far I was only scratching surface of its capabilities by using it similar way how I use Notepad++ on Windows. So I have decided to spend 20 bucks and few hours to “unlock the power” – editor is such basic tool used for hours every day that improving and optimizing your work habits actually can make a huge difference. Besides, TextMate is “the editor” for Rails development on OS-X and I am now in “wow-phase” of discovering the power of bundles. If you are on a Mac, give it a try – it is worth it.

Kurt Vonnegut – R.I.P.


It is a sad news – Kurt Vonnegut Jr., one of the great sci-fi writers, died at the age of 84.

Thanks for all the great hours spent reading many of great books he wrote over last 55 years. I guess that best way how to show respect is re-read something he wrote – like this one.

Managing knowledge portfolio


There are few technical books which you enjoy first time you read them, remember the experience and keep coming back. One of such classic books is The Pragmatic Programmer – from journeyman to master – by David Thomas and Andrew Hunt. If you have not read it, get it, it is worth every cent. Since the book was written – ages ago, back in 2000 – it did not loose anything of its freshness and value – which one cannot say about most of technical books written earlier than 2-3 years ago. Inspired by the success of their initial creation, Dave and Andrew started the website and continued writing whole Pragmatic Programmer series of books.

Book contains 46 tips and explanations and the tip #5 deals with knowledge portfolio – one of developer’s main assets. Unfortunately it is expiring asset so you have to work hard to keep it recent and in good shape. Dave and Andy recommend using the same strategy as successful investors in finance markets:

  • invest regularly – even if small amounts, but create habit investing
  • diversify to embrace change and to widen the reach
  • manage risk – combine high-reward high-risk with low-reward low risk
  • buy low, sell high – try to identify future hits before they become popular
  • review and rebalance – what was true last year, can be different now

They also recommend few practical steps and goals how to achieve the healthy and well balanced portfolio, such as:

– learn new language every year
– read a technical book every quarter
– read nontechnical books too
– participate in local user groups
– experiment with different environments

Which got me thinking about how am doing wrt these suggestions. I guess I have no problem with “read a book” part, either technical or non-technical 🙂 – thanks to Safari I consume 1-2 technical books a month and thanks to e-books even more non-technical ones :-). What I have not done in about 3-4 years was learning a new language. I think I have not learned really new language since C# in 2002. One could argue that for Java programmer, C# is not really such a new language – in that case I have not really updated my language toolset since I started with Python back in 2000. That is terrible ! Obviously, some action is required – I am overdue at least with 4 new languages. Because it is highly impractical to tackle 4 problem at the same time, for this year I will be adding two.

But which programming languages ? Key here is the word pragmatic and the investment strategies above – more specifically, combining high and low risk, buying low and diversifying. I want to explore new territories, but stay away from esoteric and pure-research areas (e.g languages like Janus, Limbo or Concurrent Haskell :-)). After some research I picked two candidates: Ruby and Objective-C for the year 2007.

There are few reasons why exactly these two: they are both similar (with Smalltalk and functional programming/OO heritage) and opposite – one is multiplatform, interpreted, very high level, the other is (practically) single platform – OS-X language of choice, compiled and up to version 2.0 not even garbage-collector enabled. One has pretty clean and nice syntax, other is – well – simple, but quite ugly. And so on.

I have started with Ruby yesterday – found a good book on Safari and started to read and play with the code. I will get back to it when my head stops spinning – and after I get some non-trivial programs done to get some real life feeling of the language. From the book reading point of view, it is pretty amazing what I have found in few hours :-).

Btw, the version 1 of the Ruby boom by the same two authors is available online.

Computers Ltd.


Same as last few weeks, I have spent most of the weekend reading. Unlike the weekends before, this time I was actually reading a book, not source code. It was nice change …

I have picked this small book with title Computers Ltd in Ottawa Public Library last Friday, while returning some books on CD. Written by David Harel of Weizmann Institute of Science, Rehovot, the book is trying to explain what computers cannot do. It speaks about complexity, P / NP problem and other fundamental limitations of what we can and cannot do with our favorite toys. This book is nice proof that even on such complex and abstract problems it is possible to find very nice and readable presentation – without sacrificing the precision. It reads as novel and thanks to very short format, it is an excellent complement to quiet Sunday afternoon. Recommended.

And speaking of mathematics, here is a way how to tell extroverted mathematician from introverted mathematician (for all you folks interested in M-B classification and similar:

The difference between an introvert and extrovert mathematicians is:
An introvert mathematician looks at his shoes while talking to you. An extrovert mathematician looks at your shoes.