technology

Svelte Is The Sex Appeal React Never Had

2 minute read Published

What could be sexier than not shipping 5MB of JavaScript just to load a page?

The @sveltejs/adapter-vercel NPM module has seen some impressive growth over the last two months. In early November 2021 it was seeing about 4,000 weekly downloads. As of mid-January 2022 that number has climbed to over 18,000. What’s fueling the growth? Vercel’s zero-configuration deployments of SvelteKit perhaps? Nope, most certainly it was Rich Harris joining the Vercel team which was announced at the same time the adapter started taking off.

Living Without a SIM Card

4 minute read Updated

A year later. Getting by without a SIM card in my smartphone.

Subscriber Identity Module. That’s what “SIM” stands for. I acquired my first SIM when I was 17 at a T-Mobile outside Chicago when I got my first cell phone, the Nokia 1110, the best-selling phone of all-time.

A few years later I was working in Chicago and almost everyone in the office had an iPhone. But a few people had Android phones. Their phones did so much my dumb phone couldn’t do. Though having grown up in an analog world the idea of the phone doing everything concerned me in that I would grow dependent on it.

Arch Linux on MacBook Pro with T2

10 minute read Updated

How to dual-boot Arch Linux on a 2019 or 2020 Mac.

Since the 2014 MBP I was using to run Invisible Arch Linux finally died I’ve felt crippled in my ability to develop quality software effectively. And although running GNU/Linux in a virtual machine or via SSH to Termux on Android have their appeal, nothing beats bare metal. Nothing. So it’s time to revisit dual-booting Arch Linux on a MacBook Pro once again.

Last time I looked to run Arch on my T2 MBP the drivers for the keyboard and trackpad were still under active development and so I got basically nowhere. As of December 2021, however, not only are the drivers working, there’s an entire Wiki set-up around getting Linux on the T2 machines.

The following is a overview of the Arch installation process I used.

Google to Start Censoring Telegram

3 minute read Enclosure Updated

Fake news or justifiable warning? You be the judge.
I saw a message today stating the “Google Play Store is now censoring certain pages on Telegram if you downloaded the app through them.” The message suggested a simple workaround to download the app directly from telegram.org/android. Here’s the message in its entirety: Google Play Store is now censoring certain pages on Telegram if you downloaded the app through them. To get around this simply download the Android app directly from Telegram themselves.

See You on Telegram

4 minute read Enclosure Published

On corporate media disinformation and Big Tech censorship.
When I left Facebook in 2012-2013 I did so knowing I was no longer in full control of how I received information from my friends and acquaintances. Fast-forward to the year 2021 and I’ve now been on Telegram for over 4 years. With Telegram there are no information gatekeepers algorithmically deciding what I can and cannot see, or what may or may not be considered factually correct. As an individual who spent their entire youth choosing for themselves what to believe I wasn’t about to give that up because of some college drop-out who attained “network effect”.

Deadsimple Wordpress in Kubernetes

2 minute read Updated

A microtutorial to run WordPress locally in Kubernetes under Docker.
How to install Wordpress with Bravada theme for local development in 8 steps. Tip: If this tutorial is too high-level for you, have a look here instead. Step 1: Install Dependencies Lens Docker docker Git git Kubernetes CLI kubectl K3D k3d Helm helm Watch watch Step 2: Clone Sources Clone WordPress Helm Chart from OSA Clone WordPress from Pantheon Systems Put them next to each other. Step 3: Create Cluster Bootstrap K3s in a multi-node Docker cluster:

Self-Hosted Gitea on Vultr using K3s

13 minute read Published

Host your own Gitea server on Kubernetes with K3s and Vultr for $10/month.
Back in 2017 I decided to move my passion project After Dark off GitHub so I could have better repo usage insights. I was surprised to learn how much faster a self-hosted VCS was compared to GitHub. Not only was GitHub limiting the useful metrics I could capture they were actually slowing down my development! Which brings me back to one of if not the most important concepts I learned as a developer after watching a talk given by Paul Irish at Fluent Conf 2012.

Moving from Pantheon.io to Kubernetes

15 minute read Published

How to move a Pantheon WordPress site to K8s and save $400+ a month on hosting.

When I discovered Pantheon in early 2017 I thought I’d found an a hidden gem. The honeymoon ended when Pantheon hiked costs 40% (while taking away Redis) after about six months on their platform. That was a bummer, but not a deal breaker.

Fast-forward three years and Pantheon struck again. Only this time intead of instead of another 40% increase they went for the whole cookie jar with a jaw-dropping 1185.71% increase to $450 per month with a 10-day lead on the bill.

With little time to react to Pantheon’s change I did the most reasonable thing I could think of: let the site go down while I learned to move it to Kubernetes.

My requirements:

  • Get site back up-and-running with the least amount of effort
  • Eliminate visitor-based pricing imposed by hosting company
  • Use minimum possible resources to run WordPress at scale
  • Restore Redis cache Pantheon used to offer with $25 hosting

The rest of this post describes how I moved the Chicago Gang History WordPress website off Pantheon and onto Kubernetes. If you follow this guide, you can retrace my footsteps to migrate from Pantheon to Kubernetes too. At the outset you’ll have a 3-node WordPress cluster on Digital Ocean for $30 a month.

Lens App Primer for Kubernetes with K3s

11 minute read Updated

A practical introduction to Lens with K3s and cert-manager.

Discovered a cool desktop app for managing Kubernetes clusters I want to share called Lens. In this tutorial I’m going to show you how to create a K3s cluster and use Lens metrics to introspect on the cluster. Finally we’ll use Lens to install cert-manager on your cluster for the purpose of issuing SSL certs.

WordPress K3s — Init Containers and Helm

11 minute read Updated

How to create a hardened WordPress installation in Kubernetes using Init Containers and Helm on MacOS.

Last week Pantheon dealt the final blow to the website I drove from 100 visitors up to 80,000 per month. By the time I heard the death knell we had a 10-day advance notice the price of hosting was increasing 1025% to $450/month.

I quickly spun up a Plesk instance on Digital Ocean and installed WordPress on a $10/month VPS but realized Plesk was too bloated for our needs and probably not going to cut the mustard in the scale department should traffic decide to climb.

After initially attempting to deploy Wordpress using the Helm chart by Bitnami via the App Marketplace in Rancher 2.5 I found the chart difficult to use, kept looking and eventually found a an alternative chart on a self-hosted VCS.

Like the Bitnami chart the independent chart includes optional database set-up. Unlike the Bitnami chart, however, the self-hosted chart also includes a Redis object cache, OpenID Connect authentication. It also builds a hardened WordPress Pod using WP CLI from scratch with Ansible inside an Init Container. And in this tutorial I’m going to show you how you install it on macOS with K3D.

K3D Load Balancing — MetalLB on Mac

8 minute read Published

How to workaround the Docker host network limitation on macOS using Kubernetes in Docker with K3s and MetalLB.

In this post I’m going to show you a neat little hack to get a bare metal load balancer called MetalLB working in K3s under Docker Desktop for Mac. Before you get started please follow the steps to set-up K3s using k3d with Rancher if this is your first time using Kubernetes. If you already have a K3D cluster running, we’ll be creating a new one for experimentation.

This hack allows Mac users running Kubernetes locally via Docker have it provide EXTERNAL-IP addresses from a pool of addresses so multiple K8s services can be run on the same port, namely 80 (http) and 443 (https), at the same time. Effectively this is a workaround for docker/for-mac/issues/155. Without this hack LoadBalancer IP addresses will show as <pending> or <none> in kubectl.

Let’s see how it works.