James THOMPSON

Address: Lausanne, Switzerland

Email: jamie.thompson@bath.edu

Website: https://bishabosha.github.io

Github: https://github.com/bishabosha

LinkedIn: https://www.linkedin.com/in/james-thompson-3b1ba076/

Languages: English (Native), French

Software Engineering Experience

Compiler Engineer, Scala Center at EPFL, Aug 2019 - Now

My work centres on improving the developer experience using the Scala 3 and 2 compilers, and surrounding tooling:

  • Static Code Analysis with “TASTy Query”: implemented a new library providing semantic queries of Scala code.
  • Forward compatibility of Scala 2 with Scala 3:
  • implemented TASTy reader in Scala 2 compiler, enabling incremental migration of builds to Scala 3.
  • Better integration with build tools & faster build times for Scala 3:
  • adapt Scala 3 compiler so that multi-module projects can be pipeline-compiled with increased parallelism.
  • experimental two-pass compilation with parallel batch final pass
  • added incremental compilation support for various new Scala 3 features.
  • implemented various performance-profiled optimisations to compiler code.
  • Scala 3 Compiler integration with IDEs:
  • Implemented reporting of compilation progress, and cooperative cancellation by the user (per file, per phase).
  • new phase to emit SemanticDB files (fast-access cache of symbols in a workspace)
  • Improved metaprogramming capabilities of Scala 3:
  • Support dependent types and generic tuples in typeclass derivation framework.
  • Mentored student project to support default parameters in typeclass derivation framework.
  • Finalised enum feature for Scala 3: added support for serialisation, type inference, inlining and match types.
  • Redesigned Scala website:
  • New homepage: added code examples, motivational text based on proven use cases for Scala.
  • Better UX: streamlined navigation, tabs to compare Scala 2 and 3.
  • Content authoring: wrote various blog posts, documentation, educational videos, social media announcements.
  • Building Scala Community: Restarted local meetups, led Advent of Code participation, mentored at hacking events.

Java Developer Intern, Essensys Ltd., July 2017 - July 2018

  • Built a Java streaming processor for phone records, bringing real-time revenue rating, windowed spam alerting, and a new algorithm for preventing over-allocation of extensions.
  • Maintained server backend, improved type-safety of Java code, migrated code away from deprecated dependencies.

PHP Developer Intern, Stellarise Ltd., June 2016 - Aug 2016

  • Created the customer portal for a cloud subscription service. Full stack development using MVC architecture and RESTful API’s for Stripe, Xero and Mailchimp; used Stripe webhooks. Tools used: PHP, MySQL, Git, Maven, JIRA

Technical Skills Keywords

Scala | Developer Tooling | JavaScript | React | Frontend Engineer | Java | Backend Engineer | Haskell | Python | Functional Programming | Compiler Design | Test Driven Development | Spring Boot | Reactive Streams | PHP

Education

University of Bath, UK, Oct 2015 - June 2019

Bachelor in Computer Science, BSc. degree first-class, supervised by Prof. Guy McCusker

  • Relevant Modules: Compilers, Logic and Semantics of Programming Languages, Artificial Intelligence, Intelligent Agents, Data Structures, Advanced Algorithms, Cognitive Systems, Networking, Functional Programming

Conference Talks

Mar 2024, Scalar, Warsaw PL, “Mirrors for operations, not data” - boosting productivity with metaprogramming.

Jul 2023, Scala Days, Seattle US, “How does Incremental Compilation Work with Scala 3”, “Closing panel”

Oct 2022, Scala.IO, Paris FR, “Discover TASTy Query” - library for semantic analysis of Scala code

Jan 2020, F(by), Minsk BY, “Taste the difference with Scala 3” - explaining the upcoming Scala 3 migration.