I believe the best way to learn is by building. This page tracks what I've built and what's on deck — things that push me to explore systems, networking and kernel programming. Feel free to steal any idea and build it yourself. If you do, tag me on X or GitHub!

In Progress
Black Jack building
Game Multiplayer
Casino game with UI similar to actual casino tables + multi-player support.
Built
network-policy-assistant
Go Kubernetes CLI
CLI linter for Kubernetes network policies — detects duplicate peers, redundant rules, and overlapping ports. Supports standard NetworkPolicy and AWS CRDs.
bpftui
Go eBPF TUI
TUI for inspecting eBPF programs and maps, built on top of gobpftool CLI.
gobpftool
Go eBPF cilium/ebpf
A read-only bpftool alternative written in Go using cilium/ebpf.
go-bore
Go Networking TCP Tunneling
TCP tunneling tool in Go, inspired by bore.
Gvisor Netstack Experiments
Go Networking TCP/IP
Userspace TCP/IP stack exploration using Gvisor's netstack.
CDNS-Proxy
Go DNS CoreDNS
DNS proxy built on CoreDNS using a custom plugin named intercepter.
Solana Pool Monitor
Go Solana DeFi
AMM pool price monitoring via account subscriptions on Solana.
Damn Vulnerable DeFi
Solidity Security DeFi
Solutions to DeFi security challenges — flash loans, oracles, governance, etc.
LedgerEntriesCreator
Python Finance ledger-cli
Scripts to transform investment platform data into ledger-cli entries.

Backlog

eBPF Exploration

Most of these use Rust Aya — eBPF development in Rust.

  1. XDP firewall with web UI — reference
  2. Packet rate calculator - logic for packet rate calculation when ebpf prog is attached to networking hook.
  3. TCP state monitor with filter capabilities (address, state updates)
  4. XDP DNS cache
  5. BPF map stats printer — print stats without iteration (total map size, current size). This could be used as a generic bpf metric emission solution.
  6. UDP and TCP checksum calculation post IP/Port changes - https://github.com/vadorovsky/network-types or create a separate crate for IP/Port modification and checksum calculation.
  7. Build Scheduler with eBPF in Rust aya and sched_ext — reference
  8. Rewrite nat64 in Rust-Aya — reference
  9. Explore Shared socket for TCP/UDP traffic for host local traffic — reference

Gvisor Netstack

  1. Packet modification: Do TCP communication over UDP and use GENEVE header TLV to send TCP connection related information in the header itself. This is something like TCP Over UDP. It would need a custom UDP server to extract inner packet and pass it on to TCP listener.

Cryptography

  1. PKCS#11 server using p11-kit, communicate with crypto11 client. PKCS#11 server could be running inside the EC2 Nitro Enclave.

Simple Casino Games

UI similar to actual casino tables + multi-player support. Building these for research — gotta understand the odds before next Vegas trip.

  1. Craps
  2. Baccarat
  3. Roulette