Friday Updates / 2020-09-04

I’m going to try a little experiment for a few weeks and post a short update every Friday about what I’m up to.

I enjoy writing and used to blog here a lot, but family, work, and projects tend to take up a lot of my time these days so I haven’t prioritized blogging for a long time. These short updates are a way to get me back into writing and also serve as a way to stay closer with you all. I’m time-boxing myself to about an hour every Friday to write these so we’ll see how they turn out :).

What I’m working on

At Help Scout, I’ve spent a lot of time recently helping with a big Go To Market (GTM) stategy project. A GTM strategy is a comprehensive plan for launching a new business or growing an existing one. Help Scout has been around for more than 9 years so we have a lot of data that we can use to understand what industries our product resonates in, how features are being used, who the buyers are, how our customers grow over time, etc. All of this can be used to help inform our GTM strategy for the coming years.

At Preceden, I addressed an issue this week stemming from a bug feature in wkhtmltopdf, a tool that converts web pages to PDF files. It’s what Preceden uses to let users export their timelines as PDFs. The problem with it though is that if a webpage contains an image that points to an invalid (404) image, the PDF conversion completely fails. This happens with Preceden because users can paste an image URL into an event’s notes and Preceden will try to display the image. But if the URL doesn’t point to a valid image, the export fails and I get support emails like this:

The link above refers to a World Civilization Preceden timeline that I want to download, but for some reason each time I try, an error message shows “There was an unknown error while processing the download. Please contact support.” I tried on multiple devices, but the same problem persists.

In the past I’ve solved this by parsing the image URLs from event notes and using the FastImage gem to verify that each one is valid. It then caches the results (valid or not valid) for each image and doesn’t attempt to render the image if it’s invalid. Problem is, I permanently cached the results of the validation check. For a timeline that’s been around for years, sometimes the previously valid image URLs become invalid. As a result, a timeline that once exported successfully might eventually start failing, leading to frustration and support tickets.

I addressed it this week by introducing some code that revalidates all of the image URLs in a timeline if an export fails.

Sometimes building a SaaS product is sexy and exciting, but often it’s fixing random issues like this.

I’m still continuing to learn machine learning, probably spending 10-15 hours/week on DataCamp, writing documentation for myself, and building small projects. This week I finished a fantastic course on Dimensionality Reduction in Python. The big idea with dimensionality reduction is that you can often reduce or simplify the inputs to a machine learning model to improve it’s performance and how well it generalizes to new data.

What I’m reading

Stumbled across Ethereum is a Dark Forest on HackerNews. I own a small amount of Ethereum but honestly have no idea how it all works behind the scenes. This article offers a glimpse of what’s going on under the hood. Eventually I’d love to dive into it more.

In that article the author mentions he enjoyed The Dark Forest, a sequl to Cixin Liu’s popular Three Body Problem novel. I read the latter a few months ago and seeing the sequal praised so highly in this post made me pick it up and start reading. Been enjoying it so far.

What else

  • My son is wrapping up his third week of virtual kindergarten today. I give the school a ton of credit, they’re really doing the best they can with it. Just sad that he’s not getting to experience kindergarten like he would in a world without Covid.
  • Speaking of virtual, I attended Microconf’s one day online conference earlier this week. I attended the live ones maybe 5 times in the past, but haven’t been for a few years. Kudos to Rob, Mike, Xander, and the rest of the team for organizing the virtual one this year.
  • If you’re trying to come up with a bilingual baby name, check out, a new baby name generator from a buddy of mine, Bemmu Sepponen. The service recently got a ton of attention and praise on Reddit and HackerNews.
  • And last but not least, I want to recommend Hey, the new email service from Basecamp. I was skeptical at first, but having used it for a few weeks now I’m a huge fan. The combination of their screen out feature and ability to categorize senders as Paper Trail or Feed have drastically reduced the amount of emails I’m exposed to each day, leaving me more time to focus on important things.

I hope this email finds you all well. If anyone wants to catch up sometime, I’d love to jump on a call. Drop me a note at


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s