Reading List
The most recent articles from a list of feeds I subscribe to.
Add a VLAN to OPNsense in Just 26 Clicks Across 6 Screens
How many clicks does it take to add a new VLAN to an OPNsense firewall?
Nothing fancy. Just your regular, basic VLAN with its own IPv4 range.
How many clicks should that take? Maybe two or three? Five if we’re real wild?
Every time I add a new VLAN to OPNsense, the process feels strangely tedious, so I decided to measure exactly how many clicks it takes to add a simple VLAN to my firewall.
Refactoring English: Month 11
New here?
Hi, I’m Michael. I’m a software developer and founder of small, indie tech businesses. I’m currently working on a book called Refactoring English: Effective Writing for Software Developers.
Every month, I publish a retrospective like this one to share how things are going with my book and my professional life overall.
Highlights
- I’m running late on my book.
- A great blog post inspired me to think more about convenience shell scripts.
- The game Oxygen Not Included is fun.
Goal grades
At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals:
Hold Off on Litestream 0.5.0
Litestream is an open-source tool that backs up SQLite databases to cloud storage in real time. I love it and use it in all of my projects.
Litestream is owned by Fly.io, and they paused development on Litestream for almost two years in favor of an alternative project called LiteFS. Two weeks ago, Ben Johnson, Litestream’s creator and lead developer, announced that they were shifting focus back to Litestream and had just published a new release, 0.5.0.
Read My Blog With JavaScript
You can now read my blog with client-side JavaScript. I’m not sure why you’d want to, but you can.
Maybe you want to add a blogroll to your site with a list of recent posts from your favorite blogs, but you don’t want to fetch them server side. If you wanted to use JavaScript to show my five most recent post titles, you’d write some code like this:
fetch("https://mtlynch.io/index.xml")
.then((response) => response.text())
.then((str) => new DOMParser().parseFromString(str, "application/xml"))
.then((data) => {
const articles = [...data.querySelectorAll("item")].map((item) => ({
title: item.querySelector("title").textContent,
date: new Date(item.querySelector("pubDate").textContent),
}));
// Sort articles by date, newest to oldest.
articles.sort((a, b) => b.date - a.date);
// Print the titles of the 5 most recent articles.
articles.slice(0, 5).forEach((article) => console.log(article.title));
});
The above code produces this output:
Refactoring English: Month 10
New here?
Hi, I’m Michael. I’m a software developer and founder of small, indie tech businesses. I’m currently working on a book called Refactoring English: Effective Writing for Software Developers.
Every month, I publish a retrospective like this one to share how things are going with my book and my professional life overall.
Highlights
- I’m experimenting with low-investment, low-payoff-style blog posts.
- I’m adjusting my strategy for freelance editing to work specifically with people who have read my book.
- My intuition was way off about the odds of reaching the front page of Hacker News.
Goal grades
At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals: