Skip to content
View tedivm's full-sized avatar




@tedious @github-beta @screepers @LeagueOfAutomatedNations @ScreepsMods @gitconsensus @multi-py @scp-data
Block or Report

Block or report tedivm

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse

Robert Hafner's Projects

Terraform in Depth

Terraform in Depth

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.

Open Source Portfolio

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 56 repositories have 712 forks, 3524 stars, 278 watchers, and 5477 commits.

My professional history can be found on LinkedIn.

Project Templates

  • Rob's Awesome Python Template Rob's Awesome Python Template - This is the complete CookieCutter template for Python that can be used for any project.
  • Terraform Module Cookiecutter Terraform Module Cookiecutter - This CookieCutter Template generates Terraform Modules with all the best practices and tools.
  • tedivms-flask 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.


  • Nebula 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 - 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 - GithubOrganizer applies settings to teams, repositories, and issues- automatically protecting branches, applying labels, and assigning issues to projects.
  • BadThings Slack Bot 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 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 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 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 python-celery - Multiarchitecture Docker Containers for Python with Celery
  • python-uvicorn python-uvicorn - Multiarchitecture Docker Containers for Python with Uvicorn
  • python-gunicorn python-gunicorn - Multiarchitecture Docker Containers for Python with Gunicorn
  • python-gunicorn-uvicorn python-gunicorn-uvicorn - Multiarchitecture Docker Containers for Python using Gunicorn and Uvicorn
  • python-oso python-oso - Multiarchitecture Docker Containers for Python with OSO

Python Development

These tools were specifically designed to make development with Python easier.

  • Python Lockfile Update Python Lockfile Update - A Github Action that uses pip-tools to update a project's requirements.txt files using a Pull Request.
  • Paracelsus Paracelsus - Generate Entity Relationship Diagrams in Mermaid or Dot format for SQLAlchemy Databases.

Digital Art

  • Game of Life Game of Life - A Game of Life implimentation with additional rules and varients that add colors, written in javascript using canvas.
  • Formations Formations - An experiment in digital movement.
  • Good Guy Warren Good Guy Warren - An Elizabeth Warren Meme Collection. Memes are built using JS Canvas.


  • Stash 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 JShrink - This library minifies javascript using 100% pure PHP, allowing it to be integrated into applications with minimal work and maximum compatibility.
  • - This library is a wrapper around the library, giving it the ability to build GitHub Applications.
  • Fetch Fetch - This library wraps the native PHP IMAP libraries around a modern object orientated interface.
  • QuasiQueue QuasiQueue - A MultiProcessing library for Python that makes it super easy to have long running MultiProcess jobs.


  • GitConsensus CLI GitConsensus CLI - A standalone python application and library for managing Github PRs using Reactions as a voting mechanism.
  • JSONSmash JSONSmash - A node cli shell that lets users browse large json objects like they would a filesystem.
  • SecretCLI SecretCLI - A simple CLI tool that makes reading and writing to the AWS Secrets Manager super easy.
  • URLParser 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 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-aws-nat terraform-aws-nat - This module launches a NAT Instance on AWS for cheap and efficient private subnet internet access.
  • terraform-aws-dev-vpn 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 terraform-aws-lambda - This module provides a variety of ways to deploy Lambda functions on AWS.
  • terraform-general-cloudinit terraform-general-cloudinit - This module is a wrapper around the cloudinit resource that exposes cloud config settings directly.
  • Terraformer Terraformer - A Python library for running Terraform programmatically, including plan review and advanced log processing.


  • psad psad - This module controls the Port Scan Active Defense program, providing active response to block port scans.
  • rsnapshot 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 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 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 inspiricd - This module allows IRC networks and servers to be defined using inspircd.
  • iscsi 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 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 Slack Proxy - This simple to deploy application allows developers to send notifications to slack without having to manage webhooks directly themselves.
  • NLM Scrubber Assist 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 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 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 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 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 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 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 screeps_console - This ncurses based terminal application provides a standalone console for the Screeps world.
  • screeps_notify 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 screeps-stats - Using a reverse engineered API this project takes data saved inside the game “Screeps”, transforms it and injects it into elasticsearch.
  • Spawn1 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 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 screeps-backup - This tool takes a backup of an existing account's memory and segments and provides the ability to restore from those backups.


  1. tedious/Stash tedious/Stash Public

    The place to keep your cache.

    PHP 957 134

  2. tedious/JShrink tedious/JShrink Public

    Javascript Minifier built in PHP

    PHP 747 152

  3. tedivms-flask tedivms-flask Public template

    Flask starter app with celery, bootstrap, and docker environment

    CSS 216 30

  4. robs_awesome_python_template robs_awesome_python_template Public

    A Highly Configurable Python Project Template for Modern Python Projects

    Python 114 6

  5. quasiqueue quasiqueue Public

    Multiprocessing Queues Made Easy

    Python 96 2

  6. paracelsus paracelsus Public

    Visualize SQLAlchemy Databases using Mermaid or Dot Diagrams.

    Python 80 7