Craig Spence
Craig Spence


Craig Spence

Craig is a Software Engineer from New Zealand, working at Spotify in Stockholm. He loves building cool things that help teams build cool things! He also loves punk rock, Disney's Frozen, and his cat Cosy.


Do You Want To Build A Build Tool?
Code On Screen Breakout Session

Tooling for code generation, transformation and interrogation has improved in leaps and bounds over the last few years! We now have things like Webpack, Prettier and ESLint, that can manipulate code in powerful ways, speed up development, and provide insight into how our applications work. But how exactly do they work? Some of the ideas that make these kinds of tools tick are rather tricky, and not the kinds of thing you come across in day-to-day web development... This talk will be Code Tooling 101, and act as an introduction to Abstract Syntax Trees, and all the weird and wonderful things you can do with them. We will start together at the TypeScript compiler APIs and learn all about code interrogation, code transformation and code modification. We will then see how we can apply those same ideas to build our own tools, or contribute to the amazing tools that the community has built! By the end of the talk, attendants should have an idea of how ASTs work, how they are used in code tooling, and how they can be used to manipulate and interrogate code at a structural level! This will open up the doors to creating custom schematics, lint rules and codemods, and hopefully encourage everyone to have a go at contributing to open-source tooling projects!


Scaling JavaScript at Trade Me
Hot & New Breakout Session

Our team at Trade Me have spent the last 5 years figuring out how to make *big* JavaScript applications work. We've experiences all the ups and downs that you could imagine over that time - big wins, big losses, huge risky moves that failed, big gambles that paid off, and we're learned a heap along the way. As we shift gears on this project and it becomes "the way we do things" at Trade Me, it seems like a good time to reflect upon what we've done, and share some of the lessons we're learning with the wider community.
What went well? What went terribly? What would we definitely change? What would we definitely do again? What do we do next?
Let's talk about JavaScript, web technologies and how our choices impact what we build. Let's discuss people, cultural shift, trade-offs and continuous improvement. And let's look to the future. 🌟