Everything Wants a Second Life

Nothing has only one use until you decide it does.

If I Can't See It, I Don't Understand It

Nothing has only one use until you decide it does.

If I Have to Do It Twice, I Build a System

Nothing has only one use until you decide it does.

Think Inside the Box

Nothing has only one use until you decide it does.

Embrace the Mistake

Nothing has only one use until you decide it does.

Friday, July 24, 2026

Think Inside the Box.

Philosophy · Design · Constraints

Think Inside the Box.



Before explaining this philosophy, I want to share some context. I am a graphic designer with a Master's degree in Visual Communication and nearly 20 years of experience. Throughout my career I have worked with all kinds of clients: commercial, institutional, governmental, and non-profit organizations. Not a single one — not even once — has ever told me: "Budget is unlimited, and you have total creative freedom to do whatever you want."

Never.

There is always a budget cap, a technical restriction, a limitation on format, material, or printing. And if I was lucky, those constraints came clearly defined in a creative brief.

My professors, panel members, and guest speakers always repeated the same phrase: "You have to be creative and think outside the box." But reality is different. Every time a new client, project, or personal task comes along, you have to learn to think inside the box — because that box represents the real limitations of the project.

The box isn't a limitation. The box is the brief.

Learning the Craft Through Limits

My first professional constraint wasn't creative. It was economic.

In one of my first professional jobs, I designed for an analog offset print shop. There was a strict limit of four colors, and every extra color carried a direct cost for the client. Not every client was willing or able to pay for full process color, so I had to design within that economic barrier. Many times I had to work with just a single color — my mind had to stay creative inside that monochromatic box.

As the print shop evolved into digital printing, color stopped being a strict limit — but a new restriction took its place: format. We had to maximize every sheet of paper to optimize cuts and reduce waste. Once again, right back inside the box.

Four Cases. Four Boxes. Four Solutions.

Every job had a different box. The approach was always the same.

The cases

The color chart. At the leading paint factory in the Dominican Republic, the company decided to reduce the physical size of their color charts to lower production costs — requiring a full redesign of almost every layout. The constraint was real and financial, not a creative exercise. Same information. Different approach. It worked.

The 21,000 labels. At the same factory, 21,000 labels were marked for destruction due to a minor specification change. Instead of scrapping them, I proposed a custom correction sticker that could run through the automated labeling machine. The cans simply went through the line. We saved 21,000 labels that would have ended up in the trash. The constraint wasn't an obstacle — it was the brief.

The data merger. During seven years at a government institution, major statistical studies were published every four years. The first time, I adapted each chart manually, province by province. Extremely tedious. For the second study, I redesigned the concept and set up a datamerge — automatically generating 36 regional documents using tools I already had. Preparing a template for 36 automated documents is infinitely easier than building each one from scratch. The economists reviewed data without typographical errors. Everything shipped on time.

The press kit. At the same institution, right before an international NGO event, the vendor failed to deliver the custom USB drives. I printed a QR code linked to a Google Drive folder and added it directly to the physical kit design. All 50 press kits went out on time. Access logs later confirmed 45 had been opened. A physical drive can be lost. A link stays active until you take it down. The supplier's failure produced a better solution than the original plan.

Real-Time Adaptability

The constraint kept the business running while I fixed the problem.

After leaving the government institution, I ran my own sublimation business — mugs, t-shirts, thermoses, birthday kits. At one point, one of my machines developed a color profile problem: blues printed green, and dark tones tilted toward brown. Orders kept coming in while I worked to fix it.

My solution: I adjusted my design strategy on the fly. I shifted to two-color or three-color designs, avoiding the problem shades entirely. I also built a complete mockup system using Photoshop Smart Layers so clients could approve designs before production. The thermo wasn't available on any mockup site online — so I built the template myself. That constraint pushed me to create something my competition didn't have.

The limitation kept the business running while I resolved the technical issue.

The Kitchens

Not everyone can afford to start from scratch.

In my current work, one of my main responsibilities is measuring and designing custom kitchens. I have to adapt to the physical reality of the client's space — walls that cannot move, fixed plumbing, tight budgets, measurements that don't match any standard.

My job isn't to design a perfect kitchen. It's to design the most ergonomic and attractive kitchen possible within what already exists. And I think that's part of why new clients keep coming — because when someone arrives with what they think is an impossible space, I give them a solution using materials they already have.

The limitation is the design.

A Philosophy for Life

I find it difficult to draw inspiration from a blank canvas. But it comes naturally when there is a real constraint to solve.

My wife is incredibly creative when it comes to decoration. When an awkward space bothers her, she always finds a way to redesign it. Whenever she shares a new idea, I never say "we can't." My answer is always: "We can do this — and we can do it with what we already have."

That has led us to create beautiful pieces from leftover materials: buckets into planters, a remnant countertop piece into a nightstand, a PVC pipe into a lamp, cleaned glass bottles into vases and centerpieces. We don't do it just to save money. Transforming something destined for the trash into a decorative piece gives it double the value. And doing it together adds something to the space that no store can sell.

My wife brings the vision. I bring the question: what do we already have that can make this happen?

The Point

A constraint gives you a structure to build upon.

