The geography of computing

I've lived all my life in rural Sussex, apart from 3 years at university in Exeter. Before I started there, I had never been there, so I didn't know my way around. I immediately checked out how to get from my halls to the campus, and from halls into town. They were both simple, involving a 10 minute walk along a single road. Not long after, I went straight from campus into town, and had to work out a new route, not wanting to go via halls. I started building up a mental map of the city, which at this point was just a triangle of three routes. Obviously I had a paper map, but it takes time to learn what a road with a particular name looks like.

After a while, I became familiar with different areas. I got to know the roads around my halls, the main shopping streets, a few streets around one of the other campuses. To start with, my mental map was mostly areas joined to the area where I lived with a single road. Every now and then, I would walk down a new road, and find a familiar area at the end of it. I sometimes had to redraw my mental map when two areas turned out to be next to each other, rather than a mile or so apart as I had thought.

Learning .NET is a similar process. I've spent time in a few areas, and I'm starting to see how some relate to others. Database access and XML are nearby, and file I/O is close to XML with serialization. Other areas I've heard about and seen on the street map, but I've not visited, such as reflection, drawing and remoting. I'd like to visit these one day, but .NET is a big city.

Having lived in southern England all my life, my knowledge of the north is sketchy. I know Brighton, Eastbourne, Exeter, bits of London, and a few other towns quite well. Although I have been north a few times, I have no idea how the different towns are situated relative to each other, or basic features of the towns, such as rivers, motorways, or even which counties they are in. I have heard some things about some places, even though I've not been there: Liverpool's dock area has been recently renovated, Carlisle has a biscuit factory, and Newcastle has a football team that wears stripes.

Similarly, I've programmed in a few languages: C#, C++, C, VB and Pascal, and know them quite well. I've never programmed in Java, Ruby, Smalltalk, Ada, RPG or Fortran, but I have heard some things about them: Java has garbage collection, RPG has a limited number of variables, and Ada is a palindrome. These languages are part of the geography of programming, some of which I may visit one day, if they offer something I can't get locally.

Having lived in England all my life, I don't know much about other countries, other than the occassional holiday and one foreign business trip I've been on. There are some places I quite fancy visiting, but I'm unlikely to get to, like Tibet, Brazil and New Zealand. There's other countries that I don't fancy visiting, and I'm unlikely to get to, like Iraq, Belarus and Zimbabwe. Again, I know odd bits about these places from what I've read, but nothing in detail.

Similarly, I've really only been involved with the programming side of computing, and maybe setting up the odd PC and server. Although quite fancy it, I haven't installed a web-farm, designed a CPU or planned out a car with CAD. There's some things that I don't fancy that I haven't done, like networking an office block, writing a game, and administering a mainframe. I know odd bits about some of these things, but nothing in detail.

So there we are then. Sussex, England, the world: .NET, programming, computing.
6 September 2005