Writing
Hacking the Query Loop
I've been loving building sites with the block editor and more recently sites with full site editing (FSE).
One thing I've run into a few times is the need to hack the Query Loop block with some additional filtering and sorting.
Adding Sitepress to Rails
I've been using Proofreader.io and thought it's about time I fixed some of the issues that Proofreader is designed to surface. Like SEO & social meta tags, sitemaps, robots.txt. I choose Sitepress to handle the content side of things...
Using Fail2Ban to stop an attack
Had two attacks this week on different WordPress sites. One seems like a DDoS and the other an enumeration attack. Fail2Ban stopped both by quickly adding new jails.
Export Weebly blog to WordPress XML
Needed to migrate a Weebly site to WordPress. You can export all the web pages and images, but not the blog content. This script exports into a WordPress XML file that can be imported.
Dokku Postgress Backups
I'm using Dokku for my side projects and needed to make sure I had database backups. My Dokku instance is on DigitalOcean, so I wanted the backups to be there too.
A quick look at Go and HTMX with Gowebly
I took a look at Go and HTMX using a web generation tool, Gowebly.
A next-generation CLI tool for building amazing web apps. Go, htmx & hyperscript, modern CSS frameworks!
Zero Downtime Deploys
How we implemented zero downtime deploys to increase team productivity
We had moved our API out of Rails into a Clojure service. The service was running great, but deploys were a pain. We couldn't have downtime when deploying; so we were taking servers offline, updating them, and then bringing them back online. Using the typical rolling deployment pattern.
That worked, but it was slow and took a lot of manual time. Being slow meant longer times to fix bugs. Taking a lot of manual time meant wasted time and a hesitancy to release often. Both are bad for the team and the business.
Ghost on Dokku with Sqlite
I'm using the Ghost modern publishing platform for my daily newsletter. It has a great UI, email support, and it's self hosted. I'm using Dokku for the hosting and Sqlite for the DB.
Margin for error
Very early in my career, I was written up for a JavaScript bug. I don't remember what bug, but I remember the analogy in the write-up. It bothered me for a long while. The analogy was basically: You drive to work every day and don't get...
On becoming a 10x engineer
I know, 10x engineer is click bait-y...
LLM based agent systems
A list of resources for AI and LLM.
Upgrading Dokku version by version
I've used the dokku-update
app in the past, but version 0.30.0 has a breaking change, so I needed to upgrade to 0.29.x first.
It doesn't look like dokku-update
app doesn't support specific versions.
Here's what I did to upgrade manually.
Setup Postgres with pgvector on Dokku
I'm starting to experiment with AI on Route285 and need a vector database. Since I'm already using Postgres and Dokku, I'm adding pgvector. Pgvector isn't installed by the main Postgres images.
Rails Premailer Webpacker Using Full Paths
I've ran into this a couple of times and it's taken forever to figure out! I don't know how I fixed it before, but this is how I fixed it this time.
WordPress Verify Checksums
I recently implemented verifying checksums in CommandWP and found some interesting results. 65% of sites had checksums that didn't verify! Here's a look at what I found. What changed? wp-admin/.rnd - Random seed files left over from som...
Bridgetown with Dynamic Routes on Dokku
Bridgetown is a Ruby based static site generator. Being Ruby is awesome already, but with the new dynamic routes feature and support for Turbo it could be a really powerful site builder. Static for most things, and dynamic content provided by Turbo!
Use modern CLI tools to search and replace text in files
Searching and replacing text is easier with modern CLI tools. I'll show you how to use ripgrep and sd to search and replace text in files.
SMTP Set Up For Hosting Servers
Notes for setting up SMTP for sending mail from hosting servers.
Install Directus on Dokku
It's time to create a database for Route285. Up until now, I've been using Markdown and JSON files to manage the data for the site.
After looking at a few options, I settled on Directus. In thier words:
Fix trailing whitespace
Find & fix trailing whitespace in files. grep -l $'[ \t]$' -r app/views | xargs -L 1 ex +'%s/\s\+$//g' -scx
The Thing About Pricing
Pricing is one of the things I've been struggling with on CommandWP. I want a simple plan that offers customers a lot of value. I want to offer pricing that I'd personally want to use.
While I figure that out, I've left pricing off the site, hoping to find early adopters to help me figure out pricing later. It seems most people don't want to invest time in something without having an idea of what the costs might be going forward. I'd want the same.
Here are some of my thoughts about pricing and where I ended up. CommandWP now has pricing!
Optimizing Development Processes for Business Value
The point of software development is to deliver custom value as quickly as possible. At least development in the context of a business.
While teams should be self-managing, they should also strive to create value. These are principles for development I've seen increase productivity.
If Not a Roadmap, Then What?
I've been wrestling with this question. Roadmap are so integrated in development processes that it's hard to think about processes without them.
Replace Your Product Roadmap
A product roadmap is a list of tasks and mile stones. It's generally built with a destination in mind. The destination isn't always clear and more importantly why it's the destination isn't clear.
Do More With Less Developers
Creating a highly effective development team requires a number of things. Over the years and working on different teams, here's what I've found works.