Will Larson's Blog, page 33

November 10, 2019

Using Cloud Firestore to power a Slack app.

Continuing from Make Slack app respond to reacji, it's time to actually store and retrieve real data instead of relying on stubbed data. We'll be building on Google Cloud Firestore, which is a NoSQL database offered on GCP.

By the end of this post our /reflect commands and :ididit: reacji will get recorded properly, and each call to /recall and visit to the App Home view will return real data as well.

post starts at commit 08eb and ends at commit 4584

Slack app in Python series Creating a Slack App in Python on GCP Adding App Home to Slack app in Python Make...
 •  0 comments  •  flag
Share on Twitter
Published on November 10, 2019 06:00

November 9, 2019

Make Slack app respond to reacji.

This post continues the series on creating a Slack app in Python, picking up after adding an App Home view. A lot of the subtle, emergent communication patterns within Slack happen by reacting to messages with emoji, and I thought it would be fun to take advantage of that playfulness within the app we're building.

post starts at commit 4120, and ends at commit 08eb

Slack app in Python series Creating a Slack App in Python on GCP Adding App Home to Slack app in Python Make Slack app respond to reacji Using Cloud Firestore to power a Slack...
 •  0 comments  •  flag
Share on Twitter
Published on November 09, 2019 05:00

November 8, 2019

Adding App Home to Slack app in Python.

Building on Creating a Slack App in Python on GCP, I wanted to continue extending reflect-slack-app to include an App Home.

The App Home screen allows each user in a workspace to have a personalized view powered by the app, which the app can use to share whatever data or interactions (buttons, etc) they want. Want to let folks configure their settings for your app? You can! Want to let folks see their most recent activity? You can! Want to let users know the current status on all open projects? You can!

The functionality is...

 •  0 comments  •  flag
Share on Twitter
Published on November 08, 2019 06:00

November 6, 2019

Creating a Slack App in Python on GCP.

Last week I chatted with someone working on an application to facilitate better 1:1s and skip-level 1:1s. What struck me most was the thought that it might be both faster and a better user experience convenient if this tool was implemented as a Slack application rather than a web application.

This left me with an interesting question: has the Slack ecosystem and toolchain reached a place where it's quicker and easier to use the Slack stack than the typical web stack?

With that in mind, I decided to spend some time e...

 •  0 comments  •  flag
Share on Twitter
Published on November 06, 2019 15:00

HMAC SHA256 signatures in Python and Flask.

I'm playing around a bit with the Slack API, which I'll have a longer post on in a bit. One part of the integration requires generating an HMAC SHA256 signature to verify requests are from Slack. There weren't too many helpful search results, and some of them like the hmac module docs don't include examples. Here are some quick notes for folks in future attempting the same thing.

h/t to Joe Kampschmidt's post which covers signing well.

First step is to instrument your test application is capturing the full headers an...

 •  0 comments  •  flag
Share on Twitter
Published on November 06, 2019 07:00

November 5, 2019

Forecasting synthetic metrics.

Imagine you woke up one day and found yourself responsible for a Site Reliability Engineering team. By 10AM, you’ve downloaded a free copy of the SRE book, and are starting to get the hang of things. Then an incident strikes: oh no! Folks rally to mitigate user impact, shortly followed by diagnosing and remediating the underlying cause. The team's response was amazing, but your users depend on you and you feel like today you let them down. Your shoulders are a bit heavier than just a few hours ago...

 •  0 comments  •  flag
Share on Twitter
Published on November 05, 2019 05:00

November 3, 2019

Sending weekly 5-15 updates.

The trendy thing to do on the internet is to start publishing a newsletter. Trendy enough that even I started sending out my blog posts each week in email format.

I've consistently noticed that emails generate far more discussion than other distribution methods, which really shouldn't have surprised me: I've been sending company-internal updates for some time and they've frequently created important, spontaneous conversations.

About a year ago I started my most recent approach to sending weekly updates to relevant public (within the...

 •  0 comments  •  flag
Share on Twitter
Published on November 03, 2019 05:00

October 31, 2019

Investing in technical infrastructure @ SRECon EMEA 2019

Earlier this year I wrote How to invest in technical infrastructure, which I got to present at SRECon EMEA 2019 at the beginning of October, and now the video is up.

I've really enjoyed giving this talk, and really enjoyed the talks, atmosphere and attendees at SRECon. There was a real spirit of practioners coming together to learn together that I appreciated.

I also got the chance to give this talk at Velocity earlier this year although I'd just strained my calf and was walking with crutches, so I was glad to get a redo whe...

 •  0 comments  •  flag
Share on Twitter
Published on October 31, 2019 06:00

October 27, 2019

Healthchecks at scale.

A couple of days ago at Stripe's weekly incident review, we started a discussion on a topic that is always surprisingly controversial: healthchecks. I've been thinking about them since and have written up what I've learned about healthchecks.

When I joined Uber, we relied on HAProxy to route traffic between processes. HAProxy was configured in what might now be described as the sidecar pattern.

Healthchecks from service to sidecar HAProxy instance.

We ran one instance of HAProxy on every server, and generated a server's routing configuration by inspecting metadata stored...

 •  0 comments  •  flag
Share on Twitter
Published on October 27, 2019 06:00

October 23, 2019

An Elegant Puzzle by the numbers, five months later.

An Elegant Puzzle was released on May 20th, 2019 by Stripe Press. In June, I summarized what I learned writing and publishing it: it was amazing. Now that the book's been in market a bit longer, I wanted to recap An Elegant Puzzle by the numbers across its first five months.

One article in First Round Review One bookclub orchestrated by Charity One Atlas AMA on the Stripe Atlas Forum One mention in Forrester in Beware the Automation Paradox One other Stripe Press book released, the excellent Get Together One to two daily emails or DMs regarding AEP $2, roughly my share per...
 •  0 comments  •  flag
Share on Twitter
Published on October 23, 2019 07:00