About the Author

By Connor Taffe | Published .

I'm a Software Engineer living in Little Rock, Arkansas working in Advertising Technology. At work, I deal with big data processing and distributed systems. At home I spend time antiquing, cooking, gardening, traveling, hiking, and cycling.

Atop the Natural Bridge at Petit Jean State Park
Atop the Natural Bridge at Petit Jean State Park

You can find me on IRC as cptaffe on several networks including Libera on #connor.zip and #cyberpals, Ergo, OFTC, and SlashNET on #vc. If you are an Arkansas resident I would encourage you to join the tiny community on barefoot. You can also find me as @cptaffe on X; or via email.

The Blog

This blog is mostly about the computer work I do in my free time. It started after I built the nth generation of a telephone system at home using Twilio SIP trunking, Asterisk on an HP DL380 G6, a Digium T1 PCI card, an Adit 600 channel bank, a Lucent PortMaster 2 digital modem bank, a few antique Western Electric rotary phones, a Cisco SIP phone, Hayes modem, and IBM 3151 terminal. I wanted a place to write down all the things I learned building that system. This is still incomplete, but I've jotted some notes down.

I wanted to self-host it, in the spirit of the early Internet. I use a Kubernetes cluster across a couple of ESXi VMs created with kubeadm and Calico for networking. I use HAProxy on pfSense, which is updated automatically by kubernetes-pfsense-controller, along with Traefik as an ingress controller and MetalLB as the load balancer provider which also handles BGP. By configuring pfSense to relay *.k8s.home.arpa DNS requests to Kubernetes' DNS server, I'm able to both route and use service names like blog.default.svc.k8s.home.arpa across my home network.

The software that runs this blog is a Go program which utilizes goldmark along with a custom grpahviz extension and a fork of accept-headers which properly handles multiple Accept header lines as used in old browsers like MacWeb or NCSA Mosaic. Through writing it, I've been able to learn about and implement RSS and Atom feeds, use HTML5 XML pages, as well as provide XML and JSON interfaces (just pass the correct Accept or ?format=) and provide XSLT stylesheets for any XML pages. Although it may be in the future, it currently is not a static site. Each request reprocesses the relevant markdown source files, renders diagrams with graphviz, etc.