So I’m reading along Practical Common Lisp due to a friend recommending that it would be a good place to start, and doing so on the dual-G5 power mac I inherited from my wife. I’ve got gvim running, clisp in an rxvt window, and firefox up with the book displayed.
Unlike the usual case, when I hate reading on the screen, I find myself enjoying it. It took me a while to realize this, and a while longer to realize why. I think one of the main reasons for it is I have new hardware at home. Namely, I inherited Sarah’s dual G5, which while several years old is still worlds more capable than my old powerbook. Secondly, Sarah decided that our desks looked bad in that she had a nice new shiny 24" widescreen LCD, and I didn’t, so she bought me one.
Yeah, you read that right. <3
The other trick is that typography on the mac is good. The antialiasing doesn’t suck, and the fonts and general typography are really good.
So I’ll still get a copy of the dead tree version, because even with all that, I still prefer real books. But, I’m having fun for now.
Holy crap, I’m using a full copy of something for free on the Internet, but I’m still going to buy it. It cannot be!
Err, sorry for that digression.
In any event, I’ve started learning common lisp, probably as a result of reading the various rants that Steve Yegge has made over time. I am starting to get that feeling again where I don’t feel like I’m learning anything, and I’m hoping this will do something to combat that. We did some stuff with ocaml in college, but somehow I managed to completely bypass lisp (our AI class was in java and C++, of rall things). That said, I probably wouldn’t have appreciated it back then.
I am going to play with lisp a bit and see if I can’t jump-start my brain and all that stuff a bit. As is often the problem, I don’t have a project for which I want to use it, but hopefully some intractable problem will come up.
Once I get some comfort in it, I think I’ll try and take another hard look at Ruby and the cartoon foxes. Part of my problem to this point in Ruby is that I get this great feeling when I play with it, and it’s awesome, and … well, it has continuations, and I can’t tell you how many times in a week I Find myself saying “self, I’d really rather solve this problem with continuations.”
Crap, train going off-track again. Back in college, our languages and compiler teacher made some indirect mumblings about how we would think we understood continuations, but we wouldn’t really understand them for a few years after that. I lacked the comfort to say I fully appreciated them at the time, but I know I explained what they were on the exam, even after implementing an ML interpreter that supported them, and I still really never appreciated their use.
I have this crazy desire when interviewing people at college or from college to start chatting about all this crap, because sometimes those chats are more instructive about how a person thinks than answering some questions. Some of my best interviews (as a candidate) have felt a lot more like shooting the shit with somebody about technology and academics, rather than like an interrogation of my approach to solving some arbitrary problem.
Quick, write a program to solve the problem of world hunger and bring peace to the middle east. Do it in O(n) time. Bonus points for keeping C very small and not using any additional memory.
The answer is obviously found by computing all possible answers ahead of time and returning the result in constant time. Toss in an exclusive-or for sport, and never mind that I’ve completely ignored the stated goal of the problem.
In any event, what I’m getting at is that I’m comfortable in Perl. I have some problem I need to quickly solve, like, say, retagging a bunch of albums I’ve digitized to FLAC. I find myself thinking “I could do this in ruby” but I wouldn’t know where to start in terms of id3 libraries, or how the IO system works. Yeah, I’m smart enough to research and figure that stuff out pretty quick, but I could also just write the whole of it in Perl in 5 minutes.
So, despite really wanting to love Ruby, I’m lazy, and there hasn’t been any situation yet where the convenience of ruby and its feel-good approach to programming have outweighed my laziness as a hacker. I’m sort of hoping common lisp doesn’t work out that way. As much as I appreciate the virtues of being lazy, I don’t want to find myself stagnating because continuing to do the same old thing and solve the same old problems with the same tools is the easy way out.
And no, for those of you that are concerned, I’m not jumping to the dark side and using SLIME and viper. VIM4LIFE. I should get t-shirts made with the vim logo green and VIM4LIFE on the front. That would be sweet.
Have played a bit with sbcl, cumcl, openmcl, and clisp. clisp appears to have readline support in its REPL, so screw the rest of them until I have a reason to need some specific feature (like cocoa integration in openmcl).
And on that note, it’s time for bed.