James THOMPSON Address: Lausanne, Switzerland Email: jamie.thompson@bath.edu | Nationality: British (Swiss Residence Permit B EU/EFTA) Website/Portfolio: https://bishabosha.github.io GitHub: https://github.com/bishabosha LinkedIn: https://www.linkedin.com/in/james-richard-thompson Languages: English (Native), French |
Software engineer with 6 years of experience in Scala compiler, Java and JVM internals. Main skills: developer tooling, language design, concurrent programming, performance optimization, project management, technical writing, and mentoring.
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) |
Scala Software Engineer, EPFL, Lausanne, Switzerland, Aug 2019 - Now
|
Java Developer Internship, Essensys Ltd., London, UK, July 2017 - July 2018
|
PHP Developer Internship, Stellarise Ltd., London, UK, June 2016 - Aug 2016
|
Scala | TypeScript | Java | Python | Ruby | Haskell | Functional Programming | Compilers | Parsing | Metaprogramming | Performance Optimisation | Build Tools | Fullstack Engineer | Git | Spring Framework | Reactive Streams | Mentoring
SIP 46 - Scala CLI as default Scala command, May - Jul 2024, Replace scala script in distribution with Scala CLI. Required extensive work to preserve backwards compatibility with package managers, and ensure it can work offline after download. |
Pipelined Scala 3 builds, 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 Community Advent of Code website, Dec 2022 & Dec 2023, managed community website to host same-day solutions to the Advent of Code annual challenge. Successfully organised timetable and coordinated articles from 15 external contributors. |
Scala Website Redesign, 2022, Proposed and Lead. 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. |
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. |