Computing

Last updated

Computing has always been compelling for me. Why rage against the machine when you can rage against entropy? For the potential perfectibility of a computer is a siren song for limists and lovers of the abstract. Compared to the "disorderly" external world, the logical concision and speed of machines are slices of nirvana. Of course, logic being limited, it's an illusion of perfection but a pleasant one: given an empty Emacs buffer and programming or writing skill, the potential for creating beautiful abstractions feels limitless.

However dubious, this faith in computing as pure thought was just a murmur as a child. Toying with Sinclair and Commodore machines, I knew the computing revolution would be in full force by my adulthood. Something better than BASIC, Pascal, or 8-color graphics would come to pass. And with time, it did.

These days, computing's siren song is tempered by a different kind of knowing, best expressed in Frank Herbert's far-future world of Dune, where thinking machines are forbidden throughout society:

"Once, men turned their thinking over to machines in the hope that this would set them free. But that only permitted other men with machines to enslave them."

The Tools

The tools of computing - the hardware and software - no longer interest me as much as they used to. Partly because I'm much more concerned with creating, and not the means to do so. And clearly, the tools are experiencing diminishing returns: the hardware of displays, processor power, and memory/storage are all more than adequate in most cases. Certainly for the simple work that most people do - word processing, spreadsheets, e-mail, and to some extent, web browsing - the marginal utility of more computing power is very low or zero. Computationally intensive work, such as simulations, data processing, etc. are being moved to cloud computing and massively parallel infrastructures.

That being said, if you're playing games, you need as much hardware as you can afford. But will said games make you happier and more fulfilled?

LIM Hardware Tools

  • Custom made PC: probably the most important part is having dual hard drives (from different manufacturers, of course) with RAID-1, since the hard drives are still the weakest link in most systems, i.e. disks are prone to failure, data loss, and extreme annoyances thereof. Failures of other parts are very rare by comparison.
  • Dual displays are vital; for programmers, the productivity boost is significant and enduring.
  • Despite orders of magnitude improvement in displays, CPUs, and storage, we're still interfacing via decades-old devices: keyboards and mice. So what I consider the ultimate keyboard should be: compact, with built-in trackpoint so hands never have to move from the typing position - not only saving time but lowering the "impedance mismatch" between man and machine to keep you in flow/concentration. Behold the Lenovo trackpoint keyboard.

LIM Software Tools

  • Ubuntu Linux, where most things work, most of the time very well. Also, as a web developer deploying on Ubuntu-based servers, it's very useful to have development environments closely matching server configurations. If you're not a programmer or techie, I recommend getting a Mac running OSX, where for daily usage, everything just works. Windows XP has too many security issues (who has time for viruses and spyware?); Windows Vista sucked; Windows 7 I don't have time for.
  • Emacs - every programmer must master at least one text editor (see The Pragmatic Programmer if you want the rationale). Emacs starts out as a bewildering and seemingly dull tabula rasa, but soon pays compounding productivity dividends, including the utterly amazing org-mode, simply the ultimate tool for running life in plain text.
  • Web Browsers: Flock and Chrome, the former for a better version of Firefox (fewer memory leaks, faster, same access to plugins), the latter for sheer speed and a lim experience. Linux seekers of Chrome (as of 11/2009), get Chromium.

LIM Software Development

Being focused on creating software and delivering web applications primarily, here are my favorite development tools:

  • Python - because syntax matters, and so does having a complete set of libraries. Python made programming pure pleasure for me, and after 7 years of usage, it's still a joy to work with.
  • Django is indeed a web application framework for "perfectionists with deadlines." Combined with Python, web development remains in that personal sweet spot of building useful things quickly for the wider world.
  • PostgreSQL - most web applications will need a SQL database; PostgreSQL just works.