Blogs
VFS Global Charges for Customer Service While Breaking UX With a Non-Functional Keyboard
VFS Global Charges for Customer Service While Breaking UX With a Non-Functional KeyboardIf you’ve applied for a visa lately, you’ve likely dealt with VFS Global, a private company that holds a monopoly on visa processing for over 60 governments worldwide. While outsourcing such a critical service seems convenient, the cracks in VFS’s system reveal a larger issue: a broken user experience, rampant inefficiencies, and points to a space that is ripe for disruption.
September 11, 2024
Using a GitHub template repo for Golang projects
How to rewrite import paths with a bash one-liner when starting a repo from a github template
August 13, 2024
Leveraging HAProxy Programs to Test URL Rewrite Rules
#haproxy#test#goreplay#networking#performance#proxy#loadbalancing
Learn how to use the program directive in HAProxy to test URL rewrite rules and routing logic. This guide covers setting up HAProxy with Gor for traffic capture and verification, ensuring your configurations work as expected.
June 14, 2024
Debugging shell-startup latency while using Starship Prompt
Troubleshooting slowdown issues with the Starship terminal prompt during terminal startup. Here’s how I fixed it and sped things up.
January 20, 2024
Thoughts about time - part one
#time#clocks#networking#computer science#virtual machine
Not all clocks are equal!Talk about working with “time” with software engineers and you’re pretty much guaranteed someone is going to post a meme. I was recently talking with a co-worker about managing “simulated time” for a project and we ended up discussing why handling time is so complicated. This post attempts to (non-exhaustively) highlight how “time” works for a computer and some fun gotchas software engineers might have to deal with.
January 10, 2022
HAProxy - a tale of two queues
#haproxy#investigation#networking#performance#proxy#loadbalancing
Discover how to optimize HAProxy performance by tuning queue and networking settings. This guide explores handling increased traffic, adjusting maxconn and tcp_max_syn_backlog, and verifying system state to ensure efficient load balancing.
June 26, 2021
Scaling RabbitMQ with shared exchanges
Shared exchanged in RabbitMQ for performance and scalabilitySharded exchanges can be enabled by using the a plugin with rabbitmq. It is useful for distributing load across multiple queue for the same routing keys. Using sharded exchanges, you can shard messages across the cluster so that a single node doesn’t become overwhelmed. These slides explain the setup in more detail. PS: The deployment was load-tested using on rabbitmq clusters hosted on https://www.
August 10, 2020
Understanding and Implementing Causal Profiling with Coz and Cozgo
#golang#cozgo#profiling#performance
cozgo, a Go wrapper for the Coz library for causal profiling in Go projects.
April 15, 2020
Good old bash for startup dependency management
#bash#unix#docker#services#dependencies
A simple and clean way to wait for dependencies to be available in Unix*y environments. I often use this script to orchestrate my docker containers.
January 16, 2018
A fun integer overflow bug investigation
#metabase#bug#investigation#troubleshooting#integeroverflow
Explore a fun investigation into an integer overflow bug in Metabase. Learn how a simple unit conversion mistake led to a NumberFormatException and how the issue was resolved by debugging logs and updating the database.
December 10, 2017
Fast data migration from MySQL to Redshift on the command line
#mysql#mongo#aurora#aws#redshift#bash
Learn how to migrate large datasets from MySQL to AWS Redshift using command-line tools. This guide covers extracting data, transforming it for Redshift, and loading it via S3, achieving efficient data transfer with Unix pipes and filters.
July 30, 2017