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

Summary

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.

Education

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)

Experience

Scala Software Engineer, EPFL, Lausanne, Switzerland, Aug 2019 - Now

  • Core contributor on the Scala 3 compiler team. Worked on: language features, compile performance, developer tooling, documentation, specification, CI/CD, test infrastructure.
  • Community engagement: Speaker at conferences, moderated public forums, GSOC mentor, social media management.
  • Improved developer experience in compiler: progress tracking, interruption, IDE integration, performance optimisation.
  • Added forward-compat mode to Scala 2 compiler, enabling use of Scala 3 libraries, reducing complexity of migrating.
  • Incremental compilation support for new Scala 3 features, for a faster development cycle.
  • Reduced build times by adding support for pipelined builds in Scala 3, increasing concurrency in builds.
  • Implemented parsers for Java class files, Scala 2 pickle format, TASTy format.
  • New static analysis library for Scala programs based on the TASTy intermediate format (TASTy Query), gaining skills in parsing, software architecture, graph algorithms.
  • Improved support in Scala 3 for Java platform, and better type checking of Java source files.
  • Stabilised and polished new enum feature for Scala 3 release.
  • Maintainer for automatic typeclass derivation framework.
  • Wrote sbt plugins to automate build tasks, such as the packaging procedure for SIP 46 (see projects)

Java Developer Internship, Essensys Ltd., London, UK, July 2017 - July 2018

  • Build a new streaming processor with Kafka for real-time revenue rating, with windowed spam alerting.
  • Engineer on Spring framework server backend, MySQL, Redis, ElasticSearch, Regex.

PHP Developer Internship, Stellarise Ltd., London, UK, June 2016 - Aug 2016

  • Created full-stack cloud subscription service.  PHP 7, Yii 2, Stripe API, Xero, Mailchimp. MySQL, Git, Maven, JIRA

Skills Keywords

Scala | TypeScript | Java | Python | Ruby | Haskell | Functional Programming | Compilers | Parsing | Metaprogramming | Performance Optimisation | Build Tools | Fullstack Engineer | Git | Spring Framework | Reactive Streams | Mentoring

Projects

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.

Conference Talks

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.