CV - Jim MacArthur
jim-web@mode7.co.uk
Summary
- Low-level software engineer specializing in compilers, binary translation and embedded software.
- Main skills: C, C++, Python, Assembler (Arm including ARMv8, x86, POWER).
- Other skills: Java, Rust, various microcontrollers (AVR, Microchip, RP2040)
- 25 years experience of wide ranging software development
Employment:
- Designer of computer architectures and other logic devices for a unique application. The goal was to create a functional, practical processor with a very low gate count (approximately 1000 transistor-equivalents). This also involved the physical design of switching elements and memory cells.
- Designs were delivered and shown to work using Verilog and Wolfram SystemModeler simulations.
- Two patents were applied for from this work: https://patents.google.com/patent/US11720084B2 (granted) and https://patents.google.com/patent/CA3153081A1 (pending).
Februrary 2013 - June 2019, April 2024 - September 2024: 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.
- 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. Upstreamed 2019: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=32bef8ff8090a0d108fa14fc4088e55e57a5e6d5
- 2013, 2015, 2017, 2024: 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 performance over the previous emulated OpenGL renderer. 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 Standford University online Compilers course.
May 2010 - June 2012: Senior Compiler Engineer, ARM
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 to POWER translator including making use of the new little-endian features in the POWER6 architecture.
- X86 to 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
Upstream contributions
Patents
- Managing non-contact forces in mechanisms, WO2022066681A2 (granted)
- Selective motion transfer mechanism, CA3153081A1 (pending)
Recent conferences attended:
- Chaos Communication Congress, Hamburg, December 2023
- 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
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:
- 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 HacMan, 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: 45
- Full UK driving licence
Return to index