• Jim MacArthur
Robots, automata and electronics



CV - Jim MacArthur


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


  • Februrary 2013 - Present: Senior Software Engineer, Codethink Ltd

    • 2018: Buildstream: BuildStream is an open-source project to provide a tool which orchestrates builds from multiple repositories, controlling version information of all sources, similar to Yocto and Bazel. My contributions can be found via BuildStream.
    • 2017: Camera microcontroller: A 6 month project with one other engineer to produce an 8KB bare-metal Cortex-M0 firmware image to control a computer vision ASIC.
    • 2016: GFortran legacy enhancements: Enhancements to allow GCC to process proprietary Fortran-77 features, to support a legacy codebase. Included RedHat integration work. All work was offered upstream to GCC, which provided both a technical challenge and negotiation to explain the necessity of modifying the compiler instead of patching the legacy codebase.
    • 2013, 2015, 2017: In-car infotainment: Part of several small embedded teams responsible for improving performance of in-car entertainment & information systems, and porting systems to a different processor in a short time frame. For different customers, I made a 10% saving on system memory and successfully ported a system to a new processor in a short time frame due to a supplier problem.
    • 2014: X86 Android emulator: Architect and lead engineer for a desktop-based Android test environment. This was a modification of the X86 Android virtual machine to pass OpenGL through a socket to a native renderer, greatly increasing peformance over the previous emulated OpenGL rendered. I led a team of 3-4 people to deliver this product in 2014 which recevied positive reviews.
    • Contributor to the company blog and Friday talks programme.
  • June 2012 - February 2013: Career break

    • Learning Javascript and Python for games development
    • Took and passed the Standford University online Compilers course.
  • May 2010 - June 2012: Senior Compiler Engineer, ARM

    • Feasibility study into the use of LLVM as a backend code generator for RVCT.
    • Tuning and benchmarking of memcpy for ARM11 architecture.
    • Bringup of the ARMv8 backends for GCC and GDB.
    • Performance tuning of bzero for big.LITTLE architecture.
  • 2004-2010: Senior Software Engineer, Transitive Ltd (Acquired by IBM in June 2009)

    • Developer of dynamic binary translators and related virualization technology for a variety of platform combinations
    • Extensive performance tuning of X86 → POWER translator including making use of the new little-endian features in the POWER6 architecture.
    • X86 → ARM translator performance work on Firefox including automated performance measurement.
    • Lead developer for a new parametized X86 decoder, capable of generating a decoder for high performance or low memory environments. Shipped as part of a product in September 2009.
    • Began work on a microcheckpointing high-availability product for IBM's P-Series line.
  • 2003-2004: Developer and system administrator, Centre for Pharmacy Postgraduate Education

  • 2001-2003: System administrator, University Of Manchester
  • 1996-97, summers 1998 and 1999: Software Technician, Pi Research, Cambridge

Recent conferences attended:

  • BazelCon, New York, October 2018
  • PyConUK, Cardiff, UK, September 2018
  • Gnome Users and Developers conference (GUADEC), UK, July 2017
  • FOSDEM, January 2014 & 2017
  • Debian Reproducible Builds Summit, Athens, December 2015


  • 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:

  • Electromagnetic Field: Logistics manager for an outdoor technical conference/festival run every two years in the UK. Involves arranging timing and "last-mile" management of deliveries and collections to turn a clean field into a festival and back again.

  • Maker spaces: Founding member of Cambridge Makespace. Makespace is a community workshop in Cambridge, for people to meet, learn and build almost anything. Former member of the similar London Hackspace and Manchester Hackspace. Current member of MadFabLab, Manchester UK.

  • Embedded Linux and microcontrollers: Experienced hobbyist-level user of AVR/ATmega8 (via bare-metal and Arduino interfaces), PIC and MBED microcontrollers.

  • Mechanical Computing:

    Since around 2011 I've been building mechanical computers based on various computing models:

    • A fully mechanical universal Turing machine, based on the 5-symbol 2-state model, exhibited at Maker Faire, Newcastle in March 2011 and further exhibitions in Manchester and Derby.
    • An automaton capable of running rule 110 using a small number of moving parts
    • A working electromechanical demonstration of Langton's Ant
    • 8x8 bit RAM with 3-to-8 address decoder, with a view to building a working replica of the Manchester Small-scale experimental machine (Baby).

Miscellaneous information

  • Nationality: British
  • Age: 39
  • Full UK driving licence