I have started almost every project in my life with a limitation. Not a blank canvas — a set of real conditions I couldn't ignore. And almost always, the work that came out of those conditions was better than anything I would have made with total freedom.

Because unlimited freedom gives you nothing to push against. A constraint gives you a structure to build upon. And when you tackle it with enough creativity, it stops being a wall and becomes a foundation.

I am not handed a blank canvas to create abstract art. I am handed real problems. And I build real solutions.

Many of these solutions cannot be shown publicly due to NDAs — which aligns well with my philosophy of working behind the scenes. But that is a story for another post.

What's the tightest constraint you've ever designed around? Drop it below.

This post contains Amazon affiliate links. If you purchase through them, I may earn a small commission at no extra cost to you. Every product listed here is something I personally own and use daily.

Wednesday, July 22, 2026

Embrace the Mistake

Philosophy · Design · Life

Embrace the Mistake.



From a young age, we're taught to work in a way that avoids mistakes. The entire education system is built around precision, focused on a flawless result.

But I was a kid who doodled constantly.

On pencil cases. On my backpack. On the desk chair. On anything within reach. Even teachers who noticed didn't make me feel like I was doing something wrong — and even if they had, it wouldn't have stopped me. It was the way I quieted the noise in my head. I would start with a single stroke that would become an abstract form I hadn't intended. No plan. No goal. Each mistake became a new stroke, a new direction, a new piece. And at 40, looking back, I realize I've applied this to my entire life — almost as a philosophy. Without ever deciding to.

I didn't know I was dyslexic until I was an adult — working at a government institution, listening to a consultant describe the condition in a meeting. I recognized myself mid-sentence. Suddenly, a childhood full of educational therapy sessions, support rooms, and extra effort made sense. My mother never explained it to me. I never asked. What I do remember is my father telling people that I could visualize an object in pieces in my mind — even one I had never seen disassembled. Now, in this conversation with myself at 40, I understand every mental process I built just to help myself function. Because I couldn't write well. So I learned to see instead.

The first time I noticed it was with a name.

When I was learning English as a kid, playing an MMO, I created my character and misspelled my own name. I tried to write Shadow. It came out Shiado. I kept it. That became my name in every game through adolescence and adulthood. A typo that became an identity.

The Pattern

The philosophy showed up everywhere — I just didn't recognize it as one at the time.

When I was learning Photoshop — version 3 or 4 — I made mistakes that ended up as my desktop background. I scratched my leg absentmindedly with a toothpick at the beach and ended up with a temporary tattoo from the salt drying on my skin. I burned a SODIMM connector by inserting it wrong into my motherboard and used it as a keychain for almost two years. In RPGs, when I made mistakes in my character builds, I refused to start over — I played the broken build and made it work.

The magnets from damaged hard drives became refrigerator magnets. At one of my first jobs, operating a CNC machine, I kept the centers of the O's and Q's — the small pieces that fall out when you cut those letters — and turned them into keychains for my girlfriend. A leftover strip of acrylic, about 30 cm long and 3 cm wide, became a necklace holder for her. I didn't plan it. I just looked at the piece and saw what it could be. I took the remaining rectangular scraps from the same cuts and turned them into a puzzle for my daughter. A PVC pipe left over from a project became a lamp.

Now she's my wife. Some of those things still exist.

I built a monitor stand from scrap wood and a threaded rod I'd accidentally bent at work by stepping on it. My boss was not happy. I was — the bend made it useful for something else.

I once bought a desk from a department store that came with a retractable keyboard tray underneath. It kept hitting my knees, and the ergonomics were wrong for how I worked — I was gaming a lot at the time and needed the full surface. So I removed the tray. But the tray itself was tempered glass, with decorative bolts, and it was too good to throw away. I turned it into a small side table. Twenty years later, it still exists. My mother's plant sits on top of it.

More than once, I've found myself lying on the floor, photographing the broken pieces of a glass or a cup. Not out of sadness. Out of curiosity about what they looked like from that angle.

I never did any of this consciously. It was always instinct.

But I think I owe a little of it to my parents — specifically to my father, who taught me that mistakes are inevitable, but learning from them is a choice. He never made errors feel like the end of the world. So I never learned to treat them that way.

Now I try to teach my children the same thing. Mistakes are inevitable — living is making mistakes. But understanding them is a decision. Analyzing the chain of events that led you to an error is a unique and personal form of learning. Nobody can teach it to you. You have to discover it yourself.

The Box

The real skill is thinking inside the box — when the box is a genuine constraint.

People talk about "thinking outside the box." But my experience has always been the opposite. The real skill is thinking inside the box, when the box is a genuine constraint: your tools, your budget, your situation. You don't get to ignore it. You design around it.

Four real cases

The color chart. At a paint factory, the entire catalog needed to be redesigned. The constraint was the budget — not a creative exercise, a real financial limit. I restructured the whole design around what was actually available. Same information. Different approach. It worked.

The 21,000 labels. At the same factory, there were 21,000 labels marked for destruction — a print error made them unusable as they were. I proposed saving them with a sticker overlay. It wasn't elegant. It was practical. It saved the cost of reprinting 21,000 units. The constraint wasn't an obstacle — it was the brief.

