|
James THOMPSON Location: Lausanne, Switzerland Email: jamie.thompson@bath.edu |
Nationality: British Website/Portfolio: https://jamie-thompson-dev.github.io LinkedIn: https://www.linkedin.com/in/james-richard-thompson |
Experienced software engineer with 6 years specializing in compiler engineering and programming language design. Proficient with concurrent and functional programming in Scala, and the Java platform. Additional skills: project management, technical writing, developer tooling, performance optimization, and mentoring.
|
Software Engineer, Mibex Software, Zurich, Switzerland, Nov 2024 - Current
Compiler Engineer, Freelance, Lausanne, Switzerland, Aug 2024 - Oct 2024
Compiler Engineer, EPFL (Swiss Federal Institute of Technology), Lausanne, Switzerland, Aug 2019 - July 2024
|
|
Java Developer Internship, Essensys Ltd., London, UK, July 2017 - July 2018
|
|
PHP Developer Internship, Stellarise Ltd., London, UK, June 2016 - Aug 2016
|
|
SIP 61 - Binary compatible parameter additions for Scala, Oct 2024, language feature to generate forwarder methods upon addition of new parameters, forwarders maintain the signature of the old API, preserving binary compatibility. |
|
SIP 46 - Scala CLI as default Scala command, May - July 2024, Integrated Scala CLI in the Scala binary distribution while preserving backwards compatibility with package managers, and including an offline classpath. |
|
Pipelined Scala 3 builds, Nov 2023 - June 2024, eliminates redundant idle time in builds. Compilation in parallel with upstream dependencies before class files are available. Required reworks to compiler architecture, intermediate format, and symbol loading. |
|
Scala Website Redesign, 2022, Produced analysis, milestones and coordinated with stakeholders. The new design improves the pitch, emphasises use-cases and business value, focuses on better navigation and puts information in reach. |
|
Forward Compatibility for Scala 2 with Scala 3, Sep 2019 - Apr 2021, enable Scala 2 code to link with Scala 3 separately compiled artefacts through addition of a parser for TASTy (Scala 3’s IR). Required conversion of Scala 3 types to Scala 2 equivalents, Scala 3 compatible type-erasure, error handling for incompatible API, lazy loading of API such that unused incompatible API do not error. |
|
University of Bath, UK, Oct 2015 - June 2019, Bachelor in Computer Science, BSc. degree first-class (4.0 GPA) |
|
Cranbrook Grammar School, UK, Sep 2010 - June 2015, A-Levels: A* (Physics), A (Maths), A (Further Maths), B (Art) |
|
Jun 2024, Scala Matsuri, Tokyo Japan, “How do we optimise Scala build times?” - Explaining the layers involved in building Scala code, and the work that goes into reducing wait times. I talk about my work on pipelined builds, progress tracking, cancellation, outline compilation, Java compilation to TASTy and more. |
|
Mar 2024, Scalar, Warsaw Poland, “Mirrors for operations, not data” - I talk about automatic type-class derivation. Typically it is used on data types. But I propose to use it to derive a schema for a web service, from which you can generate servers and clients. This is supported by a mirror data structure that reifies method signatures as a schema. |
|
Jul 2023, Scala Days, Seattle USA, “How does Incremental Compilation Work with Scala 3”, “Closing panel”. As well as participating on the closing panel of the conference (to talk about the state of Scala), I gave a talk outlining the name hashing algorithm which is used in incremental compilation, detailing how the necessary inputs are produced. |
|
Oct 2022, Scala.IO, Paris France, “Discover TASTy Query” - introduction to a library for semantic analysis of Scala code, explaining how it could be used to validate that APIs remain compatible between releases of a library. |
|
Jan 2020, F(by), Minsk Belarus, “Taste the difference with Scala 3” - explaining the steps users will need to take to migrate code to Scala 3 (which was not yet released). I also gave an early demo of my work on forwards compatibility of Scala 2. |