If you are considering offering me work

Introduction

I cannot think of another industry where terms and titles are so nebulous, and pinning down the right candidate, and for that matter the right employer, are so difficult. I also strongly dislike the “check box” style of recruitment, where vendors and version numbers are compared between candidate CVs and job specs, and a tally decides the candidate. If you are thinking of employing me, or offering me work on a contract basis, please take a quick read of this page to get a better idea if we are suitable for each other.

UNIX Systems

I have been using UNIX-based systems professionally for ten years, and in total for about fifteen. I prefer “free” UNIX-type systems such as Linux, FreeBSD and OpenBSD (all of which I have supported in a production environment). I have used Solaris 9 and 10 (and quite liked it), HP-UX 10.20 and 11i (I can put up with it) and AIX 4.3.3 through to 5.2 (I’m close to despising it). As far as Linux distributions go, I’ve the most experience with Debian and RHEL derived systems, bar a passing phase of running SuSE on AS/400-iSeries LPARs some years ago, which was interesting if not fun. Today I prefer Debian or a Debian derived distribution, such as Ubuntu Server.

In general I am not a proprietary UNIX administrator. If you need to roll out a rack of pSeries machines, or you monitor a colo full of HP-UX boxes with OpenView, then I am probably not the person for you. However, if you need to build *AMP stacks, run and tune J2EE application servers from several vendors (I’m very experienced with Sun’s Glassfish), tune Rails applications for volume, custom-compile Apache webheads, maintain Postfix or Sendmail instances, need to build out a Puppet-managed infrastructure, require scripting in Perl/Ruby/various shells, and need someone with a very deep understanding of UNIX fundamentals and performance tuning, then I might well be.

In short: “We’ve got a hanging process, can you run truss/strace on it and tell us what’s going on” is my kind of question. “Can you explain to me how to manage this bunch of IBM jfs filesystems” isn’t.

Microsoft Windows

I’ve used and am comfortable with every major modern version of Windows (NT4 through to 2008 Enterprise) and have a good working knowledge of Active Directory, although I do not consider myself an expert and would be unable to tackle, say, a full AD redesign, migration or merge. I’ve supported and tuned Windows in a production environment. I actively use both generations (VS 2005 R2 and Hyper-V) of Microsoft’s virtualisation products and have significant experience with SQL Server 2000 and 2005 in a production environment.

Whilst I prefer not to use a Windows stack, I can and and until recently did on a daily basis. I’ve experience with .NET applications running under IIS 6 and 7, and am comfortable with the Sysinternals tools, and what they tell me about a Windows box.

Networking

Whilst I am most comfortable a the sysadmin/application support/performance tuning/release management role I can hold my own in the networking stakes. I have a very deep understanding of DNS, having been a near-full-time DNS admin is a previous role. I’m confident with both Microsoft and BIND 9 nameservers, and have written BIND mysql-dlz interface queries to a number of different schemas for database-backed DNS. I’m also confident with all layers in the OSI stack, and their impact on production environments. I’ve undertaken a quite significant amount of packet analysis during my career. Subnets/VLANS/(R)ARP/CIDR are all concepts I am familiar with. I could happily and usefully contribute to network management, but do not consider myself an expert, and would not undertake a green field build of a new network. I’ve some experience with IOS from Cisco PIX devices. But I’m not going to be the guy configuring VRRP on a production router.

Java and JVM Performance Tuning

I’ve a significant history of JVM performance tuning under the 1.4.x and 1.5.x series of JVMs on the following platforms: Windows Server 2K*, RHEL4, Solaris 10, OS/400. Whilst primarily with the Sun JVMs, this also includes IBM and BEA’s offerings. This includes interpretation of stack traces, forced heap dumps, JMX metrics and working closely with developers analysing both systems in production and those undergoing load/stress testing. I’ve undertaken performance tuning exercises for companies including, Bank of New Zealand, ICBC Hong Kong, Bank of China, Silvercreek Capital, Stanlib Asset Management and Sun Microsystems at their Sale testing facility.

Ruby and Rails Performance Tuning

I have recently written, deployed and performance tuned a non-trivial Rails app for a media company working with all of the major UK national newspapers and the largest Hollywood film studios to manage their promotional workflow. During the course of scaling the application to over one million subscribers I gained a very deep understanding of the performance pain points of Rails apps, the limitations of the MRI 1.8.x garbage collector (primarily the use of brk() for allocation in long-lived processes) and the accompanying tuning required of a stock MySQL set-up.

Source Control and Release Management

I consider Git, Subversion, Nagios, Puppet, Cacti, Capistrano and mrtg to be my workaday toolset, and have worked amongst a many and varied number of release strategies during my career, including the development of custom release management tools.

Strategy

I am comfortable creating, advising and implementing infrastructure strategy. I understand the fundamental relationship between good infrastructure and a successful business, and also the realities that accompany that: the quick and dirty, the temporary, that the temporary will inevitably become the permanent. Cloud/VPS/hosted or owned and racked gear, I’m happy with either.

The Type Of Company I Like To Work For

Whilst I am professional, I prefer smaller outfits where there is room for innovation or small autonomous teams within larger organisations. My previous employer was a VC funded start-up providing hosted financial products.

I generally do not undertake 9-5 roles and am comfortable with extended working hours, out-of-hours support, customer and management interaction. Depending on the company and the role I will happily consider equity offers as part of a package.