Carlos learns to vibe code, Day 2: well, s***.

Reading Time: Approximately 1 minutes.

Day 0 Day 1 Day 2 ⬅️ you are here So here’s the original prompt for Status. And it just, umm, did it?????? Your browser doesn't support embedded videos, but don't worry, you can download it and watch it with your favorite video player! … »

Carlos learns to vibe code, Day 1: real humans only

Reading Time: Approximately 4 minutes.

Day 0 Day 1 ⬅️ you are here So, Day 1 was super productive! I signed up for Claude! Yay! Signing Up Signing up was a process. To minimize the number of times my personal data gets sold and, unavoidably, leaked to search engines, I use a combination of Ironvest or Fastmail’s Masked Email feature, throwaway phone numbers from SMSpool and Privacy cards to sign up for services I might not keep long term. … »

Carlos learns to vibe code, Day 0: i succumb to the slop

Reading Time: Approximately 3 minutes.

Day 0 ⬅️ you are here Day 1 So, I don’t like LLMs. I’m optimistically terrified of their long-term impact to society. I also know that I’ve grown to like stuff that I’ve held strongly-negative opinions on, like vim (which I used to write this), Ruby (which was my preferred language for many years), Kubernetes (I was a huge Kubernetes hater when it first got popular!) and Golang. Two weeks using nothing but the thing was enough for me to either become a zealot or remain a life-long hater. … »

You probably don't need Husky

Reading Time: Approximately 3 minutes.

Git hooks are an incredible and incredibly simple way of fixing loose ends before you commit and/or push your code without installing additional software. Unfortunately, like most of the Git CLI, they can appear difficult and un-approachable at first glance. For one, they assume that you’re storing your scripts within the hidden and un-tracked .git directory! I hope you like symlinks! Lots of projects use tools like Husky as an easier-to-use alternative that’s easy to scale across teams and very friendly within CI. … »

Debugging OAuth authorization tokens from your terminal

Reading Time: Approximately 3 minutes.

Here’s a quick post about something that I don’t do often but is typically a pain when I do: debugging OAuth tokens super quickly. An Example Scenario You’ve just provisioned a shiny new Keycloak instance and want to make it the upstream identity provider (IdP) to your company’s Okta tenant because you were volun-told to do so. You’re also using an app that is configured to do single sign-on through Keycloak and will only log in users if they have admin in their access token’s groups claim. … »

How to empty an AWS Routed53 Hosted Zone with AWS CLI

Reading Time: Approximately 3 minutes.

So you’re managing an AWS VPC with Terraform or something like that, but some other pesky thing decided to add Route53 records that Terraform doesn’t know about. As a result, when you try to delete the zone with Terraform, you’re no longer able to because of this: │ Error: deleting Route53 Hosted Zone (REDACTED): HostedZoneNotEmpty: The specified hosted zone contains non-required resource record sets and so cannot be deleted. │ status code: 400, request id: REDACTED Ughh. … »

Troubleshooting Kubernetes Namespaces That Won't Delete

Reading Time: Approximately 7 minutes.

Usually, deleting Kubernetes namespaces is easy: kubectl delete ns delete-me Sometimes, however, deleting them takes way longer than expected… kubectl delete ns delete-me # still deleting, two months later... This quick “way longer than I acutally ever thought possible” post shows you a few troubleshooting tricks for dealing with this. Forget everything you know about the word “all” kubectl delete --all -n delete-me is a lie. While the kubectl delete man page suggests that “–all” means “all”: … »

Render Golang templates with a timeout

Reading Time: Approximately 2 minutes.

Situation You’re writing a Go program that renders arbitrary Go templates that users can write. Since they are arbitrary, you want to prevent users from accidentally DDoSing your program by using long-running template functions. Something like this: import ( "os" "template" ) // Perhaps this is exposed through an interface that a // third-party API implements, for example. func LongRunningFunction(s string) { time.Sleep(100000000) // This takes forever return s } func main() { tmpl := `Hello, {{ . … »

Run ARM Docker images in GitHub Actions runners!

Reading Time: Approximately 1 minutes.

This is so easy to do, I think I can describe it in less than 150 words! Problem: You want to run Docker images from Docker images that target ARM, or you want to build images for ARM platforms. Solution: Add this to .github/workflows/main.yml (or whichever YAML file you’d like to enable ARM support for): jobs: your-job-name: steps: # Add this to the top of your `steps` - name: Set up QEMU - arm if: ${{ runner. … »

Scraping without JavaScript using Chromium on AWS Lambda: The Novel

Reading Time: Approximately 14 minutes.

UPDATE: 2022-01-17 16:33 CST Forget the below. Just do this instead! UPDATE: 2022-01-15 16:43 CST It appears that Docker as configured within the runners provided by GitHub Actions do not native support building ARM images. However, you can use qemu-user-static to emulate instructions for other CPU architectures to get around this. This image uses binfmt_misc to tell the host’s Linux kernel to tell a third-party application (in this case, qemu) to execute binaries in formats that it doesn’t recognize. … »