 |  |  |
2007--2009: Two years’ career-break
After the closure of Sigmatel’s UK office, I had a couple of
years’ career-break, doing a bit of travelling (mainly meeting
up with old friends now far-flung around the world), and spending some
time writing open-source software to give away on the Internet.
In particular, I wrote Chorale, a collection of UPnP A/V
clients and servers (for Linux, initially) with the ultimate goal of
being able to weld the current hotchpotch that is the digital media
experience (CDs here, radio there, Roku Soundbridges and Ipods and
all) into a single coherent whole, a “media Borg” that
newly-purchased media or devices just get assimilated to. Some major
sub-goals of this are already achieved: for instance, the server
detects the presence of a Freeview (DVB) adapter in the server, and
uses the UPnP A/V v2 “Tuner” extension to offer all
Freeview channels to the rest of the network. Along the way, I got
patches accepted upstream into open-source projects libupnp, libcdio,
and the Linux
kernel.
2000--2007: Senior software engineer, eventually “Software Architect”
Sigmatel Inc. (formerly Rio Audio; formerly part of Diamond Multimedia; formerly Empeg Limited)
Formerly of 300 Rustat House, Clifton Road, Cambridge, England; now defunct
From the beginning I worked closely with Empeg’s software
“architect”, in a tight-knit team of, originally, five
developers, slowly growing to twelve developers. In this phase I made
many design and implementation contributions to substantial new
releases of the Empeg-Car firmware (MP3-playing car-stereo) and to new
products Rio Central (home media server), Rio Karma (portable MP3/FLAC
player) and Rio Music Manager (PC music-transfer
application). Following the departure of the original
“architect”, I took over that position and was software
“architect” during the development and successful release
of the Trekstor Vibez firmware.
The design and implementation
areas I worked in while at Empeg/Rio/Sigmatel included:
- Portability work so that essentially the same
application-level C++ code can run on Ecos (for Rio Karma and Trekstor
Vibez), Linux (both desktop and embedded), and more recently ThreadX
-- plus, for most of the core libraries, on Win32 for Rio’s
Windows-based applications and for rapid UI development in advance of
target hardware availability;
- Updating the codebase to use UTF-8 internally, and developing or
validating Unicode-safe metadata extractors for the various audio file
formats supported;
- A speed-optimised music-metadata database, including indexing and querying, for the Rio Central;
- A size-optimised music-metadata database for the Rio Karma and
Trekstor Vibez;
- Implementing the Media Transfer Protocol (MTP), a Microsoft-backed
standard USB file-transfer protocol for media players, including a
stub client and server for unit-testing;
- The windowing system used on the Rio Karma and
Trekstor Vibez, including making sure it was unit-tested;
- A build system of non-recursive Makefiles, to keep our
multi-machine, multi-core build farm optimally busy;
- Automating the construction of cross-compilation toolchains for
Rio’s various platforms, including cross-compilation of
thread-safe C++, and including maintaining out-of-tree patches for
binutils, GCC, Ecos, and the Linux kernel, for various special
purposes.
Additional contributions included:
- Investigating and promoting (inside Rio/Sigmatel) upcoming
media software technologies, particularly UPnP A/V standards;
- Being “Code Custodian” of the Sigmatel Cambridge
codebase. This was a senior technical rôle, keeping an eye on
the “big picture” promoting coherence of design across the
various development sub-groups working in different areas;
- Various bits of ad-hoc toolsmithing: for instance, writing a tool
to analyse and assist in the optimisation of ARM assembler by
annotating code with pipeline stalls and register liveness;
The eventual position of “Software Architect” was another
senior technical rôle aimed at seeing the even bigger picture
across both the Cambridge and Austin software teams, helping to
organise integration between the two and spreading good development
practices. Additionally, I was the “go-to person” both for
low-level C/C++ language-lawyering and for questions of elegance and
simplicity of software design. Informed by broad experience of both
design and implementation, it was partly my almost aesthetic sense for
good design that let this small team produce such varied products from
the same codebase so effectively.
1996--2000: Senior software engineer
ANT Limited
Since moved to Cambridge Business Park, Cowley Road, Cambridge, England
ANT is a small company whose main activity is Internet client
software (browsers, mail readers) for the embedded, set-top-box market
and also (at the time -- not these days) for the RiscOS desktop
market.
Most of my work at ANT was on
the Fresco project, of which I eventually became the
“architect”. Fresco is a portable, lightweight HTML3.2 web
browser originally developed by ANT as part of the “Network
Computer” or NC Reference Platform designed by Acorn Computers
(later briefly called E14, and now part of Pace Micro Technology).
During my time at ANT I
designed, coded and/or updated many important aspects of the browser
at all levels from the HTTP fetcher to the formatter and GUI, and
including implementing its support for frames, web publishing, HTTPS,
and JavaScript. More importantly, I also co-ordinated the technical
effort to make Fresco (originally a RiscOS-only product) portable,
defining the API and code structure of ANT’s cross-platform library
and coding the RiscOS and Win32 implementations (another developer did
the X Window System implementation). The Win32 work was done using
Visual C++ 4.2, 5.0, and later 6.0.
Following on from the work to
make ANT’s code portable across mainstream operating systems, I
designed and implemented a further library which provides a simple
window manager, a widget set, and a collection of graphics
primitives. This has allowed ANT to port the browser (and its other
software projects) to much lighter-weight, embedded-style operating
systems where the library is basically just given a framebuffer and
has to do everything else itself.
The Fresco sources were
managed using the source-control system CVS, which I ported to
RiscOS from Unix/NT.
1993--1996: Software engineer
Iota Software
Formerly of Iota House, Wellington Court, Cambridge, England; now defunct
Iota Software Limited is another small company (eight people, when
I was there) producing application software for 32-bit Acorn RiscOS
machines, and, more recently, PCs running Windows. In theory, I was
part of the development team (four strong), but, obviously, in a
company of that size everyone found themselves filling more than one
rôle. My others included taking some support calls,
demonstrating the products at trade shows, and doing much of their
technical writing. This last, though, was the only one of those which
I found as absorbing and stimulating as programming. I also ended up
doing most of Iota’s “internal support”, such as
keeping the computers and network going, and running the administrator
accounts on their Unix and NT servers. In 1996 I implemented their
Internet connectivity using Linux 1.1.59 on an otherwise-retired
486.
 |