The sublimation printer. I once ran a sublimation shop — mugs, t-shirts, thermoses. The printer had a calibration problem: the blue channel printed green. Instead of stopping production, I redesigned everything around the limitation. Two colors, three at most. No blue until I corrected the color profile. I didn't advertise the constraint. Nobody knew. The work just looked intentional.

The press kit. At one of my last formal jobs, I was working an event for international NGOs — the official release of a study. At the last minute, the supplier couldn't deliver the USB drives. I printed a QR code linked to a Google Drive folder and added it to the kit design. Fifty press kits went out on time. Later, I confirmed that 45 of them had been accessed — tracked through Drive access requests. A physical drive can be lost. A link lives until you take it down. The supplier's failure produced a better solution than the original plan.

That's what "the box" actually means. Not a metaphor. A real boundary with real consequences. And the question is always the same: what can you build inside it?

Same Instinct. Different Scale.

And now, at 40, the pattern is still running.

Old computers that were heading for the trash became a homelab. An OptiPlex that nobody wanted is now a firewall serving a 1,200 m² property. A NUC that sat unused is now the DNS resolver and tunnel gateway for everything I've built. The hardware didn't change. The intention did.

Same instinct. Different scale.

The Point

Perfection is a ceiling. A mistake is a door.

Not everything has to be perfect. In fact, perfection might be the most limiting state of all — because everything considered perfect cannot be improved. Perfection is a ceiling. A mistake is a door.

It's not about making broken things work — sometimes it's about recognizing that a broken thing is actually better suited for something else entirely. The mistake wasn't wrong. It was just early.

The stroke that went where you didn't intend it — that's not a mistake. That's the beginning of something you hadn't thought of yet.

This is how I've always built. And apparently, it's also how I've always lived.

Have a mistake that became something better? Drop it below.

This post contains Amazon affiliate links. If you purchase through them, I may earn a small commission at no extra cost to you. Every product listed here is something I personally own and use daily.

Monday, July 20, 2026

Don't Make Me Think — Network Edition

Networking · Infrastructure · Don't Make Me Think

The Network Doesn't Need Me Anymore.

There's a moment every homelab builder eventually faces. You've spent weeks — maybe months — configuring, testing, debugging. The network works. The services are up. Everything is exactly where you want it.

And then you leave the house.

And someone calls you. "The internet is down." And you're twenty minutes away, and nothing you can say over the phone is going to make sense to the person standing in front of a blinking router.

That's the problem I set out to solve. Not just building a network that works — but building one that works without me.

A network that only you can operate isn't infrastructure. It's a dependency.

The Context

This isn't a home network. It's a small ecosystem.

The property covers roughly 1,200 m². A house, an office, storage, and several rented commercial spaces — two garages, a church, an upholstery shop, and an accounting office. Over 30 devices on the network at any given time. People working. Businesses operating. Payments being processed.

When the network goes down, it's not just an inconvenience. It's a disruption to everything running on top of it. Which means the pressure to fix it — fast — falls on whoever is physically present. Not always me.

That's why "it works when I'm here" was never an acceptable answer.

The Stack

Three machines. Each with a clear role and a label.

NUC, OPN y Bypass E900 con etiquetas

NUC, OPNsense, and the Bypass E900 — each labeled, each with a defined role.

The hardware

OPNsense on OptiPlex 780 SFF — the firewall and router. Everything passes through here. If this is down, there's no internet — period. Label: OPN.

NUC running Pi-hole + Cloudflare Tunnel — DNS filtering and the tunnel that exposes internal services. If this is down, DNS breaks and the tunnel goes offline. Label: NUC.

Linksys E900 — Bypass router — not normally on. This is the emergency fallback when everything else fails. It sits ready, cables pre-connected, labels on every port. Label: Bypass E900.

The Physical Design

The instructions are on the hardware itself.

This is where most homelab setups stop short. The configuration is solid, but the recovery process lives only in the builder's head. That's a single point of failure — and not a technical one.

My approach: if someone needs to connect a cable in an emergency, they shouldn't have to remember anything. The label tells them where to plug it. The color confirms it. There's nothing to look up.

Cables con labels ISP y CASA

Two cables. Two labels. No confusion.

Two cables live next to the E900, always. One labeled "ISP" — connects to the modem. One labeled "CASA" — connects to the house network. The E900 itself has matching labels directly on the ports, telling you exactly where each cable goes.

Labels ISP y CASA directamente en los puertos del E900

The label is on the port. The instruction is on the label. Nothing to remember.

That's the Don't Make Me Think principle applied to physical infrastructure. The system should be operable by someone who has never touched a router — because eventually, that person will need to operate it.

The Recovery Plan

Two versions. One for anyone. One for me.

The recovery plan exists in two forms. The first is for anyone in the house — no commands, no technical knowledge required. Five steps in a visual flowchart, ending with the bypass procedure if everything else fails. The second is for me — or eventually my son, who I'm training — with the full diagnostic sequence: OPNsense console, Pi-hole, Cloudflare tunnel, ISP check.

The flowchart below is the version anyone can follow.

Recovery flowchart — no commands version

The Real Test

It broke. And nobody called me.

The first real test wasn't planned. A power outage took down the NUC — not gracefully. The drive was mid-write when the power cut. SQLite flagged a corruption warning on next boot.

