Blog Questions

Oy. And here I was, quietly NOT blogging, and someone poked the sleeping bear. My buddy Luke tagged me in this series of blogging questions making the rounds right now.

Why did you start blogging in the first place?

I was a terrible steward of my own content, so my best guess based on what I’ve been able to download from Archive.net is that I started around 2001 or so. I didn’t own my current domain then, so I bought anotherbrightidea.org/net. I’d been teaching myself web design and development since the early days of the web. Blogging was a way to get my thoughts out there, to share in those heady days of personal publishing online. It was also an avenue to continue expanding my learning.

What platform are you using to manage your blog and why did you choose it? Have you blogged on other platforms before?

I’ve dabbled in dozens of content management systems over the years. I like CMSs because they tap into my enjoyment of architecting and structuring content around content design. The first real CMS I used was Textpattern. I was part of the VC 200 at TextDrive, driven by the amazing Dean Allen. As the Textpattern forums started to become quieter, I found ExpressionEngine and really dove into that system and community.

This is about the time when I landed my first web development job. I was working as a graphic designer at the time creating magazine directories for chambers of commerce around Los Angeles. One of our clients asked if I could help make a new website for them. Someone was actually going to pay me to do this thing I’d been doing for years as a hobby! It was intoxicating, exciting and terrifying all at the same time. I did the whole site design, development, hosting, email, with ExpressionEngine as the CMS. Later on I started I the LA ExpressionEngine Meetup, and eventually landed a job with my friend and ExpressionEngine developer David Dexter. He’d created BrilliantRetail, an eCommerce add-on for EE. Very exciting times!

Over the years I was able to work with clients on other CMSs, like Statamic and Craft. I had a Tumblr account for a while there too. I tried Blogger, MoveableType, and even did a plain hand-coded HTML/CSS/JS site for a while.

I’m currently using Jekyll, and fairly happy with it. But because of my nerdy passions (let’s be honest, obsessions), I’m always playing with some sort of CMS. I have local setups right now for Hugo, Eleventy, Kirby and Ghost. I lean towards flat file systems these days.

How do you write your posts? For example, in a local editing tool, or in a panel/dashboard that’s part of your blog?

Like CMSs, I’m a bit of an app obsessive. I like trying new apps like some people like trying new restaurants. Because of this, I bounce around a bit. But whatever I’m using, it has to enable Markdown exports so that I’m not locked into some platform. Sometimes I write in Sublime Text. I was using Day One as a journal and did some of my writing there. I’ve now moved over to Obsidian and am writing this post in that app.

I’m always writing on my laptop. I can’t stand writing without a good keyboard, and the smaller screens of my phone or iPad just feel too cramped.

When do you feel most inspired to write?

I write when the mood strikes me. Usually I’ve had a moment in life that I feel is worth writing about, or I’ve explored some thing/app/system that feels like it’s worth writing about. I can go months without feeling the need to document anything. That said, I still do write multiple times a week in my journal. What normally happens is that I get to writing about something in my journal and decide that it’s something I’d be happy sharing online.

Do you publish immediately after writing, or do you let it simmer a bit as a draft?

I’ve done both, but I try to let things sit a bit these days. When I look back at my older writing, where I just typed away and hit publish, some of it makes me cringe. Not out of embarrassment, but more that I didn’t really take time to flesh out what I was trying to say.

What’s your favourite post on your blog?

I’m weird, but I don’t have favorites. Not in colors, food, movies, or anything really. Having a favorite post of my own feels odd.

Any future plans for your blog? Maybe a redesign, a move to another platform, or adding a new feature?

Oh dear, did I mention my obsession with CMSs? I’ve been feeling that itch to redesign for a few months now. I’m also exploring Eleventy and Kirby. Flat file is where it’s at for me. I’d like to explore some different About Me pages, because I feel like most of us just lump our work and personal information together. I feel like this doesn’t present either side of ourselves very well. And like Chris, I like the idea of Slash pages, but feel they should really be blog posts.

Next?

Like Jeremy Keith, I’ll just say YOU. Whoever is reading this, whether online or in RSS, consider yourself tagged. Go forth and write. Own your corner of the web.

Music Servers - A rabbit hole if ever there was one

Photo by Mick Haupt on Unsplash

I’ve spent a good deal of time these past few months exploring the world of self-hosted music servers and players. Why would I do this, when I have subscriptions to both Apple Music and Spotify? Good question! My answer may not be enough to get you diving into this complex world of software, but I will say it’s ended up bringing me a fair amount of pleasure.

