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


  • February 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. I've been contributing to the remote execution subsystem for around 10 months. 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 in-car entertainment & information systems. 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 performance over the previous emulated OpenGL rendered. I led a team of 3-4 people to deliver this product in 2014 which received 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 Stanford 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 virtualization 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