An ideal computer
April 9th, 2008
I just wrote about an ideal language, which means that there are now two articles in the series you can skip over, not wanting to know the kinds of stuff I day dream about (excluding the obvious light saber part, of which I’ve written before. Ahem).
Still with me? right, let’s get along with it.
An ideal computer would have at least the following characteristics:
- OS designed by the same folks (ok, company) as the hardware. It means that you have less compatibility problems, OS is better tuned and optimized for that particular piece of hardware, resulting in more robust and cohesive system as a whole.
- Portability. I don’t even need to explain this.
- Sleek outlooks. No, not sleek as in teenager-pimped-and-tuned-up cars with chromed parts and alumiunium bling-bling wheels. I mean sleek. Bang&Olufsen way, if you know what I mean. If you must carry it around (cf. above), you are already complaining about the awkwardness of having to hang it on your shoulder, backpack and stuff. So, you wish it would at least look nice.
- Impression of polished craftsmanship both in the OS and hardware. This is the most difficult part. It should be easy to use, but contain enough power (power in the broadest sense possible; I’m not speaking about just performance here) when you need it. It’s not all in the details, but they matter as well. In practice this means at least a working GUI, probably redesigned from the scratch, as most modern GUIs in both Unicen and Win32 ..say, suck, for the lack of a more appropriate term (sorry for sounding Yeggish again). But it should also have a nice, bash-like command line (even better, zsh) too, so that you can script system tasks as well. However, normal users should be able to do fine without it.
- It must run Emacs, Ruby, gcc, Erlang, Haskell, Java, some version of LISP.. I mean, it must be supported by the top 50 programming languesges, if there was such a list anywhere. With the exception of VB, which you don’t want to use anyway.
- It must boot quickly, and resume from hibernation / deep sleep /whatever fast. If I have to check some page, like when the next bus leaves, I don’t want to wait for two minutes in order to just read one darn-tootin’ web page. And I don’t want to have my computer on all the time; that wouldn’t be green (even less supergreen).
- It should combine best parts of popular operating system like Linux and Windows (programmability, ease of hacking, ease of installing and using hardware, usability) and none of the worse parts (incompleteness, buggy, never-finished software, virii (yes, that’s a proper spelling too), inability to automate things properly)
fork()or equivalent with copy-on-write semantics. This is important, and one of the reasons why parallelizing processes with complete separation is often quite difficult in Windows. It might be just me, but hey, this is my blog :)- ...It must be used by the majority of Ruby on Rails hackers :-}
Ok, the last one was a joke, but it should have tipped you off already, if nothing else did.
There actually exists such a thing. I’ve seen it. I’ve even used very similar thing for two weeks, through a generous offer of a friend.
It’s called Mac Book Pro. And to say it out loud, as I already have; I’d probably switch to any (decent) job immediately, if they provided me one1. The presupposition of personal use is implied, naturally. It’s not just selfishness, but I honestly believe that the best tools allow you to do your work much better. All craftsmen know it well, and in that respect, software engineering is not an exception. Besides, it’s cheap. $2500 is less than one months pay, and given the amount of power and joy for the programmer it yields… it’s worth much more than that. And you’ll naturally buy a 30-inch Cinema Display and hook it up with your MacBook Pro to really boost your productivity . Programmers sure need screen estate to work effectively; API spec on one window, text editor/IDE on the next, bunch of terminals to do OS stuff and one window for displaying the software UI being developed. 1600×1200 is good, but you really can’t match two 22”-inch monitors or one 2560×1600 display.
1 Update 02.06.2008: It seems tha after about 2 months or so, I got exactly that and a very interesting new job with excellent people as well. Can’t wait for my first assignment!

Leave a Reply