The magic number seven, plus or minus two. Classic paper. Don’t have time to read it.  Executive summary: you can only handle a small amount of stuff.

Also, you only have finite time. I’ve been trying, moderately successfully, to learn the programming language Haskell, for a month or two. After reading Paul Graham’s Hackers and Painters book, and surveying the collective opinion of the lazyweb, I think it’s likely that learning a proper functional language will make you a better programmer in whatever your main languages are. The Pragmatic Programmers’ advice to learn one new language per year keeps you flexible. (And probably doesn’t hurt their book sales!) I try to write in a functional style (although it’s too painful in Java), but wanted to write in something purer. After a brief investigation of LISP (the obvious first choice, given the source of the impetus to Go Functional) which didn’t survive a bout of Parenthetic Aversion, and an attempt at re-reading old university texts on Prolog, I settled on Haskell (out of Haskell, Scala and Clojure) – mainly due to The O’Reilly Factor.

IMHO, given that time is finite, anything in computing can be safely ignored if there are no good, up-to-date technical books on the subject that are edited-by-actual-editors. There are many fine websites and tutorials, howtos, etc. out there, written by skilled authors – but print carries weight (and not just physically!). There are a great many technical books that have been edited by idiots, or not edited at all: the entire output of certain publishers goes largely ignored based on earlier editing disasters. For me, it has to be an O’Reilly book. Scala has a very good book (one, ATM), and Clojure has a pragprog book coming out RSN. But the presence of Real World Haskell meant that this was a language that had broken out of its ivory tower, and meant business.

The book is available online, and is excellent. I soon found myself wanting further coverage of various aspects of the language, so went searching…

Since most of my study time is on the train, I’ve collected many web pages of literature that I’m hoping firefox will store in its cache for me and not lose if it decides to ditch my session. This means that every time I fire up the browser, it has to go and reload these pages – all 31 of them (plus others, for various other projects). This is not good – I’ve had it lose my session every so often, but the main problem is I now have too much web-stuff crowding my brain. I’ve become tempted by quantity over quality, making further progress difficult.

And so, in a fit of cleanliness, I vow to only have a maximum of five resources open for any one project, at any time.

If it will help anyone else, here are my top five sources of information on Haskell:
Why Haskell Matters
Learn You A Haskell For Great Good
Yet Another Haskell Tutorial
Tour of the Haskell Syntax
Real World Haskell

The haskell.org wiki has all this and far, far more, but the thing I’ve noticed about learning Haskell is that it’s not like anything I’ve done before – going from Forth/C/C++/Java/Perl/Ruby/Python is tractable – switching to Haskell requires extensive mental rewiring: I’m sure it’s all “For Great Good”. It just has to be sipped slowly, and assimilated one concept at a time – something I find the O’Reilly book excellent for. All the pages on monads have been closed for now, and although I wanted to scratch multiple itches (see aforementioned lack of time), I’ll have to forego articles on concatenative languages. Although I’ll be back…

Of course, I have more than one project on the go at the moment and so there are browser tabs open all sorts of other projects – my attempt to start Getting Things Done again must start again soon, methinks.

But all of this spring cleaning got me thinking how I should best organise study, projects, tasks – I need a PIM system that syncs between laptop, PDA/iPod and the web… study is currently organised with a combination of multiple browser sessions, Delicious bookmarks, eBook reader’s recollection of the current books I’m reading, multiple Freemind maps. I hear good things about Zotero as a means of capturing research material. If I didn’t mind being trapped on the Mac, there’s also DEVONThink, which is probably better, but would require me to upgrade to the latest OS, which is a PITA I don’t need right now – also, any tool I invest time and money in today and for the future has to be cross-platform, and open source.

Hmmm….

Advertisements