James THOMPSON Address: Lausanne, Switzerland Email: jamie.thompson@bath.edu | 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 compiler and programming language design, backend, technical writing, public speaking and community engagement. Familiar with Scala, Java and JVM internals.
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) |
Software Engineer (Scala), EPFL, Lausanne, Switzerland, Aug 2019 - July 2024 Member of the Scala Center, a not-for-profit foundation for the Scala programming language. Core engineer on the compiler and developer tooling. Delivered new language features, and heavily involved with project management, community support, and programming education.
|
Internship, Essensys Ltd., London, UK, July 2017 - July 2018
|
Internship, Stellarise Ltd., London, UK, June 2016 - Aug 2016
|
SIP 46 - Scala CLI as default Scala command, May - Jul 2024, Distribute new scala command based on Scala CLI. Extensive changes to preserve backwards compatibility with package managers, and to bundle dependencies to operate offline. |
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, Lead and developer. 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. |
Scala | Functional Programming | Language Design | Compilers | Parsing | Metaprogramming | Developer tooling | Concurrent programming | Project management | technical writing | TypeScript | Java | Python | Ruby | Haskell | Performance Optimisation | Build Tools | Fullstack Engineer | Git | Spring Framework | Reactive Streams | Mentoring