Alan Zimmerman

Software Engineer @ Meta

Alan began his career working with embedded systems, including radar systems, and the Southern African Large Telescope. He then founded a company, providing Value Added Services to Mobile Network Operators. He discovered Erlang and decided to switch his company’s stack from Java/JBOSS to it. This resulted in a 90% reduction in server costs. As Alan found himself doing more management work, he began working on Open Source Software to keep his programming skills sharp. He chose to revive the dormant Haskell Refactorer (HaRe). This led to becoming a contributor to the Glasgow Haskell Compiler, to improve its use in refactoring. Then Alan founded the Haskell IDE Engine (now the Haskell Language Server), as a single provider of Haskell Tools to IDEs, so people could use HaRe. Alan’s company was affected by bad conditions, which led to its closure. He took the opportunity to join Meta in the UK, where he has been contributing to the Erlang Developer infrastructure.

Refactoring Made Easy

From small projects to large monorepos, refactoring plays a crucial role in ensuring the maintainability, the extensibility and the overall code quality of a codebase. Codemods allow developers to write scripts that define patterns and transformations across a codebase, reducing the manual effort involved in refactoring.

In this talk we present a number of tools and techniques that can assist you in tackling the complexities of refactoring Erlang code and improving code maintainability. We discuss how to combine the concepts of refactoring and codemods with the power of diagnostics and code actions (quick fixes) in the IDE.

By using practical examples, we show how to implement a refactor, a linter and the respective fix by using a brand new framework which you can use in multiple contexts, from the IDE to the CLI, at industrial scale.

Key Takeaways:

  • Writing your own refactors, lints and codemods is not just for rocket scientists.

Target Audience:

  • End users, and people who write or use language tools