I build cloud-based systems for startups and enterprises. My background in operations gives me a unique focus on writing observable, reliable software and automating maintenance work.
I love learning and teaching about Amazon Web Services, automation tools such as Ansible, and the serverless ecosystem. I most often write code in Python, TypeScript, and Rust.
B.S. Applied Networking and Systems Administration, minor in Software Engineering from Rochester Institute of Technology.
This past week I gave a talk on Flask at Python Buffalo with no slides. Not only did I skip slides; I made the whole presentation one big live demo application. Yes, I said to myself, tempt gods that would mock the hubris of the live demo.
Watching people type is booooring. Typos are about as interesting as a text-wall Powerpoint slide – which is to say not. To avoid exposing how poor a typist I am, I built the demo ahead of time and made a commit for each step. The repo looked something like this.
$ git log --oneline
4d4e1ac Add requirements.txt to document dependencies
b5d164d Add display of the existing lunches
77ecb81 Add model for lunch storage
8111913 Add endpoint to receive form submission
307b40f Add lunch form, but it fails! why?
9904143 Demonstrate template inheritance index.html < base.html
05446fd Add a conditional (if statement)
194ed86 Use a real template
9f31419 Serve real HTML!
6517faa use flask's magic jsonify
e06dcab Initial "lunch" app
9ec9cdf Add gitignore
74c5e86 initial commit
Now, I needed a way to hop to the next commit easily. I could have made
branches on each commit (eww, manual), or checked the next commit out by hash
every time (the point was less error-prone typing). Instead, I added a simple
alas to my .zshrc
to advance to the next child commit.
alias gchild='git checkout $(git log --ancestry-path --format=%H ${commit}..master | tail -1)'
With that in place, I started Flask with debug=True
to reload changes and
used vim to show changes and explain as each feature was added to the
application.
I’d absolutely recommend git as a presentation tool for any code-heavy presentations; it lets you track your own changes, share your source material with anyone, and avoids copying code into slides.