For the past couple of months, I’ve been working on Sheepdoge, a tool for managing your personal Unix machines with Ansible. It’s like boxen, but for Ansible. One new sheepdoge feature I’m particularly excited about is the use of concurrent.futures during sheepdoge install. concurrent.futures provides a high-level API for executing code asynchronously, making adding thread/process based concurrency trivial. It is a standard library python module as of 3.2, and is available on python 2.
It’s not often that academia analyzes the unix tools we use everyday. But rsync is one fortunate exception as Andrew Tridgell not only wrote rsync while pursuing his PhD, but also published a short and accessible paper outlining its inner workings. While I’d highly encourage reading the entire paper, I took away one major tl:dr; from the rsync algorithm: be lazy. This lesson will be applicable anytime I write performance conscious code.
Few programming experiences are more informative or rewarding than meaningfully contributing to open-source software. However, even programmers with strong technical skills can experience discouragingly high barriers to entry when contributing to a new project. This barrier to entry feels particularly high for the popular, high-velocity projects. Unfortunately, these projects are often those which first catch the eye, and attract us to open source. Overwhelming. Perhaps Steve Harvey shows it best…
Like over 3 million Americans, I struggle with OCD. OCD has impacted, and probably always will in some capacity impact, my life a lot. Unfortunately, software engineering, both my career and one of my favorite hobbies, is no exception. What is OCD? via GIPHY Everyone who suffers from OCD has a different experience. For me, OCD manifests as certain distorted thoughts sticking in my brain. These sticky thoughts are typically catastrophic events touching on some of my deepest fears and most cherished values.
Running ElasticSearch locally - its not so bad… right? For such a powerful distributed system, running ElasticSearch locally is surprisingly doable. Assuming you already installed Java on your machine - and set up the appropriate apt repositories if you are on Debian - a simple [brew|apt-get] install will do the trick. Run elasticsearch with the appropriate configuration from the command line, and curl http://localhost:9200/ should show your local instance is up and running.
Like many others, I’ve spent the last couple of weeks since the election thinking a lot about new ways to empower and amplify all the voices fighting for justice. While it’s not easy to know what to do in a situation like the one we find ourselves in, I’m reminded of words from Bryan Stevenson, a civil rights lawyer, who spoke at my graduation back in June. His entire speech was insightful and inspiring, and one particular request stuck with me: get proximate.
I’ve had the pleasure of working at Flatiron Health since August 2016. Some of the biggest lessons I’ve learned have related to participating in effective code reviews. I wrote up some of my learnings in a blog post for Flatiron’s Engineering Blog. Hope you enjoy (and check out some of the other great content written by other Flatiron engineers on the blog)!
Over the course of my final year at Williams College, I spent a lot of time working on a distributed systems thesis with Professor Jeannie Albrecht. My thesis is entitled “Predictive Pod Auto-scaling in the Kubernetes Container Cluster Manager”, and it is entirely open-source. The written portion, presentation slides, and evaluation code can be found on my Github. Additionally, our contributions to Google’s open-source cluster container manager Kubernetes can be found on my fork.