But the network came back on its own. OPNsense booted. The NUC booted. Pi-hole restarted inside Docker. Cloudflare Tunnel re-established the connection via systemd. Everything that needed to survive a hard shutdown did — because each service was configured to start automatically, not manually.

The only thing that required intervention was the SQLite warning — and that's on my list. Everything else recovered without a single command.

A resilient network isn't one that never fails. It's one that recovers on its own — or gives anyone in the house the tools to recover it.

The Point

Build it so it doesn't need you.

The goal was never to have the most advanced network. The goal was to have one that works — consistently, predictably, and without requiring me to be physically present to keep it running.

Labels on every cable. Labels on every port. Labels on every machine. A visual recovery plan anyone can follow. Services configured to restart themselves. A bypass router sitting ready for the worst case.

None of this is complicated. All of it matters.

If your network only works when you're there — it's not finished yet.

Questions about any part of this setup? Drop them below.

This post contains Amazon affiliate links. If you purchase through them, I may earn a small commission at no extra cost to you. Every product listed here is something I personally own and use daily.

Monday, July 13, 2026

I Gave My Son Access to Gaming. Not to the Internet.

Parenting · Gaming · Local Multiplayer

I Gave My Son Access to Gaming. Not to the Internet.

I've been close to video games for as long as I can remember.

I didn't start early — I was around ten when I first played. But from that moment, something clicked. Not an escape from reality, not at that age. More like a door that opened to a different way of thinking.

Strategy games taught me to think several steps ahead. Role-playing games taught me patience and decision-making. Puzzle games rewired how I approach problems. Every genre had something to offer — not just entertainment, but a way of training the mind without it feeling like training.

I carried that with me. And now that I'm a father, I see those benefits clearly. I've watched what games did for me, and I want that for my kids.



But the game has changed. Literally.

Everything became online. Everything became free-to-play. And with that shift came something nobody warned us about: the internet brought the whole world into the room with your child.

Today's multiplayer games are designed to capture attention indefinitely. They're built around engagement loops, microtransactions, and social pressure. And beyond the design — there's the environment. The toxicity. The strangers. The people your child assumes are other kids their age, because why wouldn't they be?

That assumption is exactly where the danger lives.

I know this firsthand. Not as a theory. I've lived the consequences of what happens when a child connects to the wrong person online — and I had to involve the police to resolve it. I won't go into details. But that experience changed how I think about internet access for my kids permanently.

Roblox is blocked in my home at every level — DNS and firewall rules combined. That's not a random decision. It came from a real incident, with real consequences, that I will not let repeat itself.

The Infrastructure Side

Having your own infrastructure changes everything.

I have a firewall. I have a DNS resolver I control. I have the ability to segment devices, set rules by MAC address, and define exactly what any device on this network can and cannot reach.

His computer is on the network. But it's not on the same network as everyone else. He has access to what I know is safe for him. What he doesn't have is an open door to the internet at large — unfiltered, unmonitored, unrestricted.

How it works technically

His device is assigned to a separate network segment via OPNsense. Pi-hole handles DNS filtering at the network level — specific platforms are blocked at every entry point, DNS and firewall rules combined. No workaround from the device side is possible without going through the firewall first.

The games he plays run locally — no cloud dependency, no account required, no server in another country deciding what content he sees. Everything stays inside the network I control.

And inside those boundaries, I've given him more freedom than most kids his age have.

The Games

He plays modern games. Games his friends are playing.

I watch him play Subnautica and I see something I didn't expect. He doesn't just explore. He manages tension. The game generates a specific kind of fear — the deep ocean, the unknown, something just out of sight — and instead of shutting down, he builds. He creates bases, he plans routes, he finds ways to protect himself from things he hasn't encountered yet.

Then I watch him play Hollow Knight. That game asks something different from him. It asks him to remember. Routes. Events. Techniques. It asks him to fail, repeatedly, against the same boss — and to come back each time with a slightly better understanding of what went wrong. That's not just gaming. That's a feedback loop that most adults struggle to maintain in real life.

And then there's Minecraft. Where he builds things that exist only in his mind first, and then in the game. No instructions. No blueprint. Just imagination and patience.

Every time he beats a difficult boss — every time he earns something through effort and repetition — he learns something that no participation trophy ever taught anyone: that results require work. That dedication has a payoff.

The Session

Four kids. One screen. Four controllers. No internet required.

I organized a gaming session with his friends at home. Kids from school. Kids he actually knows, kids whose parents I know. No online strangers. No headsets talking to accounts from other countries. Just kids in the same room, in front of the same screen.

Four Xbox controllers connected via USB to the PC. One TV. All four playing together.

Kids playing together on the same screen

Same room. Same screen. Real people.

The game library for the session: Brawlhalla, Street Fighter V, Scott Pilgrim vs The World, and Marvel Cosmic Invasion. The competitive options were available — but they chose to prioritize games where all four could play together at the same time. That decision was intuitive and social, not technical. Nobody sat out. Nobody watched while the others played.

They laughed. They argued. They ran around the room between rounds. They came back and played more.

What they played

Screenshots are shown to give you a sense of each game — not photos from the session itself. I was too busy making sure they had a good time to stop and document everything.

