Benjamin Lu

everyday is cool

Technology

Notes on web development, self-hosting, and troubleshooting.

Let the Merge Make the Tag

I’ve tagged a release before merging it more than once. The pull request looked ready, so I created the tag, wrote the notes, and then merged. The tag pointed at the commit on the release branch instead of the merge commit. Each time, I had to delete the tag and … Continue reading →

Keeping a Homelab Change Log You’ll Actually Use

After an evening of changing network settings, it’s easy to remember the fix and forget the two changes that came before it. A short log makes it easier to reconstruct what happened when a service breaks days later. Keep the entry small Start with the date and the system you … Continue reading →

ClassicPress Customizer: postMessage or Refresh?

When I add a setting to a ClassicPress theme, I start by asking what has to change in the preview. A color picker feels better when you can see the color as you move it. A sidebar setting may change which template loads and what markup it produces. Those two … Continue reading →

Merriment, a ClassicPress Theme

Merriment is the Christmas theme I built for ClassicPress. A snowy header, a holly background, and evergreen and red accents give it a holiday look as soon as you activate it. You can still choose a left sidebar, a right sidebar, or a single column. I wanted the theme to … Continue reading →

Introducing Novaris: An Early Look

I’ve been working on a project called Novaris, a flat-file CMS and framework for building websites with PHP and Markdown. It’s still early in development, but I wanted to introduce it here because it’s already part of how I build this site. My background is in making themes and working … Continue reading →

Submitting a Theme to WordPress.org

After volunteering as a WordPress theme developer and reviewer, I think the most useful thing you can do before submitting a theme is to install the ZIP yourself on a clean site. By that point, you know every shortcut you took to get the theme running locally. A clean install … Continue reading →

Build Often, Release When Ready

A small stylesheet tweak can be worth committing immediately even if the rest of the redesign needs another afternoon. When every commit deploys, it’s hard to save progress without also publishing it. Give builds and releases different triggers A push to a source branch can run the export and check … Continue reading →

Why a Service Can Work on the LAN but Fail Remotely

When an HTTPS service works from your LAN and fails from outside, run the same checks on both networks. Use a second connection such as a laptop tethered to a phone with Wi-Fi disabled on the phone. Replace app.example.com and /health with the hostname and path that fail. 1. Compare … Continue reading →

Why I Started Using Docker

I don’t remember which Docker version I started with. What I do remember is the appeal of being able to put a project’s services and settings in a file I could come back to later. With web projects, I wanted to spend the evening working on the site instead of … Continue reading →