My primary responsibilities have usually been development and maintenance of
the primary product code-base, in each job – which means bug-fixing,
refactoring and writing new features. I've also had incidental responsibilities
ranging from training colleagues, user support and product documentation to
UNIX system maintenance, language design and
in-house tool development. I've helped lawyers understand Free Software
licenses and brought sanity to build systems. I do what needs done, alongside
what my job description mentions.
2015
onwards
Senior software engineer
for The Qt Company in the Core & Network development
team. Many contributors seek out my review of their changes, in which I catch
everything from petty typos and bugs to design flaws before they can reach
end-users; I fix assorted unglamorous components that folk only ever notice when
they don't behave as expected; and I
wrote the
scripts that make our API change review process run smoothly. I've
become de facto maintainer
of time-related
code and localisation, including the handling of time-zones and date-time
serialisation, in each of which I've done extensive refactoring, reviewed and
encouraged by the de
jure maintainer.
2013–2015
Senior
Software Engineer at CFEngine with
architectural oversight on a product that helps system administrators manage
large networks of computers. An investor's change of focus forced the company
to abandon the growth plans for which it had head-hunted me, but not before the
team had learned to value my code reviews, catching their bugs (and those from
external committers) before they could reach users. I fixed my share of bugs
and refactored report collection to avoid some performance bottlenecks. I
performed advanced git magic when needed – particularly to
accommodate contributions from outside the development team.
2013–2013
Senior
Development Engineer at Tandberg
Data in Oslo. Took ownership of the code-base for the QuikStation,
comprising a Linux kernel module, several dæmons and administrative
programs for these. Got it organised, got head-hunted, handed it all over in
good order to a colleague.
2002–2012
Software
Engineer for Opera Software ASA
– working in several teams on varied projects, identifying and resolving
obstacles to development as I went, and helping keep core developers
(implementing and refining support for open standards) and delivery teams
(ensuring users get the best internet experience on any device) working in
harmony. Along the way, I
Championed portability, including the final push to become the first
browser with native 64-bit support.
Drove the modularisation of the Unix-specifc porting layer –
improving the POSIX-based portions thereof, which Mac duly adopted, and
the make-files – to facilitate re-use between divergent
projects.
Took the initiative to ensure timely review of programming test
responses by job applicants.
Was the trouble-shooter called in to develop an improved process,
when integration of development work into the core
team's mainline failed to scale.
I became much sought-after as a reviewer for changes to code and helped
many colleagues with advice.
2000–2001
Software
engineer
for Zeus technology,
developing the world's fastest and most
webmaster-friendly web
server. Working within a young and vibrant team, I
completed and maintained the infrastructure enabling the server to
exploit specialist hardware to accelerate SSL's cryptography,
developed the infrastructure for content negotiation and for
registration of websites with cryptographic certification authorities,
made installation work more robustly across the many Unixes,
wrote man pages and a test suite for ISAPI,
helped colleagues prepare training materials and
developed automatic test programs.
1996–2000
Software
engineer
at Laser-Scan (whose
relevant parts later became 1Spatial) in
Cambridge, working on their object-oriented GIS kernel, Gothic. Aside from
large amounts of time hunting down and fixing obscure bugs, I
designed and implemented an object-oriented query language unifying
existing low-level query functionality,
consolidated and improved the in-house tool-set which supported
Laser-Scan's ISO 9001 QA process
and my colleagues learned to consult me on a wide variety of
technical issues.
1995–1996
Web site setup and management for Metro Internet Ltd. and system administration
for User Interface Technologies, in
Cambridge.
1994–1995
Development and evaluation, in conjunction with Oxford and Cambridge Compilers
and the Fysisk Institutt, Universitet i Bergen, of The Shepherd, an evolutionary
algorithm library. I was then the volunteer who managed a
café for a few months while looking for more suitable
employment. Concurrent with …
1994–1995
Consultancy follow-up contract, part time: enabled the Encyclopædia of
Drosophila project to make use of my work for FlyBase, which it
assimilated.
1993–1994
Coercion of data from a relational database
(FlyBase) to an object-oriented
database/display package (ACeDB) customised
to the needs of geneticists. I designed and implemented a domain-specific
language which packaged SQL queries with formatting directives in a general and
robust manner; colleagues later found further uses for it. The project involved
extensive collaboration with colleagues on either side of the Atlantic, in which
the new medium of the web was a great help – running our server
fell under my system management duties, which also
embraced modest amounts of user support.
1991–1993
Mathematical and software research
for NA Software. My work was
directed towards the development of high-speed software to process images
corrupted with a severe class of noise called coherent
speckle. I had primary control of the research project to develop a program
to segment such images (cut them into regions, each
of which has constant visual texture – a concept whose
formalisation lay at the heart of the entire project). I had overall editorial
responsibility for regular progress reports for our customers on my work and
that of four colleagues; this stretched from getting reports written, via
typesetting (in LaTeX) to detailed proof-reading.
1988–1991
Solid modelling for Shape Data of Cambridge. Work spanned all phases, from
design through coding and testing to user documentation, of modifications
to Parasolid, the
mathematical modelling core of a fully three-dimensional CAD (Computer Aided
Design) system. My work extended to the training of recruits
and trouble-shooting work on a suite of in-house software tools
customised to the needs of the development and maintenance teams.
1985–1985
Prototyping
work on a user interface language (of a style we would now
call object-oriented) for FEGS Ltd of Cambridge, under the sagacious
guidance
of Malcolm
Sabin.
1982–1982
1983–1983
Computer programming
and mathematical support for a team of engineers working for Britain's National
Nuclear Corporation, testing the design of safety systems for nuclear power
plant (Sizewell B). This mostly revolved around the modelling of mixed-phase
flows in boiling water.
For a discussion of what prompted me to take and leave each job
(sometimes asked by interviewers), see my separate page
on transitions.