I've been here before, but it was different.
For a long time, now, I've been interested in learning more of the sort of "computer science" side of computer programming. The actual theory of things. Well, the Structure and Interpretation of Computer Programs (often referred to as SICP, which I pronounce like the word "sic" followed by the letter "p", in rapid succession) is a book that, as I understand things, is meant to help one learn such things. And some years ago (circa 2003 or 2004, while working at Amazon), I became aware of and interested in it, and I set out with some coworkers to go through it and understand it.
Well, we got through a chunk of it, but we were having trouble getting ourselves to stick to even the fairly relaxed schedule we'd set for ourselves, and... eventually, interest waned enough that it didn't feel practical to proceed, and we aborted. (Or maybe it wasn't that interest waned, but that other things took priority.)
Well, it's... wow, almost a dozen years later, now, and I've been meaning to get back to this (because my interest never really waned, I just was having trouble sticking with it with all the other stuff that was going on), so, now I'm going to. And not unlike the various cooking blogs that follow some book or other (famously Julie Powell tracking Julia Child (inspiring the film Julie & Julia), or, less famously but closer to my awareness, an online friend of mine Cooking [his way through] The Prawn Cocktail Years), I thought I'd blog about my traversal through SICP.
So, this is the beginning. Well, maybe it goes back a few months, actually. It was back in mid-november that I ordered a copy of SICP from the local technical bookstore (DigitalGuru, which was local to me at the time). I'd looked for it on the shelves, and they hadn't had it, but they were willing to oblige me and order a copy, which I picked up some time later. I read through the front matter, and started in on chapter 1. And then I put it down. I'd gotten as far as page 12. I was excited to proceed, but life was also a bit chaotic for me at the time, and I got distracted from it. But now I want to get all the way through it. And I figure the best way to do that is to... start over? Well, OK, I'm a bit reluctant about that, to be honest, but it's what I'm going to do, because I figure I want to blog about the whole experience, and I don't remember the front-matter well enough to know if there was even anything I might have wanted to say about it, had I been blogging about it from the last time I started.
So, here I am, on "pi day" (hint: pi is still wrong, and anyway it's kind of really tau day), and I'm going to start over. I'll post small posts as I make progress on my way through, and longer posts when I find something that seems particularly interesting – either because I've learned something, or because I've been re-exposed to something I already knew but which I think others might find useful, or whatever.
I may or may not have a co-worker roped in on this, too. Anyway, more to come.
Oh yes, and I will be using scheme as I go through this, as that's the language that's used in the book, and I've been interested in lisp dialects (of which scheme is one) for some time (not insignificantly because I like the idea of beating the averages). I think when my little group of coworkers did this at Amazon we may have tried to convert things into some other language. I think that was probably a mistake, and may well have contributed to our falling off the wagon.
Will I fall off the wagon this time? Oh, quite possibly. Life is still interesting. But my hope, with this blog, is that I can get back on, and pick up more or less where I left off. I make no promises as to the pace of this progression. My goal, though, is to ultimately finish.
I also anticipate sharing whatever code I write for the exercises (with commit history and everything) via github. I'll post an update when that exists. Who knows, I might even dig out a previous repo... I think I might have one lying around. OK, off to look (and start reading). More to come.