Go Wasm: Compiling code in the browser with WebAssembly October 30, 2020

Browsers have become powerful beasts. First used to share research papers at CERN, the browser can now run Google Earth, play Unity 3D games, and even design buildings in AutoCAD.

With this kind of power, could a browser compile and run your code too? Ridiculous. Surely that couldn’t work…

Then again, why not? There’s no way I could ignore such a fascinating challenge. After four months of punching the keys and poring over documentation, I’ve finally created my answer: Go Wasm.

read more

Setting up an ingress March 29, 2019

Web services running on the same network can be difficult to set up correctly, especially if you want all of them to work on an external network. In this tutorial, I will guide you through setting up a Docker Swarm to route traffic to the appropriate containers, automatically.

There are three parts to get your cloud ready for web services: a load balancer to spread connections to available servers, an ingress router to direct traffic to containers, and DNS to point local traffic to the right IP addresses. Here’s a quick layout:

Ingress Architecture

read more

Shared volumes in Docker March 24, 2019

Scaling an application is hard, especially when you need to manage its important data yourself. One way to make this easier is by sharing the files across multiple servers – no matter where it runs, the data will always be available.

An important step in making highly available applications is setting up highly available data. With Docker, we will set up shared files with a volume plugin called Convoy.

In this tutorial I assume you already have 2 or more nodes in a Docker Swarm and an NFS v3 server set up. If you haven’t set up a Docker Swarm yet, get at least 2 nodes ready by following these tutorials for Docker setup and Swarm setup.

read more

Noonian January 26, 2019

Noonian is a research tool for finding the laptop that fits your needs. You can search for laptops and then run comparisons to narrow down your choices quickly. Check it out at noonian.com.

Later on, the plan is to open this up to comparing builds of different computers and their components. With Noonian, I aim to avoid the negative tendencies and shortcomings typically associated with product search by making it easier to shop smarter.

Kicking off my new blog August 30, 2018

I’ve finally rearranged my site enough now to launch a blog! I’m not sure what the content will look like yet, but I think I’ll put up some lessons learned from the various projects I’ve worked on. I may even add some other cool stuff I’ve picked up along the way.

Who knows? This could even be fun!

Bashtion May 8, 2018

A framework for writing reusable and testable modules in Bash. Sometimes using Bash is simply inescapable, but large legacy scripts can be hard to manage. I sought to create a framework that would make it easy to gradually improve legacy code.

Bashtion encourages modular, reusable, and testable code. It does this by setting up Bash with sensible defaults, a built-in error tracing system, support for writing tests, and generates warnings for deviations from best practices. The project is open source and you can check it out on GitHub.

IKS Kubernetes Dashboard Proxy April 1, 2018

The Kubernetes Dashboard is a great way to see what’s going on in your Kubernetes cluster. We created a service that uses IBM Cloud’s authentication to provide convenient access to that dashboard in IKS. My co-worker, Chris Kirkland, wrote a great blog post to announce the new service.

I added monitoring, alerting, and improved the user experience for our each of our failure modes. Today, my team and I continue to maintain and further develop the service.

IKS Logs & Metrics Forwarder June 20, 2017

On IBM Cloud’s Kubernetes Service, you can create a cluster and tick a box to enable logging. The magic behind that little box is enabled with a logs and metrics forwarder that my team builds and maintains.

The metrics and log-forwarding service captures various stats and logs generated in a user’s Kubernetes cluster, then forwards them to the IBM Log Analysis and Monitoring services by default. We picked up the service in its proof-of-concept stage and completely revamped it to fit newer features and our rigorous quality standards to run in production.

read more