I was looking for a way to write down our songs in a way that the whole band will easily understand. Musical notation would be overkill – i needed a simple “map” of every song that will describe it as song parts – intro, bridge, verse, chorus, coda, etc., and instrument parts – guitar, piano, drums, and comments such as play slower here, play louder there etc. MIDI is good for describing music to computers, not people. Cubase is good for recording, but not for printing – except maybe notation scores, but i don’t need that. I tried writing it as a table in a word processor and found out that it was bad at the middle of the intro to the first song.
So i thought about making up some XML format and writing a Perl script that will convert it to PDF, HTML or some other printable and readable representation. And then i found out that what i really need is XSLT which does just that – transforms XML to other formats.
I kept hearing about XSLT everywhere, so i thought that now would be a good time to finally start using it. I read some articles and tutorials about it and most of them said that XSLT works like Lisp. So i recalled Eric Raymond’s article about becoming a hacker:
“Other languages of particular importance to hackers include Perl and LISP. Perl is worth learning for practical reasons; it’s very widely used [...]
LISP is worth learning for a different reason – the profound enlightenment experience you will have when you finally get it.”
(I think that there are more and better reasons to learn Perl, but i shall put that aside now.)
I tried to follow Raymond’s advice and study Lisp since about 1998. Yesterday i started getting it for the first time, with the help of Cygwin, Guile and this fine tutorial by Dorai Sitaram. The experience is enlightening indeed.
If you ever tried studying functional programming and gave up – try it again. It took me nine years to get it, and chances are that you are smarter than i am.