I’ve been a paying Apple Music subscriber since its inception. Back in the day, I had a sizable collection of CDs that had accumulated over the years. As the iPhone took off, the idea of having my music at hand anywhere I went was exciting. And so, like many others, I ripped those CDs into MP3s and stored them in Apple Music (iTunes at the time). I eventually sold off my pesky physical CDs because who needs old media just laying about the house? I was a man of the future.

Spotify came in later as a gift from my brother. I jumped between both, using Spotify for its stronger electronic catalog, and Apple Music for the rest of my music listening. I was a happy man of the future. But then the cracks in this subscription-based lifestyle started appearing. Music I thought I owned started being replaced. Songs were now showing listed from weird compilation albums, or replaced outright with live versions or mixes. Songs, sometimes whole albums, would show up as unavailable. Apple and the music licensing twats were messing with my stuff.

In early 2024, I had begun self-hosting several software solutions to replace internet subscriptions I’d had. I was taking control back over a small portion of my daily needs, and enjoying the ownership. A few months ago I started looking into what it would take to jump from Apple Music, at least partially. It’s been a bit of a bumpy road, but I’ve finally gotten to a stable enough solution to write about this journey.

Apple Music acts as both a music catalog and a server that allows you to sync or stream music to your mobile devices. This is where I started my search, for a music server. And let me tell you, there is a thriving, if somewhat messy, world out there for music servers. I’m not going to try and write up something about all of them, that would be lunacy. What I wanted was something I could self-host on my Mac Mini, either as a native Mac application or via Docker. And being self-hosted, I did not want to pay for a new subscription, although I kept my thinking a bit open here. I’m all for paying for quality software. This narrowed down the options a bit. Here’s a rough list of music servers that I explored, in no particular order.

There are probably 5-10 others that I also looked at, but it started to become pretty clear that this music server space had some weirdness about it. Interfaces were all over the place, installation varied from simple app install to complex server configs, and many had awful notes about them across the web. The ones above that I spent the most time with are what I’ll outline.

Plex and Jellyfin

I already have both of these systems running on my Mac, so this was the easiest place to start. Both call themselves media servers, but they also both clearly view movies as their focus. Plex has a dedicated player app called Plexamp, and there are several iOS players that stream from Jellyfin. What I hated about both was the way they handle metadata, or tags. Plex basically disregards what your files have and uses their own data to display music info. It also didn’t stream very well over my Tailscale network. Jellyfin was just a mess with music in general so I ditched this pretty quickly.

Doppler and Swinsian

These were interesting because they’re both native Mac apps, clearly trying to win over people from the Apple Music app. Swinsian is purely desktop use, so that was tossed out pretty quickly. Doppler was actually pretty interesting. It’s a very slick desktop app that has an iOS companion app. Both apps were really easy to use, handled playing music well, and respected the music file tags nicely. Where Doppler got clunky was getting music over to iOS. You have several options to basically copy all your music files directly to the iOS app. There is no sync, so the two apps are basically independent of each other. I routinely ran into issues with duplicates and missing files. Both apps are pretty strong in what they do, the developer just needs to invest in a better sync between them both.

The weird ones

Vox lists itself as a superior music app, and I strongly disagree with that. The desktop app feels like a throwback to Winamp, so I didn’t even bother testing out any sort of mobile player or sync. Lightweight Music Server is just what it says on the tin. A bit too lightweight for my tastes. Roon looks impressive, but it’s a paid ecosystem, and an expensive one at that. Way too high of a bar for me to even begin seriously looking at. Koel looked pretty slick, but I couldn’t get the server to run. After a few days of rabbit hole digging, I gave up.

Where I landed

Navidrome is a fairly new entrant into the space around Airsonic, which has several spinoffs. The underlying APIs are used by several of the servers listed above. It’s easy to set up, and just works. I had zero issues adding my music, and the web player works fine as a desktop player for me when needed. It has a PWA that can be used as a player on your mobile, but this isn’t ideal. I have enough storage on my phone that I want to be able to store some, or all, my music if needed. Now that I had landed on a possible server, I needed an iOS app as player. And so I got out my machete and started hacking my way through that jungle.

Because Navidrome uses the Airsonic API base, which is also used by Ampache, Airsonic, Funkwhale and others, there are quite a few mobile apps out there to play off this API. Most of them are run by solo developers, and it shows in the various apps UI and UX. I landed on Amperfy for iOS, and so far have been quite pleased with it. It has a simple, but effective UI. It has a decent CarPlay implementation and allows me to store my music locally on my phone or stream from my server. I’ve chosen to store locally.

