Microsoft, Ruby, and War

In response to a post by Don Box complimenting Ruby, Patrick Logan says: “If Microsoft looks at Ruby as competition> then Microsoft has already lost the war.”

I take two possible meanings from Logan’s post:

  1. If Microsoft thinks Ruby is important, they’re ignoring the threat to them posed by X (where, I suspect, X = LISP), or
  2. If Microsoft thinks Ruby is competition, they will not implement it and therefore be doomed

Not long ago, Microsoft posted a job opening for a developer “continuations, which are not modeled within the CLR. This isn’t just laziness on the part of langauge implementors. The CLR presents a machine architecture different than the wide-open architecture in which most compiler experience has been gathered. The CLR architecture is safer, but more restrictive, when it comes to manipulating the stack, which is central to continuations. It may be that the CLR will one day gain continuations. It may be that continuations can be implemented using exceptions. Or there may be other clever ways to implement continuations. Or maybe not.

In my opinion, to “cross the chasm” Ruby needs either:

  • implementation on at least one of the two major managed environments; or
  • a native-code implementation combined with a killer, fully-supported IDE

Of course, “and” would be better.

Sapphire in Steel: Ruby Programming in VS2005

Huw Collingbourne turned me on to Sapphire in Steel, a Ruby programming environment implemented as a VS2005 plug-in: “Ruby In Steel 0.5.12 provides syntax sensitive code colouring and collapsing; a fully integrated interactive console which can be docked within the Visual Studio environment; integrated syntax error handling – click on the error message to locate the problem line in your source code; automatic bracket highlighting; bracket matching to move your cursor between brackets; a project management pane in which you can arrange groups of Ruby projects as branches in a tree; auto-commenting and uncommenting of Ruby code; plus many of the same editing features you would expect in any Visual Studio project such as multi-level undo/redo, split-window editing; toggle-bookmark and find/replace with regular expressions.”

It’s not an implementation of Ruby on the CLR, but maybe once John Lam gets his hands on it…

Borland Canning 300 (20%): Implications for DevCo?

The other shoe is dropping.

This was inevitable; one of the “hard decisions” that Borland and DevCo had to face. Still no word on a buyer for DevCo.

“Most of the layoffs will come from a restructuring of Borland’s international operations,” says the wire and I don’t take the news to be immediately devastating to the fortunes of either DevCo or Borland.

However, layoffs are always demoralizing and often shake loose the very people a company can least afford to lose.

How I Learned To Program, Part 2

It’s probably not shocking to hear that as a teen I played Dungeons & Dragons. Rob, the super-cool guy who worked at “Games People Play” (he wore leggings, a buck knife on his belt, and occasionally carried a bo staff. We worshipped him), told me there were some good DMs at MIT’s D&D club. So one weekend I wandered down Mass Ave to the appointed building and tried to find the club.

So, there was this room that was a computer lab and of course I had to check it out. The big thing I remember was that it had CRT terminals. Man, was that cool. There were a couple guys hanging out and one guy was showing off how he’d calculated the distribution curve of 3 6-sided dice and had printed them out in asterisks.

One of the things about D&D is that it provides an intimate knowledge of odds relating to the distribution curves of 4-, 6-, 8-, 12-, and 20-sided dice. Being an insufferable snot, I said he was “wrong” and that I could calculate the correct odds of the distribution faster than he could read them. Well, of course, I just had it memorized how many ways you could get 13 or whatever, but I think they mistook this as evidence that I was an MIT Freshman and they decided that I sufficiently nerdy to hang out in the lab on weekends and after school.

And that’s how I learned LISP!

(And I really, really wish that I knew what that room was and who was in it in the 1981-1982 school year.) 

How I Learned To Program

John Montgomery is wondering how people learned to program, especially non-professional programmers. Well, some years I make more money writing than programming, so here’s my story:

My desire to learn programming was sparked by my Dad bringing home Ted Nelson’s “Computer Lib/Dream Machines” — an oversized paperback that contained cartoons, LISP and Basic listings, and low-contrast photos of minicomputers. What do I remember about it?

  • It conveyed that computers were cool (well, actually that they were “groovy”), and
  • It explained this program:
    43 PRINT “HELP, I AM CAUGHT IN A PROGRAM LOOP
    67 GOTO 43
    68 END

I’m sure it had other programs, but it explained that program (so better than “Hello, World!”) in enough detail that a 5th grader could “get it.”

A few years later, for Christmas I got a Radio Shak “computer” that consisted of a plastic tray in which plastic rods could slide up and down. You could attach metal clips to the rods and plug in wires such that when the rod was in one position or another, a circuit would be completed and, ultimately, one of the 10 or 12 lights along the top would glow. It came with a book of “programs” (wiring diagrams) that you could build, and the back of the book had a bunch of blank schematics so you could write your own. Man, did I love that stupid thing. I think they had one program that essentially overflowed and “when light 12 goes on” you had to pull the wires and wire the next part of the circuit. Strangely, I think it was this piece of hardware that made me understand the plasticity of software: all that mattered was the arrangement of the wires and the position of the rods. And you could see there were literally repeating patterns in the wires and eventually I got to the point where most things I wrote (concentrating on sports “simulations”) would take 2 or 3 rewirings that I only did to debug the program: the joy was in the logic.

Then came High School, which had a PDP-8 that was free to use for an hour or two after school. My Dad had given me a book of BASIC games that you could type in and run (Hammurabi, Artillery, etc.) and that was how I started. Around that time, I read Martin Gardner’s “Mathematical Recreations” enthusiasms about Conway’s Game of Life. By the end of my first semester in High School, I had programmed a BASIC version that ran in (I think) a 10 x 10 grid and burned up reams of teletype paper.

The summer of my 16th year, I was hired by C. Behrens Machinery to write a BASIC program that generated CNC codes to control the XY-table of a LASER cutting machines. The program I wrote cut mathematically perfect saw blades. The first one cut from metal hangs outside my door (you can no longer feel the one perceptible flaw, which was accumulated error after 36 rotations of the tooth shape). The first one we cut from titanium was acquired by the New York Museum of Modern Art for its industrial design collection. A photo of the laser cutting a saw appeared in National Geographic. I was paid $3,000.

My programming career has been pretty much downhill from that ever since.