srimech.com • Jim MacArthur
Robots, automata and electronics


HomeCVContact

My CV

Jim MacArthur

jim-web@mode7.co.uk

Summary

  • Main skills: C, C++, Assembler (ARM including ARMv8, x86, POWER), compilers and binary translation.
  • Other skills: Perl, Python, Linux, Windows, AVR
  • 11 years experience of wide ranging software development, specializing in code generation and performance tuning.

Current status:

On sabbatical, learning to create computer games, and taking Stanford University's online compilers course.

Employment:

May 2010 - June 2012: Senior Compiler Engineer, ARM

  • I have worked on both ARM's own RVCT compiler and GCC. For RVCT, our team carried out a feasibility study into the use of LLVM as a backend code generator. My main responsibilities on this project were constructing the interface necessary to integrate it with our product, and significant amounts of benchmark configuration and performance analysis.
  • My work on GCC and the other GNU tools has been to bring up this toolchain on ARM's new 64 bit architecture, enabling GCC and GDB to work on native 64-bit ARM Linux machines, including bootstrapping GCC. I have been progressively adding functionality to these tools and working with the Linux kernel team to resolve bugs on both sides.

2004-2010: Senior Software Engineer, Transitive Ltd

(Acquired by IBM in June 2009)

The Transitive team developed dynamic binary translators and related virtualization technology for a variety of platform combinations. A lot of my work involved performance analysis and improvement, from hypothesizing bottlenecks and gathering supporting evidence to implementing new approaches or just simple fixes. Some of this required working directly with potential clients on involved, specific performance issues.

  • Began work on a microcheckpointing high-availability product for IBM's P-Series line.
  • During 2009 I led a team of three people to implement a new x86 instruction decoder. This uses a human-readable instruction description and Perl to generate C++ which is then compiled, giving us better maintainability and more speed. This was shipped as part of a product in September.
  • I extensively modified our POWER code generator to take advantage of emerging chip features, which involved close contact with some of the designers from our then customer, IBM.
  • Carried out extensive performance development on our x86-POWER and x86-ARM translators, which has given me a strong knowledge of all three processors.

The projects here are largely written in C++, and POWER and ARM assembler. I have also written significant amounts of Perl for analysing test results, auto-generating C++ and process automation. I enjoy writing documentation for all my projects, usually with MediaWiki or DocBook.

2003-2004: Developer and system administrator, Centre for Pharmacy Postgraduate Education

Business process automation with VB and MSSQL, administering and upgrading an office server and network for a small company of 20 employees with Windows 2000/2003 Server, and updating a MSSQL/IIS web application for pharmacy tutors.

2001-2003: System administrator, University Of Manchester

Administrator for several Windows 2000/IIS and MSSQL servers including Windows clusters, Citrix thin client services and workstation support.

1996-97, summers 1998 and 1999: Software Technician, Pi Research

Automated test developer.

Education:

BSc (Hons), MEng Computer Science 2:1

University of Manchester, 1997-2001

Specialising in hardware and networking where possible. My projects here included network packet reassembly and distributed multi-user social environments.

Other Interests:

Maker spaces: Founding member of Cambridge Makespace (www.makespace.org). Makespace is a community workshop in Cambridge, for people to meet, learn and build almost anything. Member of London Hackspace, a similar organisation in London.

Embedded Linux and microcontrollers: I've picked up experience configuring Ubuntu, OpenBricks and Linaro distributions for my IGEPv2 OMAP3530 platform and significant experience developing for PIC, AVR and MBED. Currently evaluating a pre-release Arduino Due, the ARM-based Arduino project.

Mechanical Computing: Designed and built a fully mechanical universal Turing machine, exhibited at Maker Faire, Newcastle in March 2011.


Nationality: British Age: 33 Full UK driving licence

References available on request