Software

This is a showcase for some of my personal software projects. You can find out more about my professional accomplishments on LinkedIn.

MiniAASM

aasm do
  state :transmitting, initial: true
  state :waiting_confirmation
  state :terminated

  event :work_succeeded do
    transitions from: :waiting_confirmation, to: :transmitting
    transitions from: :transmitting, to: :waiting_confirmation, guard: %i[hold?]
    # ...

A Finite-state machine library intended to be compatible with lightweight implementations of the Ruby language using 100LOC and only standard libraries. Inspired by Heroku Postgres State Machines.

Github

Alpaca Desktop

Alpaca Desktop Screenshot

Experimental OSX menu bar widget for Alpaca (a local proxy supporting NTLM authentication for command line tools). Built to reduce toil involved in installation and configuration for several hundred engineers.

Github

Forward Proxy

$ forward-proxy --binding 0.0.0.0 --port 3182 --threads 2
[2021-01-14 19:37:47 +1100] INFO Listening 0.0.0.0:3182
[2021-01-14 19:38:24 +1100] INFO CONNECT raw.githubusercontent.com:443 HTTP/1.1

Minimal forward proxy in 150LOC and using only standard libraries. Useful for development, testing, and teaching. Automated tests simulate a range of destination scenarios including slow network, stream responses, and X509 certificates.

Github

React Instagram Feed

React Instagram Screenshot

Simple React component to render a Instagram feed. Used an unofficial client-side integration method to avoid having to use a server-side access token. Archived as a result of Instagram fixing their Cross-Origin-Request policies.

Github

Gomem

import "github.com/jamesmoriarty/gomem"

// Open process with handle.
process, err  := gomem.GetOpenProcessFromName("example.exe")
// Read from process memory.
valuePtr, err := process.ReadUInt32(offsetPtr)
// Write to process memory.
process.WriteByte(valuePtr, value)

A Go library to manipulate Windows processes. Useful for developing process memory based security exploits. Automated tests manipulate and verify its own process memory via Windows APIs.

Github

Cloudformation Cheapest NAT

AWS NAT

Cloudformation for a NAT auto-healing instance running on Spot. Featured in Last Week In AWS.

Github

Gohack

Gohack terminal output

Experimental Go language CSGO computer game exploit. Automated tests use stubbed external processes to avoid needing binary compatibility.

Github

Call Graph

Call Graph presentation slide

A Ruby library to capture execution and create call graphs. Useful for illustrating Law of Demeter violations.

Github

Lisp

$ lisp-repl
ctrl-c to exit
> (begin
(>   (define incf
((>     (lambda (x)
(((>       (set! x (+ x 1))))
(>   (define one 1)
(>   (incf one))
2
>

Minimal Lisp interpreter in 75LOC in Ruby using only standard libraries. Inspired by Google Research Peter Norvig’s Lis.py.

Github

Nebula

A prototype 2D Javascript space shooter. Simple physics, unit behaviors, parallax effects, and particles.

Github

Scorched Earth

A pure JRuby Scorched Earth clone and using only standard libraries. Implemented with an event-driven architecture. Dynamically generates color pallettes utilizing Triad Mixing and CIE94 color distances. Headless automated tests enabled through null pattern graphics context injection.

Github