« Imhotep | Main | How many mailing lists? Part II »

Notes for setting up a development machine

The machine

So, the new laptop arrived. It's an IBM T42p with 1 GB of RAM, 60Gb HDD and a 15" screen. First impressions are positive; it feels right, well made. Very light. About 9Gb of the drive is given over to a restoration area leaving a working HDD of 50Gb. 35K pystone (was hoping for 38k but this is good enough).

I've never used a ThinkPad before, but we have a few IBM's in Propylon now and the feedback is positive. My old machine is an Inspiron 8500 and has been served me well enough. However it runs very, very hot without doing a whole lot; its motherboard burnt out late last year and I've singed my fingers on it more than once. I miss the Inspiron 8100 and 8200 machines; they were excellent allround desktop alternatives, albeit a tad heavy. They also had real keyboards not the spongey ones of the later generations.

I really like the percentage drain indicator for the battery on the taskbar, as the default Windows indicator is not that useful - nice touch. The battery itself does jut out of the back a bit instead of fitting flush with the unit, which is bit odd. Hitting the machine hard with Python or Java and the battery is good for 2 hours.

The IBM keyboard is nicely responsive, actually it's damn good. One problem: the fn key is outside the ctrl key - usually you put the most hit function keys to the edges where it's easy to find them. I can see it's going to take some getting used to (developers use shift and ctrl a lot when working). If I teach my hand to use it that will be a different motor action from all the other keyboards I use which makes swapping back and forth hard. Perhaps I should try to remap the keys... arggh - why do I even have to think about this?

That nit aside, the IBM feels like a solid, well-constructed machine. Onto the installation.


So, I want to document setting a dev new machine from scratch. Here are the things that need to be done:

  1. core setup
  2. Internet programs
  3. Programming tools and environment
  4. Editors
  5. Version control
  6. Working configuration
  7. Media

Computer name: picard.

Core installation. This will be an XP machine, since I find wndows more usable and expedient for laptops - once you install cygwin and win32all you have a decent hacking environment. Go through the usual windows XP stuff and after it boots, accept all the updates and turn on cleartype. Configure XP to accept updates automatically. Create one user called dehora - yes it's an administrator account (not sure windows is ready for underprivileged accounts just yet, maybe next year). Change the menu L&F to windows classic. Disable personalised menus (blech). Set the tab key to perform completion - oh, it's already there by default - cool. Install the CmdHere powertoy. Install Partition Magic and create a 30 Gb E:\ drive.

