The long and winding Kilopixel road

A few years ago I had an idea to build a large, inefficient display with a web interface that anyone could interact with. I've noticed Danny Rozin's unconvenional mirrors over the years and then saw...

Read

A manifesto on shower temperature control

I had a very shower-y shower thought: why does turning my shower handle a tiny bit make such a huge difference in the comfort of the shower? Why are we wasting so much potential control area on water...

Read

Building an heirloom custom cribbage board

My nephew was graduating from high school and my sister in law asked me if I could recreate a sentimental cribbage board for him. She couldn't find anything quite like it, so a custom build was...

Read

Set up lsyncd to synchronize files between two or more servers

lsyncd runs a daemon to watch your filesystem for changes, and when a change occurs, copy files to another location. This can be a different location on the same server or an entirely different...

Read

Running Laravel Horizon in a multi-server environment with Laravel Forge and Envoyer

I just set up Laravel Horizon to manage our queue in a multi-server environment. The documentation is a little thin in this area but the ultimate solution is pretty simple. We have a load...

Read

Load balanced environments with Laravel Forge and Envoyer

Here's how I set up a load balanced environment on Laravel Forge and deployed with Envoyer. Forge is a service run by the Laravel crew that provisions and configures servers. They don't run the...

Read


This blog is an experiment: less about education and more about documenting the oddities I've experienced while building web apps.

My hope is that you're here because of a random search and you're experiencing something I've had to deal with.

Recent Posts

View all