Welcome to my site! This is a simple portfolio site which discusses some projects that I’ve built.
Scroll down to read an introduction to each project, and click the heading to see the full write-up.
Shellbin is a microservice architecture project that I built to exercise my understanding of CI/CD for cloud-native applications.
It’s named shellbin because it’s a pastebin clone that you can access with your shell using Unix pipes and the netcat utility.
cat $FILE | nc <address> <port>
Users can also create pastes using a web front-end written in Go that uses server-side rendering.
flowchart LR
Browser[Browser / HTTP client]
Netcat[Netcat / TCP client]
subgraph K8s["Kubernetes"]
WS[webserver<br/>Gin on :4747<br/>Service port 80]
NC[nc-server<br/>TCP on :6262<br/>Service targetPort 6262]
DB[db-service<br/>Gin on :7272<br/>Service port 80]
MYSQL[(MySQL)]
end
class K8s k8slabel
classDef k8slabel color:#ffffff
Browser -->|GET /, GET /paste/:path, POST /submit| WS
Netcat -->|TCP paste content| NC
WS -->|HTTP POST /processInput| DB
WS -->|HTTP POST /servePaste| DB
NC -->|HTTP POST /processInput| DB
DB -->|SQL queries to pastes table| MYSQL
In total, there are 4 discrete container images involved in this project: A web server, a database service, a netcat-receiving-server, and the MySQL database container.
As mentioned, the main goal of this project was to experiment with a development pipeline for these microservices.
The CI/CD pipeline ends up being pretty simple:
Read the full Shellbin write-up here for more details.

Webterm is a system that allows users to access Unix machines from their web browser.
Here are some of the moving-pieces involved with this project:
The most notable aspect is the project’s terminal manager written in Go, pseudo-terminal-manager, which allocates and exposes backend terminal instances programmatically via the Kubernetes API.
Read the full Webterm write-up here for more details.