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!