RSSAmplifier

Blog

Joseph Choe

I think about software development, writing, and many other things.

josephchoe.comRSS feed ↗78 posts

Latest posts

The Hyperstack!

About a year ago I talked about developing my own personal technology.I wanted a codebase or foundation on which to build, well, literally anything.Something I could take with me wherever I went.

Bending cmixer to my will!

No program can defy me for long!

Personal Technology

Over the last few months, perhaps even years, a single thought has loomed before me.

The Plaintext Web

Will the Plaintext Web finally disappear?

Building a Dictionary CLI!

I’ve been wanting to build a dictionary utility on the terminal, so I did!

Why I've Never Owned a Smartphone

I’ve never owned a smartphone, and I never will.

Filtering Mail with Ruby!

I thought it might be interesting to demonstrate the smtpd-filters protocol with Ruby!

ksh job control!

If you learn one thing, learn to control your jobs!

runit with control!

Let’s keep control of our systems—with runit!

runit with snooze!

A year or two ago, I built a cron scheduler Ruby. Here’s how you do the same thing—with runit!

runit with logging!

Sometimes you want to add logging to your services. Here’s how you do it with runit!

Running with runit!

I write and run quite a few services! Here’s how I do it—with runit!

Automated Build Systems with fwa!

Building your own build systems is always the best way!

Writing My Book with LaTeX!

Writing a book was the difficult part. Here’s how I made it easy for myself.

Scheduling with at!

Sometimes you just want to schedule something…

The Speedmaster

I decided to purchase another watch for myself. I’ve had my eye on the Omega Speedmaster Professional for many long years now.

Notifications with herbe!

I try to avoid overcomplicating my system too much, which is why I chose herbe for notifications!

UPDATE: Compiling Ruby from Source!

A few months after posting my earlier video on compiling Ruby from source, the knowledge therein became obsolete. Here’s why!

A Year of New

Last year I compiled a list of resolutions I’d had for the year. I thought I’d do it again this year.

Extracting URLs with urlview!

Here’s how I extract URLs from Maildir files like in my mail inbox or in my RSS feeds.

The Slow Watch

My wife gifted me a slow watch a few weeks ago.

OpenBSD on a Proxmox VM!

Here’s how I install OpenBSD onto a Proxmox virtual machine!

RSS with sfeed, fdm, and mblaze!

Here’s how I subscribe and consume content via RSS (or Atom) on the terminal, with sfeed, fdm, and mblaze!

On Reading Thirteen Witches - The Memory Thief

The Memory Thief, part of the Thirteen Witches series, was written by Jodi Lynn Anderson. It is simply an amazing story. I read this book in late May, but I thought I’d share it now since I was thinking about it.

Mail with OpenSMTPD, fdm, and mblaze!

Here’s how I view and send mail on the command line, with OpenSMTPD, fdm, and mblaze!

A Year of Writing

This year was a bit of an odd one for me.

OpenSMTPD on the Local Network

One of the many great things about OpenBSD is that it comes with OpenSMTPD by default, allowing my servers to communicate with themselves and each other via the SMTP protocol. This is used to send insecurity reports, failed cron jobs, et cetera to various users on the system.

Dynamic DNS

I’ve been self-hosting some services on my homelab. However, since I don’t have a static IP through my Internet service provider, I need some sort of dynamic DNS script that will update the requisite A record on my name server.

Company Loyalty

There are so many stories nowadays about the loyalty a person owes to another, whether that be to family or to their company. Most of these stories are about that loyalty being betrayed in some way, but the language around these stories sticks with me and gives me pause.

WireGuard on OpenBSD

I’ll be traveling a bit next year, and when I do I’ll want to have access to my homelab and all the services therein.

Compiling Ruby from Source

Despite the prevalence of rbenv or rvm in the Ruby development space, everyone should know and understand how to compile Ruby directly from the source code.

Outage

About two years ago, the company I worked for had an incident that shut down service to our main website and application for nearly 24 hours. Even when service was restored, the application suffered degrading performance problems for several weeks after that.

Exploring Ruby CGI

Lately, I’ve been thinking about how Ruby web applications are deployed.

Provisioning an NTP Server

One of the first things I did upon receiving my new Framework laptop was to provision a personal NTP server.

Installing OpenBSD on a Proxmox VM

I’ve been playing around with operating systems lately that I wouldn’t have before building out my new infrastructure.

The New Framework

I purchased a new Framework laptop.

Foundering Down to the Ground

I was once a co-founder of a startup.

Punitive Measures

Facebook’s little mishap this week prompted the joke that some poor network engineer might be getting fired for mishandling a configuration file.

A Better Technical Interview

A little over six months ago, I wrote an essay about how technical assessments are dumb. And that’s still true.

Developer Error

There arose a situation this week where two developers discussed a design that I was sure was a mistake. As I sat there listening, I wondered whether I should continue to observe or if I should intervene in some way.

Lessons Learned Making Videos

I started making videos in June, began posting them in July, and then took a break in September.

Farming Metaphor

About a year or two ago, I started watching a lot of YouTube farming or homestead videos.

Personal Infrastructure

Homelabs are one of those things that quickly spiral out of control.

Building a Cron Scheduler

Using the Actor model of concurrent computation, I build a cron scheduler in Ruby intended to be a single lightweight process within a larger distributed system, its only purpose to schedule work that other processes on other larger server instances complete.

Deploying Eventide to Heroku

Eventide is a great tool for building evented, autonomous services, while Heroku allows developers to get projects deployed with very little fuss. This week I show how to deploy Eventide onto a Heroku dyno with very minimal hassle.

Building a Welcome Email Part 2

In this two-part tutorial sequence, I build upon the earlier event sourcing tutorial and develop welcome emails as a part of the application. Continuing in Part 2, I build a component that will subscribe to the registration component and send welcome emails to users that have registered with the application, even to ones that signed up before the development of this feature.

Building a Welcome Email Part 1

With this two-part tutorial sequence, I build upon my earlier event sourcing tutorial and develop welcome emails as a part of the application. In Part 1, I show how to create an SMTP package that we can control, observe, and test, which I will then use next week to build the welcome email component.

Rack Data Validation

Continuing my earlier tutorial on event sourcing, I demonstrate how to validate data on the registration resource.

Personal Ruby Development Environment

Managing multiple different Ruby projects can be daunting. Here’s how I manage my personal Ruby development environment with chruby, ruby-install, and bundle –standalone.

Rack - The BEST Ruby Web Framework

You should definitely learn to use Rack if you’re a Ruby developer.