Cliff gets Photobooth. Silliness ensues.

Took a break and took some photos.

First, here's the weird floating hand thing that's been hanging out in my office of late.


Then I began turning into some sort of blind mole rat thing.




MacBook Pro. Price-competitive?

I just shelled out for a MacBook Pro. Did I buy it because it was the cheapest laptop I could find? No. I bought it because I expect it to be really nice.

That said.

Out of curiosity, I configured a similarly-specced IBM Thinkpad. I picked the Thinkpad because the build quality is on par with, if not better than, Apple's laptops. I have a lot of respect for the Thinkpad line.

So, here's a head-to-head. I'm ignoring the touchy-feely stuff like "the time I save not having to reinstall Windows is worth any price difference." Just numbers, folks.

The MacBook Pro 2.0 vs. the ThinkPad T60. Fight!

The systems have identical processors (Intel T2500), RAM (1GB), disks (100GB), and ethernet connectivity (gigabit). They have as close to identical screens as I could manage (1440x900 on the Mac, 1400x1050 on the Thinkpad).

The MacBook sports a slightly better display adapter (256MB X1600 vs. 128MB X1400), and faster Bluetooth (2.0EDR vs. 1.1). It has Firewire, optical audio in and out, and a built-in camera and microphone. Its video output is also dual-link DVI, meaning it can drive larger screens (up through 30").

The ThinkPad has an integrated modem, as well as a PCMCIA slot (in addition to the Expresscard slot) and 802.11a (in case anyone uses it). It sports one extra USB port (3 vs. 2). I've included a cheap ($28) Logitech webcam to get the camera and microphone.

In the luxuries category, the MacBook has a backlit keyboard that automatically compensates for light levels, and a remote for accessing your media from a distance (using FrontRow). The ThinkPad has an integrated fingerprint scanner, and (if I'm reading this right) comes with an EVDO card for accessing Verizon's data service. (I don't count that last feature, as I'm not a Verizon subscriber. On both machines, I'd dial in over Bluetooth through my phone, like I do today.)

Size-wise, the Thinkpad is thicker and a half-pound heavier. The Mac is wider, but the ThinkPad is deeper (because of the different screen shapes). Both have metal enclosures, though the ThinkPad is magnesium and the MacBook aluminum.

The warranties are different; the Thinkpad's is arguably better, though I've never had any issues getting an Apple laptop serviced.

In my single snotty Mac-user jab, I have included Antivirus and Internet Security software on the Thinkpad. (Lenovo offered them at a discount in the bundle.) I know a lot of folks who get by without any Antivirus on Windows, without a problem, so if that bugs you, knock $50 off the price of the Thinkpad. Personally, I don't want to worry about it; I run Antivirus on my one Windows machine.

(If we want to start arguing over software configuration, I could always point out that the MacBook comes with vastly more bundled software, and I've left the ThinkPad at the default configuration.)

Final prices:
MacBook Pro: $2499.
ThinkPad T60: $2717.37.

Now, I did this comparison out of idle curiosity, and I was not expecting the MacBook to come out ahead. If you strip off the antivirus and the camera, the ThinkPad still costs $100 more.

Blows my mind.

Horrid experiences with Metropolitan Moving

Jeannette has posted an account of her experiences with Metropolitan Moving back in the summer. They were not good.

In case anyone needs a mover.


Full circle

Three years ago, I wanted to get out of the house on a Saturday. I was living with my parents at the time, to free up more of my capital for the company I was running. I was basically living for work; my only real hobby was going to coffee shops and programming. (Some things never change.)

I'd heard mention of a new coffee shop in Cave Creek, but hadn't been there. It was owned by the father of another Foothills Academy alum. I decided to give it a shot — Cave Creek is a lot closer to my folks' house than Scottsdale or Phoenix, so it was a quick drive.

The coffee shop turned out to be nice, and I holed up in the corner with my laptop (a 75mhz Pentium I'd assembled from parts). I was beginning to think about programming language design, and had just spent several weeks deeply immersed in Ruby. Ruby had charmed me with its simplicity and consistency, but occasionally did things that came out of nowhere and bit me in the ass.

After setting up my confuser, I made a lap through the coffee shop, scoping the place. In the back room I found a bookshelf, laden with random books — probably collected from garage sales — and fell into orbit around it. Most of the books were uninteresting; a lot of mystery novels, Tom Clancy stuff, and pet care books. One, in particular, jumped out at me.

"Digitalk," its spine said, "Smalltalk for the IBM PC."

I giggled. I'd heard of Smalltalk — I remembered it from an old 1983 issue of Byte I'd found in my father's garage. This book seemed wildly out of place at a coffee shop. It followed me back to my table.

I launched into the book, and it took no more than a few pages for the epiphany to hit. This was a Language, in the style of LISP — this was something with an Idea behind it, something with a Philosophy. This was the language that had given birth to modern programming — I knew that before I opened the book — but I hadn't realized how much of its vision had been lost along the way.

Ruby quickly began looking a bit dull. It was clearly an attempt to shoehorn the ideas of Smalltalk into a language derived from Perl, and boy, did it show. Ruby was the shadow cast on the wall of Plato's cave; Smalltalk wasn't even the source of the shadow: it was the source of the light.

So, here I am three years later, at that same coffee shop. The book is gone, appropriately enough, but my conversion is more or less complete. In these three years I've grown personally, gotten a much better job, and moved to California; in that same time, I've viewed programming through the lens of Smalltalk, and worked out ways to apply its ideas to modern programming. Mongoose, my pet language, is the result — and it's what I'm working on here at the shop.

At the same time, it's probably good that the book is gone. Alan Kay, creator of Smalltalk, warned that people who learn a language based on an Idea tend to crystallize their perspectives: they have a hard time thinking in any other way. It happens to LISPers, it happens to Smalltalkers, it happens to Perl programmers (though Perl's big Idea is its explicit lack of an Idea). I've been working to avoid this, happily stealing ideas from Scheme, C#, and ML — three languages about as far removed from Smalltalk as Mandarin or ASL are from English.

One of the easiest ways to attack Esperanto is to point out its close ties to Latin. "How can a language be universal," its critics say, "when it's so heavily Romance-based?" While this may or may not be a valid point, there's another, more subtle side to this. The real danger of basing something on an existing idea is the possibility that it's wrong. Esperanto went with Indo-European inflection to show noun role, but it looks (from linguistic history and the development of creoles) like languages tend to move toward positional grammar over time.

I came here looking for the book, I admit, but it's probably good that it's gone. My language is very close to working, having printed its first "Hello, world!" at about 1AM this morning. Now is probably exactly the wrong time to reinject a heavy dose of influence from the Smalltalk camp. Several parts of the Idea seem wrong now, but it's very persuasive. Best to keep it away until my own Idea crystallizes a bit further.



It rained almost continuously Sunday and Monday, and has started again just now. (This isn't just me showing off to my Phoenix friends; I'm really digging the rain.)

There's a creek out back of my apartment that floods during the rain, and I can hear the water rushing by from my bedroom.

The rain was actually kind of bad this weekend, because with rain comes cold. In this case, lots of cold, because my heater quit working. I didn't actually notice for the first couple days, while it was still warmer inside my apartment than out — but by yesterday I started wondering why it was so damn cold.

And then I realized I hadn't heard the heater turn on in three days.

Pilot light: check. Wiring: check. Thermostat: iffy. One call to maintenance later, and I have a heater.

So, I spent some of tonight basking in front of it. I'm such a desert boy. I hadn't ever spent three days at 50-60 degrees before; it makes me creaky and sleepy.

Ran into an amusing problem at work. One of my programs was running out of memory and crashing, so we hooked it up to an analysis tool to see what was going on. What did the analysis tool do?

It ran out of memory. And crashed. Hooray for irony.

I'll be at Urban on Friday, in case anyone hasn't heard.

But now, I must watch an ex-leak in my roof, to ensure it does not become an ex-ex-leak — and then go to bed.