I just automated a couple common email tasks.
Posted Mon, Mar 18, 2019
I used to use a service to email subscribers updates to my blog. The service broke, but I automated my way around it.
Posted Thu, Mar 7, 2019
I recently ran into a stupid bug in a program written in Haskell and found it much easier to paper over with a few lines of Go than to properly fix.
Posted Wed, Feb 27, 2019
Today I did my second Learning Day; the subject was DIY Games.
Posted Sat, Feb 23, 2019
I automated blowing the cache for this blog. Read on to see how I did it.
Posted Wed, Feb 20, 2019
I recently decided I should learn to use Graphviz more, as a great tool for making certain kinds of plots. Less than a week later a great use case surfaced.
Posted Mon, Feb 11, 2019
This past weekend I started re-creating a tool I used to have, using new tools, techniques, and infrastructure. The tool allows, at least, adding to my own todo list via SMS. It’s working great!
Posted Tue, Feb 5, 2019
At ZR we are working hard to get stuff migrated to Kubernetes, and a big part of that is our cicd pipeline. We have that stable enough that I can explain the major parts.
Posted Wed, Jan 30, 2019
This past weekend I did a learning day that inspired me to try SQLite for indexing my ebooks; it worked!
Posted Mon, Jan 28, 2019
This is the first Learning Day Log I’m publishing, and it’s about Go.
Posted Sat, Jan 26, 2019
I did some work recently that depended on Go interfaces and I found it both straightforward and elegant.
Posted Wed, Jan 23, 2019
I have a tool called The Minotaur that I just rewrote for the third time, and I think, maybe, it’s done.
Posted Mon, Jan 14, 2019
Today I discovered that a lot of people feel alone in how they feel chained, in one way or another, to their phones. I started the fight against that recently and thought my findings might help other people.
Posted Thu, Jan 10, 2019
I recently improved some of my notes tools, most especially around linking to emails.
Posted Tue, Jan 8, 2019
As many do, I am attempting to affect 2019 by picking skills to improve, subjects to learn, ways I hope to improve as a person, and then deriving (hopefully) concrete milestones to benchmark that progress.
Posted Sun, Dec 30, 2018
I recently needed to generate some TLS certificates in Go and trust them. Here’s how I did it.
Posted Sun, Dec 23, 2018
At ZipRecruiter my team is hard at work making Kubernetes our production platform. This is an incredible effort and I can only take the credit for very small parts of it. The issue that I was tasked with most recently was to verify and transform Kubernetes manifests; this post demonstrates how to do that reliably.
Posted Tue, Dec 18, 2018
I’ve been leaning on
go generate at work a lot lately and, when discussing it
with friends, found that they had trouble understanding it. I figured I’d show
some examples to help.
Posted Mon, Nov 19, 2018
Go doesn’t have generics. This isn’t news, but it’s more foundational than many might realize.
Posted Mon, Nov 12, 2018
I’ve been spending some time the past couple of weeks playing with some of my personal Go tools. Nearly everything I did involved concurrency, for a change. I’ll document how I did it and some of the wisdom I’ve gathered from others here.
Posted Mon, Oct 22, 2018
At work I’m building a little tool to write data from AWS Secrets Manager to a directory on disk. I wrote a little package to write the secrets atomically, because that seemed safest at the time. In retrospect just writing each file atomically probably would have been good enough. Code and discussion are below.
Posted Tue, Sep 18, 2018
This year I went to GopherCon. This post is a grab bag of what I thought was interesting and some thoughts on this conference vs others and conferences in general.
Posted Tue, Sep 4, 2018
We spent hours debugging a logging issue Friday and Monday. If you use UUIDs in Perl, you should read this post.
Posted Wed, Jul 25, 2018
I’ve written (and ported) some new tools and thought others might find them useful or inspiring.
Posted Tue, Jul 17, 2018
I’ve always wanted to carefully measure my activity on the computer and recently
built a tool called
make it happen.
Posted Thu, Jul 12, 2018
In my effort to port certain tools to
go I’ve authored another
Posted Thu, Jul 5, 2018
Recently at work we had a minor incident involving exhaustion of the EC2 metadata server on some of our hosts. I was able to get enough detail to delegate the rest to a team to fix the issue.
Posted Thu, Jun 21, 2018
I just wrote some code to make a (hopefully) trustworthy, shared known_hosts file for our whole company. A handy side benefit is that it also grant us hostname tab completion.
Posted Fri, Jun 1, 2018
A few weeks ago when I was reading The Go Programming Language I was reading about buffered channels and had a gut instinct that I could write some code taking advantage of them in a precise way. This was the comical code that came out of it.
Posted Mon, May 14, 2018
Over the past couple months I have had the somewhat uncomfortable realization that some of my assumptions about all programs are wrong. Read all about the journey involving Unix, C, Perl, and Go.
Posted Tue, May 1, 2018
I built a little package for loading Firefox cookies into my Go tools!
Posted Fri, Apr 20, 2018
I recently took Andrew Ng’s Machine Learning class on Coursera; here were my takeaways.
Posted Tue, Feb 27, 2018
For a little over a year at ZipRecruiter we have had some tooling that “fixes” a non-trivial amount of cronspam. Read on to see what I mean and how.
Posted Mon, Feb 26, 2018
I recently added exponential backoff to service startup. Read how here.
Posted Thu, Feb 22, 2018
I recently deleted a couple non-trivial scripts from my dotfiles and I’m proud of that.
Posted Tue, Feb 20, 2018
I recently automated yet another part of my disk usage tool. Read about it here.
Posted Mon, Feb 19, 2018
Yesterday I wanted to graph some data by date but I didn’t want to mess with spreadsheet software or other graphing libraries. I reached for gnuplot after hearing good things over the years. The results were great.
Posted Fri, Feb 16, 2018
I recently stumbled upon a pattern that motivates me to write little scripts in Go instead of my normal default. I was surprised at some of the benefits.
Posted Fri, Jan 12, 2018
I have used Hugo, the blog engine this blog runs on top of, more and more lately for less and less typical use cases. Hopefully this post will inspire others in similar ways.
Posted Tue, Jan 2, 2018
I recently came up with the most satisfying way to edit registers in Vim I’ve ever seen. I hope you like it as much as I do.
Posted Fri, Oct 20, 2017
Posted Mon, Oct 16, 2017
Recently at ZipRecruiter I implemented a tool to ensure that we know if some service is crashlooping. It was really easy thanks to Upstart but it took almost a whole day to get just right.
Posted Mon, Sep 25, 2017
Yesterday I spent a little over an hour finally figuring out how to detect a file based on its contents in vim. It’s pretty easy!
Posted Wed, Sep 20, 2017
Recently my coworker Andy Ruder was complaining that he often reached for grep when filtering JSON, and I offered to give him some tips. This post is an expansion of what I told him.
Posted Mon, Sep 18, 2017
I use Vim quite a bit and fairly heavily, so I run into a good amount of bugs. I’ll share a couple tricks I’ve learned that help debug vim.
Posted Fri, Sep 8, 2017
Recently I spent time figuring out why sending items to our message queue often took absurdly long. I am really pleased with both my solutions and my methodogy, maybe you will be too.
Posted Sun, Aug 20, 2017
This post is the seventh in my series about supervisors and I’m discussing some ideas that I’ve had while writing this series.
Posted Wed, Aug 2, 2017
This post is the sixth in my series about supervisors. I’ll spare you the recap since it’s getting silly at this point. This post is about readiness protocols.
Posted Mon, Jul 31, 2017
This post is the fifth in my series about supervisors. The first two posts were about traditional supervisors. The third was about some more unusual options. The fourth was about the current most popular choices. This post is about some of the unusual trends I’ve noticed during my three year long obsession with supervisors.
Posted Wed, Jul 26, 2017
This is the latest in my apparently unending series about supervisors. While the first two posts were about “traditional supervisors,” the third was about a few odd variants, both good and bad. This post is about the current reigning champions: Upstart and systemd.
Posted Mon, Jul 24, 2017