These are some of the main development projects I worked on:
Apr 1994 -- Oct 1994: The Complete Animator
This was a frame-based animation package for RiscOS, written from
scratch in the above timescale by me and two other people. It won wide
praise for its ease of use, robustness and professional features such
as a proper “ghosting” or “lightbox”
mode. Again, this program was written in C, except a few
speed-critical bits which I rewrote in ARM assembler.
Dec 1994 -- Jul 1995: The Complete Animator for
Windows
Actually, the name of this program kind of says it all, but for the
record this was a rewrite of our animation software for the Win32
platform. I and one other developer learned Win32 and MFC from scratch
for this project (with the help of a third developer, who already knew
Win32, for the initial few months of the project). This program was
written in C++, using Visual C++ 2.0, MFC and SDK, and again I rewrote
the speed-critical part (decompressing the frames) in x86 assembler.
It ran on Win95, NT, and Win32s -- it detected which at run-time,
in order to run most effectively on each. It won a PC
Format Gold Award, quite unusual for a non-game program.
As something of a personal
jeu d’esprit of mine, this program came with a
network-aware, peer-to-peer screen-saver program I wrote, which uses
animation files created in Animator and could pass them from screen to
screen around an IP network -- even if some of the machines were PCs
and others were Acorns. I wrote the screen-saver in BASIC on the Acorn
platform, and then again in C++ with MFC on the Win32 platform. I then
ported the Win32 version to Win16.
Aug 1995 -- Dec 1995: DataPower Server service for Windows
NT
This project was concerned with porting the back-end, or engine, of
DataPower (Iota’s flagship database management product) to Win32
in order to run it on Windows NT fileservers. The principal issues
were the separation of the DataPower code from OS-dependent routines,
and the rewriting of DataPower’s RPC mechanism to take advantage
of true multi-threading and true blocking sockets, neither of which
was available in the RiscOS API (which used coroutines, and polled its
sockets all the time). The server ran as a true Win32
service. It was written in C using the Win32 SDK. This port was
undertaken entirely by me, with some input from DataPower’s
original designer.
Jan 1996 -- May 1996: Primary Maths
This was a project reusing the innards of Animator as a
multimedia tool, the content being an adaptation of a series of
workbooks by the Cambridge University Press. Primary Maths was sold as
a triple-platform CD, running on Acorns, PCs and Macintoshes, although
it actually contained four versions of the code, as the Win32 and
Win16 ones were separate (it didn’t use Win32s). I wrote the
Win32 version and most of the Win16 and MacOS versions (this last
using Microsoft Visual C++ Cross-Development Edition for Macintosh, so
I don’t actually know a great deal about MacOS).
|
I also wrote the cross-platform source control system used at
Iota, including its RiscOS GUI front-end.
1990--1992: Sponsored student
ICL Wenlock Way, West Gorton, Manchester, England
I was sponsored through university by ICL (International Computers Limited, now Fujitsu ICL). As part of that, I worked for them each summer for three years.
 |
Summer 1990: Design Automation department: Maintenance of a
very large and old circuit design program, and other work, conducted
in Pascal running under Unix. (I’d never used Unix, nor a
compiled language, before; they literally sat me down on the first
morning with a copy of the Pascal user guide and said “First,
learn this”. I did.)
Summer 1991: Fifth Generation department: Writing a test
suite for the operating system on a new parallel processing computer,
the “Goldrush” machine (connected with an Esprit project,
the European Declarative System), and other work. This involved
programming in C++ for Unix and Goldrush’s own OS (based on
Chorus).
Summer 1992: Software Factory department: Working in a
team developing software tools to support program development;
for example, a syntax checker for S3 (an Algol-like language).
Conducted in C on Unix.
|
|