profile pic

Jim Moore's Open Source

Below is a collection of some of my recent open source work and public presentations.

My Projects
These are projects that I open-sourced and have proven useful to others.

Git Process

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.

View details »

Gradle Defaults

Plugin providing opinionated defaults for Gradle builds, making it easier to use some useful plugins, and coordinating between plugins.

View details »

Groovy Examples

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.

View details »

My Boxen

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.

View details »

Other Projects
These are projects that I don't "own" but have been a significant contributor to.

Grabbit

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.)

View details »

Grabbit CLI

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.

View details »

Jackalope

An in-memory implementation of the JCR with stubbing capabilities for Apache Sling, allowing for easy unit testing of AEM/Sling services.

View details »

Gradle SCR Plugin

This makes it easier to work for with the Felix SCR annotations for Gradle and OSGi Declarative Services.

View details »

Gradle CQ Package Plugin

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".

View details »

Gradle CQ Bundle Plugin

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.

View details »

Technical Presentations
Technical presentations I have given publicly in the last few years. HTML5-based, use the arrow keys to navigate.

Git Made Simple

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.

View details »

2016-07 Cool Stuff

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.

View details »

2016-07 Open Source for AEM

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.

View details »

Boxen Overview

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.

View details »

Spock - Making TDD and BDD More Logical

Introduction to the Spock testing framework, showing its capabilities beyond JUnit, Mockito, etc.

View details »

Adobe CQ/AEM Tech Stack Overview

An engineer-level overview of the technologies in the Adobe Experience Manager platform.

View details »