Street Fighter V

Street Fighter V

Competitive. Face to face. The classic of "you vs me on the same couch."

Scott Pilgrim vs The World

Scott Pilgrim vs The World

Beat 'em up cooperative — all four moving toward the same goal. Nobody left out.

Brawlhalla

Brawlhalla

Platform fighter. Up to 4 players. Chaotic, fast, and loud.

Marvel Cosmic Invasion

Marvel Cosmic Invasion

Cooperative beat 'em up. Marvel characters, same couch, same mission.

I was there the whole time. Not hovering — present. Watching. I didn't take more photos because I was busy living the moment and monitoring the session. That's a different kind of supervision than a parental control app. I know what they played. I know what they saw. I know what they experienced together.

That bond — the gestures, the expressions, the laughter in the same room — is something no online game can replicate. A headset and a chat window is not the same as sitting next to someone and watching their face when they lose.

The Point

I'm not closing the door to gaming. I'm opening it — carefully, deliberately, on my terms.

I'm not against online gaming forever. But I am against it right now, at this age, without the maturity to navigate what comes with it.

Right now, he plays in the real world. With real people. And that's exactly where I want him.

One day he'll have full access. One day he'll make his own decisions about what he plays and who he plays with. That day will come.

But it's not today.

Today, he plays. He learns. He has fun. He just doesn't do it with strangers. And I sleep better because of it.

How do you handle gaming at home with your kids? Drop your thoughts below.

This post contains Amazon affiliate links. If you purchase through them, I may earn a small commission at no extra cost to you. Every product listed here is something I personally own and use daily.

Thursday, July 9, 2026

I Took Back Control of What I Listen To

Self-Hosted · Music · 28 Years of Library

I Took Back Control of What I Listen To.



I'm a man approaching forty. I've always loved music — deeply, obsessively. But growing up in a Latin country, the music I actually liked rarely made it to the radio. What I wanted to hear was whatever MTV decided to air that day, and not much else. No algorithm back then — just limited access and a lot of waiting.

That frustration pushed me toward technology earlier than most. If the system wouldn't give me what I wanted, I'd find another way.

I remember when the internet was still version 1.0. There weren't many pages. Search engines weren't common yet — you had to use Yahoo, AltaVista. And then, much later, Google appeared.

I remember the first days of YouTube. When YouTube was ugly and uncontrolled by any algorithm. When it was just people uploading things and other people watching them.

But music? Music was its own journey.

If I wanted to listen to something, my options were the radio, MTV, or a CD. I walked to school with a CD player in my pocket or backpack. Then came the burned CD and the MP3 CD player — and suddenly I started to feel something I hadn't felt before with music: Control.

I was choosing what I listened to. No DJ. No playlist curated by someone else. Just me and what I actually wanted to hear.

Before I had a CD burner, a friend gave me one CD. One. I listened to it so many times I grew to hate it. But it was my only option. When I finally started downloading my own music, something exploded. It wasn't just convenience. It was discovery.

I had two The Offspring CDs. If I wanted to switch between them, I had to physically get up, open the player, swap the disc, and find the track. Later, the home stereo had a 6-disc carousel — which felt like a revolution. Except changing from one disc to another took about 35 seconds. Per disc change. That was the cost of control.

That spark never went out.

A library built song by song since 1998. It's passed 10,000 songs. Every one of them was chosen deliberately.

Around that same time, I started building something without fully realizing it. A library. Song by song — from Napster, then iMesh, then LimeWire, eMule, eDonkey, online radio station rippers. Every tool that existed, I used. Not to collect everything — to collect what I liked. What I actually came back to.

That library has been growing since 1998. It's passed 10,000 songs. It's not a competition — it's a history. The evolution of what I've liked, from adolescence to now.

Then life got busy. Work. Responsibilities. No time to sit down and browse a library. And that's when the services arrived — first Google Play Music. Then Spotify. Then YouTube Music Premium.

And for a while, they were great. Convenient. Fast. Available everywhere.

But slowly, without me noticing, I stopped listening to what I wanted to hear. I'd pick the first song — the right song — and then the algorithm took over. Five songs in, I was somewhere else. Listening to what they decided I should listen to next.

I became a victim of the algorithm.

The Data

I exported my YouTube watch history and analyzed it. Out of 51,543 unique titles, about 28% were classifiable by category. Of those:

  • 37.8% — Shorts and viral content
  • 23.4% — Music
  • 12.4% — Gaming
  • 11.6% — Tutorials
  • 6.1% — Comedy and memes

1 in 4 classified videos was music. But YouTube decided which music, when, and in what order. I wasn't choosing. I was being served.

That was enough. That's when I found Navidrome.

The Setup

Navidrome is the brain. Nobody sees it. Nobody touches it.

I installed Navidrome without being entirely sure what I was walking into. When it came up, it was just another web player. And from my perspective as a designer — the interface was ugly. That's an honest assessment, not a complaint. It works. It does exactly what it needs to do.

Before any of that could matter, I had to invest time cleaning and organizing my library. Fixing tags. Running everything through MusicBrainz Picard to repair metadata, match albums, correct artist names. That's not optional with a library that's been growing organically for 28 years — it's the foundation everything else sits on.

