Skip to content

Instantly share code, notes, and snippets.


So, You Want to be a Systems Engineer

Systems Engineering (also known as Infrastructure Engineering, Operations Engineering, or DevOps) is a challenging but rewarding career path. Because Systems Engineering draws from a wide variety of smaller topics, it can be hard to know where to start and in what order to begin. This resource is intended to give you a sketch of some of the learning-paths that that can lead you to a career in Systems Engineering.

What do I need to know?

To start, let's examine a high-level list of topics that established systems engineers should have knowledge of. In each of these topics, the level of depth required to get started as a systems engineer may vary, but it's good to have a general breadth of knowledge on all of these topics.

These lists are not exhaustive, rather a good starting point to gain general knowledge.

davemo /
Created Jan 30, 2019
Convert HAML to ERB across a folder on Mac OS


  1. install herbalizer somewhere on your PATH, i put mine in ~/bin

cd ~/bin && wget && chmod +x herbalizer

  1. do a dry run to see if your renames look ok

find . -name '*haml' | xargs ruby -e 'ARGV.each { |i| puts "herbalizer < #{i} > #{i}.erb" }'

davemo /
Last active May 29, 2018
I have a list of short takeaways from each talk that capture the most valuable lesson for me.

Allison Parrish: There is great beauty in applying scientific concepts (interpolation) and the scientific method to domains that we wouldn't normally think to (syntax, grammar, poetry).

Anjana Vakil: Language matters, and has historically evolved to meet the needs of its speakers; we need to be better at helping the language in the domain of computing evolve beyond where it is currently being held back.

Augie Fackler: API design can (and should) be decoupled from API implementation; this decoupling can provide a valuable articulation point that yields flexibility in the right areas without compromising on principles.

Elle Vargas: We need to embrace the technical neophytes (or Juniors) mindset in our organizations, because they are best equipped to bridge the gap between people with little to no technical background and experts; failure to do this leads to security compromises on the scale of the manipulation of democracy.

Gary Bernhardt: The technical community needs to be aware of the altruisti

davemo /
Last active Apr 25, 2018
My Notes for talks from ForwardJS Ottawa 2018

ForwardJS Ottawa, April 4/5, 2018


Andy Mockler (@asmockler), Shopify Analytics Team, Chicago

inspirational sources:

  • book: Essentialism by Greg McKeown

key concepts:

  • essentialism is about getting the right things done

Keybase proof

I hereby claim:

  • I am davemo on github.
  • I am dmosher ( on keybase.
  • I have a public key ASAjl7nZA81gfQd-iomz3uGBjmQfBlYnEOEnehGNxILLGgo

To claim this, I am signing this object:

davemo /
Created Apr 12, 2017
bumps versions, tags and pushes with git
# works with a file called VERSION in the current directory,
# the contents of which should be a semantic version number
# such as "1.2.3"
NOW="$(date +'%B %d, %Y')"
davemo / Makefile
Last active Apr 12, 2017
makefile with helpful default targets!
View Makefile
VERSION ?= $(shell cat VERSION)
.PHONY: help version clean bump release
build: ## build the app
do stuff
clean: ## clean artifacts
davemo / Dockerfile
Created Mar 22, 2017
nodenv exits with a 1 value with vanilla docker image with missing deps
View Dockerfile
FROM ubuntu:xenial
MAINTAINER Test Double <>
RUN apt-get -y update
RUN apt-get -y install git-core
ENV NODENV_ROOT /usr/local/lib/nodenv
RUN git clone ${NODENV_ROOT}
RUN git clone ${NODENV_ROOT}/plugins/node-build
RUN git clone ${NODENV_ROOT}/plugins/nodenv-update

HOTS Map Breakdowns

As transcribed by watching Dreadnaughts twitch breakdown here:

Towers of Doom

  • Medium/Large map (tri-lane)
  • Laning Phase: 1-1-3 (alternatively, 1-4 roaming mid/bot for 4)
    • Bottom lane prioritized: merc camps push bot lane and can get core shots
    • Top lane is safe lane
davemo / login.emmet
Last active Jan 12, 2016
A mythical language that doesn't exist, that is whitespace aware emmet/zencoding
View login.emmet
input[type=text name=username placeholder=username ng-model=credentials.username required]
input[type=password name=password placeholder=password ng-model=credentials.password required]