Curriculum Vitæ for Martin D Kealey

Overview

Skills

Employers

A complete personal history is available on Old Friends

Other recent activities

(Contact details for these organisations available on request.)


Experience & Skills

My principal and most valuable skills are these: firstly I am a generalist problem-solver (and only incidentally a specialist in some areas), and secondly I am adept at reading instruction manuals and remembering them.

I know in detail over two dozen computer languages and as many operating systems including at least a dozen versions of Unix and Linux -- and some of these I wrote from scratch myself. Whilst many of them are now obsolete, the ideas they embodied live on; operating systems currently on the market are all FAR more alike than those of even ten years ago: each one simply incorporates nearly everything from earlier operating systems.

Site reliability

Operating at "google scale" - millions of machines, petabytes of data, and billions of customers - needs a shift in mindset. Anything that can possibly go wrong will happen within minutes of pressing the "deploy" button, and things that "can't" go wrong are pretty much a daily occurence. Successfully operating at this scale exercises skills that become ingrained as habits and reflexes.

Software development

I have worked now for over 2 decades developing software in many languages. HR staff are often tasked to seek programmers with experience in a specific language; however unless the task is less than a few days, the value of such experience is not really key, and indeed may be outweighed by the wider breadth of experience gained by working in multiple languages.

On the simplistic level, the majority of common languages today have very similar sets of features, with only minor syntactic differences, so the time needed to adapt from one to any other is trivial. And as the breadth of experience widens, the time to adapt decreases even for less common languages — rather like learning human languages.

More profoundly, the synergy of working in multiple languages gives a better perspective on the options for implementing a given human problem. And after so many programming languages, learning another will not even be a challenge, let alone a significant delay.

Having said that, I do have experience in languages likely to be of current interest, including:

I have experience (and competence) with version control systems including:

I have experience packaging into both RPM & DEB packages.

My preferred development is of course the well-structured "think of everything first", but as every project manager has learned to their cost, that's rarely a viable option. Most often the client doesn't know what they want until you show them what they don't want...

But seriously, my normal development mode is a cascading prototype-test-rewrite-test-refine approach, where each module is first prototyped with a test harness, then once it is stable, further tested & refined in the course of building the next layer on top. By taking time to make each module well-tested along the way, the end result is stable and relatively bug-free, and with proper separation of layers, even wholesale revision of client requirements can be accommodated, the required changes being mainly confined to the top-level modules.

Unix

Unix administration is probably my third biggest skill: I've been running my own hosting service on Linux boxes since 1997 and before that administered Unix systems for Phoenix Software, Wang and Creative cGi, and at home.

I started using "UNIX version 6" in 1984 while at Auckland University, and while there also used VAX Ultrix and SCO Xenix. Later I worked with SCO Xenix and SCO Unix in my "first real job". Eventually I installed QNX (version 4) and Linux (version 0.8.3) on my home machines. Nowadays most Unices are rather similar, but I've seen enough versions over the years not to get tripped up by the differences that still exist. I've also worked with enough non-unix systems to have some idea "what's out there" that might crop up in using yet another variant of Unix.

Perhaps you want a Red Hat specialist. I have only spent about two years working professionally with Red Hat, which might at first blush not seem experienced enough for your role. However I've also spent two years professionally managing CentOS (including building custom rpm's); I've used CentOS & Red Hat extensively in personal roles; I gained a RHCSA incidentally to my role at Vodafone; and (bearing in mind that Red Hat is 99% the same as all other versions of Linux, and that Linux is 98% the same as all other versions of Unix) I have been using Unix of one sort or another for over thirty years.

So despite "only two years of Red Hat experience", I can tell most seasoned RedHat administrators things they didn't know about Red Hat, simply because they're part of all modern Unix systems. The things that make Red Hat distinct from other versions of Unix are mostly cosmetic, and those differences that go deeper don't really take more than a few hours to grips with. And the same goes for other Unix versions, even SuSE Linux with its enhanced security model — which incorporates security features that have analogues in other operating systems.

For the record, these are the versions which I've spend substantial amounts of time on:

and several now-obsolete varieties such as SCO Xenix, QNX v3, VAX Ultrix, PDP-11 UNIX v6.

Other operating systems

The most obvious other operating system I've used and administered has been Microsoft Windows. Starting with MSDOS 3.1, through Windows 3.1, Windows NT 3, Windows NT 4, Windows 95, Windows 98, Windows 2000 (aka Windows NT 5), Windows XP and Windows 2003. Since Windows NT4 I've been using the POSIX subsystem, making multi-user systems with Citrix & WTS, and severely customizing the registry.

Besides Linux and Unix I've also used & administered:

Network Services

Most of my roles have involved design, implementation and administration of mail servers, web servers and DNS servers, including particularly Vodafone and OSS, as well as personally. In all I've probably spent over 20 years doing these.

Networks

I've been involved at most levels of network design and administration from soldering a cross-over serial cable (based on my reading the hardware specs of a serial port) and transfering files using z-modem (1984), to writing driver firmware for radio modems (1992), through to maintaining mailing lists and web pages for interest groups, and pretty much everything in between.

At the network admin level, my major work in this area was with Vodafone and Wang (with some at Asterisk and Open Systems Specialists), doing analysis and design of multi-site networks with multi-layer firewalls and dynamic (failover) routing. At Wang and OSS I also did intrusion testing for pre-arranged clients.

At the application level, I've been writing network-centric programs since 1987.

At the hardware level, I first wired a burglar alarm in my treehouse in 1974 ... and put a 48-point patch panel and wireless hub in my real house in 2006.


A note about Security

Security isn't an add-on, but rather a mind-set from the initial design onwards.

So, I habitually make security part of everything I do, from the ground up. That way there can be no surprises later. (Even when security has been short-changed in the interests of expediency, it is documented exactly where, how, and why, so it's not a surprise.)

In software development, it means having a clear model of who is trusted and considering everyone else by default to be untrusted — so, for example, you don't allow invalid parameters to put a module into an inconsistent internal state.


Contacts

Phone/Mobile:
+61 423339370
Email:


Note: this is a short-form CV; if you would like further details please select from the following list:

Last updated 26 Jan 2023