RSSAmplifier

Blog

neurons firing from a keyboard

Recent content on neurons firing from a keyboard

blog.carlosnunez.meRSS feed ↗46 posts

Latest posts

Using Lima and Bash dotfiles to go fast with Claude Code

I’ve been using Lima for years to run Docker and Podman on the Mac. This setup has given me a lot of control over how I set up my VMs that the “Desktop” tools often obscure. I also like being able to store my VMs in my eternally-growing dotfiles repo. Though I started messing with Claude Code last year, between not being happy with how purely vibe-coding my Status tool was going…

CNCF Weekly #1: Flux

I’m starting off CNCF Weekly with Flux, a useful and well-known tool in the cloud-native community. Key Info Project Name Flux CNCF Status Graduated Docs Link GitHub Link In a nutshell… Flux enables Kubernetes clusters and their apps to be configured with Git. Time to retire your Jenkins pipelines. Who’s This For? Platform engineers and developers interested in maintaining…

CNCF Weekly

I was thinking about the projects in the CNCF the other day. I’ve shown some variant of this image countless times in customer calls, demos, and presentations, but never really stopped to think about how hilariously vast this landscape is. As anyone who’s used Kubernetes for more than two weeks will tell you, you don’t keep up — you just pick the same five tools that…

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

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 0: i succumb to the slop

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…

I'm Carlos!

I’m a software developer and DevSecOps enthusiast. Brooklyn-born, Houston-based. I enjoy helping businesses reach their customers and respond to competition faster with less risk and more awesome. Focus Areas Implementing DevSecOps in challenging places Reliability Engineering Cloud- and Container-Native. carlosinhtx

You probably don't need Husky

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…

Debugging OAuth authorization tokens from your terminal

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…

How to empty an AWS Routed53 Hosted Zone with AWS CLI

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…

Troubleshooting Kubernetes Namespaces That Won't Delete

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…

Render Golang templates with a timeout

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…

Run ARM Docker images in GitHub Actions runners!

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 -…

Scraping without JavaScript using Chromium on AWS Lambda: The Novel

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…

Using a Mac and burned by Docker Desktop? Use Lima instead!

UPDATE 2021-12-28 16:54:00 CST If you’re getting weird networking or security errors from your Docker containers, your VM’s time might need to be updated. You can fix this by running this command: docker run --rm --privileged alpine hwclock -s You’re probably not going to want to run this manually every time your time goes out of sync. Run this automatically by adding this…

Talks I've Given

I enjoy giving talks to Meetups and conferences all over the United States. Here are some that I’ve done. Want me to talk at your event? E-mail me at dev@carlosnunez.me! May 28, 2021. DockerCon Live 2021: Panelist on Easy CI with Docker (free login required) April 24, 2020. Contino CloudFest: Boost Your Apps with an SRE Approach to Development October 4, 2018. Taco About It: Getting Into…

How to SRE-ify your React app with Prometheus

I am not a JavaScript developer. However, I was given a task at work recently that forced me to enter the abyss and get good at keeping my Promises. I was asked to create a webinar on helping developers become better SREs through observability and instrumentation. The objective was to take a broken web app and add enough monitoring and logging to it to make troubleshooting its brokenness easier.…

A few tips on successful remote value stream maps.

There is no doubt that the worldwide COVID-19 crisis has been a wet blanket for digital transformation across the enterprise. However, I don’t know about you, but I’m super fortunate that this is happening in 2020’s technological landscape instead of, say, 2010’s. With video conferencing solutions that work with even the slowest and least reliable internet connections and…

Want to test Ansible playbooks that require systemd in Docker? Try this.

Kubernetes and other cloud-native strategies might be putting configuration management out to pasture, but I found myself writing a playbook recently while learning how to create infrastructure as code for Azure. I needed to start my Flask web server and Postgres database with systemd, which isn’t a pattern that’s easily supported by Docker. I got this working with Docker Compose,…

Story Points Aren't Units of Time

They just aren’t. WHY Search for “story points agile” on Google. Try it. You don’t even have to type it into Google; click the link! You’ll get, at this time of writing, approximately 12 million results. Accouting for the 8 million results are bots promoting something that requires your wallet, that leaves four million web pages, many of which will go on to describe…

SRE and BDD: The Ultimate Power Pair

The responsibilities of a Reliability Engineer are well understood: maintain a high degree of service availability so that customers can have a consistently enjoyable and predictable experience. How these goals are accomplished — establishing SLOs with customers, enforcing them through monitoring SLIs and exercising the platform against failure through Game Days — is also well…

SRE Communities vs SRE Centers of Excellence