Words of warning

If the above hasn’t already tipped you off to the fact that the music server space is a bit like the wild west, wait until you have to start tagging any of the music you rip or download. I had no idea how complex music tagging could be, and I’m still figuring this out. I’ve run through several apps for this, including MusicBrainz Picard, Kid3, MP3Tag, AudioRanger, Meta (not the evil one), and a few others. I’ve stuck with Kid3 for now, although it’s still a pretty confusing experience. Thankfully I’m not adding a ton of new music often.

Yes, but why?

I am now truly a man of the future. Confused by complex software, annoyed by technology hiccups, and still paying subscriptions. Apple Music is there for my exploration of new music, and artists I just don’t feel I need to own. Honestly, I’d go broke if I tried to buy everything I listen to. For the artists I truly love, and find myself listening to again and again, I’ll buy a CD or a digital download where it’s DRM-free, and add it to Navidrome. I guess I have the best of both worlds here, but “best” seems a stretch at times.

Another reason for this deep dive into music has been to push myself to explore albums once again. Using the streaming services has formed a habit of only listening to singles. I missed the joy of hearing an album from start to finish. Hearing the music as the artists intended the music to be heard, and not just what the algorithm has selected for me. Your mileage may vary.

Ownership in the Rental Age

Photo by Jon Tyson on Unsplash

There’s been a slow change in how I feel about ownership this past year. I’ll chalk this up to age, but there’s probably more external forces at play than I care to admit. It’s been on my mind often lately, so I felt it was time to write down a few thoughts.

Bookmarking

I’d been bouncing around using several different tools for bookmarking and read later uses. None of which I controlled, all of which had some variant of cloud storage controlled by some unknown developer or company. Everything I tried had some small issue that bothered me enough to keep trying out other options. But I realized the core of my issues were around ownership. I was trusting these services to house my data.

Granted, bookmarks and articles saved for reading later don’t typically amount to anything I’d worry about exposing my interests through some data breach. If someone found out that I’d bookmarked “An alarmingly concise and very hinged summary of what it was like to build this site from scratch”, or “The 50 Best Shoegaze Albums of All Time ” so be it. For me, this came down more around control. I want to know these things are mine, and for that I need to control where and how it’s all stored.

I ran through various self-hosted options and ended up with Linkding for now. It’s working as well as I need and doesn’t tax my Mac Mini at all. I can also extend its use through the API, which I may do at a later time.

Music

I’ve been using Apple Music for years, and dabbled in Spotify as well. Overall it’s been fine. I enjoy having my music with me wherever I go, and enjoy building playlists from a huge library of content. Spotify has been great to satisfy my electronic music tastes, and Apple Music has an all-around solid music library for my rock, metal, R&B, and alternative tastes.

My primary listening tool is my iPhone. I always have a phone with a lot of storage, in this case 256 GB. This way I can keep music stored locally and not worry about streaming issues. Years ago I had somewhere around 6 GB of music I’d accumulated from CD’s I owned and ripped. When Apple offered their music match service where they upload and match your music so you can have it in the cloud, I happily signed up. But over the years this has become a very sore spot for me.

It’s not uncommon for Apple’s licensing to suddenly end for some music. When that happens, music you have in your library is marked as unavailable. These can open back up as licensing changes, but there’s no indication of when that may happen. Apple also likes to try and fix this by substituting other songs it thinks are a good match. This is worse than just making the songs unavailable. I’ve had songs replaced by weird mix versions and live versions. This really grates.

And so I find myself once again thinking about ownership. I owned this music, as much as anyone can really own anything these days. I took time to curate the music and time to carefully rip the CD’s into a portable format. Now, as I look through the songs I had added to Apple match, a large portion of them are now DRM’d as Apple Music files. I can’t ever take them to listen on some other player, which means I do not own these anymore. I effectively sold them to Apple for free. And in exchange for this “sale” I get to listen to some of them some of the time, all when Apple and the music licensing gods decide.

And so like bookmarks, I’ve begun exploring other options to house my music collection that align with ownership and self curation. I’m currently trying Navidrome, and several iOS app solutions. I’ve spent the better part of two weeks going down a rabbit hole on music library systems and players. That will warrant a separate post here.

Is this weird?

