My new book, Terraform in Depth, is now in the Manning Early Access Program! The early access program isn't just a preview of the book: you'll get access to live forums where you can provide feedback, ask questions, or even just chat! Whether you're brand new to Terraform or are looking to take your team to the next level this book will have something for you! Use coupon code mlhafner
for 45% off.
Here's a selection of projects that I've open sourced over the years. There's a variety of applications, infrastructure as code modules, libraries from various languages, and even some game development.
These 58 repositories have 720 forks, 3662 stars, 282 watchers, and 5518 commits.
My professional history can be found on LinkedIn.
- Rob's Awesome Python Template - This is the complete CookieCutter template for Python that can be used for any project.
- Terraform Module Cookiecutter - This CookieCutter Template generates Terraform Modules with all the best practices and tools.
- tedivms-flask - This is my default Flask project template. It contains a complete docker environment, user management system, API system, Celery worker and tasks, and other important modules in addition to a Bootstrap based front end.
- TofuPy - A Python library that makes it easy to build tools around OpenTofu and Terraform.
- QuasiQueue - A MultiProcessing library for Python that makes it super easy to have long running MultiProcess jobs.
- Paracelsus - Generate Entity Relationship Diagrams in Mermaid or Dot format for SQLAlchemy Databases.
- Stash - This caching library supports multiple backends with a consistent frontend. It supports hierarchical keys, stampede and dogpile protection, automatic miss distribution, and more.
- JShrink - This library minifies javascript using 100% pure PHP, allowing it to be integrated into applications with minimal work and maximum compatibility.
- Nebula - Nebula provides a simplified dashboard that allows researchers to launch and manage their own servers on AWS. It also provides SSH Key management, scheduled shutdowns, group controls, and a variety of other features.
- GitConsensus - GitConsensus makes it possible to automate project governance on GitHub by using “reactions” as a voting mechanism to automatically merge (or close) pull requests.
- GithubOrganizer - GithubOrganizer applies settings to teams, repositories, and issues- automatically protecting branches, applying labels, and assigning issues to projects.
- BadThings Slack Bot - The Bad Things Daily Twitter account provides scenarios for tabletop disaster planning. This application sends random scenarios right to Slack.
- League of Automated Nations - This web application is an alliance tracker for a programming game called Screeps. It maintains rankings as well as an interactive map showing which rooms are claimed by different players and alliances.
- GitStars - A Github API aimed at Front End use. This API uses extensive caching and authenticated APIs to work around Github API Ratelimiting. It drives the Github Star Badges on my portfolio site.
- ec2details - This service provides an API with metadata (including pricing) for every AWS EC2 instance type. It processes the AWS Bulk API to multiple times a day to always provide the most up to date information.
Multi-Py is a collection of python images with amd64, arm64, and arm v7 support.
- python-celery - Multiarchitecture Docker Containers for Python with Celery
- python-uvicorn - Multiarchitecture Docker Containers for Python with Uvicorn
- python-gunicorn - Multiarchitecture Docker Containers for Python with Gunicorn
- python-gunicorn-uvicorn - Multiarchitecture Docker Containers for Python using Gunicorn and Uvicorn
- python-oso - Multiarchitecture Docker Containers for Python with OSO
These tools were specifically designed to make development with Python easier.
- Python Lockfile Update - A Github Action that uses pip-tools to update a project's requirements.txt files using a Pull Request.
- Game of Life - A Conway's Game of Life implimentation with additional rules and variants that add colors, written in javascript using canvas.
- Formations - An experiment in digital movement.
- Rob's Wall Clock - A hardware project building an internet enabled clock with a colorful variant of Conway's Game of Life as a background.
- Good Guy Warren - An Elizabeth Warren Meme Collection. Memes are built using JS Canvas.
- github3apps.py - This library is a wrapper around the github3.py library, giving it the ability to build GitHub Applications.
- Fetch - This library wraps the native PHP IMAP libraries around a modern object orientated interface.
- GitConsensus CLI - A standalone python application and library for managing Github PRs using Reactions as a voting mechanism.
- JSONSmash - A node cli shell that lets users browse large json objects like they would a filesystem.
- SecretCLI - A simple CLI tool that makes reading and writing to the AWS Secrets Manager super easy.
- URLParser - Another really simple tool, the URLParser takes in various URIs and returns back the piece you're looking for; such as the scheme, domain, or port.
- DapperData - An opinionated file formatter for JSON and YAML that can be used to fix formatting or integrated into the test suite to ensure files are formatted appropriately.
- terraform-mastodon-provider - A Terraform provider for posting to Mastodon servers.
- terraform-aws-nat - This module launches a NAT Instance on AWS for cheap and efficient private subnet internet access.
- terraform-aws-dev-vpn - This module creates a user specific AWS VPN and drops an OpenVPN configuration file to the local system.
- terraform-aws-lambda - This module provides a variety of ways to deploy Lambda functions on AWS.
- terraform-general-cloudinit - This module is a wrapper around the cloudinit resource that exposes cloud config settings directly.
- psad - This module controls the Port Scan Active Defense program, providing active response to block port scans.
- rsnapshot - This advanced rsnapshot module makes backing up servers trivial. SSH keys and accounts are created, as are wrapper scripts around sudo to prevent opening the root account to ssh.
- ghebackups - This module turns a server into a Github Enterprise backup server. It creates the relevant accounts, adds cronjobs, and manages ssh options to ensure that backups occur.
- hieratic - This module makes all of the native datatypes present in Puppet accessible directly using Hiera in order to make testing and prototyping faster.
- inspiricd - This module allows IRC networks and servers to be defined using inspircd.
- iscsi - This module makes it possible to define iscsi connections in Puppet. This makes it easier to work with AWS Storage Gateways and other iscsi devices.
- Jekyll Portfolio - The theme behind this very portfolio is available for you to use to build your own portfolio site with Jekyll and Github Pages.
- Slack Proxy - This simple to deploy application allows developers to send notifications to slack without having to manage webhooks directly themselves.
- NLM Scrubber Assist - The NLM Scrubber is a package released by the National Library of Medicine to remove PHI from medical documents. This project wraps that in a docker container and provides python and bash libraries.
- HeadedHome - Using an IOT Button as a trigger, this Lambda function estimates my time of getting home from work based off of current public transit times and sends a text to both myself and my partner with that ETA.
- syntaxhighlighter_yaml - This Wordpress Plugin adds YAML Syntax Highlighting.
Screeps is an an open-source sandbox MMO RTS game for programmers, wherein the core mechanic is programming your units' AI.
- Quorum - The Quorum project is an experiment that uses Screeps, GitConsensus, and the ScreepsAutoSpawner to see what happens when the community has to vote to accept new pull requests- and any vote that passes gets pulled. It initially started as being written primarily by me and overtime has gotten more community involvement.
- ScreepsAutoSpawner - This program checks the Screeps world to see if the player is still alive, and if not it automatically respawns them into the world. This requires scanning the world to find appropriate locations, scoring them, and then placing the first spawn automatically in the selected room.
- ScreepsDashboard - This dashboard was created for the Quorum project and lets the public view all of the otherwise hidden Screeps player information. This application exposed wallet, memory, segment, and console data (which gets stored in ElasticSearch to allow querying of historic data).
- python-screeps - This library was the first third party library for the Screeps API and has been responsible for spawning a large third party ecosystem.
- screeps_console - This ncurses based terminal application provides a standalone console for the Screeps world.
- screeps_notify - This bridges the Screeps world with the real world by allowing users to send notifications programmatically from in game to a number of providers, including Text Messages and Slack Notifications.
- screeps-stats - Using a reverse engineered API this project takes data saved inside the game “Screeps”, transforms it and injects it into elasticsearch.
- Spawn1 - This is a mobile client for the Screeps game built using NativeScript. It has a built in messenger, profiles of different alliances, a websocket based console for interacting with the system, and other informational pages such as the wallet and market order pages.
- screepsmod-konami - Konami is a Screeps Server mod that changes the world settings to allow AI to grow significantly faster. This makes development easier as longer term issues will show up in smaller amounts of time.
- screeps-backup - This tool takes a backup of an existing account's memory and segments and provides the ability to restore from those backups.