Good web hosting

Each year I spend some time doing research on inexpensive web hosting options for my students. It’s virtually impossible to find a cheap hosting company whose name doesn’t produce copious results for a Google search on “FoobarHost.net sucks”. The predominating mood for me at the end of this research is always: I’m really glad I have more than $10/month to spend on hosting.

Since fall 2003 I’ve had a FreeBSD VPS with JohnCompanies, and it’s really quite excellent. They are a high-performance, no-nonsense, technically oriented provider. When you ask a support question, you get a reply from an actual human being whose first assumption is that you know what you’re doing.

What is the iPhone running, really?

iphone In case you missed it, Apple has a new product. You can’t, you know, buy it or anything just yet – that’ll be about six months. And $500, please. While you wait you can compare it to the competition.

They claim that it runs OS X. Hm. I can imagine there’s a BSD kernel (running on what processor I don’t know), QuickTime, WebKit… but really, how much of the stuff in the standard OS X architecture diagram is actually going to be in that phone?

The whitespace brigade

Syntactically significant whitespace is one of those debating points frequently raised in unproductive language thrashes involving Python. One persistent implication made by SSW-haters is that it’s a freakish mutation unique to Python. Or, if they’re feeling particularly vicious, they’ll bring up Fortran. Cold comfort.

In fact, there are quite a few other languages that have gone down this path. Flipping through a big fat book that I bought because Steve Yegge recommended it, I came across mention of a couple that were new to me. Then I went digging for more. Here’s an incomplete list:

Software, meet hardware

My friend Matt recently got a microcontroller kit as a present. It’s pretty geek-tastic – you wire up circuits on a little breadboard, write code on your PC, download the compiled code to the microcontroller, and run. At which point, depending on your skill and ambition, your LED blinks, your piezo buzzes, or your robot limbs and sensors do their thing. And your cat runs into the other room.

All very cool, but the language – a BASIC dialect called PBASIC – overwhelmed my delicate sensibilities. For example, take this bit of code (found on the web)…

It's Haskell

In my programming resolutions post last week, I mentioned a short list of languages I was considering learning (or attempting to learn, anyway) in 2007.

I’ve decided on Haskell. Some of my reasons:

  • It’s different. My “home language” is Python, which is great. But for a growth exercise, different is good. Blog posts bemoaning the weirdness and difficulty of Haskell only goad me on. Ruby is different from Python, but not as different as Haskell. Its declarative aspects remind me of Prolog, which I found strangely satisfying when I played with it in college.
  • It’s a functional language. The functional style has always appealed to me, something I was reminded of when playing with Scheme last year.
  • It feels like it’s growing. I wouldn’t say Lisp and Scheme are dying (if anything, they seem to be in a renaissance), but Haskell is popping up everywhere I look. Maybe I look in weird places. (I note that while the Pragmatics’ “Language of the Year” page doesn’t seem to have been updated since 2002, their 2002 pick was… Haskell.)
  • The community seems good. One of the things I did when “researching” (I use that term loosely) languages was stick my head into their respective IRC channels. I found #haskell to be very friendly and active; that’s very appealing when you’re a solo developer trying to sort out confusing new concepts. The Haskell Sequence is a great resource, busy and wide-ranging but not overwhelming.

On the down side, let’s see… well, the logo is pretty ugly.

Negroponte on not teaching Office

In the 1990s Nicholas Negroponte wrote a back-of-the-book column in Wired. When I started reading it, in 1993, I found it exciting and mind-opening. But as the years wore on, the ideas seemed less interesting. Maybe he just ran out of new things to say, or maybe I became jaded. In any case, I hadn’t paid much attention to him since. But this bit from a recent AP story on the One Laptop Per Child project absolutely kicks ass:

Advice on sequencing items in web interfaces?

A small but common task in web interfaces, especially “admin” (back-end, content manager) interfaces, is sequencing items. Any time you have a collection of objects that requires arbitrary, user-defined ordering (i.e. ordering that can’t be derived from the objects’ values) you are faced with this problem. Navigation is a common example. If people can add items to a dynamically built navigation menu or tree, how do we let them specify the ordering so that “Contact” can appear below “About Us” or vice-versa?