Return from Hoseage

After being alerted to a lot of spam links hidden in my posts, I took action, including upgrading my Word Press software to version 2.5. Unfortunately, it turned out the spam hackers, using SQL injection to gain access to my blog’s database, had left it utterly, in the words of the Dreamhost support team, “hosed.” So I had to rebuild my database too. But now, hopefully, everything is working better, and the WordPress update has closed off the SQL injection vulnerability.

Fragmentation of Ruby?

Peter Cooper at Ruby Inside posted recently on two developments in the Ruby world: a new iteration of an old Ruby interpreter and a new, Ruby-like language. He then muses on the possibility of fragmentation in the Ruby community: multiple interpreters, multiple implementations — will we all disperse into specializations out of preference or necessity? Will the center no longer hold? Here’s a very interesting quote:

I’m starting to believe that “Ruby” is starting to represent both a community and a language “ideal” rather than just a single, well-defined programming language.

Now what does that sound like? A bit like the story of a programming language that rhymes with “crisp,” perhaps? Or Smalltalk? Maybe Ruby really is the descendant of these languages.

As the commenters to Cooper’s post point out, there’s still plenty of cohesion around the core language and one or two interpreters, but you can’t deny that “the Ruby stack” is starting to look a bit more like, say, the Java stack, with decisions to make at every level. Not necessarily a bad thing, but I do wonder how much longer it will be possible for journeyman developers to know a reasonable amount about everything in the Ruby mainstream.

A brief word on behalf of the humble ‘is’

I’ve been hesitant to write about this, because it’s a bit pedantic and has little to do with the avowed subjects of my weblog. But it’s an irritating itch I have to scratch. Please please, kind reader, do one thing for me. When you write a title, whether for your own blog or in an email, or in some professional capacity in which you are crafting a communication of any kind, please please capitalize the word ‘is’.

Rules for title case in English are a little bizarre. At the risk of oversimplifying (because there’s an exception to every rule) the only words regularly uncapitalized are articles and prepositions. These tend to be small words: a, the, of, with. So it’s only natural that people fall back onto putting any and all small words in lowercase. But verbs should always be capitalized, and especially mighty ‘is’. Next to ‘do’ and ‘did’, ‘is’ probably appears more often in English than any other verb. It is our one verb for identity, a powerful and subtle concept. So please please show it the love and respect it deserves and capitalize it.

Here’s an example: the next time you fire up you editor to rant about “Worse is Better” (either pro, contra, or both), make it “Worse Is Better”. That is certainly better.

Of course, you could just use sentence case for titles, especially when your title is a complete sentence. Titles in Spanish follow this rule — you just capitalize the first word and proper nouns, as you would a sentence. See the title of this very post you’re reading. Why people put sentences in title case (on signs for instance) is beyond me, but that’s another post that I will hopefully spare all of us.

I’m not demanding Chicago style, people. Just respect ‘is’ and you will make it a very happy new year for me.

Listening to Fear, or When to Build a More Abstract Mousetrap

For a few weeks now I’ve been meaning to write something in response to Lispy’s excellent post Meet the New Problem… Same as the old Problem, which took up the question of whether it’s worth it for a programmer to invest time in writing up a problem-specific language or other domain-specific construct. From my own experience, and from what I’ve gathered from more experienced hands, the decision to build depends on the situation, since there are trade-offs to any decision about how to use a programmer’s precious time. I would also add that making the right choice requires an enlightened form of self-interest that may best be described as listening to your fear.

Continue reading

SICP: Up the abstraction ladder

I meant to post this a while back, but you know how it is… work, family, oral surgery, and where does the time go? Anyway, here are some notes I took from week 4 of our SICP adventure about higher-order procedures, Abelson’s dismissal of the “mythology” of software engineering, and the pleasures of building up a language to solve problems.

Continue reading

SICP: The Closure in the Grass

I was working my way through SICP last night when I came across a passage that at first struck me as curious, then interesting, then deeply interesting, and finally a little mind-blowing. Out of this little passage I got a little slice of enlightenment about first-order data, how Lisp can be rewritten in Lisp, domain-specific languages, how duck typing works, message-passing, and, finally, the clearest explanation and demonstration of a closed procedure that I have ever seen.

Continue reading

SICP Week Two: The Experience

As week 2 comes to a close, I feel compelled to write something about the difference between orthodox computer science pedagogy, as embodied by SICP, and the approaches taken by books of the variety of “Teach Yourself X in Ten Minutes.” I’m writing about technical topics in another post. This post is devoted mostly to the experience of tackling this material and a few musings on the psychology and the ethics of wicked-hardness. It is intended as commiseration and encouragement for the fellow autodidact.

Continue reading

SICP: Week One

We’re just getting started on the MIT OpenCourseWare course Structure and Interpretation of Computer Programs. I got a lot of responses from interested people, which is exciting. So far we haven’t encountered much worth chatting about, but I’m thinking the material’s difficulty is going to increase quickly. In the meantime, I’ve jotted down a few notes about 1) why recursion is important, 2) the role of abstraction as a learning tool, and 3) the geekiest videos imaginable.

Continue reading