Jim Moore's Open Source
Below is a collection of some of my recent open source work and public presentations.
The Five Biggest AI Transformation Traps: Do This, Not That
Five mistakes I keep watching us make — and make myself — as AI changes how we build software and run technology organizations. Not a talk about prompts, frameworks or models, and not an argument for using less AI: each trap is a place where something got dramatically faster and ran into a human system nobody had written down. Every one ends on a question you can use on Monday.
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.
2019 UberConf Highlights
Highlights and learnings from UberConf 2019, covering interesting talks, technologies, and trends from the conference.
Kotlin Intro
Introduction to the Kotlin programming language, covering its syntax, features, and advantages over Java for JVM development.
Kotlin Coroutines
Deep dive into Kotlin coroutines, exploring how to write efficient asynchronous code and the patterns for structured concurrency.
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.
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.
Spock - Making TDD and BDD More Logical
Introduction to the Spock testing framework, showing its capabilities beyond JUnit, Mockito, etc.
Adobe CQ/AEM Tech Stack Overview
An engineer-level overview of the technologies in the Adobe Experience Manager platform.
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.
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.
Gradle Defaults
Plugin providing opinionated defaults for Gradle builds, making it easier to use some useful plugins, and coordinating between plugins.
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.
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.
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.)
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.
Jackalope
An in-memory implementation of the JCR with stubbing capabilities for Apache Sling, allowing for easy unit testing of AEM/Sling services.
Gradle SCR Plugin
This makes it easier to work for with the Felix SCR annotations for Gradle and OSGi Declarative Services.
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".
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.
