Profile picture Schedule a Meeting
c a n d l a n d . n e t

Writing

Adding Sitepress to Rails

| rails, sitepress, seo

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

| wordpress, fail2ban, nginx

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

| wordpress, weebly, code, ruby

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.

Zero Downtime Deploys

| infrastructure, processes

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

| ghost, dokku, 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

| coding

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...

Upgrading Dokku version by version

| dokku, ubuntu

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

| postgres, pgvector, dokku, route285

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.

WordPress Verify Checksums

| wordpress, commandwp, security, wp-cli

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...

Install Directus on Dokku

| directus, dokku, postgresql, docker

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:

The Thing About Pricing

| commandwp

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

| development, process

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?

| development, leadership, process

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

| development, leadership, process

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

| development, leadership, process

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.