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

Summary

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.

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

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.

  • Enabled migration from Scala 2 to 3 by delivering a new compatibility mode between the two versions.
  • Reduced build times 25% with new compilation modes and better incremental compilation.
  • Improved experience for Scala developers with new integrations for IDE and build tools.
  • Strengthened Scala platform stability with improved interoperability with Java code.
  • Experienced in graph algorithms, parsing, static analysis, type systems and more.
  • Teacher for EPFL’s online extension school platform. Mentored 4 students on successful projects to support Scala.
  • Delivered new scala command based on Scala CLI, requiring new build and automation infrastructure.
  • Organised community events such as hackathons and meetups.
  • Engaged with the community through speaking at events, forum moderation.
  • Technical writing for educational videos, documentation and Scala language specification.

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

  • Build a new real-time data pipeline with Java, Kubernetes and Kafka for billing of phone calls, with spam alerting.
  • Engineer on enterprise software backend, Java, Spring Framework, MySQL, Redis, ElasticSearch, Regex.

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

Projects

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.

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.

Skills Keywords

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