RSSAmplifier

Blog

clayton marshall

This blog is awesome

claytn.devRSS feed ↗10 posts

Latest posts

Supabase free tier and full vacuums

I learned something fun about the difference between Postgres vacuum and vacuum full today while trying to trim the fat on an Supabase instance that was getting close to the free tier database size limit.When a row is deleted from a Postgres table, the underlying tuple on disk is not actually deleted, but marked as deleted. This is enables all the fun MVCC magic. Then Postgres kindly runs a…

Handling aborted HTTP requests in NodeJS v17+

I want to know when HTTP requests sent to my Node server are canceled by the user. In the past you could listen to the 'abort' event on a http.ClientRequest, but that event and it's related fields on the request object have been deprecated since node v16.12. You can still listen to this event. It's continued to work for me, but I don't want to rely on an event that's explicitly deprecated.TL;DR

Writing a GIF Player in Go

I'm reimplementing one of my projects, movemygif, in Go. In short, movemygif is a digital picture frame I've hung on my bedroom wall that plays a GIF and tracks the motion of the viewer looking at the frame. When the viewer moves towards the frame, the GIF plays forward, if they move backwards the GIF reverses. I wanted to benchmark the Go implementation against the original…

The Tom Sach's Nike Shoe

On May 29th, a popular artist/sculpture, Tom Sachs, posted about a new shoe collaboration he's doing with Nike on Instagram.

Ghost's starter tier should include custom integrations

The "starter" tier($9 at the time of writing) for a Ghost hosting membership does not include custom integrations. This means you can't get API keys to manage customer and content information from remote applications. So, if I want to, for example, fetch a list of my active susbscribers inside an AWS lambda function, I have to upgrade to the "creator" tier and pay $25 a month. I do not want to do…

A year in review for reddit

Introduction> 01/18/2020

Choosing Clojure: Part 1 - Code is Data

During the past year, I've been reading about and building projects with a programming language called, Clojure. For those who aren't familiar, Clojure is a modern-day LISP that runs on the JVM. Yes, it's one of these parenthesis hogs...

Javascript's New Pipeline Operator

Javascript is getting a new operator! Maybe.A new operator is currently in stage 1 of the TC39 proposal process. Stage 1 is still early in the process, but getting to stage 1 means that it is being considered, and has an audience of developers pushing for it. If you have recently learned Javascript, or you’re still inexperienced with the language, you may be wondering what new operator Javascript…

Yet another introduction to functional programming

What is Functional Programming?Wikipedia:

Impractical, Functional Lists (List out of Lambda)

For my first post, I wanted to do something strange and entertaining. I don't want to bore you with super serious facts, or cover anything practical for that matter. Instead, we'll be walking through a programming exercise of sorts. The ideas in this post come from a topic in math called Church Encodings, and were inspired by another article, List out of Lambda.Introduction: