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.

Read more →

September 11, 2024

Using a GitHub template repo for Golang projects

#golang#git#github#code

How to rewrite import paths with a bash one-liner when starting a repo from a github template

Read more →

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.

Read more →

June 14, 2024

Debugging shell-startup latency while using Starship Prompt

#terminal#starship#zsh

Troubleshooting slowdown issues with the Starship terminal prompt during terminal startup. Here’s how I fixed it and sped things up.

Read more →

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.

Read more →

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.

Read more →

June 26, 2021

Scaling RabbitMQ with shared exchanges

#rabbitmq#performance

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

July 30, 2017