I read Google’s Site Reliability Engineering Workbook on a flight to New York the other day. I read their original book when it came out two years ago and was curious to see how much of it mirrored my own (brief) experience as a Google SRE. Given that it’s been a while since I did pure SRE work, I wanted to keep my skills caught up, and the Workbook seemed like a more accurate…

Is your Java app ready for Docker? Take this super quick test!

Here’s a really quick test to see if your enterprise Java app is ready for Docker. NOTE: I am not a Java developer; more like a casual observer. Get your pitchforks ready! If I can’t do this: $> docker run --rm --volume '$PWD:/app' --volume '$HOME/.m2:/root/.m2' \ --tty maven:3.6.0-jdk$WHICHEVER_VERSION-alpine mvn build $> docker run --rm --volume '$PWD:/app' --tty…

Move Fast And Retain Corporate Governance with Pull Requests

DevOps and change control mix like oil and water. Product and development teams want to experiment with and release ideas as quickly as their customers request them, and do so with tight, but unstructured, collaboration across organizations. On the other hand, corporate governance wants auditability, transparent risk mitigation and justification in every step of the way. Consequently, both of…

Good Tools Are Important. Ignore At Your Own Peril

I’ve been consulting for some of the world’s largest companies for the last three years and have observed three themes that worry me: Agile is a really controversial word, despite the manifesto being quite clear on the matter, Somewhere within every company, there are many, many engineers that have been waiting weeks for test environments, and Engineers have the heaviest,…

neurons are firing again! How I eat my own dogfood with my blog.

First, huge shout out to the five of you that actually read stuff from my WordPress blog! You might have noticed that, with the exception of a a few posts for my company, I’ve been mostly silent. I haven’t given up on writing; quite the contrary, in fact! I haven’t run out of neurons to fire either (darn!). I’ve stopped writing on my own site for one reason: I pledged to…

How To Make Enterprise Container Strategies That Last, Part I

Intro I was in high school when I got introduced to this weird app called VMware Workstation. I thought the idea of using your Windows machine to run other machines was really compelling - a perfect fit of my younger and geekier self. You couldn’t pay me enough back then to believe that almost all[^1] of the world’s most important applications would eventually run on virtual…

Getting output from Docker containers from within Ansible

The Problem You want to use Ansible’s docker_container module to do stuff, but want to also perform actions based on their output without specifying a logging driver or writing to a temp file. The Solution Do this:

A Few Gotchas About Going Multi-Cloud with AWS, Microsoft Azure and HashiCorp tools.

One of the more interesting types of work we do at Contino is help our clients make sense of the differences between AWS and Microsoft Azure. While the HashiCorp toolchain (Packer, Terraform, Vault, Vagrant, Consul and Nomad) have made provisioning infrastructure a breeze compared to writing hundreds of lines of Python, they almost make achieving a multi-cloud infrastructure deployment seem too…

Provisioning VMware Workstation Machines from Artifactory with Vagrant

I wrote a small Vagrantfile and helper library for provisioning VMware VMs from boxes hosted on Artifactory. I put this together with the intent of helping us easily provision our Rancher/Cattle/Docker-based platform wholesale on our machines to test changes before pushing them up. Here it is: https://github.com/carlosonunez/vagrant_vmware_artifactory_example Tests are to be added soon! I’m…

Getting Into DevOps.

I’ve observed a sharp uptick of developers and systems administrators interested in “getting into DevOps” within the last year or so. This pattern makes sense, too: in an age where a single developer can spin up a globally-distributed infrastructure for an application with a few dollars and a few API calls, the gap between development and systems administration is closer than…

Wiring up Docker on Windows to Ubuntu on Windows

Getting docker running on Ubuntu on Windows is pretty simple. After installing the Docker Windows engine and restarting, run this in a bash session to bind the two together: export DOCKER_HOST=tcp://0.0.0.0:2375 Pop this into your .bashrc and never think about it again.

Start small; move fast

Seinfeld wasn’t always the heavily-syndicated network cash cow it is today. The hit show started as an experiment for Jerry and Larry David. They wanted to write a show to describe the life of a comedian in New York, namely, Jerry’s. Despite Jerry’s limited acting and writing experience, they wrote their pilot in the late 1980’s and sold it as “The Jerry…

Winning at Ansible: How to manipulate items in a list!

The Problem Ansible is a great configuration management platform with a very, very extensible language for expressing yoru infrastructure as code. It works really well for common workflows (deploying files, adding authorized_keys , creating new EC2 instances, etc), but its limitations become readily apparent as you begin embarking in more custom and complex plays. Here’s a quick example.…

Sleep better with two simple shortcuts.

TL;DR: Control + ⌘ + Shift + G Home button triple-click. Why? Exposing ourselves to bright screens at night while checking our Facebook feed or reddit posts might not be as harmless as it seems. Tons of research, like this and this suggest that viewing things on bright screens right before bed makes our brains think that we’re in daylight longer than we actually are and, consequently,…

