Java programming involves a good bit of boiler plate code. Everyone knows that. But it also has some great features to help mitigate this. Compile time annotation processing allows developers to hook into the compile phase of a Java program and do all sorts of things. By processing annotated source code, developers can generate code to automate repetitive tasks, clean up the development source, or just make Java easier to deal with. There are many benefits to compile time annotation processors, one of the biggest being reducing runtime dependencies by only generating code that is needed. In this talk, I’ll briefly introduce attendees to Java annotations, and show how they’re processed. I’ll show some examples of where this can be useful for reducing repetitive processes, and build a simple annotation processor.