December 2005

Yesterday Roger referred me to Joel Spolsky’s Law of Leaky Abstraction, which (and the mentioned Back to Basics) I read , and today I read his The Perils of JavaSchools, a great piece on the “dumbing down” of CS curriculum by switching to Java from “harder” languages like Scheme, and avoiding topics like pointer and recursion. He says:

You need training to think of things at multiple levels of abstraction simultaneously, and that kind of thinking is exactly what you need to design great software architecture.

I followed a link in the article to another great piece Beating the Averages by Paul Graham, where the original programmer of Yahoo Store described how they created a web store builder in LISP. He calls those “easy” high-level language Blub, and says:

As long as our hypothetical Blub programmer is looking down the power continuum, he knows he’s looking down. Languages less powerful than Blub are obviously less powerful, because they’re missing some feature he’s used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn’t realize he’s looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub. … By induction, the only programmers in a position to see all the differences in power between the various languages are those who understand the most powerful one.

This is very enlightening. I remember a few painful days when I had to deal with LISP when I took an AI course back in UIUC. It’s nothing but Lots of Infuriating and Spurious Parenthesis, that’s exactly how I felt. Seems like I missed out a lot. Graham quoted Eric Raymond saying:

Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.

Oh well.

Both Spolsky and Graham mentioned basic CS stuff like lambda calculus and lexical closure. Wish I’ll have time to learn those things.

If teaching in Java is dumbing down CS student, is the whole automated code generator thing (e.g. in Model Driven Development) dumbing down the whole programmer profession?

Several factors:

  • Blogger is too slow (to see any page, especially to publish)
  • It doesn’t work from my office (not its fault)
  • WordPress has category (tag)
  • WordPress has pages where my long reading notes fit better
  • Scobleizer switched to WordPress on Oct 1.

I don’t know if it’s because its slowness or something else, My Yahoo doesn’t display AT ALL when I have its RSS feed in it. At first I thought My Yahoo is down, but after a few days and nothing online mentioning it I figured it must be something with me. I also added the RSS to J’s My Yahoo so hers also didn’t display, so at some point it dawned on me that one thing in common for our My Yahoo is the Blogger RSS.

Blogger still has some advantages, like it deals with raw HTML better, image uploading is easier, and it allows you to change template.

But the downside is too big to take. It’s the first thing from Google that’s not the best. Maybe a sign?

I was wondering whether enum has internal or external linkage, and this article explains it very well. enum has no storage or linkage. It’s the same as a macro, only safer.

A clean and clear explanation of why FOSS (free and open source software) works. Though Joel Spolsky already explained it back in 2002 that Sun wants to commoditize software to make more money on hardware.


The point being, Sun doesn’t have a single customer, worldwide, that will run an unsupported product in their datacenter. Do such customers exist? Surely. They’re called developers. Or startups. Or companies or economies that want to build their own internal support teams. That’s the target for the Solaris Enterprise System. That’s who uses free software without support contracts. And you’re not going to win them over if you don’t provide them with free and open source products. And if you don’t provide them with the technology to use, they’ll find someone else’s free products.

Opening up the Solaris Enterprise System, and giving it away for free, lowers the barrier to finding those opportunities. Free software creates volumes that lead the demand for deployments – which generate license and support revenues just as they did before the products were free. Free software grows revenue opportunities.

Because no Fortune 2000 customer on earth is going to run the heart of their enterprise with products that don’t have someone’s home number on the other end. And no developer or developing nation, presented with an equivalent or better free and open source product, is going to opt for a proprietary alternative.