You're a better engineer than you think.

I was quite surprised to discover that thousands of people were members of the “Imposter Syndrome” Google+ group within my first month at Google. I always thought that getting into Google was probably the best social proof of “making it” that an engineer could receive. The interview process is hard, gruelingly technical, relatively unforgiving and riddled with…

A completely neutral post about containers.

Edit 2 : I’ve made a few small changes to the way I’ve described Docker architecture. Thanks, /u/jmtd ! Edit : I mentioned below that Docker containers can only run a single process. While that is true by default, it is actually not the rule. You can use Docker Supervisor to manage multiple processes within a container. Here is how you do that. Thanks, /u/carlivar! Fact: There are at…

Concurrency is a terrible name.

I was discussing the power of Goroutines a few days ago with a fellow co-worker. Naturally, the topic of “doing things at the same time in fancy ways” came up. In code, this is usually expressed by the async or await keywords depending on your language of choice. I told him that I really liked how Goroutines abstracts much of the grunt work in sharing state across multiple threads. As…

Doing something boring? Try this one weird trick! Slackers hate it!

I love writing code and building awesome stuff, but there are times where fighting the urge to Reddit for 14 hours feels like this: When this happens, I break out my secret weapon: *The Pomodoro Technique. * The basic premise behind this technique is alternating your time between spending several minutes on nothing but working towards a certain goal (let’s call it the hot period ) or…

for vs foreach vs "foreach"

Many developers and sysadmins starting out with Powershell will assume that this: $arr = 1..10 $arr2 = @() foreach ($num in $arr) { $arr2 += $num + 1 } write-output $arr2 is the same as this: $arr = 1..10 $arr2 = @() for ($i = 0; $i -lt $arr.length; $i++) { $arr2 += $arr[$i] + $i } write-output $arr2 or this: $arr = 1..10 $arr2 = @() $arr | foreach { $arr2 += $_ + 1 } Just like those Farmers…

BYOD Part 1: Computers In The Cloud

Computing is expensive. Desktops and laptops cost lots of money. Printers cost even more money. (Printers are really funny, actually; buying one or two isn’t so bad, but once you’re managing tens or hundreds or more laser printers and printing hundreds or thousands of pages per day, the cost of toner/ink and repair skyrocket like a SpaceX shuttle.) Desks cost even more money. Accessories cost even…

Is it actually possible to have an empty inbox? Try this and find out!

I’ve developed a system over the years that has kept my inbox mostly empty all of the time. It has worked for me even when I was getting 100+ emails/day, so I’d say it scales fairly well. It also works well even in the absence of Gmail’s additional feature set (I use Office 365 personally, but this worked when I used Gmail, Apple Mail and my own mail servers back in the day.), which is nice should…

Technical Thursdays: DNS, or why using the Internet is kind of like going to Starbucks

This Thursday, we’ll talk about a system that has been extremely critical (and extremely taken for granted) for shaping the Internet as we know it: the domain name system, or DNS for short. Before I explain what DNS is, I’ll talk about something I try really hard to hate but ultimately can’t: Starbucks. I go to Starbucks at least once a day. Given that Google has more coffee…

Technical Thursdays: Calculate Directory Sizes Stupidly Fast With PowerShell.

Scenario A file share that a group in your business is dependent on is running out of space. As usual, they have no idea why they’re running out of space, but they need you, the sysadmin, to fix it, and they need it done yesterday. This has been really easy for Linux admins for a long time now: Do this du -h / | sort -nr and delete folders or files from folders at the top that look like they want…

One weird trick that might make your MacBook less janky

I was trying to put a bunch of slides together today but had a lot of trouble doing it because my Mac would freeze up every minute or so for about 10-15 seconds. If you’ve ever tried mowing a lawn with no gas, you kind of know how this feels. It was infuriating. In search of anything that might improve the state of things, I stumbled upon this interesting solution that seems to have made the…

Technical Tuesdays: Powershell Pipelines vs Socks on Amazon

In Powershell, a typical, run-of-the-mill pipeline looks something like this: Get-ChlidItem ~ | ?{$_.LastWriteTime -lt $(Get-Date 1/1/2015)} | Format-List -Auto but really looks like this when written in .NET (C# in this example):

If Your Business Still Uses Servers, You’re (Probably) Doing It Wrong

Your servers are useless, and you should sell them. Many businesses small and large buy servers for many wrong reasons. Some businesses want a server for an application they wrote. Some others want to keep their data “private.” Others still want servers for “better speed.” All of these reasons are wrong. There are only three reasons that I can think of that justify the purchase of physical servers…