Navidrome running in Docker

Navidrome running in Docker — silent, no interface, doing its job.

Once that was done, Navidrome became what it was supposed to be: a silent engine. It just works.

Then I started looking for the front end. First install: DSub. It works — but the interface carries the same visual weight as Navidrome. Functional. Forgettable. I kept reading.

Then I found Symfonium. Clean UI. Loaded my Navidrome server without complications. Suddenly I had everything — the functionality and freedom of Spotify or YouTube Music Premium, but running on my own hardware, with my own library, under my own control.

On Windows, Feishin does the same thing. Modern interface. Connects to Navidrome in seconds. No configuration friction.

Feishin on Windows playing Stratovarius

Feishin on Windows — Stratovarius playing, Auto DJ active, 28 years of personal genres on screen.

The Ecosystem

I didn't install three apps. I built a personal music ecosystem.

Navidrome is the brain. Feishin is the face on the desktop. Symfonium is the face in your pocket. Together, they feel like one app — not three.

I create a playlist in Feishin for a specific mood or route. I open Symfonium, the playlist is already there. I mark it for permanent offline cache — and it downloads. The entire Navidrome library metadata lives in Symfonium even without a connection, meaning I can keep building and organizing playlists for later even when the server is unreachable. When it comes back online, everything syncs.

Likes. Favorites. Play counts. Statistics. All of it synchronized between Feishin and Symfonium with a single tap. Nothing complicated. Nothing manual.

Symfonium in action

Screen recording from the phone

External shot — the real experience

I don't have exact metrics. But I have my last 10 days of history. Music actively searched: three tracks. Algorithm deciding what I listen to: zero times.

Before, I opened YouTube to find something to listen to in the background. I'd pick the first song — and then the algorithm took over. Ads. Recommendations I didn't ask for. The quiet question the platform asks every few minutes: are you still there?

Now Feishin opens almost automatically on Windows. No ads. No unwanted playback. No passive consumption. Just music I chose, playing the way I want it to play. And when I leave the desk? I load the playlist into Symfonium and keep listening in the street.

It feels cleaner than it looks. And now I want to expand the library, activate WireGuard so it follows me anywhere — not just on the local network. It feels like a new kind of freedom.

A note on Auto DJ

Feishin has an Auto DJ mode that generates suggestions from your own library — and it works incredibly well. But only if your tags are clean. A file with youtube.com/watch?v=... as the album name tells the system nothing. The quality of your experience is directly proportional to the quality of your metadata.

The Honest Conclusion

I'm not going to tell you how to get music. That's not my place.

My library isn't vast by anyone's standards. 10,000 songs isn't a flex. But it's mine. Every song in it was chosen deliberately at some point in my life — whether at 16, or 25, or last month. It maps my moods with a precision that no recommendation engine has ever matched.

What I will tell you: when you have your library — whatever size it is — the step you cannot skip is MP3Tag. Cleaning and structuring your metadata is tedious. You do it once. And you enjoy it for life.

There's something quietly powerful about pressing play and knowing — with absolute certainty — that what comes next is something you actually chose. Not predicted. Not served. Chosen.

That feeling is worth more than any algorithm. And the next step? Activating WireGuard so my library follows me everywhere — not just on the local network, but anywhere I go.

Have a library sitting on a hard drive somewhere? There might be more there than you think. Drop your questions below.

This post contains Amazon affiliate links. If you purchase through them, I may earn a small commission at no extra cost to you. Every product listed here is something I personally own and use daily.

Saturday, June 13, 2026

From Fear to Control: What Self-Hosting Gave Me


From Fear to Control: What Self-Hosting Gave Me

A DIFFERENT KIND OF POST

I'll confess something.

When I first started experimenting with self-hosted services, it wasn't because I wanted a cool homelab. It wasn't because I wanted to play with Docker, firewalls, VLANs, or enterprise-grade networking.

It started from something much simpler.

Need. And fear.

I had old equipment sitting around collecting dust. Hardware that technically still worked, but had no purpose anymore. At the same time, I felt an increasing need for something I couldn't fully get from consumer-grade solutions: control.

I wanted more security. I wanted more visibility. Most importantly, I wanted to better protect my children.

That was the real beginning.

Like many parents, I tried the usual tools first. I explored what Google Family Link offered. I tried the parental controls built into Microsoft Windows Family Safety. I tested schedules, device restrictions, app limits, and whatever features came bundled with routers and switches.

Some of it worked. Some of it helped. But eventually, it stopped being enough.

As more devices entered the house, the network became more complicated. More switches. More access points. More devices. More traffic. More risk.

And with complexity came a realization: my network wasn't organized. It was functional — but messy. And messy systems eventually become fragile systems.

Cybersecurity isn't only about protecting data. Sometimes it's about protecting the people who depend on you.

So I started building.


And honestly? I expected it to be much harder.

I thought self-hosting would be this overwhelming mountain of Linux commands, cryptic terminal outputs, and endless configuration nightmares.

Instead, I discovered something surprising. Most of the implementations were actually very straightforward. Not easy — but straightforward.

You follow the documentation. You run the commands. You configure things carefully. Step by step.