Install the OEM Office 2003 that came with machine. Do not install Publisher or Outlook. Install WinZip; install wzcline. Remove WinZip quickpick (why don't applications ask instead of putting themselves into your startup?)

My WLAN found the IBM with no fuss; configure it to accept the laptop via a MAC filter only.

Install the Andale Mono typeface. Don Box claims Lucida Console starts to work for code onscreen at >14pt and is good for presentations. At under 14pt (which is all programming) andale mono is the most beautiful typeface. It's the only programing typeface I've used for years - Lucida and Courier drive me nuts. This typeface is another reason I tend to develop on windows (my brain has been warped by art college so that typefaces matter way more to it than should be normal - I even call typefaces "typefaces" and not "fonts" for goodness sake).

Internet programs. First register the copy of Norton AV - but why just 90 days? This should be 12 months - for the amount of money you pay for a laptop, the subscription cost is amortized into irrelevance. I'll dump this after the weekend and use the company licence; if the meantime I want some kind of protection.

Onto Firefox and Thunderbird. I'm looking forward to setting up mail the least - it has tended to be problematic in the past. As well as that I've had two (very) long days helping a customer with a system after a hardware outage, so to be honest, I'm not much in the mood for goofing about with half a decade of mail (note to self: get Lucene to index this stuff someday). This time around I'd like to mount my Thunderbird mail on E:\ for backup purposes.

[Update: turns out you can use the Profile Manager to do just this. I copied my old profile from the Dell (it's huge, well over 2GB), edited the pref.js to fix up the embedded paths and pointed the profile at that folder and set it to be the default profile. Thunderbird picked it up just fine. Sweet.).

Install Skype - stop it listening on ports 80 and 443 for tunneling reasons (ugh). Install Gaim - log into jabber. Install smartftp. Install Winscp. Install RealVNC, but do not enable the server.

Programming tools and environment. Start with Cygwin and set HOME to point e:\home\dehora as home. Add cygwin to the path to get shell tools via the windows cmd. Run /usr/bin/chere to be add cygwin anywhere to explorer. Install Araxis merge.

Java. set JAVA_ROOT to e:\java - all things java will go undermeath. Install JDK1.3. JDK1.4 JDK1.5 in that order underneath JAVA_ROOT (Oh! Legacy!). Add JDK13_HOME, JDK14_HOME, JDK15_HOME to the environment. Set JAVA_HOME to point at JDK14_HOME for now. Copy ant 1.6.2 plus my extension jars for antant [1] into JAVA_HOME. Set ANT_HOME to correspond and add ANT_HOME\bin to the PATH. Install jython to %JAVA_ROOT%\jython. Then Ant-1.7beta, Junit, Xerces, Xalan, Sax2, Jini, Xt, Saxon, Findbugs, 1060-NetKernel, ActiveMQ, Joram, Svnant, Jena, JDepend, Lucene, Hibernate (the Java stuff de jour).

LAMP. Set LAMP_HOME to e:\lamp. Install MySQL 4, MySQL 3 (Oh! Legacy!), Ruby 1.8, Python 2.4 (+win32all +4suite) underneath it.

Install DrScheme. Install Erlang. Install OpenOffice (don't be fooled by the office productivity suite thing, it's really a development platorm :). Don't install VS.NET, SQL Server, or BizTalk 2004 just yet.

Editors: I have my ntemacs extensions and .emacs file checked into subversion as part of the default home folder. NTEmacs you just unzip and copy in the gnuserve executables to the bin folder. Textpad - tabs=2 spaces, scrub tabs for spaces, allow 1 instance, show line numbers, strip trailing whitespace, wordwrap on, install a .py, .sql and .xslt syntax file. IntelliJ - drop braces, 2 spaces, not tabs, show lines numbers, don't align anything. Ditto Eclipse - also plugin red-robin and PyDev for Jython/Python. Vim comes with cygwin, so I don't need to install that.

Version control. Install CVSNT. Install Apache using the windows installer and let it run on 80. Install subversion and tortoise - export/import the repositories from the old machine to this one, but this time use the native filestore (sfs) storage option instead of Berkeley db. Create SVN_ROOT as e:\home\svnroot. This is where the local svn repositories will go. Add this to httpd.conf and restart Apache via the monitor:

     <Location /svn>
	DAV svn
	SVNParentPath e:/home/svnroot

this lets Apache+DAV serve all folders below /svn as subversion repositories; more importantly it means you only have to edit httpd.conf once.

Working configuration: I do all my personal work in e:\home\dehora. I have a standard home folder which I check out from subversion. That gives me an extended bin directory for cygwin, encrypted password files, emacs extensions, documents, ssh settings, CVS settings and so on. It also means my entire home directory is under version control and is portable. This is good but for projects from other subversion repositories I'm working on in there, I need to escape those. So I add a projects folder and mark as ignorable in subversion; that way I work on projects inside my home folder without screwing things up. Add %HOME%\bin to the path.

Finally I setup an e:\home\propylon for for all things things Propylon. We have an infra projects for basic tools, scripts, configurations, ssh tunnels and so on. Check that out and add e:\home\propylon\bin to the PATH.

Media. Install FeedDemon, w.bloggar, WinAmp, Flickr uploadr, Acrobat Reader 7. Skip ITunes for now. (Must buy one of World of Warcraft or HalfLife 2... :) .

Total time: 5 hours. Would probabaly take about two if I was pulling files off a portable drive and had these notes organised more clearly.

[1] AntAnt is a tool for automatically generating a Java project structure and ant files via an ant script given some basic project details. I've been using it for years to produce standard project layouts, it's current home home is in Propylon's repositories. Very handy for both avoiding maven and reinventing wheels.

March 27, 2005 03:30 PM


Keith Gaughan
(March 27, 2005 09:42 PM #)

Ever taken a look at Bitstream Vera Sans Mono? It's a great alternative to Andale Mono, it's freely available, and a bit easier on the eye too.

Amit Patel
(March 28, 2005 04:48 AM #)

I've also had good luck with the Anonymous typeface (http://www.ms-studio.com/FontSales/anonymous.html), but no one I show it to seems to like it.

Earl Swagger
(March 28, 2005 03:32 PM #)

Is AntAnt open source and available for download?

Bill de hra
(March 28, 2005 05:07 PM #)

"Is AntAnt open source and available for download?"

Earl, it's not, but it could be - it's a matter of me putting up on a server, documenting it some more, and and being ready to support it.