Writing

All Posts

Notes on systems, networks, and the occasional rabbit hole. Press ⌘K to search.

2026

Building a Search Engine in Rust: Crawl, Index, Rank

A Semaphore-bounded Tokio web crawler, an inverted index, and BM25 ranking that beats naive keyword counting — crawl, index, rank in a few hundred lines.

Gerdu: A Multi-Protocol, Raft-Backed Key-Value Store in Go

An in-memory key-value store in Go: one small cache interface behind LRU/LFU/weak implementations, four wire protocols at once, and Raft replication where the cache itself is the state machine.

PathForge: Writing a BGP-4 Daemon from Scratch in Rust

Building a from-scratch BGP-4 daemon in Rust against RFC 4271: wire framing you can fuzz, the session state machine, one Tokio task per peer, and the best-path decision process as a sort comparator.

Writing a Small S3 Proxy in Rust

A thin, S3-compatible gateway in Rust: routing requests to the right backend by bucket name, API-key auth with per-user roles and allow-lists, and a sliding-window rate limiter.

Building Sentry: A Secure Job Runner with cgroups and mTLS

Running Linux processes under hard CPU, memory, and I/O limits with cgroups v2, streaming their logs over gRPC, and authenticating everyone with mutual TLS.

2025

Snake on a Cube: 3D Snake in Rust and WebAssembly

3D Snake crawling across all six faces of a cube, compiled to WebAssembly with three-d. The whole game lives in the seams where one face's coordinates meet another's.

Reimplementing S3 from Scratch: An Object Store in Rust

Building R3, an S3-compatible object store in Rust: filesystem-backed objects, multipart upload assembly, and versioning with delete markers — where the real difficulty is the metadata, not the bytes.

NetChaos: Declarative Network Chaos with eBPF and Kubernetes

A Kubernetes-native network fault injection framework: describe failures as CRDs, drive them with an operator reconcile loop, and deliver packet drops at kernel speed with eBPF.

2022

How a Local IP Address Broke IPv6 Tunnels in the Linux Kernel

A one-line Linux kernel fix: routing one app's traffic by UID into a FOU/SIT tunnel, where encapsulated IPv6 to a local peer silently vanished — an RTN_LOCAL route the transmit path refused to allow.

2015

Data-Mining PCAP files using Weka and Python DPKT library

Using Weka, Python DPKT to find malicious traffic flows in FTP server control flows.

OpenStack REST API Direct Call

Some OpenStack wrapper libraries like OpenStack4j or Cloud4j does not cover all OpenStack REST API. I tried to explain a simple and general approach for Open...

GSoC 2015 RouteFlow Proposal

Here it is my Google Summer of Code proposal for unified end-to-end tests of RouteFlow project for 2015

Playing With K-nearest Neighbors Algorithm

This program is an inefficient (in terms of computing and memory complexity) yet simple demonstration to implement k-nearest neighbors unsupervised classific...

Why does functional programming matter?

Like any other missing feature in any programming language imperative programming languages address these problems by making more libraries with complex inte...

2014

Collecting Data Using Windows Azure Part 2

How to obtain beautifull network graphs by collecting twitter data

Spanning Tree

Just about everything you'll need to style in the theme: headings, paragraphs, blockquotes, tables, code blocks, and more.

Hello Complex Networks!!!

I just wanted to refresh my JavaScript programming skills along with exercising my homeworks. I searched few Network Visualization JS libraries in the net I ...

Collecting Data using Windows Azure Part 1

I decided to develop an Azure WebJob to collect my twitter data into MongoDB, using LinqToTwitter library along with MongoDB made this job pretty easy.

2012

QoS optimization for real-time services in FreeBSD

VSAT systems generally connect a large number of geographically dispersed sites to a central location. one of my customers offers VSAT service to different t...