It’s funny when I talk about these things to “normal” people. The idea of ownership seems to have faded away as we all stream content from Big Tech. Netflix, Max, Hulu, Spotify, Apple Music, Amazon’s Kindle, the list goes on. We’re renters now, as though the home we purchased silently became a rental and through laziness or a sense of futility we acquiesced. Renting has become the norm, and quite frankly I’m getting tired of it.

In my case, there is also a bit of curation and collecting that drives this desire for ownership. I suspect that most normal people don’t feel a desire to collect music or bookmarks, nor much of anything digital. And that’s ok. I don’t collect model cars, or stamps, but I’d never call these collectors out as weird. There’s pride in ownership, and a sense of purpose in hunting down those coveted items to sit on the mantle.

New Mac Code Editor

New Mac code editor out. Very, very new still. I’ll be watching to see where this goes.

Linkding

I’ve been expanding my self hosting software of late. I wanted to find a way to have an archive of my bookmarks that also has an API to play with. Trying out Linkding this week. It’s very Pinboard-like, which is fine by me. We’ll see if this takes.

A Link Blog in the Year 2024

Kellan started something that’s been bumping around in my thoughts for a few months now. In my past life as an Internet Person, I link blogged often. I think at some point I felt it was lazy or something, and stopped. Dumb. Testing this with Jekyll.

Setting Up FreshRSS through Tailscale

I spent a decent chunk of my weekend doing some consolidation of systems and reworked my VPN usage a bit.

Earlier this year I found Tailscale and have fallen in love with how easy it is to use across my devices. I’d also been using Mullvad VPN for a few years now, and have been very happy with that. One downside to using both of these is that, on Macs at least, I can’t have multiple VPNs going at once. To use Tailscale, I’d have to shut off Mullvad, turn on Tailscale, and then remember to turn Mullvad back on.

Tailscale now allows you to connect a Mullvad account so that you can use it as an exit node. The downside is that you can only do this with a new Mullvad account through Tailscale. You can’t use an existing Mullvad account. Since my annual Mullvad subscription was nearing its end, I switched to paying for it through Tailscale.

I self-host several applications on a Mac Mini, including FreshRSS. I wanted to open FreshRSS up so that I could access my feeds in Reeder when out of the house. I had set up a Cloudflare tunnel for this, and until this week it was working just fine. On Friday I noticed the tunnel was down, and after an hour or so of troubleshooting with no results, I got fed up and turned to Tailscale. I don’t really need these apps to be available to the internet, I just need them available to me. Tailscale creates a mesh VPN wherever I am, so this seemed the best way forward.

What I ended up doing was setting up a new docker container for FreshRSS and a Tailscale container to be the network route for FreshRSS. I don’t need to use Tailscale’s serve or funnel services for this, my new FreshRSS instance lives as a subdomain of my Tailscale domain. So freshrss.mytailscale.net as example. It took several hours of tweaking the docker compose file to get things working the way I wanted, but it’s now up and I can access my feeds anywhere I have internet access.

And because I now have Mullvad set up as an exit node, all my regular internet traffic is sent through that. I also have Tailscale set up to use my NextDNS account for ad blocking at the DNS level. Nice little privacy + security win for me.

For anyone else looking to implement this, here’s the docker compose file I used along with an environment config file. I based this all off the tutorial by Tailscale here.

Before you set all this up below, you have to set up an oAuth client in Tailscale settings so that you can set the client secret in TS_AUTHKEY below.

The TS_SERVE_CONFIG env file is here:

Learning to Share at Work

In my day job, I have to know a lot of things about a lot of things in order to provide clients with the best solutions for their business. My history, both in work and in play, helps with this. I’ve done design, front end development, CMS architecture, worked with a wide range of SaaS platforms, integrated a range of systems via APIs and middleware tools, helped clients decide on payment gateways, managed projects small and large, and through it all had to keep that “I know what I’m doing here” face on; even in times when I clearly didn’t.

I’m a Jack of Many Trades, aka a generalist; specialist in few. Our clients expect that I am a specialist in everything they require of us in our work because I’m the first phase client’s go through before we begin design and development. I wasn’t always comfortable with this. It’s taken me years to build the confidence needed to work through discussions where I may not have the deepest knowledge client’s are looking for.

I’ve always worked on very small teams, or by myself. This has forced me to be resourceful in learning, and to be a really good note taker. If I don’t know the answer to something, it won’t typically take me long to get to the root of it and understand it well enough to help explain it.

When I started at Trellis, it was by far the largest team I had worked with in my career. My first year in as Solution Strategist, I stuck with my old ways of doing things. I did most everything myself. By the end of that first year, it was beginning to be clear that this wasn’t sustainable. And it was very much not in the best interests of my coworkers.

