Love the One You’re With

No, not quite the usual context. Perhaps ‘Love the place you’re at’ would be more appropriate.

There is certainly no denying that I am something of a homebody. After college I pretty much put down roots and stuck where I landed. And of course there are those small dissatisfactions with any situation. A fact, which would not, of course, change had I gone someplace else.

Still, when gazing at the greener grass, there a few basic options: move on, stay put and muddle along, or try to make the place the you are at more like the place you want to be. The first option always felt like abandoning the place to it’s doom, so I’ve usually muddled along while thinking I should be improving things.

One of the prices of working at a small company is that I don’t really have a mentor; the other people I work with are either younger and not single-class programmers, or have experience that lies less in the theoretical direction I tend to take. For the most part, we just muddle along doing only what needs to be done.

So, I’m attempting to make it better. Somewhere, I’ve read that successful companies spend about 10% of something (net? gross? not sure) on R&D. Now, we have no budget, but we have our time, and can take an hour or two a week trying to learn something new.

The current project, and in no small part the inspiration, are the freely-available video lecture series for The Structure and Interpretation of Computer Programs, related to the book of the same name (also available online)

I gather that this is based on the introductory computer science course at MIT many years ago. Supposedly the course was taught at HP at point, perhaps it was there? In any case, yes, it is based on Lisp. Given Lisp almost legendary status, I don’t know if this is really bad, just not as likely to be directly useful. At lot of the concepts are showing up in languages, so a lot can actually transfer.

Anyway. The course starts from first principles, and then procedures to cover almost every major concept in computer science – iterative, recursive, functional, objects, declarative, state, streams, compilation, and more. Each concept is introduced from a motivating example – here is why we have this construct – it solves this problem.

Hopefully repetition will do me some good – I watched the videos, read the book, and now I’m watching them again (and taking notes) about one hour a week.

One persistent theme is ‘metalinguistic abstraction’, or embedding other languages in Lisp. Today this is popularized as DSLs or Domain Specific Languages. The repetition may have infected me, because I’ve been thinking about languages a fair bit lately. But that is a whole ‘nother post, and the is at least one more to set that up.

Posted Thursday, March 8th, 2007 under Uncategorized.