The process wasn't usually difficult. It was tedious. Sometimes exhausting. I remember moments where something as simple as configuring the firewall meant physically switching monitors back and forth just to access the console.

Not glamorous. Not fun. Just patience.

But slowly, piece by piece, everything started coming together.


Then came the fear.

Not fear of learning. Fear of failure.

Because in a self-hosted environment, you quickly learn something important: some services are forgiving. Others are not.

If a media server goes down, life continues. If the firewall goes down? Everything goes down. If DNS fails? The whole network can feel dead in minutes.

That became my biggest fear. Not because I doubted my ability. But because I understood the responsibility.

Over thirty devices depend on this network. Family devices. Business devices. Workstations. Access points. Store systems. Every rule, every route, every configuration matters.

That fear changed how I built everything. I stopped thinking only about functionality. I started thinking about resilience. Contingency plans. Fallback routes. Backup hardware. Redundancy.

That mindset pushed me to invest in simple but essential equipment — not expensive, just practical. The kind of gear that doesn't look exciting in photos, but saves you when things go wrong.

And things do go wrong.

I've stumbled. Many times. Failed deployments. Broken configs. Services refusing to start. Routing issues. Permission issues. Unexpected incompatibilities. Moments where I sat there thinking: "Why isn't this working?"

Sometimes you learn because things succeed. Sometimes you learn because things break. Usually, both.


But over time, something changed. The infrastructure became stable. Really stable.

And once everything is properly documented and correctly configured… it just works.

And that feeling is difficult to explain unless you've built something yourself.

People don't notice. Nobody walks into the house and says "Wow, the DNS resolution is fantastic today." Nobody compliments proper VLAN segmentation. Nobody applauds latency improvements.

They just use the internet. The TVs work. The phones connect. The PCs sync. The store system runs. Everything feels invisible.

And strangely… that invisibility became one of my greatest satisfactions. Because silence means stability. Silence means everything is working. Silence means the people I care about are protected and uninterrupted.

And that brings me peace. A peace I didn't expect when I started.


I felt that peace even more on June 12th.

At 7:00 AM, the network went down.

A few months ago, that would have triggered panic.

This time? I executed the contingency plan. Bypass. Recovery. Stabilize critical systems. Troubleshoot. And it worked.

The stress was real. But something had changed inside me. I wasn't panicking. I was responding.

The person who once feared touching DNS… had become the person solving the outage. That felt like growth. Real growth.


Today, I run seven self-hosted services. Eight, if I count Moonlight.

And the funny thing is… the infrastructure can handle more.

That's the trap of self-hosting. You start because of necessity. Then one day you realize: "I could add one more service." Then another. Then another.

Now, whenever I want something new, I spin up a container, configure it, integrate it into the network, and let the infrastructure do what it was designed to do. Support growth. Support experimentation. Support me.

And maybe that's the part that moves me most. This was never only about technology. It was about ownership. Responsibility. Trust. Building something with my own hands. Creating a system that protects my family and supports the business. Creating order where there used to be chaos.


Self-hosting isn't for everyone. It requires patience. Curiosity. Technical knowledge. And the willingness to fail repeatedly.

You need to accept that some things won't work just because you want them to. You will stumble. You will make mistakes. You will break things. You will lose sleep.

Sometimes, to avoid disrupting thirty devices, I wake up at hours when everyone is asleep just to make infrastructure changes while usage is near zero. That's part of the sacrifice. And I accept it.

Because I know what it gives me in return.

Peace. Control. Confidence.

And maybe something else. Pride.

Not loud pride. Not the kind you post for validation. A quiet kind. The kind you feel when you sit in a room where everything is working, everyone is comfortable, and nobody notices the invisible systems around them.

Because you built those systems. And they work.

That feeling is hard to put into words.

But if I had to summarize what self-hosting gave me, it would be this: I started with fear. And somewhere along the way… fear turned into confidence. Chaos turned into structure. And necessity turned into something I genuinely love.


Questions about the setup? Drop them below. I built this without a guide — figured it out piece by piece over time. Happy to help you figure it out.



This post contains Amazon affiliate links. If you purchase through them, I may earn a small commission at no extra cost to you. Every product listed here is something I personally own and use daily.

When One Problem Turns Into Two

When One Problem Turns Into Two

The calm before...

This post contains Amazon affiliate links. If you purchase through them, I may earn a small commission at no extra cost to you. Every product mentioned here is something I personally own and use.

I'd enjoyed almost a month of absolute peace. My OPNsense firewall was working flawlessly, without a single outage. It was performing so well that, to be honest, I'd fallen into that dangerous state of complacency where you don't even check the logs or the connection. You simply assume everything will be fine forever.

Until this morning.

At 7:01 AM, I sat down at my computer ready to start the workday and was met with the worst possible screen: No connection.

At first, nothing made sense. The infrastructure had been stable for weeks. The OptiPlex running OPNsense was powered on. The NUC was powered on. Physical links? At first glance, all good. Everything looked normal. But the network clearly wasn't.

I couldn't reach the OPNsense dashboard. Nothing.

The problem...

Since the business relies heavily on network connectivity, I couldn't allow extended downtime, so I started troubleshooting fast.

