Elan Thomas England

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

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


Webterm demo

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.


All posts

Saving links to webpages the Unix way
Print Firefox History from the command line
Web Terminal Project Writeup
Shellbin Project Writeup: A Simple Microservice Development Pipeline