Extensibility in Go
Recently I’ve come across some code that allows extensibility in some ways that are limiting.
Posted Wed, Aug 14, 2019
Generics in Go, via Contracts
The newest Contracts proposal was published just a few days ago. I read it in full and have a few thoughts.
Posted Sat, Aug 3, 2019
Making My Notes Easier to Reference
I made a man
-like tool to reference my notes. It’s great.
Posted Mon, Jul 15, 2019
The Tyranny of Easy Things
I have some thoughts about personal time management.
Posted Tue, Jul 9, 2019
Nesting Middleware in Go
I recently, finally, figured out how to properly nest middleware in Go.
Posted Mon, Jul 8, 2019
Unreliable Cronjobs
At work we’ve been working on monitoring our cronjobs better; armed with some of the knowledge of how to do this I have made some incredibly unreliable cronjobs much more reliable.
Posted Tue, Jun 25, 2019
Productive Weekend
I got a bunch of random stuff done this weekend.
Posted Mon, Jun 17, 2019
AwesomeWM Agenda
I built a neat little widget for AwesomeWM that shows my agenda beneath my calendar.
Posted Tue, Jun 11, 2019
Getting Carried Away
This weekend I spent probably ten hours trying to make something work a hard way and Monday at work Rob pointed out a solution that worked in about five minutes.
Posted Mon, Jun 10, 2019
Introducing Charitable: XMonad-like Tag Management for AwesomeWM
I am announcing a library for AwesomeWM that provides XMonad-like tag management.
Posted Wed, Jun 5, 2019
Code Search for Go
For a long time I’ve been disappointed by github’s code search functionality and the disappearance of other tools that used to do the same thing. This weekend I came up with a scrappy solution that meets my needs.
Posted Mon, Jun 3, 2019
go/types package
This past weekend I spent some time playing with the go/types
package. It was
pretty cool!
Posted Tue, May 21, 2019
AwesomeWM II
I just switched back to AwesomeWM. I used AwesomeWM from 2012 to 2017, so this almost feels like a relief.
Posted Mon, May 20, 2019
Stupid Default Alerts for cronjobs
Today I whipped up an initial default set of cronjobs for all of our teams at ZipRecruiter. It was almost trivial and will get most teams started on at least not-terrible alerting. Neat.
Posted Wed, May 15, 2019
Deploying to AWS Lambda with ZR CI/CD
On Friday I got started on a very basic set of tools to deploy code to lambda easily.
Posted Tue, May 14, 2019
Leatherman: Using `go generate`
This weekend I updated the leatherman’s code to be a little more automated,
using go generate
and some nice parsing tooling.
Posted Mon, May 13, 2019
The Go Errors Proposal
Last week I sorta dove into the proposed interfaces for errors that will probably come out with Go 1.13. This is my experience.
Posted Wed, May 8, 2019
The Easiest Way to Use Go from Source
Recently I saw someone suggest using the unreleased version of Go, without the magically easy way to do it. Here’s how.
Posted Fri, May 3, 2019
A Custom Supervisor to Solve Weird Problems
Tuesday at work I finished work on a very specialized supervisor that I started on Monday.
Posted Thu, Apr 25, 2019
uBlock Origin for a More Civilized Web
I set up some dynamic uBlock filters to fix a broken website.
Posted Wed, Apr 17, 2019
Prometheus cloudwatch-exporter Examples
Today I spent a few hours figuring out how to integrate Prometheus with AWS.
Posted Mon, Apr 15, 2019
Lag from Timers in Go
I noticed that timers in Go aren’t perfect.
Posted Thu, Apr 11, 2019
Prometheus Conveniences
At ZipRecruiter we are working towards migrating to a Prometheus as a more modern monitoring solution. I have found it pretty pleasant, so far.
Posted Wed, Apr 10, 2019
Learning Day: Recovery
This weekend I did one of my learning days but instead of my preferred aggressive pace I took it a little easier.
Posted Mon, Apr 8, 2019
Optimizing my Workflow for Go
I spent about four hours programming on a plane last week; thanks to good tools it was fun and easy.
Posted Wed, Apr 3, 2019
Testing in Go
This weekend I wrote a bunch of “happy path” tests in Go.
Posted Thu, Mar 28, 2019
Reading Code
I enjoy reading code and want to talk about it.
Posted Tue, Mar 26, 2019
Sorting Books
I wrote a little program to sort lists of books.
Posted Thu, Mar 21, 2019
Automating Email
I just automated a couple common email tasks.
Posted Mon, Mar 18, 2019
How to Add a Subscription Service to Your Blog
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
Fixing Buggy Haskell Programs with Go
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
Learning Day 2: DIY Games
Today I did my second Learning Day; the subject was DIY Games.
Posted Sat, Feb 23, 2019
Busting the Cloudflare Cache
I automated blowing the cache for this blog. Read on to see how I did it.
Posted Wed, Feb 20, 2019
graphviz describing multi-stage docker builds
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
Amygdala
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
Deploying to Kubernetes at ZipRecruiter
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
Full Text Search for ebooks
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
Learning Day 1: go
This is the first Learning Day Log I’m publishing, and it’s about Go.
Posted Sat, Jan 26, 2019
Go Interfaces
I did some work recently that depended on Go interfaces and I found it both straightforward and elegant.
Posted Wed, Jan 23, 2019
The Evolution of The Minotaur
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
Self-Control on a Phone
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
Updates to my Notes Linking Tools
I recently improved some of my notes tools, most especially around linking to emails.
Posted Tue, Jan 8, 2019
Goals for 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
Self-Signed and Pinned Certificates in Go
I recently needed to generate some TLS certificates in Go and trust them. Here’s how I did it.
Posted Sun, Dec 23, 2018
Validating Kubernetes Manifests
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
go generate: barely a framework
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
Go doesn’t have generics. This isn’t news, but it’s more foundational than many might realize.
Posted Mon, Nov 12, 2018
Go Concurrency Patterns
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
Atomically Directory Population in Go
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
GopherCon 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