About this document
This CV is version 6 and is dated Thursday, January 29th 2004.
Personal data
Goals
- To work with emergent technologies
- To make a contribution to advanced systems
- To do new things
Education
- Three A levels (Computer Science grade B, Physics grade C, Maths incomplete) June 1997
- Microsoft Certified Professional level 4
- TRANSFER SystemC Modelling certificate
- Co-Centric System Studio training course completed
Recent employment history
- June 2003-present Esterel Technologies and Texas Instruments
At TI I work on the creation of models and definition of future processor architectures in the OMAP range. I work with a broad range of technologies for both practical measurement of the performance of current systems running real application software stacks such as Nokia's Series 60 and Symbian UIQ, and theoretical estimation and projection of future architectures including ARM11 and ARM12. As the design of these future processors is often in a state of flux, our architecture simulations have to be very flexible and easily modified.
In addition to these duties, I often have to determine the cause and best cure for performance problems in the current generation of chips in applications often very different from their designed purpose. I also work on operating system instrumentation and compatibility planning.
- June 2002-May 2003 Zarlink Semiconductor
At Zarlink I worked on low-level bootloader and driver-level code for Linux-based set-top box designs using custom cores based on PowerPC 405GP processors. I was responsible for the implementation of a flash filesystem, wear-levelling and error correction scheme on these devices. I participated in architecture design and in software development in great depth.
- January 2002-June 2002 Miscellaneous contracts and projects
Since leaving Eurologic I have been working on a wide variety of projects including a port of Subliminal Linux to ARM and iPAQ, Linux on iMac and upgrading Webview to use the Grub bootloader from internal NAND Flash memory.
- July 2001-January 2002 Eurologic Ltd
At Eurologic I was responsible for the testing and validation of new storage systems appliances based around Linux and a range of technologies including Serial ATA, SCSI, iSCSI and 'fast path' optimised kernel message handling.
I used a range of testing methodologies including interoperability and more formal boundary-condition validation schemes.
- March 2001-June 2001 Equiinet Ltd
In this post my duties were to implement new features for the Linux kernel to facilitate use of the Motorola MPC860 PowerQUICC processor in an embedded network appliance. This was for the product 'NetPilot', an 'internet in a box' style system for office and home use. Netpilot supported many WAN interfaces and protocols in an effort to bring all of the functionality of email server, web cache, router, firewall and many others into a tiny, low cost device. This role involved a lot of testing and validation, as software updates were to be released to thousands of customers simultaneously.
- March 1999-March 2001 Dexdyne Ltd
In this post my duties revolved around the implementation of the WebView product, an embedded Linux-based microserver for industrial applications. I implemented a driver layer and Java VM for the AMD Elan AmSC410 and implemented numerous patches to hardware bugs. Network daemon support for protocols including CsCAN, TCP/IP, Modbus, Modbus Plus and the Mitsubishi PLC protocols were a core part of this product. This required intensely optimised code as the platform was a tiny embedded system with only eight megabytes of backing store and eight megabytes of RAM. Code quality was critical to this industrial product as a failure in the field could have dangerous consequences! I was lead software engineer on this project.
- August 1998-March 1999 Epinet Ltd
In this post my duties included design and implementation of a new server architecture based around Linux, implementation of web applications using Apache, Windows NT4, IIS4, ASP, ColdFusion, Java servlets, JSP, SQL databases (including Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access) and MCIS. Other duties involved network architecture, customer-facing technical support roles, and web design. I was lead software enngineer on many of these projects.
- July 1997-August 1998 CGram Software
Developed and supported a large industrial management system in Java and C, including the development of hardware drivers, developed and optimised realtime and near-realtime DSP software for advanced materials analysis.
Abilities
- ARM technologies
- Specification of future ARM processor macrocell performance targets current
- Performance validation of ARM memory systems current
- Symbian 6 and 7 internals current
- Embedded Trace Macrocell (ETM) trace decompression current
- Simulator design and interconnect validation current
- C on RISC OS and NC OS, including relocatable module code 1990-1998
- ARM assembly including optimised mathematics and DSP current
- ARM system internals current
- Open technologies
- SystemC modelling including CoCentric System Studio current
- SCSI, ATA, ATAPI and iSCSI current
- Darwin (MacOS X) including MacOS X 10.3 'Panther' current
- Embedded Java including Kaffe current
- Embedded Linux (produced Subliminal Linux) current
- Linux on AMD Elan AmSC4xx current
- Linux on PowerPC 860, 405, 403, 750FX, 7400 current
- Linux on StrongARM-1110, ARM925 and ARM926 current
- Linux kernel programming current
- Hardware drivers for Linux current
- Java 1.0, 1.1 and 2, serverside, clientside and middleware current
- Servlets and Java Server Pages 1996-1999
- ARM, x86, Z80, PIC and 6502 assembler current
- C on UNIX (Linux, Solaris, HP/UX, Minix) platforms current
- C on MS DOS-like platforms 1994-1997
- C on microcontroller platforms including PIC and V30h current
- Bourne shell scripting current
- Linux system administration and kernel 'hacking' current
- Device driver code for POSIX environments various, some current, since 1995
- Electronics
- Data acquisition systems up to RF current
- Digital signal processing platforms current
- Signal conversion equipment current
- Repair and surface-mount rework 1992-1998
- Power systems current
- Microchip PIC programming current
- NOR, NAND and DataFlash memory integration current
- Symbian
- ARM and C++ for Symbian 6 and 7, including the E32 kernel current
- C/C++ for EPOC32 ER5 1999-2000
- C for EPOC16 (aka SiBO) 1994-1996
- OPL 1994-1996
- Industrial technologies
- PLC programming 2001
- Work with Horner, Allen Bradley and Mitsubishi PLCs 2001
- Hardware design for CANbus and RS485-based fieldbuses 2001
- Originator of Dexdyne's 'WebView' web-enabler for industrial applications 1999-2002
- Protocol interface modules for Linux access to PLC protocols 1999-2002
Experience
- Producing performance figures, target specifications and simulation tools
for Texas Instruments
- Building Flash filesystems for Zarlink
- Building a testing and validation suite for Eurologic
- JSP, HTML and graphic design work for linuxgrrls.org
- Network administration for Epinet and linuxgrrls.org; maintenance and feeding of small cohosting operation
- Built system software for Dexdyne's WebView product
- Ported Linux to AMD Elan AmSC410 processor
- Produced micro-footprint Linux distribution for embedded microserver applications
- Designed and built PIC-based RS485 multi-IO pod
- Implemented a wide variety of protocol layers for Subliminal Linux's fieldbus connectivity system
- Wrote Java application software to interface with Webview web-enabling technology for industrial applications
- Condensed Kaffe Java VM to run on Webview platform (8Mbytes RAM, 8Mbytes Flash)
- Ported RealAudio decoder to integer-only StrongARM110 platforms.
- Designed and built interactive websites for a multitude of clients, including Media Intelligence Services and Gloucestershire Business Link.
- Designed and built a military-grade secure content delivery system for internet servers.
- Articles published in Archive and Archimedes World magazines.
- Designed and built a Java 1.1 frontend and a composite Java/C middleware layer for a very large Oracle SQL server / CGram 'data dictionary' business engine. This comprised some 15,000 lines of Java code, 5,000 lines of ANSI C and 40,000 lines of legacy K&R C.
- At CGram I was primarily in charge of development and support of network systems consisting of a heterogeneous Linux/Solaris/Win95/WinNT environment. I had responsibility for troubleshooting, interfacing with legacy systems and support. I am experienced in the use of routers, bridges, repeaters, etc., and have supported some extremely complex, busy and ageing networks.
- Specified and built several large dataserver machines in mission-critical datapaths.
- Ground-up design and prototyping of data acquisition systems including DSP technology and so-called 'soft-DSP' code for CGram Software/Bergfahrer Cycle Technology.
- Produced games software ('Star Blaster', 'Ludicrous Adventure', 'Ion Burn') for Intel and Acorn machines.
- Generated extensive documentation of legacy systems for CGram Software using reverse-engineering techniques. Also gained knowledge of undocumented 'features' of Windows NT4 and Windows 95.