First step: connect directly to the ISP, bypassing everything. That worked — I had internet. So the ISP itself was fine. The problem was somewhere in my own infrastructure.

Then came the first rabbit hole.

My main PC, connected to the ISP directly over Wi-Fi, had no internet either — connected, but nothing loading. I dug into it and found the cause: DNS was still pointing to Pi-hole, on a network segment that didn't exist in this configuration. Switched everything to automatic DHCP and DNS, and that PC came back online.

Good. One thing fixed. But the real problem — OPNsense unreachable — was still there.

So I activated the bypass plan: an old Linksys E900, pre-configured to take over DHCP for the whole office in exactly this kind of scenario. I connected it between the ISP and the internal network.

Except it had the same DNS problem. Configured to hand out Pi-hole's address as DNS to every client. Same fix: switched it to public DNS. Bypass online. Core systems back up.

The proof

And here's the part that actually matters most to me: it worked. Not "worked in theory" — worked under real pressure, on a real morning, with a real firewall down. I'd built this bypass months ago for exactly this scenario, and today was the first time it actually had to do its job. It did. That's not a small thing. That's the difference between a stressful morning and a lost day.

Relief — for about ten minutes.

The partial failure

Because the network was still only partially healthy.

Maria's PC, on the second switch, still had no connection through the network — though it kept working because it was also connected directly to the ISP over Wi-Fi as a fallback.

The access points weren't responding either.

That uncertainty was stressful. When everything is down, the problem is clear. When half the network works and half doesn't, every assumption becomes questionable.

And the whole time, one thought kept nagging at me: what happens if a customer walks in right now? Odoo runs on this network, and without it, the store can't operate the way it needs to.

Luck was on my side, oddly. Nobody walked in until 11am. That gave me a window to work without the pressure of a customer standing there — but it was also its own kind of pressure, a clock running in the background the whole time. Peace and pressure, at the same time.

I checked Pi-hole on the NUC directly, worried it had crashed and was the common thread. It was fine — active, healthy, full history of queries. Not the culprit. Crossed that off the list.

The fix

With the bypass holding the network up, I had a window — and the OptiPlex was already down for diagnosis anyway. So I decided to act on something I'd suspected for a while.

The OptiPlex's LAN interface was running on a USB Ethernet adapter. This wasn't the first time a USB NIC had given me trouble — when I first set up OPNsense on the NUC, before moving it to the OptiPlex, a USB NIC was the exact thing that failed on me back then too. Apparently that's a known weak point for USB network adapters under sustained load. Fine for temporary setups. Not for a firewall running 24/7.

I had a dual-port Intel PCIe NIC sitting ready. Took the OptiPlex apart, installed it, reassigned the interfaces from the console — WAN stayed on the onboard port, LAN and a future OPT/DMZ port moved to the new card. Brought OPNsense back up.

LAN came back clean. WAN picked up a real IP from the ISP again, not the bypass's.

I felt relief. Found the root cause. Or so I thought.

The second failure

Because the access points were still offline. Maria's PC still couldn't reach anything through the LAN.

That made no sense. I'd just fixed the actual hardware problem on the firewall. So why was half the network still acting like nothing happened?

That's when the frustration really kicked in.

Back to troubleshooting. DHCP leases. IP configurations. Pings that came back as "destination unreachable" from addresses that shouldn't exist. Manual IPs versus automatic ones. Everything seemed to check out individually, and none of it explained the access points being completely dark.

Mental fatigue sets in fast on mornings like this. Your brain starts looking for a complicated answer, because surely something this stubborn has to be complicated.

The resolution

I stepped back, took a breath, and decided to forget the theories. Check every physical connection manually. One cable at a time.

That's when I found it.

While moving the OptiPlex earlier to install the new NIC, I had accidentally knocked loose the UTP cable connecting the first switch to the second switch — the one feeding the access points, the cameras, and Maria's desk.

I had unintentionally created a second problem while fixing the first one.

I just stared at the cable. Then I laughed. Because that's IT sometimes. You fix one issue, and in the process of fixing it, you cause another.

Reconnected the cable. Instantly, everything came back. Access points online. Maria's PC online. Full network restored.

After a long, stressful morning, the network was finally healthy again.

What I Learned Today

1. Bypass plans are essential — and proving they work matters

Having a physical bypass kept the business running while I troubleshot the real problem. Without it, the entire office would have gone down for hours.

But more than that: this was the first time that bypass had to perform for real, outside of a test. It worked. There's a particular kind of relief in seeing a contingency plan you built months ago actually do its job under pressure — it's no longer theoretical, it's proven.

2. Avoid USB NICs for critical systems

This is the second time a USB Ethernet adapter has failed me on a firewall — once on the NUC, now on the OptiPlex. Fine for temporary use. Not for production infrastructure. Dedicated PCIe NICs, especially Intel-based ones, are the right call.

3. Troubleshooting can create new problems

This one stung. Not every issue you see belongs to the original failure. Sometimes, during diagnosis — or while physically moving hardware to fix one thing — you unintentionally introduce a second problem. That can completely distort your understanding of what's actually happening.

Final thought

Today's outage taught me something simple:

The first problem was hardware.

The second problem was a cable, knocked loose by my own hands while fixing the first.

Both mattered. Both taught me something.