Below is a collection of some of my recent open source work and public presentations.
A number of Ruby scripts to make it easier to work with Git for large and small teams. Focus is on simple continuous integration even where there are many (dozens) of feature branches going on at a time.
Plugin providing opinionated defaults for Gradle builds, making it easier to use some useful plugins, and coordinating between plugins.
A large selection of examples of Groovy techniques, tools and idioms implemented as tests. Has been used over the years to help mentor people new to Groovy, encouraging them to try how making changes influences how Groovy behaves.
Personal template for Boxen, a way of managing OS X with Puppet. While I have largely started to deprecate this in favor of custom scripts and dotfiles (Puppet has been just too heavy for managing a small handful of machines), there are some really cool things in here that I haven't found a great alternative to.
Tool to efficiently copy content between instances of Adobe Experience Manager (AEM). The tools provided by Adobe and the Apache Software Foundation could not meet our needs, so we had to create Grabbit. (I am not the primary developer for this, however I am one of the primary architects and technical leads.)
A cross-platform command-line interface for Grabbit. Besides providing important capabilities, was also an opportunity to try the techniques in "2016-07 Cool Stuff", below.
An in-memory implementation of the JCR with stubbing capabilities for Apache Sling, allowing for easy unit testing of AEM/Sling services.
This makes it easier to work for with the Felix SCR annotations for Gradle and OSGi Declarative Services.
A Gradle plugin that provides extensive capabilities for interacting with the Apache Jackrabbit Vault system used by Adobe Experience Manager to install code and content.
For much more detail on how this works, see the blog entries I wrote on file formats and system behavior at "AEM 6.1 Package Manager Metadata Files" and "AEM 6.1 Packages and Bundles - Installing and Uninstalling Behavior".
Provides support for easily interacting with Apache Sling and Adobe Experience Manager instances using Gradle, particularly with regard to installing, starting/stopping OSGi bundles, etc.
A very popular presentation on the concepts and data-structures underlying Git, meant for novices and advanced users alike. There's a strong focus on understanding how all the pieces fit together to not only understand what Git is doing, but also lay the groundwork for other core principles of distributed computing.
Knowledge-sharing of some of the interesting technologies (mostly on the JVM) that I had been experimenting with. Includes things like Lombok, Checker Framework, Reactive Streams, softened throws, Capsule packaging, JDK 8, Either, AsciiDoclet, typed builders, etc.
Presentation to Adobe's Developer conference giving an overview of what I was able to get Time Warner Cable to open-source for the Adobe Experience Manager community.
Shows how to manage workstations using Git and Puppet using GitHub's "Boxen" project. Explains the benefits of bringing "infrastructure as code" to your workstation, core Puppet concepts, and the important ways that an OS X workstation is different than a standard server system.
Introduction to the Spock testing framework, showing its capabilities beyond JUnit, Mockito, etc.
An engineer-level overview of the technologies in the Adobe Experience Manager platform.