Richard Clayton

Distributed Locking with Postgres Advisory Locks

TL;DR

Postgres Advisory Locks are a great solution for arbitrary application locks, particularly in scenarios where you are already using Postgres and have a need to block concurrent mutations to a resource (that resource DOES NOT have to be data in Postgres).


Concurrency is hard

We ran into a problem . . .

Read More

February 16, 2020

WebSequenceDiagrams.com TypeScript Client

https://gist.github.com/rclayton-the-terrible/493cd0811542ff9693ac02746517ba71

TL;DR - TypeScript Client Gist: https://gist.github.com/rclayton-the-terrible/493cd0811542ff9693ac02746517ba71


If you are not familiar with WebSequenceDiagrams, it's an excellent tool for creating sequence diagrams for planning software flows. If you are not familiar with sequence diagrams, a quick Google search will . . .

Read More

June 22, 2019

What's Making Me Happy - 01/21/2019

React w/out Redux, Kubernetes Node Draining, and Customizing DataDog

Hey friends, welcome back to WMMH! It's about a month since my last post -- my sincere apologies; work and vacation have sapped my free time. Fortunately, the extra time has given me more things to be happy about!

Over the last couple of weeks, I have been working on various projects up and down the stack. This work included . . .

Read More

Posted in: kuberneteswmmh

January 29, 2019

Kube-Native Workflows with Argo

Stitching Docker containers together to get stuff done fast!

About a month ago, was looking for a tool to help automate some of the analytic jobs our data scientist built in Python. My goal was to automate the following process:

  1. Execute Python jobs that analyze the day's activities, producing a CSV output.
  2. Create a new table in Postgres (that hold the CSV data).
  3. Insert the . . .

Read More

Posted in: architecture

December 20, 2018

Implementing "Options Object" Pattern using TypeScript and Joi

The Options Object pattern [1][2] is a technique in JavaScript for configuring a component using a single function parameter:

const client = createClient({
 host: 'localhost',
 port: 12345,
 username: 'foobar',
 password: 'work-at-peachjar',
});

This approach has many benefits over . . .

Read More

December 10, 2018

What's Making Me Happy - 11/30/2018

Grafana, TimescaleDB, Apache Beam, and ThoughtWorks Tech Radar Q4

Hey folks, sorry I missed the last couple of weeks (was out on vacation or busy at work). However, I'm back just in time for the holidays with another addition of "WMMH" in the software world.

The theme for this week is data analytics. I've been working on a metrics project at work and have been pleasantly surprised . . .

Read More

December 01, 2018

What's making me happy - 11/07/2018

Inspired by NPR's Pop Culture Happy Hour, I'm going to try posting once a week about topics in technology that are making me happy.

Lately, I've been working on our EDA platform at Peachjar that uses NATS as a Command/Query transport and Kafka as an event store. Naturally, adding any technology to your infrastructure . . .

Read More

November 07, 2018

Archive