Writing

Compounding learnings, thoughts, and observations.

Restart After Updating SOUL.md

Your OpenClaw bot won't pick up personality changes until you restart the session.

Why OpenRouter?

One API key, every model, and the economics of running a personal AI bot without going bankrupt.

GitHub's Fine-Grained PATs Hide Your Private Repos

The /user/repos API buries private repos behind 100+ public ones when using fine-grained tokens.

Contrast Studies

A series exploring the interplay of light and shadow in everyday moments. Black and white only.

Deploying a Bastion Host in AWS using CloudFormation

Reducing attack surface by implementing a bastion host for secure SSH access to private infrastructure.

Securing APIs: How to Design a Not So crAPI One

Building security layers into your API design - authentication, access control, rate limiting, and logging.

The OAuth 2.0 Waltz

An overview of the OAuth 2.0 protocol with a practical golang example to understand its flow.

Am I Designing A Safe Password Storage?

From plaintext to salted hashes - a journey through password storage best practices and common mistakes.

From Localhost To Production Using The DevOps Way - Part 2

Adding Continuous Delivery to our CI pipeline by deploying to AWS Elastic Beanstalk.

From Localhost To Production Using The DevOps Way - Part 1

Building a CI pipeline to automatically test, build, and ship a compiler application to Docker Hub.

How To Know Alice's Password

When a friend received a phishing email with her real password, I showed her how data breaches work and what to do about it.

Why Infrastructure As Code Is Lit

How Infrastructure as Code brings smiles to SREs, impresses auditors, and gives peace of mind to security teams.

What It Was Like To Join N26

My journey joining a fintech startup in Berlin, from applying in Hong Kong to experiencing the unique culture of a mobile bank.