Now, when presented with topics that I feel I may be lacking in the right amount of knowledge to speak to, I don’t hesitate to ask for help. I got to thinking about this today, when I had to rewrite a section of a proposal to fit a project. The section was about design and UX. It laid out how our teams work through this process very clearly. It had been written by the design teams, so it was spot on. This particular proposal requires us to provide design feedback, where the client would be providing designs.

I took the paragraphs and rewrote them based on my understanding of how we’d done this in the past. I then jumped into our creative team’s slack channel and pasted in the paragraphs asking for help. The team came back with a rewording of what I wrote that was 100x better, and more concise, than I could have written. No AI was used.

I love the fact that I now am supported by so many smart, talented, wonderful people at work. This past year we’ve made great efforts to nurture cross-department collaboration, and it has really paid off. I know for myself, I get a great sense of pride knowing that the work we do isn’t based on 1 or 2 people, but by teams of amazing people all working together.

Ask for help. It feels good for you, and for those who step up to help you.

Ephemera No. 4

Our floors after sanding and staining

It’s been some time since I last posted. My days have been filled with two jobs, my day job doing strategy for our ecommerce clients and my night/weekend job doing a home remodel. The latter has been taking a lot out of me physically.

I’ve taken on all sorts of new tasks with the home remodel, things I’ve never done before. Some light electrical work, drywalling, cabinet installs, floor sanding and wood refinishing. I’m proud of a the work I’ve accomplished there, but still unhappy with much of it.

When you do work yourself, no matter the job, from web development/design, cooking, drywalling, the end results may come out totally fine for anyone seeing your work. But you can always see the mistakes you left behind. I should have used more salt. I should have used more semantic markup. I should have sanded that drywall joint better.

I’m trying to allow myself some leeway, since much of this has been new to me. The perfectionist in me fights that constantly.

Reading

Reading has also been light these past few months. I try to get some reading in before bed, but I’m often so tired I only get 10-15 minutes in before my eyes start closing. It also doesn’t help that my current stack just isn’t clicking for me.

Recent Media

We started watching The Gentlemen on Netflix this week. I loved the movie, and the show is even better. Crazy characters. Wonderful humor, edgy and adventurous. Constellation on Apple has been interesting, though it hasn’t captured our interest as much as The Gentlemen has.

We had high expectations for Napoleon on Apple, as we’re big fans of Joaquin Pheonix. Overall, it was a wash. The first half jumped around too much, the second half seemed more cohesive.

Blow the Man Down was good, if a bit slow at times. I also rewatched The Station Agent recently. I dearly love this move. The pacing is slow, but intentional. The characters are wonderfully drawn out over the course of the movie.

The Mountains are Calling

My current Zoom background

I’m on video calls daily for work. Typically 2-6 per day, most weekdays. Ever since the lockdown, I’ve gotten used to these and find that I quite like them now versus the old conference calls where you couldn’t see anyone. I feel that our client relationships are a bit stronger now that we’re seeing each other regularly.

I have my video on for all my calls, both internal and client-facing. I’ve read that some people seem to get zoom fatigued by being on so many face-to-face calls, but I never feel that way. Sure, I’ll get call fatigue, but that’s due more to the volume of calls versus me showing my face.

Because I work from home, and my office is the bedroom, I’ve used background images for years. My actual room background isn’t terrible, I could easily get away without them, but I prefer not to show my home. I guess a part of me still feels it’s unprofessional, which these days is silly.

For years now I’ve been choosing a background from Unsplash with mountains in it. I have a deep love of mountains and the outdoors, and the images are nice to look at. I’ve been doing it for so long now that it’s now become my “brand” if you will. Since I change them often, 2-3 times a month, my coworkers make light hearted jokes about where I’m working from each time the image changes.

It’s also talking point at the beginning of many calls, with people lamenting they’d rather be working from wherever it is that I’m working from. I love this, because it works as sort of an ice breaker on new client calls. So many of us are working from home, often times not getting outside as much as we should. I like to inject a little scenery into work life wherever I can.

What I find funny is so many people don’t use backgrounds. And honestly, some really should be. It’s rare for me to see anyone else on my calls with one. I was on a call today and two people had background images. One of mountains, and one was the inside of a Starbucks. I don’t really know what a person is trying to convey with Starbucks as a background. “Hey, I’m working from a coffee shop. Not really, but it looks like it!” I’ll take any mountain range over sitting inside a Starbucks.