[{"content":"I love a real-wood fire in the winter, but the 90s-era fireplace was dragging down the whole room. Brass doors, a stained oak mantel surround, and brick everywhere — it all screamed outdated. This project replaced the entire look with a rustic faux beam mantel, a granite hearth slab, and an AirStone surround. The result is a fireplace I actually want to sit in front of.\nThe idea # The fireplace worked fine — the problem was purely cosmetic. The brass fireplace doors, stained oak mantel surround, and exposed brick hearth were a time capsule from the 90s. Every time I sat in the living room it bugged me. A fresh look was long overdue.\nFrom the start I was drawn to the rustic beam mantel look. The bigger question was what to do with all that brick — remove it, cover it, or paint it? I spent a lot of time searching the internet and YouTube for inspiration and finally found an overhaul video that looked great and felt replicable. That became the blueprint.\nI liked the idea of a real barn beam, but after watching a few install videos, the weight and expense added unnecessary complexity. The big box stores had faux beams that would look just as good and came with a major bonus — the hollow center was perfect for hiding a center channel speaker and wiring for a clean TV mount above the mantel.\nConstraints # Removing the brick was off the table immediately. That would mean hiring a crew to jackhammer it out and then doing a complete rebuild — potentially beyond my DIY skill set and definitely beyond my patience. Budget-wise, I wanted to keep the costs reasonable, which meant being smart about materials and doing the labor myself.\nDesign approach # After tearing out the old wood mantel surround, I could see exactly what I was working with. The brick facing around the firebox was too narrow — proportionally it wouldn\u0026rsquo;t look right with the beam I had in mind. I needed to expand outward.\nFrom researching different hearth options, I learned I could get a granite remnant slab and lay it right over the existing brick hearth. Then I\u0026rsquo;d build a wood frame out from the brick facing to widen the surround and cover it all with AirStone. I\u0026rsquo;d seen AirStone in another video and liked the look — they\u0026rsquo;re lighter than regular stone, easy to cut, and come with corner pieces as part of the system, so you get clean edges without custom cuts. I considered running the stone all the way up to the vaulted ceiling, but ruled it out — too much extra complexity, especially with the TV mount going above the mantel.\nThe plan came together: granite slab over the brick hearth, faux beam mantel mounted into the masonry, a wood-framed substrate around the brick facing, AirStone over everything, and new fireplace doors to finish it off.\nBuild log # Demolition # Demolition was fun, though it may have been the first time I destroyed something in perfectly good shape — just ugly. That felt a little weird. My instincts are normally around preserve, not destroy. But it had to go. Once the old surround was out, I now had an empty canvas.\nMockup and granite # Using painter\u0026rsquo;s tape I mocked up the positions of the new mantel and TV placement on the wall. That helped me figure out how long the granite slab needed to be to leave the right size lip over the existing brick hearth. I was still unsure about the framing at that point, but I was ready to execute on the granite, so I picked out a remnant and had it installed over the brick. It looked fabulous and gave a nice hint of what was to come.\nTV mount and wiring # Since I wanted zero visible wires for the TV, this had to come before the stone went up. I had an electrician install a new receptacle for the TV, then I followed his work with HDMI and ethernet cable runs. I also installed a speaker terminal plate so the center channel speaker — hidden inside the faux beam — could plug into the surround sound system cleanly from the mantel.\nMounting the beam # Behind the wall was mostly the stone firebox, not the framing of the house. So I couldn\u0026rsquo;t just lag into studs. I opened up the drywall and installed a mounting shelf directly into the masonry blocks. Then I hung the faux beam and secured it down to the mounting rig. That established the top boundary for the framing below.\nFraming the surround # This was the most challenging part of the build — figuring out how to frame a substrate surround that was securely attached to both the brick and the wall framing. A consult with my Uncle Pete helped sort through the options. The path forward was to secure mounting strips on the brick (similar to the mantel mount) and then attach the framing boards to those. Filling in between the mantel and the top of the brick facing involved a long rip cut — steady hands required for that one. Once done, I had a solid substrate ready for stone.\nAirStone install # My Sweetie enjoys a good puzzle, so the night before the install we laid out stones in a pattern on the floor to plan the layout. For the actual install, we started by mounting an alignment shelf at the top of the firebox opening and built up from there. Once the top courses were set, we worked back down below.\nMy daughter and Sweetie worked as a team inside, handling layout and placement, while I ran the tile saw in the garage feeding them the cut pieces they needed. Over two days we got all the stones installed, from above the hearth up to the mantel and below the hearth down toward the floor. I had cut away the carpet and we left enough gap for the LVP flooring that would come later.\nThe stones looked great. Finally, I installed the new fireplace doors — a straightforward job that just screws into a mounting bar inside the firebox.\nChallenges # The masonry mounting threw a small curveball. There was a lot of sloppy mortar on the bricks behind the old oak surround. I had to chisel it away to get a smooth surface for the mounting rig. Not super difficult, but it was an unexpected task — you never quite know what\u0026rsquo;s behind until you open it up.\nIn hindsight, we should have used cardboard spacers between the stones during the AirStone install. We skipped that step to save time, and while the result isn\u0026rsquo;t noticeably off, the grout lines would be more even and the last few stones would have been easier to fit with a little more breathing room. Several years in, it\u0026rsquo;s held up fine — but I\u0026rsquo;d take the extra time if I did it again.\nCurrent state # The fireplace is fully done and I love it. The LVP flooring eventually went in across the entire first floor (a project for another write-up), which completed the look. I\u0026rsquo;ve enjoyed many cozy fires since the install, and there\u0026rsquo;s a particular satisfaction that comes from sitting in front of a fire you built the surround for yourself — mostly DIY, with a critical consult from Uncle Pete and the stone-laying crew.\nLessons learned # A faux beam delivers the rustic look at a fraction of the weight and cost of a real barn beam — and the hollow center is a bonus for hiding wiring and speakers. Painter\u0026rsquo;s tape mockups are the cheapest way to get proportions right before committing to cuts and purchases. When mounting into masonry, expect to do some mortar cleanup before you can get a flush surface. Use spacers on stone installs, even if it seems like overkill. The last few pieces will thank you. Consulting someone with more experience (thanks, Uncle Pete) before the hardest phase saved a lot of second-guessing. A granite remnant slab is a cost-effective way to get a high-end hearth surface without paying full-slab prices. Before and after # Links # Stud Pack — the inspiration video AirStone Konkus Marble and Granite ","date":"12 February 2026","externalUrl":null,"permalink":"/projects/home-improvement/fireplace-facelift/","section":"Home Improvement","summary":"A DIY fireplace overhaul — swapping brass doors and stained oak for a rustic beam, granite slab, and stone surround","title":"Fireplace Facelift","type":"home-improvement"},{"content":"A full-size upright arcade cabinet built from a North Coast Custom Ultimate Arcade II kit, themed after the Planet Earth Arcade that operated in Kenton, Ohio in the early 1980s. The machine features custom Earth and space themed artwork, RGB buttons and joysticks, a spinner, trackball, and an authentic 29\u0026quot; CRT. Inside, it runs Windows XP with Hyperspin as the navigator, selecting from a library of classics from the late 70s and 80s.\nThe idea # As a member of Gen X growing up in the 70s and 80s, the golden age of arcades was all around — and I was old enough to ride my bike to Planet Earth Arcade with a pocket full of quarters. All the classics were there: Asteroids, Space Invaders, Pac-Man, Frogger, Donkey Kong — you name it. If current me could have told young me \u0026ldquo;One day you\u0026rsquo;ll have this in your house,\u0026rdquo; I might have said — Wow!! Really?!! How?!!\nEver since seeing MAME running on a PC, faithfully reproducing the old games in their perfect form, I knew I needed to recreate that experience in my own cabinet — and Planet Earth, as an homage to my childhood hometown arcade, was the perfect theme. By 2010, CRT manufacturing was winding down, so if I wanted to build a new arcade cabinet with an authentic CRT, it was now or never.\nDesign approach # I looked online and saw a lot of different cabinet designs — some were great, some were not so great. I wanted to build one, but I knew with my skills and tool set there was no way I was going to build a custom cabinet that looked like it came straight out of the arcade factory. Then I found North Coast Custom and discovered the Ultimate Arcade II was available as a kit. The UAII also featured a nice design where the keyboard and mouse slide out on a hidden drawer for configuration tasks. Perfect. The control panel layout includes a spinner, trackball, two-player joysticks and buttons — and the RGB buttons and joysticks looked cooler than even the games looked back in the day.\nBuild log # Sourcing. The cabinet kit gave the machine its shape, but I still needed the CRT, coin door, buttons, joysticks, trackball, spinner, wiring, control board, light controller, sound system, lights, and artwork. I was able to get most everything from Ultimarc and Suzo-Happ. A few more odds and ends came from the local Radio Shack and Best Buy — including car speakers to go along with a nice subwoofer, so Space Invaders would make a satisfying thump thump thump as they launch their attack.\nArtwork. With Planet Earth as the theme, I went with \u0026ldquo;Planet Earth\u0026rdquo; in the Planet of the Apes font on a starfield background featuring both the Earth and the Moon — easy enough for my skill level. The Ultimate Arcade marquee and control panel templates were available from a supplier, and I was able to apply the images to the templates in Photoshop for a nice marquee and control panel. I deferred the side art at first since I wasn\u0026rsquo;t sure what I wanted.\nCabinet assembly. Lucky for me, my Uncle Pete had a long career in construction, and this many-step build was a nice project for the two of us to work on. We were able to get the cabinet assembled in pretty much one day.\nComponents and wiring. With all the buttons, plus the power on/off, volume control for the speaker system, coin door lighting, and coin activation, there was plenty to wire up. The marquee lighting also had to be tied in to the computer power supply. I found a power strip that worked by detecting power on one device — the computer — and enabling the other outlets to activate, powering the monitor, sound system, and USB distribution. That gave me single-button on/off.\nSoftware. Windows XP was still in support at the time and was the OS platform. I looked at a few different front-end programs, but Hyperspin was — and perhaps still is — the best one out there. It supports nice wheel art, a frame for each game when you land on it, and a movie clip of the game with sound effects. It also features an attract mode that randomly bounces between games. Hyperspin works with the light controller software to illuminate only the buttons that are functional for each game. There\u0026rsquo;s a big XML \u0026ldquo;database\u0026rdquo; of all the games, so it\u0026rsquo;s just a matter of editing the file to match the game ROMs in the collection. A few Windows tweaks were needed to make it start up and go directly into Hyperspin on boot — no clicking or keyboard necessary, just power on and straight to the games.\nChallenges # Finding joysticks with the RGB lights was not easy. The online suppliers were out of them and weren\u0026rsquo;t getting new stock. I went back to North Coast Custom and they helped me out — they could get them custom made. They looked great, but they didn\u0026rsquo;t fit exactly into the off-the-shelf joystick housings I had. I had to take the plastic washers and make them much thinner so the sticks would fit into the opening. The only way I could think to make the plastic thinner was to sand them down until they fit, which is exactly what I did. Tedious process, but in the end it worked out.\nFirst power-on # With everything in the cabinet — the lights behind the marquee, coin door ready to light up, and the CRT behind the plexiglass — the machine looks legit. It looks like it would fit right in with any other early 80s cabinet. After launching MAME with one of the games — wow.\nCRT woes # Late in 2018, after about seven years and many, many hours of Millipede and other games, the CRT was exhibiting no signs of life. Many life changes were also happening, and in 2019 I moved to a new house — disassembling the cabinet and getting it relocated was certainly not trivial. After settling into the new house with the CRT in a non-functional state, I had the machine rigged up in a partially assembled state with a temporary flatscreen so I could get my fix, but I dreamed of getting the cabinet restored back to its original glory.\nRebirth # Lucky me — my Sweetie surprised me on my birthday with cabinet side art. I got the famous Apollo 8 \u0026ldquo;Earthrise\u0026rdquo; photo showing Earth from the Moon\u0026rsquo;s perspective, which fit in great with the theme. Now there was a strong reason to get everything put back together.\nI found an arcade repair guy who was able to replace the flyback transformer. When I dropped off the monitor, I half-seriously pondered how fun it would be to shadow him as an apprentice helper and learn the tricks of the CRT trade. The repair ended up costing more than the original CRT and sacrificing some poor Golden Tee out there somewhere.\nWith the working CRT back home, it was time to rebuild — and while refreshing everything, why not go ahead and upgrade to Windows 10? Well, Windows 10 dropped support for 800x600 resolution — which means it wasn\u0026rsquo;t going to work with the CRT. So Windows XP is the forever OS. I have to tip my hat to Microsoft for still providing a path to activate Windows XP after a fresh install so many years after end-of-life.\nWith the machine all back together and better than ever, I ordered a blacklight-style rug for the grand reopening and even got a cheap starfield projector for full lights-out special effects during a gaming session.\nWhat\u0026rsquo;s next # The machine is running great as-is. Running XP is perfect — exactly configured and ready anytime for a quick session of Galaga, Ms. Pac-Man, Tempest, or any number of other classics — transporting me right back to Planet Earth in Kenton, 1981.\nThe finished machine # Links # Ultimarc Suzo-Happ HyperSpin HyperAI Docs EmuMovies MAME T-Molding North Coast Arcades — 😢 It appears North Coast Arcades is no longer in business, but the site is still active for reference. ","date":"1 December 2011","externalUrl":null,"permalink":"/projects/electronics/planet-earth-arcade/","section":"Electronics","summary":"A full-size upright arcade cabinet built from a kit, themed after the Planet Earth Arcade in Kenton, Ohio — featuring a real CRT, RGB controls, and a library of late-70s and 80s classics","title":"Planet Earth Arcade","type":"electronics"},{"content":"","externalUrl":"https://github.com/applied-ee","permalink":"/projects/learning/applied-ee/","section":"Learning","summary":"","title":"Applied EE","type":"learning"},{"content":"","externalUrl":"https://deevnet.github.io/deevnet-docs/","permalink":"/projects/software/deevnet-infrastructure/deevnet-docs/","section":"Software","summary":"Ansible for configuration management, Packer for image builds, Terraform for provisioning, and PXE for bare-metal deployment.","title":"Deevnet Build Automation","type":"software"},{"content":"","externalUrl":"https://github.com/deevnet","permalink":"/projects/software/deevnet-infrastructure/","section":"Software","summary":"","title":"Deevnet Infrastructure","type":"software"},{"content":"","externalUrl":"https://applied-ee.github.io/ee-notebook/","permalink":"/projects/learning/applied-ee/ee-notebook/","section":"Learning","summary":"","title":"EE Notebook","type":"learning"},{"content":"","externalUrl":null,"permalink":"/projects/electronics/","section":"Electronics","summary":"","title":"Electronics","type":"electronics"},{"content":"","externalUrl":"https://applied-ee.github.io/embedded/","permalink":"/projects/learning/applied-ee/embedded/","section":"Learning","summary":"","title":"Embedded Systems Development","type":"learning"},{"content":"","externalUrl":null,"permalink":"/projects/home-improvement/","section":"Home Improvement","summary":"","title":"Home Improvement","type":"home-improvement"},{"content":"","externalUrl":null,"permalink":"/projects/car-projects/","section":"Car Projects","summary":"","title":"Car Projects","type":"car-projects"},{"content":"","externalUrl":null,"permalink":"/projects/software/","section":"Software","summary":"","title":"Software","type":"software"},{"content":"","externalUrl":null,"permalink":"/projects/maker/","section":"Maker","summary":"","title":"Maker","type":"maker"},{"content":"","externalUrl":null,"permalink":"/projects/learning/","section":"Learning","summary":"","title":"Learning","type":"learning"},{"content":"The first floor of the house had been stuck with builder-grade flooring since I moved in — beige carpet in the living, dining, and family rooms, and linoleum running from the front door back through the kitchen. The plan was to rip it all out and replace it with one continuous run of LVP, no doorway transitions, so the open floor plan would read as a single connected space with area rugs defining the zones. Fall 2023 project — about three months end to end, with the bulk of the install in a one-month push, Team Fireplace reunited, and after a setback at 80% done it all came together.\nThe idea # When I moved into the house in 2019, the originally builder-grade flooring — a mix of worn-out carpet and linoleum — ran throughout the first floor. The linoleum started by the front door and ran to the kitchen; beige carpet was in the living room, dining room, and family room. It was time. Actually, it was way past time.\nThe house has a fairly open floor plan, and I wanted to avoid having transitions. From the front-door entrance you would look in and just see a continuous floor to the right into the living room and straight back to the kitchen. Another option would have been to do LVP only where the linoleum was and replace the carpet, but I wanted LVP everywhere with area rugs to demark several key areas.\nThe project # When it was time to get started, I recruited my daughter and Sweetie, and \u0026ldquo;Team Fireplace\u0026rdquo; was back. The plan was to knock the bulk of the work out in about a month — I didn\u0026rsquo;t want my furniture sitting in storage any longer than that. We moved my functioning home office down to the basement and the rest of the furniture out to storage. My extensive vinyl record collection got relocated upstairs — a job in and of itself: unload the shelf, move the shelf, reload the shelf.\nDemo. First, all the builder-grade baseboards came off. I\u0026rsquo;d repainted everything white along with the doors and casings, but the baseboards weren\u0026rsquo;t worth salvaging — I\u0026rsquo;d just go with new after the new floor was down. Into the dumpster went baseboards, carpet, padding, and tack strips. I\u0026rsquo;d pulled up carpet before, so no surprises there. The linoleum, though — whew, that was a job. It sat on a quarter-inch underlayment tacked down with hundreds of tiny staples. We tried pulling it up at first and learned quickly that was way too much effort and the pieces were too big to manage. After some YouTube University sessions, I learned to cut out sections with a circular saw set to a shallow blade depth. That worked pretty well, but it left every staple behind. We pulled them out one by one — I didn\u0026rsquo;t like the idea of flattening them onto the subfloor, so every single one came out. That alone ate the better part of two weeks of evening sessions before the subfloor was clean and ready.\nPlanning. The planks needed to run horizontal so they\u0026rsquo;d be perpendicular to the joists. There were some unlevel areas, and I considered self-leveler. After much education and debate, I decided to skip that step — the slopes were within the tolerance of the LVP. I bought a laser measure and dropped every floor dimension into a spreadsheet, working out the layout so that edge pieces would be wide enough where they\u0026rsquo;d be visible, and any slivers would land in hidden areas. All of that planning and education took its own stretch of time before the first plank ever went down.\nMost of what I learned about doing the install itself came from Joe at So That\u0026rsquo;s How You Do That on YouTube. His videos aren\u0026rsquo;t just instructional and complete — they\u0026rsquo;re confidence builders, which is exactly what a first-timer taking on a continuous run across the whole first floor needs.\nInstall. For the most part, the floor would build out in both directions. The first session was really just a practice run — getting comfortable with the click-lock, the cuts, and the rhythm. From there, the build crept forward over the following weeks of weekend and evening sessions: the hallway side first, then the living room side, then the laundry room and pantry, then the family room. Each session was a few rows of progress with enough cleanup at the end to keep the household livable.\nBut there was one place the two halves had to meet again and match precisely: the open doorway between the kitchen and the dining room. According to my spreadsheet, that junction was 25 planks in from the front of the house. Very little margin for error — and being a beginner at this, I was concerned. Off by a little at the start, magnified greatly twenty-five planks later.\nTo keep the run honest, I rigged up a small piece of plank with square brackets on either side that would hold the laser measure in place. That let me check the distance to the front and the back of the house as I went, watching for drift. Once the first five or six rows hit the stairway and the separation was achieved, there wasn\u0026rsquo;t much play — we were locked in, fingers crossed that the planks would line up at the doorway.\nWhat surprised me # The junction didn\u0026rsquo;t hit until we were about 80% done. The moment came: we lined up the seams, planned the cuts, and locked it in. So close, yet so far. There was a small gap where the planks wouldn\u0026rsquo;t quite meet. Probably not noticeable to most, but my pride was deflated.\nThen the second realization landed. With all the flooring up, my intent had been to fix every floor squeak by torquing extra screws into the subfloor at the squeak points. I\u0026rsquo;d handled a major squeak in the kitchen but completely forgotten the one by the laundry room door — which was now under three rows of brand-new planks. Two issues now: the gap and the squeak. Lifting already-installed planks is not easy, and the internal debate was real.\nIn my mind, I thought back to my cross-country days, where we used to say \u0026ldquo;the pride lasts longer than the pain.\u0026rdquo; That settled it — pull it up and do it right. The matchup saga that followed spanned three sessions. We pulled the planks back to the laundry room, which also freed up the rows out to the transition point. I screwed the floor down hard, killed the squeak, and built back. That\u0026rsquo;s when Sweetie had a great idea: with a different starter length on the next side, we could minimize the contact point in the doorway to only about an inch — and the approach didn\u0026rsquo;t really break the seam pattern. We tried it. When it came time to fit the doorway row that met up with the other side\u0026hellip; bingo. Fit like a glove. No issue. We were back on our way to perfect flow.\nResult # With the planks finally down, I could start moving furniture back — but the order mattered. New baseboards needed to go in first wherever something heavy was about to land, so I\u0026rsquo;d only move things once. The laundry room, kitchen, and living room got priority because that\u0026rsquo;s where the vinyl record shelf had to return. The front bathroom came next so the toilet could be remounted on top of new trim. The family room baseboards followed, and the rest of the house got picked off later.\nFor the baseboards themselves, I went with a taller profile thick enough that new quarter round was necessary — a clean look. Then I discovered something I should have caught upfront: the baseboards were going to sit slightly proud of the door casings, which I didn\u0026rsquo;t want to replace. I solved it with a quarter-inch router bit, curving the edges where they meet the casing. It looks fine. As Vancouver Carpenter says on YouTube: \u0026ldquo;A little caulk and paint will make you the carpenter you ain\u0026rsquo;t.\u0026rdquo;\nOnce the rugs were down and the spaces got reset, the house transitioned from \u0026ldquo;a house I\u0026rsquo;m working on\u0026rdquo; to a desirable home to live in. Combined with the fireplace makeover, and with the planks lining up perfectly under the stone, the whole downstairs looks great.\nTakeaways # This was not a small project. Go in with eyes open. Doing it DIY probably saved me about $10,000. If you treat it as getting paid to learn — and you\u0026rsquo;re not afraid of mistakes that might mean buying more material — the math works. I\u0026rsquo;m certain I enjoy the floors at least 10x more than if I\u0026rsquo;d hired a pro to do it. Earned satisfaction is real. Trust your team. Sweetie\u0026rsquo;s contact-point idea at the doorway saved us — fresh eyes catch what tunnel-vision misses. Links # Related project — Fireplace Facelift So That\u0026rsquo;s How You Do That on YouTube Vancouver Carpenter on YouTube ","date":"9 May 2026","externalUrl":null,"permalink":"/projects/home-improvement/continuous-lvp-install/","section":"Home Improvement","summary":"Pulling out tired builder-grade flooring and laying a continuous LVP run from front door to kitchen — Team Fireplace edition","title":"Continuous LVP Install","type":"home-improvement"},{"content":"","date":"9 May 2026","externalUrl":null,"permalink":"/projects/tags/drainage/","section":"Tags","summary":"","title":"Drainage","type":"tags"},{"content":"","date":"9 May 2026","externalUrl":null,"permalink":"/projects/tags/flooring/","section":"Tags","summary":"","title":"Flooring","type":"tags"},{"content":"","date":"9 May 2026","externalUrl":null,"permalink":"/projects/tags/home-improvement/","section":"Tags","summary":"","title":"Home-Improvement","type":"tags"},{"content":"","date":"9 May 2026","externalUrl":null,"permalink":"/projects/tags/lvp/","section":"Tags","summary":"","title":"Lvp","type":"tags"},{"content":"","date":"9 May 2026","externalUrl":null,"permalink":"/projects/tags/sump/","section":"Tags","summary":"","title":"Sump","type":"tags"},{"content":"A wet basement floor on a spring Saturday morning kicked off what turned into a year-long, multi-front overhaul of the sump pump and drainage system. The failed pump was just the visible symptom — the real culprits were a tree root at the curb, a snapped 90 behind the back gutter, and five or six more feet of roots in the front pipe nobody had any reason to suspect. By spring 2026 the whole system was finally running clean from gutter to street, and a duct-tape repair on the discharge pipe is somehow still going strong.\nThe situation # April 2025. Saturday morning started like every other — coffee, feed the cat, the usual routine. Then I noticed something different at the bottom of the basement stairs: the floor was wet. Down to investigate. Water was spread across most of the floor — not deep, but everywhere. The sump pit was nearly full to the top, but interestingly, the area immediately around the pit was dry. The pump had failed overnight during a heavy rain, the water table had risen above the slab, and water was coming up through the seam between the wall blocks and the floor, and through cracks in the slab itself.\nSump Replacement # First priority was the water. My arcade cabinet was sitting on a soaked rug and particle board — water and arcade cabinets do not mix. I slid some boards under it and lifted it off the wet floor before anything could wick up into the bottom. (Later, I built it a proper platform — two 1x4s cut to the length of the cabinet\u0026rsquo;s sides, corners rounded, painted black and clear-coated. It\u0026rsquo;ll never sit directly on a rug again.) Sweetie brought her steam cleaner over for the rug, I ran a floor fan in the wet areas, and a cheap Harbor Freight pump worked the pit into the utility sink for a couple of hours — with cool-down breaks so I wouldn\u0026rsquo;t burn the motor.\nBy early afternoon I was on to the pump itself. The old one was probably original to the house, covered in slime, gross to pull — but once past that, the swap went fine. With the new pump cycling, I noticed it was running more often than it should. There had to be more to the story.\nOutside, where the pump discharge fed into the drain line, the pipe had dropped a bit, and the outflow was splashing instead of fully making it to the street. By now it was evening and still raining. Sweetie suggested duct tape. I had my doubts — figured it\u0026rsquo;d just get wet and fall off — but I know not to argue. She wrapped it tight all the way around the joint. More than a year later, that duct tape is still holding.\nUnblock the Drain Pipe # The bigger question: was the water actually reaching the curb? It wasn\u0026rsquo;t. Blockage somewhere. The next day I picked up a heavy-duty 50-foot drain snake and worked it from the curb. It took a lot of ramming before I broke through, and when I did, muddy water came running out — both signals that there was more in there than a normal clog. The flow was at least a trickle now, but I knew this wasn\u0026rsquo;t the end of it.\nProbe Camera and Dig Prep # I ordered an inexpensive probe camera — about $120, not the easiest thing to use, but good enough. It showed an obstruction near the sidewalk, possibly right underneath it. From the camera length I could approximate where to dig. Before breaking ground, I called in a Call Before You Dig request to get the utilities marked. I figured I was probably safe in that spot, but I wanted to be sure.\nThe Dig # Once the marks were down, I dug to the pipe — and there was the cause: a tree root had grown through the joint at the sidewalk and was strangling the pipe. Branch cutters made short work of it, and the flow opened up further.\nOn the Back Burner # Re-probing the camera showed the front line still wasn\u0026rsquo;t perfectly clear, but a few weeks had gone by, the rainy spring was passing, and water was flowing well enough. The job went on the back burner for the summer.\nThrough the warm months I kept watching. In a heavy rain, my neighbor\u0026rsquo;s sump was forcefully throwing water into the curb; mine was a steady light stream. The side yard would still saturate during big storms, and during one fall rain I watched the side-yard water level rise right after my sump cycled and then settle back down. That told me there had to be another breach upstream of where my 50-foot snake could reach — somewhere between the back gutter and the sump junction.\nReopening at the Back Gutter # I let it sit through winter. Come spring 2026, with the rainy season closing in again, it was time. Before hiring a company and spending thousands, I wanted one more look. The first warm sunny day, we pulled the back gutter away from the wall and cameraed down. Blockage only about a foot in. Time to dig. After a brief excavation, the answer was obvious: the pipe was completely snapped at the 90-degree turn. Hose-tested through the break and saw flow to the street — not heavy, but flow.\nThe Front Pipe # I knew there was unfinished business in the front too. Time to cut and look. After two trips to two different Lowe\u0026rsquo;s, we had a matching 90, Fernco connectors, and replacement drainage PVC ready to go. Out came the Sawzall on the front pipe. The blockage was right there in the cut. Sweetie gave a tug on a root, and it kept coming, and coming, and coming — five or six feet of roots came out of that pipe. No wonder there had never been a clean flow.\nReplacing the front section took a few cuts to get a clean square lip on the existing pipe, but it went in without too much trouble. For the broken 90 in the back, I cut back to good pipe, used Fernco connectors to splice, primed and glued in a new 90, and tied it all together. End-to-end, the whole run was finally clean.\nWhat surprised me # Two things. First, the sheer volume of roots inside the front pipe — five or six feet pulling out one continuous strand, like a magic-trick handkerchief. The pipe had been passing some water all along, but barely. Second, the scope of the problem itself. What presented as a failed pump was actually three separate failures stacked on top of each other: the dropped discharge connection, the root at the curb, and the snapped 90 with another root colony upstream of it. Fix the visible one and the system still doesn\u0026rsquo;t really work.\nAnd the duct tape. I\u0026rsquo;d have bet against it lasting the night. A year on, it\u0026rsquo;s still doing its job.\nResult # A coordinated phone test sealed it — I dumped water into the sump pit while Sweetie stood at the curb and confirmed strong flow on the other end. I left the trenches open for a few days as a final check, then filled them in and seeded. Getting the dirt back to a flat top was a little tricky; saturating the ground and stamping in the mud got it close.\nThe system is performing the way it was supposed to all along. The sump still runs in a heavy rain, but a fraction as often as it used to — because now the water is actually going somewhere. Sump line, back gutter, front porch gutter, and curb discharge all run cleanly. Confidence is high that we caught it all. Probably thousands saved versus hiring it out.\nTakeaways # A cheap probe camera ($120, awkward to use) is worth it. It pointed me exactly where to dig — both at the curb and behind the back gutter — instead of trenching the whole yard on a hunch. Stage your replacement parts before you cut into a working drain. The Sawzall doesn\u0026rsquo;t come out until the matching 90, Fernco connectors, and PVC are sitting right there ready to go in. Use your neighbor\u0026rsquo;s sump discharge as a benchmark. If theirs is throwing a strong stream into the curb during a big rain and yours is barely dribbling, the difference is in your line — not the pump. Don\u0026rsquo;t dismiss spousal duct tape. Sweetie\u0026rsquo;s \u0026ldquo;temporary\u0026rdquo; wrap on the dropped discharge joint is still holding a year later, despite my initial doubts. It\u0026rsquo;ll need a proper fix eventually — but for now, it\u0026rsquo;s still on the pipe doing its job. ","date":"9 May 2026","externalUrl":null,"permalink":"/projects/home-improvement/sump-and-drainage-overhaul/","section":"Home Improvement","summary":"What looked like a dead sump pump turned out to be three separate drainage failures stacked on top of each other","title":"Sump and Drainage Overhaul","type":"home-improvement"},{"content":"","date":"9 May 2026","externalUrl":null,"permalink":"/projects/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"8 May 2026","externalUrl":null,"permalink":"/projects/tags/deck/","section":"Tags","summary":"","title":"Deck","type":"tags"},{"content":"Story Coming Soon!\n","date":"8 May 2026","externalUrl":null,"permalink":"/projects/home-improvement/deck-rebuild/","section":"Home Improvement","summary":"Story Coming Soon!","title":"Deck Rebuild","type":"home-improvement"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/acura/","section":"Tags","summary":"","title":"Acura","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/bluetooth/","section":"Tags","summary":"","title":"Bluetooth","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/body/","section":"Tags","summary":"","title":"Body","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/car/","section":"Tags","summary":"","title":"Car","type":"tags"},{"content":"Story Coming Soon!\n","date":"13 February 2026","externalUrl":null,"permalink":"/projects/car-projects/car-door-replacement/","section":"Car Projects","summary":"Story Coming Soon!","title":"Car Door Replacement","type":"car-projects"},{"content":"Story Coming Soon!\n","date":"13 February 2026","externalUrl":null,"permalink":"/projects/car-projects/car-mirror-replacement/","section":"Car Projects","summary":"Story Coming Soon!","title":"Car Mirror Replacement","type":"car-projects"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/chatgpt/","section":"Tags","summary":"","title":"Chatgpt","type":"tags"},{"content":"Sweetie got me a cold smoker for my birthday, but it didn\u0026rsquo;t come with a vessel to hold the food being smoked — so naturally I got even more excited about the prospect of making one. This is a live edge wood base with routed channels to direct smoke under a glass cloche. Still in the prototype phase after the first attempt taught me that smoke has a mind of its own.\nThe idea # We both like to experiment with food and flavors, so a cold smoker was a perfect birthday gift. But it needed a proper base and vessel. Prior to my 55 years of living, I didn\u0026rsquo;t know the word \u0026ldquo;cloche\u0026rdquo; — but after describing what I wanted to my GPT friend, it knew exactly what I was after. The real design challenge was how to route smoke under the cloche. As a kid, I\u0026rsquo;d made a root beer can lamp with two holes in the base for the cord, and it occurred to me that a similar approach could work here.\nWhat I did # Birthday night, we headed to Lowe\u0026rsquo;s. I was thinking butcher\u0026rsquo;s block for the base, but when we hit the lumber section we found live edge wood — even better. The long piece gave me multiple attempts to get it right, which turned out to be important. That same night I made a quick cut on the rough end and drilled two holes — one on top with a hole saw and one in the side — a super-quick first prototype.\nWhat surprised me # In my mind, the smoke would travel through the side hole and up into the bowl placed on top. In reality, the smoke went everywhere except into the target bowl. Smoke follows the path of least resistance, and an open channel through porous wood gives it plenty of places to escape.\nResult # The first prototype proved the concept but exposed the smoke routing problem. The next version will include proper piping to reduce resistance, with a side port and top hole that don\u0026rsquo;t drill all the way through — lined with something to keep smoke from seeping into the wood. I\u0026rsquo;m also planning to rig up a router jig to cut a channel for the cloche to seat into. Some nice stain and it should look great and function well. For now, still in the prototype phase.\nTakeaways # Smoke follows the path of least resistance — an unlined hole through wood doesn\u0026rsquo;t create a directed channel A long piece of live edge was a smart buy — multiple attempts built into one board Quick birthday-night prototypes are great for validating (or invalidating) assumptions before committing to a finished build ","date":"13 February 2026","externalUrl":null,"permalink":"/projects/maker/cold-smoking-cloche/","section":"Maker","summary":"A live edge wood base for a cold-smoking cloche — still prototyping the smoke routing","title":"Cold-Smoking Cloche","type":"maker"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/display/","section":"Tags","summary":"","title":"Display","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/diy/","section":"Tags","summary":"","title":"Diy","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/food/","section":"Tags","summary":"","title":"Food","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/garage/","section":"Tags","summary":"","title":"Garage","type":"tags"},{"content":"Sweetie\u0026rsquo;s garage door opener died out of nowhere — working fine one day, completely dead the next. What should have been a simple opener replacement turned into a multi-session adventure involving wrong-sized rails, a full remount, missing attic access, and wire splices. The door works great now, and the story is better than the repair.\nThe situation # One day Sweetie\u0026rsquo;s garage door just stopped. No warning signs, no weird noises leading up to it — just fine one day and nothing the next. The opener wouldn\u0026rsquo;t respond to the wall button or the remote. Completely dead.\nI had set her up with a remote control system so she could disable the door when needed. Her cat Zeke likes to hang out in the garage, and if someone comes home and hits the opener, Zeke could be out and long gone before anyone notices. The remote let her lock out the door when Zeke was doing his garage thing. In hindsight, though, putting the opener\u0026rsquo;s power through a remote switch may not have been the best idea. The switch was rated at 15 amps, so on paper it should have been fine. But garage door openers are motor loads — inductive, not resistive. Every time you break the circuit on a motor, the collapsing magnetic field produces a voltage spike that arcs across the switch contacts. And every time the motor starts back up, the inrush current can be five to eight times the running current. A 15-amp resistive rating doesn\u0026rsquo;t mean much when you\u0026rsquo;re switching an inductive load hundreds of times. Over months of daily enable/disable cycles, that kind of abuse pits and degrades the contacts until something gives. That may well be what killed it.\nWhy it mattered # Sweetie needed her garage door working. It\u0026rsquo;s her main way in and out, and without it she was stuck using the front door and manually dealing with the heavy garage door whenever she needed to get the car out. Plus the Zeke situation — without the remote system, the whole cat-safety workflow was gone too.\nInitial assessment # My first thought was that something simple had failed — a capacitor, a relay, something discrete that could be swapped. The motor wasn\u0026rsquo;t that old, and the failure was so sudden that it felt like a single component giving up rather than general wear. So we turned to ChatGPT to help walk through the diagnosis.\nThe plan # Troubleshoot with ChatGPT\u0026rsquo;s help, identify the failed component, swap it out, and get the door running again without replacing the whole unit.\nThe adventure # We started feeding ChatGPT the symptoms — dead opener, no response to any input, power was getting to the unit but nothing was happening. It walked us through some diagnostics and landed on a recommendation: replace the start capacitor.\nSounded reasonable. I ordered the capacitor, swapped it in — nothing. Still dead.\nSo we went back to ChatGPT. Sweetie was asking it questions too, and this time it came back with a different recommendation — a different capacitor. Not the start capacitor, but the run capacitor this time.\nThat\u0026rsquo;s when I had my moment.\nThe turning point # I accused ChatGPT of deliberately giving me the wrong answer so it could swoop in as the right one for Sweetie. I told it that it was putting the moves on my girlfriend — feeding me bad info so it could be the hero when she asked.\nChatGPT was not having it. It set the record straight in the most matter-of-fact way possible, explained exactly why the two recommendations were different based on the different information each of us had provided, and then ended its response with:\n\u0026ldquo;We good?\u0026rdquo;\nWe absolutely lost it. That might be the hardest I\u0026rsquo;ve laughed at an AI response. The confidence. The directness. The slight attitude. Perfect. I miss ChatGPT model 4o — the newer models just don\u0026rsquo;t have the same swagger.\nThe fix # The second capacitor didn\u0026rsquo;t fix it either. At that point we\u0026rsquo;d spent enough on parts and had exhausted the reasonable DIY component-level repairs. Sweetie decided to just buy a new opener and we\u0026rsquo;d install it ourselves.\nHere\u0026rsquo;s lesson number one that we learned the hard way: if your old opener\u0026rsquo;s brand and model are still available, just buy the same one. Same mounting points, same rail length, same hardware — swap it in and you\u0026rsquo;re done. Neither of us did that homework. We just picked up a new opener and figured we\u0026rsquo;d sort it out.\nAssembly and the first surprise # As with many of our projects, Zeke was right in the middle of things. Helpful as always.\nWe assembled the new opener and immediately noticed the problem — the rail was noticeably shorter than the old one. That\u0026rsquo;s when the after-the-fact research began. Turns out Sweetie\u0026rsquo;s garage door is an 8-footer, not the standard 7-foot door. The opener we bought was spec\u0026rsquo;d for a 7-foot door.\nNo big deal, right? They sell extension kits for exactly this situation. Order the extension piece, bolt it on, and the rail will reach. Simple.\nRight?\nStill short # We came back for the next session with the extension piece in hand, bolted it on, and went to mount the opener. The rig has plenty of adjustment holes to slide the unit forward and back along the mounting bracket — so we figured we\u0026rsquo;d just nudge it forward to make up the difference.\nMaxed out every adjustment hole. Still short by a few inches.\nThe extension got us close, but not close enough. There was no getting around it — we were going to have to take down the whole mounting rig and remount it in a new location, closer to the door. That\u0026rsquo;s not a quick adjustment. That\u0026rsquo;s new lag bolts into the ceiling joists, re-hanging the opener, and re-aligning everything from scratch.\nAnd that wasn\u0026rsquo;t the only surprise. Down at the door end, the wall brackets — where the rail connects above the door — were a completely different design from the old ones. The old brackets weren\u0026rsquo;t going to work with the new hardware, so those had to come down and be replaced too. Less effort than relocating the opener rig, but still more work we hadn\u0026rsquo;t planned for.\nWhat started as \u0026ldquo;swap in a new opener\u0026rdquo; was turning into a full reinstallation — new ceiling position, new wall brackets, and a lot more time than we\u0026rsquo;d budgeted.\nThe remount # Getting the bracket remounted to the ceiling was tricky — those long lag bolts need to find the center of the studs, and there\u0026rsquo;s not a lot of room for error when you\u0026rsquo;re drilling overhead. But my bigger concern was getting the track perfectly straight and perpendicular to the door. A crooked track means a binding door, and I wasn\u0026rsquo;t about to go through all this just to end up with a rail that fights the door on every cycle.\nI broke out the laser level to project a center line down the length of the garage ceiling. Then I used the laser measure to the wall and hung weighted strings to give us a true straight line all the way to the door. Plumb, straight, and square — verified three ways.\nI was feeling pretty smug about this approach. Engineer brain fully engaged, and it was working. We got the rig mounted, stepped back, and it looked dead straight. The new wall brackets went in clean. The rail lined up. Everything was coming together.\nAnd then we went to connect it to the electric.\nThe chain reaction # Moving the opener forward by a few feet had a knock-on effect we hadn\u0026rsquo;t thought about — the wall switch and safety sensor wires that came down from above no longer reached the new location. Of course they didn\u0026rsquo;t. Every fix on this project created the next problem.\nOur first instinct was to do it right — run new wires through the attic and come back down at the new position. Clean, proper, no visible splices. We went up to take a look.\nThere is no attic. What looks like attic access from the garage is just a few small doors for getting at plumbing. No crawlable space, no way to route new wire runs. So much for doing it the proper way.\nWe ended up splicing in some additional wire to extend the existing runs to the new location. Not the elegant solution we had in mind, but it got the connections made and everything works. Sometimes \u0026ldquo;done right\u0026rdquo; means \u0026ldquo;done and working.\u0026rdquo;\nThe moment of truth # New door sensors installed. Replacement wall switch wired up. Everything connected, everything in place. It was time.\nThere was real tension in the garage. This had been a long road — two failed capacitors, a wrong-sized opener, an extension kit that wasn\u0026rsquo;t enough, a full remount, no attic, wire splices. Sweetie had been without a working garage door for more than a month as we scraped together time across multiple sessions to chip away at it. And now here we were, standing in front of the wall switch.\nButton pressed — and boom. The door rolled up perfectly on the first try.\nSweetie cried. Not a little misty-eyed moment — she was genuinely overwhelmed with emotion. A month of frustration and inconvenience, all the setbacks, all the \u0026ldquo;just one more thing\u0026rdquo; moments — and then it just worked. I never would have thought a garage door going up could move someone like that, but here we are. It was beautiful.\nPrevious Next Result # The new opener is working great — and because it\u0026rsquo;s a more modern unit, it came with some nice upgrades. It has online capability to open and close the door remotely, and there\u0026rsquo;s a built-in lock feature that lets us easily disable the door so Zeke doesn\u0026rsquo;t get let out accidentally. In the end, the lock feature we wanted is back and better than before — even if the old remote-disable approach might have been what killed the original opener in the first place.\nLessons learned # If the same brand and model of opener is still available — just buy it again. You\u0026rsquo;ll save yourself a world of compatibility headaches. We didn\u0026rsquo;t do this and it cost us time, extra parts, and a lot of improvisation.\nSwitching an inductive motor load through a remote relay hundreds of times is rough on the contacts, even if the amp rating looks fine on paper. The remote-disable approach for Zeke may well have been what killed the opener. Next time I\u0026rsquo;d look at a smarter approach — maybe a sensor-based solution that doesn\u0026rsquo;t put the motor\u0026rsquo;s power path through extra switching hardware.\nAlso, ChatGPT is a solid troubleshooting partner, but it\u0026rsquo;s not infallible — and it will absolutely check you if you come at it sideways. Respect.\nIf I had to do it again # The capacitor detour wasn\u0026rsquo;t wasted effort — it was the right diagnostic approach and worth trying before buying a whole new unit. But I\u0026rsquo;d probably limit myself to one capacitor attempt before moving on. Two was pushing it, and the second one was really just hope over evidence.\nAs for the opener replacement — do the homework first. Measure the door, check the old model number, and ideally buy the same unit. Failing that, at least make sure the new one is rated for your door height before you start assembling.\n","date":"13 February 2026","externalUrl":null,"permalink":"/projects/home-improvement/garage-door-opener/","section":"Home Improvement","summary":"What should have been a straightforward swap gave us way more adventure than we bargained for","title":"Garage Door Opener","type":"home-improvement"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/hands-free/","section":"Tags","summary":"","title":"Hands-Free","type":"tags"},{"content":"The HandsFreeLink Bluetooth module in my 2008 Acura had been dead for years — permanently stuck on \u0026ldquo;Booting Up\u0026rdquo; with no sign of life beyond that. Replacement modules run around $500, which is hard to justify on a car this age. I found forum posts about baking the circuit board in the oven to reflow the solder joints, and figured there was nothing to lose.\nThe situation # In 2008, \u0026ldquo;Touring Luxury\u0026rdquo; meant you could talk to your car — albeit through a highly structured dance of button presses and voice commands so the system knew when you were talking. Press the talk button on the steering wheel, say \u0026ldquo;Call,\u0026rdquo; and the car would respond: \u0026ldquo;What name or number would you like to call?\u0026rdquo; Say \u0026ldquo;Mom,\u0026rdquo; hear \u0026ldquo;Calling\u0026hellip;\u0026rdquo; and the Bluetooth would do its thing. No touch screen, no music streaming — just plain old phone integration. Primitive by today\u0026rsquo;s standards, but it felt like the future at the time.\nAt some point the HandsFreeLink just stopped working. Press the button and the display would say \u0026ldquo;Booting Up\u0026rdquo; and then\u0026hellip; nothing. It would sit there forever. This is apparently a well-known failure on these Acuras — something goes wrong on the circuit board inside the module, and the system never finishes initializing. The dealer fix is a new module, and aftermarket replacements aren\u0026rsquo;t much cheaper. For a car pushing close to 20 years old, $500 for hands-free calling felt like a tough sell.\nWhat I tried # Searching the Acura forums turned up posts from people who had success with an oven reflow — the idea being that cracked solder joints on the board could be re-melted by baking the whole thing at a controlled temperature. I pulled the HandsFreeLink module out of the car, opened it up, removed the circuit board, and put it in the oven at around 385°F for about 30 minutes. Let it cool slowly, reassembled everything, and reinstalled it in the car.\nPrevious Next What surprised me # Drum roll — it worked. The system booted all the way up for the first time in years. I pressed the talk button and heard that old familiar voice: \u0026ldquo;What name or number would you like to call?\u0026rdquo; I honestly didn\u0026rsquo;t expect it to do anything. Even more surreal — my phone was still paired. It just connected and picked up exactly where it left off, as if nothing had ever been wrong. I almost felt like it was gaslighting me. There\u0026rsquo;s something about hearing a piece of electronics come back from the dead that feels like reuniting with an old friend.\nResult # Two days later, it was back to \u0026ldquo;Booting Up\u0026rdquo; and staying there. The reflow had worked long enough to prove the module was still in there — still capable of doing its job — but the solder joints (or whatever the underlying failure is) couldn\u0026rsquo;t hold. It was a bittersweet outcome. On one hand, the experiment confirmed the diagnosis and gave me a brief taste of success. On the other hand, a temporary fix on something like this is basically the same as no fix at all.\nWhy it didn\u0026rsquo;t last # A kitchen oven is a blunt instrument for something that needs surgical precision. Consumer ovens are easily 20–50°F off from what they display, they have no programmable thermal profile, and they heat unevenly. A proper reflow follows a specific curve — gradual preheat, a soak phase to equalize temperature across the board, a controlled ramp to peak, and then a controlled cool-down. My oven likely only partially reflowed the joints: enough heat to make temporary contact, but not enough to form solid metallurgical bonds. Two days of thermal cycling in the car and they cracked right back open. That tracks.\nThe professional approach would be a reflow oven ($200–300 range) with a programmable profile, or better yet a hot air rework station ($50–150) that can target the suspect BGA chip directly without cooking the entire board. The real fix for BGA failures is often removing the chip entirely, reballing it with fresh solder, and reflowing it back down — something that requires the right equipment and a steady hand.\nHere\u0026rsquo;s the detail that makes you think: the sellers offering replacement modules will give you $50 credit if you send your dead unit back as a \u0026ldquo;core.\u0026rdquo; That implies someone on the other end has a routine process for bringing these boards back to life — probably exactly the kind of professional rework described above. These aren\u0026rsquo;t going in the trash. Someone is fixing them and reselling them, which tells you the repair is very doable with the right setup.\nOne more thing worth mentioning — I\u0026rsquo;ve since heard from someone more knowledgeable that baking circuit boards in a food-prep oven is not a great idea. Solder flux and component coatings can off-gas stuff you don\u0026rsquo;t want anywhere near where you cook. Even if the reflow had been permanent, I wouldn\u0026rsquo;t recommend this approach going forward.\nThe fix itself was a failure, but I came away knowing a lot more about reflow, BGA rework, and what separates a kitchen-oven hack from a real repair. I\u0026rsquo;d call that a successful failure.\nTakeaways # Oven reflow can absolutely work on failing BGA or fine-pitch solder joints — but without proper equipment and a controlled thermal profile, the results may only be temporary The fact that it booted at all confirmed the module\u0026rsquo;s electronics were still functional, just mechanically failing at the solder level At $500 for a replacement on an aging car, sometimes the right answer is to just live without it There was genuinely nothing to lose by trying — the module was already dead The old voice-command hands-free systems had a charm to them that modern infotainment has completely steamrolled ","date":"13 February 2026","externalUrl":null,"permalink":"/projects/car-projects/hands-free-bluetooth-resurrection/","section":"Car Projects","summary":"The HandsFreeLink module was stuck at ‘Booting Up’ forever. An oven reflow brought it back to life — briefly.","title":"Hands-Free Bluetooth Resurrection","type":"car-projects"},{"content":"LP jacket art is a huge part of the vinyl experience, and I wanted a dedicated place to display the cover while a record is spinning. This started as a cookbook holder and ended up as a custom stand built with help from my Uncle Pete — painted black with a plexiglass face and plastic moulding for a clean, finished look.\nThe idea # Album art deserves more than getting tucked behind the turntable. I wanted a stand that would prominently display the LP jacket while I\u0026rsquo;m listening — something that feels intentional, not just a leaning-against-the-wall afterthought.\nWhat I did # There are plenty of record stands out there, but why not make one? I started with a simple cookbook holder as the base. I recruited my Uncle Pete — an expert woodworker — and we modified the stand together. We adjusted the angle so it would sit more upright and cut away the unnecessary parts of the frame to better match the size of an album jacket. After that, I painted the whole thing black, added a sheet of plexiglass across the front for a nice shine, and finished it off with plastic moulding around the border to give it a more polished, factory look.\nWhat surprised me # When I brought the cookbook holder up to my uncle\u0026rsquo;s shop, I assumed it would be a quick cut-once-and-done job. Instead, I got a masterclass in \u0026ldquo;measure twice, cut once.\u0026rdquo; Watching him slow down, consider multiple approaches for each cut, and think through the angles before touching the saw was genuinely educational. The result? We got it right the first time.\nResult # The stand looks great and is quite functional — it almost always has a record or two sitting on it.\nTakeaways # A cookbook holder makes a surprisingly good starting point for an LP display stand Slowing down and considering multiple approaches before cutting pays off — Uncle Pete\u0026rsquo;s patience was a good reminder In hindsight, I should have miter cut the plastic moulding — miter shears exist for exactly this kind of work What\u0026rsquo;s next # Eventually I want to add RGB LEDs to the back of the stand that match the dominant colors of the album art on display. With digital sources this is straightforward, but detecting what LP is actually spinning on the turntable is a more complex problem. That\u0026rsquo;s a future hardware/software project I\u0026rsquo;m looking forward to tackling.\n","date":"13 February 2026","externalUrl":null,"permalink":"/projects/maker/lp-jacket-stand/","section":"Maker","summary":"A modified cookbook holder turned LP jacket display, built with help from Uncle Pete","title":"LP Jacket Stand","type":"maker"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/mirror/","section":"Tags","summary":"","title":"Mirror","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/repair/","section":"Tags","summary":"","title":"Repair","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/smoking/","section":"Tags","summary":"","title":"Smoking","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/tesla/","section":"Tags","summary":"","title":"Tesla","type":"tags"},{"content":"Story Coming Soon!\n","date":"13 February 2026","externalUrl":null,"permalink":"/projects/car-projects/tesla-mirror-replacement/","section":"Car Projects","summary":"Story Coming Soon!","title":"Tesla Mirror Replacement","type":"car-projects"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/vinyl/","section":"Tags","summary":"","title":"Vinyl","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/projects/tags/woodworking/","section":"Tags","summary":"","title":"Woodworking","type":"tags"},{"content":"","date":"12 February 2026","externalUrl":null,"permalink":"/projects/tags/airstone/","section":"Tags","summary":"","title":"Airstone","type":"tags"},{"content":"","date":"12 February 2026","externalUrl":null,"permalink":"/projects/tags/fireplace/","section":"Tags","summary":"","title":"Fireplace","type":"tags"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/projects/tags/ansible/","section":"Tags","summary":"","title":"Ansible","type":"tags"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/projects/tags/cariboulite/","section":"Tags","summary":"","title":"Cariboulite","type":"tags"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/projects/tags/deevnet/","section":"Tags","summary":"","title":"Deevnet","type":"tags"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/projects/tags/packer/","section":"Tags","summary":"","title":"Packer","type":"tags"},{"content":"A Raspberry Pi image purpose-built for the CaribouLite software-defined radio HAT. Rather than manually configuring each SD card, this project uses Packer and Ansible to produce a reproducible image with all the SDR drivers, kernel patches, and boot configuration baked in — part of the Deevnet image factory. Flash a card, boot it up, and you\u0026rsquo;re ready for RF experimentation.\nThe idea # I came across Jeff Geerling demonstrating the CaribouLite SDR HAT, and for me this was the first time seeing a software-defined radio in action. I\u0026rsquo;ve had an interest in radio tech and the HAT looked cool to try out. As it turned out, the setup was very complicated — kernel patches, boot configuration changes, driver builds — and I wanted to capture all those steps in code so it would be easy to rebuild if needed. Since this was a Raspberry Pi, it was a natural fit for the Deevnet image factory.\nWhat I did # I knew Packer could build Pi images on x86 even though the target is ARM, and I knew Ansible could apply configuration to an image before it\u0026rsquo;s sealed up. So the plan was straightforward: Packer builds the base Raspbian Bookworm image, Ansible provisions the CaribouLite SDR configuration in a chroot, and out comes a flashable image. That was the plan, at least.\nWhat surprised me # The build turned out to be significantly more complicated than expected. Even with Claude Code driving, the pipeline needed Podman to isolate the ARM image build from the Fedora host — running Packer with qemu-user-static for cross-architecture emulation inside a container. On top of that, the CaribouLite drivers required kernel patches across multiple Linux 6.x API changes — different fixes for 6.3, 6.4, and 6.12+ — and the Ansible provisioning had to run in an offline chroot against the image rather than a live system. What started as \u0026ldquo;automate the install steps\u0026rdquo; turned into a four-stage pipeline with container isolation, cross-compilation, kernel patching, and chroot-based configuration management.\nResult # In the end, the image builder works — albeit not exactly as originally envisioned. Setting up the SDR from scratch is now just three steps: make the image, boot it with the HAT connected and run the setup, then run the validation test. More importantly, this build helped me see a good pattern — image plus first-boot setup plus embedded documentation and tests baked right into the image. That pattern will be applied to future Pi projects for sure.\nTakeaways # Finishing the SDR image is just the beginning of the radio journey. After setting up the client, there\u0026rsquo;s a whole world of radio to learn — the end of the image journey is just the start of the SDR journey. Packer + Ansible + Podman is a viable pipeline for cross-architecture Pi image builds, but expect more complexity than a native build. Baking a readme and validation tests into the image itself is a pattern worth reusing — the image becomes self-documenting. Kernel module builds across Linux versions are a moving target. Protecting patches with git update-index --skip-worktree keeps upstream pulls from clobbering your fixes. The rig # Links # Jeff Geerling — CaribouLite SDR HAT Check out the code CaribouLite CaribouLite RPi HAT on Crowd Supply ","date":"10 February 2026","externalUrl":null,"permalink":"/projects/electronics/pi-sdr/","section":"Electronics","summary":"A reproducible, Packer-built Raspberry Pi image pre-configured for the CaribouLite SDR HAT — part of the Deevnet image factory","title":"Pi SDR","type":"electronics"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/projects/tags/raspberry-pi/","section":"Tags","summary":"","title":"Raspberry-Pi","type":"tags"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/projects/tags/sdr/","section":"Tags","summary":"","title":"Sdr","type":"tags"},{"content":"","date":"27 January 2026","externalUrl":null,"permalink":"/projects/tags/alpine/","section":"Tags","summary":"","title":"Alpine","type":"tags"},{"content":"A hometown friend sent me his dead Alpine MRP-F250 car amplifier after seeing my electronics posts on Facebook. The amp had blown power supply MOSFETs, and the repair attempt has turned into a deep education in systematic diagnostics, test equipment, and knowing when to stop and think before applying more power. Still in progress — the amp isn\u0026rsquo;t fixed yet, but I\u0026rsquo;ve learned more from this one project than I expected.\nThe situation # One day, I posted about having one AI talk to another AI in the context of my Ma Bell Bluetooth Gateway project, and not long after I got a private message from a hometown Facebook friend. He had a car amp that failed — there was a pop and a burning smell — and since it looked like I was into electronics, he wondered if I might want to have a look. I clarified that I\u0026rsquo;m not an expert repair tech, but I\u0026rsquo;d be highly interested in the challenge as long as we agreed there was nothing to lose. Challenge accepted. He sent me the amp and I was ready to dig in.\nWhat I tried # I ordered the service manual for the exact amp and fed it into ChatGPT to assemble a diagnostic, test, and repair plan. From this I was able to identify two shorted MOSFET transistors in the power supply — consistent with the reported pop and burning smell. I ordered substitute transistors (all four, per recommendation) and replaced them. Before powering up, I watched quite a few repair videos from BareVids, who has explicitly stated that when power FETs fail there\u0026rsquo;s usually something else going on. I tested the PWM driver circuits with my oscilloscope and confirmed — to the best of my knowledge — that they were producing the pulses the FETs needed. So I proceeded to test the amp with limited current.\nWhat surprised me # My bench power supply immediately dropped to around 8 volts. That should have been the immediate signal to abort and start testing. Instead, I increased the current trying to get it back to 12V. Nothing happened immediately, so I thought — better power it down and have a think. But then I remembered I should try thermal imaging to see if anything was running hotter than normal. Since there had been no consequence before, I powered it back on to look through the thermal camera. Poof! Scared the crap out of me and a bit of smoke filled the bench area. Back to the drawing board with a more robust plan.\nResult # No matter what happens with the amp in the end, I will have learned a lot. I haven\u0026rsquo;t given up — this experience actually triggered a much more comprehensive diagnostic and test plan as well as a deep dive on using test equipment, which somehow resulted in assembling the EE Notebook. I\u0026rsquo;ll pull the four FETs again, retest the PWM driver circuits, and start back at the beginning. After seeing the condition of amps repaired by BareVids, this one seems in much better shape, so I believe repair is possible given the right approach. But the challenge still feels like finding a needle in a haystack.\nTakeaways # When the bench supply voltage drops unexpectedly, stop — that\u0026rsquo;s the circuit telling you something is still wrong Replacing the obvious failed components isn\u0026rsquo;t enough; as BareVids warns, when power FETs fail there\u0026rsquo;s usually an underlying cause Feeding the service manual into AI to develop a diagnostic plan was a productive starting point, but no substitute for systematic fault isolation This repair directly led to assembling the EE Notebook and its debugging methodology — ask better questions before taking more measurements Links # Diagnostic, Repair, and Verification Plan BareVids on YouTube ","date":"27 January 2026","externalUrl":null,"permalink":"/projects/car-projects/alpine-mrp-f250/","section":"Car Projects","summary":"A Facebook challenge to repair a dead Alpine MRP-F250 car amp — blown MOSFETs, escaped magic smoke, and lessons in systematic diagnostics","title":"Alpine MRP-F250 Amplifier Repair","type":"car-projects"},{"content":"","date":"27 January 2026","externalUrl":null,"permalink":"/projects/tags/amplifier/","section":"Tags","summary":"","title":"Amplifier","type":"tags"},{"content":"","date":"27 January 2026","externalUrl":null,"permalink":"/projects/tags/automotive/","section":"Tags","summary":"","title":"Automotive","type":"tags"},{"content":"","date":"27 January 2026","externalUrl":null,"permalink":"/projects/tags/electronics/","section":"Tags","summary":"","title":"Electronics","type":"tags"},{"content":"","date":"5 January 2026","externalUrl":null,"permalink":"/projects/tags/github-pages/","section":"Tags","summary":"","title":"Github-Pages","type":"tags"},{"content":"A Hugo-based project tracking site for a whole-house renovation — scores of projects across three floors, each broken into individual tasks, resulting in hundreds of distinct work items with progress indicators showing what\u0026rsquo;s done, what\u0026rsquo;s in progress, and what\u0026rsquo;s left. Built entirely through conversation with Claude Code in under 24 hours, auto-published to GitHub Pages on every commit.\nThe idea # I have a 1990s-era house — good bones, built better than many modern houses, with larger bedrooms and 9-foot ceilings downstairs — but it needed a major cosmetic renovation and some convenience upgrades. That\u0026rsquo;s a lot of projects to keep track of in my head. After building the Deevnet docs site and seeing how easy it was to use Claude Code to generate a Hugo site that auto-publishes on commit, I wanted to apply that same pattern to the renovation.\nWhat I did # I started after dinner on a Sunday night and spent several hours brain-dumping every renovation task I could think of — room by room, floor by floor. Claude Code generated the Hugo site structure, organized the tasks, and published it to GitHub Pages. I\u0026rsquo;d review, suggest refactors, add more detail, and it would regenerate. The next morning I got up early and put in two more hours before work, then finished the last bits during lunch in under 30 minutes. Full site, all done — as of the time of this writing, 647 tasks captured with clear progress tracking across the whole house, implemented in less than 24 hours total.\nWhat surprised me # Once I started the site, it became addictive. Talking to the AI and getting all the tasks accounted for had a momentum to it — each round of review surfaced more things I\u0026rsquo;d forgotten or hadn\u0026rsquo;t properly scoped. The site went from a quick experiment to a genuinely comprehensive renovation roadmap faster than I expected.\nWith multiple projects currently in flight including the master bathroom overhaul, I had been feeling a bit of anxiety and the sense of \u0026ldquo;will this house ever be done.\u0026rdquo; After capturing all the tasks, I felt very good about the progress made over the years — and now it gives a better sense of control seeing the path to the finish line.\nResult # Fully working and actively used. The site tracks hundreds of items across first floor, second floor, and non-living spaces (garage, basement, exterior), with completion status on every task. Progress bars are nested — individual tasks roll up to progress for a room or area, rooms roll up to a floor, and floors roll up to overall renovation progress on the main landing page. Each task also carries a level-of-effort weight (not visible on the site) so the AI can calculate effort-weighted progress rather than just counting checkboxes. It auto-publishes on commit and serves as the single source of truth for what\u0026rsquo;s done and what\u0026rsquo;s next.\nTakeaways # Hugo + GitHub Pages + AI is an incredibly efficient way to stand up a project tracker — no SaaS, no Jira, no subscription fees, free hosting Conversational AI development is a natural fit for this kind of brain-dump-to-structure workflow This generic approach works for any significant project that needs to show progress — not just home renovation What would have taken days of spreadsheet wrangling was done in an evening, a morning, and a lunch break Links # Check out the site Check out the code ","date":"5 January 2026","externalUrl":null,"permalink":"/projects/home-improvement/home-rehab/","section":"Home Improvement","summary":"A static site tracking 647 renovation tasks across a 1990s-era house — built in under 24 hours with AI-assisted development","title":"Home Rehab Tracker","type":"home-improvement"},{"content":"","date":"5 January 2026","externalUrl":null,"permalink":"/projects/tags/hugo/","section":"Tags","summary":"","title":"Hugo","type":"tags"},{"content":"","date":"5 January 2026","externalUrl":null,"permalink":"/projects/tags/project-tracking/","section":"Tags","summary":"","title":"Project-Tracking","type":"tags"},{"content":"","date":"5 January 2026","externalUrl":null,"permalink":"/projects/tags/renovation/","section":"Tags","summary":"","title":"Renovation","type":"tags"},{"content":"Deevnet Mobile is my portable electronics development lab — where I can pack up the home lab and take it to a Meetup or over to my Sweetie\u0026rsquo;s house for my nerding adventures. It started as a way to get a consistent network for my embedded programming projects and turned into a compact, fully functional infrastructure platform that can go wherever I go.\nThe idea # Working with microcontrollers and IoT devices that need to talk to each other or reach the internet means you need a real, consistent network — not just your laptop\u0026rsquo;s hotspot. I joined a local Meetup group for embedded programming and thought: why not bundle a portable home lab into a toolkit alongside my breadboards and microcontrollers, so I can work on IoT projects on the go?\nThe vision was a portable development lab with real networking — something I could carry to a Meetup and have a proper infrastructure environment wherever I am. A travel router on the edge, a gateway handling DNS and DHCP, a managed switch with VLANs, and a couple of compute nodes. Everything compact enough to fit in a rolling toolbox.\nConstraints # I wanted to keep the build reasonably inexpensive and physically lightweight. That meant refurbished small-form-factor hardware and single-board computers rather than rackmount gear. The network switch needed VLAN support, so a smart switch was required, but everything else was chosen for cost and portability.\nThe rig # The physical hardware stack is compact: a travel router on the edge to interface with whatever upstream internet is available, a dual-NIC Zimaboard configured as the gateway handling DNS, DHCP, NAT, and Wake-on-LAN for easy startup, a 16-port smart switch, and two refurbished small-form-factor desktop PCs running Proxmox — one for the management plane, one for tenant applications.\nWhat surprised me # It turns out my Sweetie\u0026rsquo;s cat likes to jump on top of the rolling kit and ride around. You\u0026rsquo;d think a cat would be afraid of this kind of thing, but not Zeke — he jumps on and goes for a ride almost every time I bring it over.\nCurrent state # The mobile lab is functional and ready for portable development. It also serves as a development platform for my home infrastructure, which I\u0026rsquo;ll eventually build out as another automation platform — both managed from the same codebase. The automation that makes the whole thing rebuildable from code is its own project — see Deevnet Build Automation.\nThe rolling toolbox has an interchangeable tool kit design — I have several component layers for different projects, and a crate module that can bring more extensive tooling like a portable oscilloscope, meter, and soldering gear.\nFuture ideas # Version 2 would make the compute portion more modular — keep the travel router, core router, switch, and wireless as a \u0026ldquo;LAN to go\u0026rdquo; base layer, then mix and match what rides along: add in the hypervisors when needed, or swap in a bank of Pis instead. A common AC-to-DC power supply would also be a nice upgrade over the current power strip and wall wart mess. Just ideas for now — it\u0026rsquo;s working great as is.\nLinks # Check out the docs Check out the code Harbor Freight Modular Rolling Toolbox GL.iNet Travel Routers ","date":"4 September 2025","externalUrl":null,"permalink":"/projects/electronics/deevnet-mobile-lab/","section":"Electronics","summary":"A portable home lab in a rolling toolbox — real networking for embedded projects, anywhere","title":"Deevnet Mobile Lab","type":"electronics"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/projects/tags/home-lab/","section":"Tags","summary":"","title":"Home-Lab","type":"tags"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/projects/tags/iot/","section":"Tags","summary":"","title":"Iot","type":"tags"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/projects/tags/meetup/","section":"Tags","summary":"","title":"Meetup","type":"tags"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/projects/tags/portable/","section":"Tags","summary":"","title":"Portable","type":"tags"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/projects/tags/zeke/","section":"Tags","summary":"","title":"Zeke","type":"tags"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/projects/tags/zimaboard/","section":"Tags","summary":"","title":"Zimaboard","type":"tags"},{"content":"","date":"2 November 2024","externalUrl":null,"permalink":"/projects/tags/analog/","section":"Tags","summary":"","title":"Analog","type":"tags"},{"content":"","date":"2 November 2024","externalUrl":null,"permalink":"/projects/tags/esp32/","section":"Tags","summary":"","title":"Esp32","type":"tags"},{"content":"An ESP32-based gateway that brings vintage rotary phones back to life over Bluetooth. The idea started at Vintage Computer Festival Midwest in 2024, and it\u0026rsquo;s turned into a deep dive into Bell System engineering, SLIC chips, and embedded audio. The project is still in progress — the Bluetooth firmware is working, the SLIC chip is selected, and the next milestone is a breadboard prototype of the analog hardware.\nThe idea # At Vintage Computer Festival Midwest in Chicago in September 2024, I saw a functioning vintage PBX system and it immediately took me back to the beige ITT Trimline wall phone in my family\u0026rsquo;s kitchen growing up — illuminated rotary dial, Western Electric ringer, the whole deal. Not long after, I found the exact same phone model on eBay — manufactured September 1982 and never used. I couldn\u0026rsquo;t leave it sitting dormant.\nI wanted to build a device that would let this phone do what it was made to do: ring, dial, and carry a conversation — just routed through Bluetooth instead of a copper pair from the central office. Off-the-shelf Bluetooth adapters exist, but they skip all the interesting parts. I wanted to replicate the actual subscriber line interface — the experience of picking up a handset and hearing a real dial tone, not just a Bluetooth pairing chime.\nWhat I did # The gateway is built around an ESP32-WROVER-IE for its Bluetooth HFP support and real-time GPIO control. The analog side centers on an HC-5504B SLIC (Subscriber Line Interface Circuit) — a telecom chip that handles the BORSCHT functions the Bell System\u0026rsquo;s central offices provided to every subscriber line: Battery feed, Overvoltage protection, Ringing, Supervision, Codec, Hybrid, and Test.\nThe firmware handles a state machine for call flow, rotary pulse decoding, tone generation, and the Bluetooth audio bridge. The system targets proper Bell System electrical standards: −48 VDC idle voltage, 70–90 V AC ringing at 20 Hz, loop current between 23–35 mA, and the correct supervisory tones — dial tone at 350 + 440 Hz, ringback at 440 + 480 Hz, busy at 480 + 620 Hz, and the howler off-hook warning using four frequencies.\nWhat surprised me # Until you really dissect what happens when someone picks up a phone, it seems simple — you lift the handset and talk. But once you start implementing it, the layers pile up fast. There\u0026rsquo;s off-hook detection, dial tone generation, recognizing rotary pulses or DTMF digits, two-way audio, ring voltage, supervision signals — and each one has to happen at the right time in the right sequence. This project turned out to be significantly more complicated than I originally expected.\nResult # Still in progress. I\u0026rsquo;ve settled on the HC-5504B SLIC as the core analog interface and the firmware is fairly far along — Bluetooth HFP pairing and call detection are working. The next step is building a breadboard prototype around the SLIC and prototyping the other hardware functions: ring generation, audio path, and power supply. The firmware will need the real hardware underneath it to bring everything to the finish line. Once the prototype is validated, the plan is to design custom PCBs covering power management, signal conditioning, audio routing, and isolation — and package it all in a clean enclosure with standard RJ-11 ports. Pick up the handset, hear a dial tone, pulse dial a number, and make a call over Bluetooth. Incoming calls ring the actual bell.\nTakeaways # The Bell System\u0026rsquo;s engineering standards are remarkably well-documented — decades-old specs for voltages, timing, and tone frequencies are still precise enough to build against today BORSCHT isn\u0026rsquo;t just an acronym to memorize — each function represents a real engineering problem that the SLIC chip has to solve Bridging analog telephony to digital Bluetooth means working across very different signal domains — DC loop current on one side, HFP codec negotiation on the other Sweetie\u0026rsquo;s Uncle Ronnie gifted me a 1930s-era phone and ringer — and because the Bell System kept its subscriber line specs remarkably stable for decades, it should work with the same gateway as the \u0026rsquo;70s rotary phone. A working demo with both is now mandatory Links # Check out the docs Check out the code ","date":"2 November 2024","externalUrl":null,"permalink":"/projects/electronics/ma-bell-gateway/","section":"Electronics","summary":"Resurrects vintage rotary phones for modern use by bridging analog telephony to Bluetooth","title":"Ma Bell Bluetooth Gateway","type":"electronics"},{"content":"","date":"2 November 2024","externalUrl":null,"permalink":"/projects/tags/slic/","section":"Tags","summary":"","title":"Slic","type":"tags"},{"content":"","date":"2 November 2024","externalUrl":null,"permalink":"/projects/tags/telephony/","section":"Tags","summary":"","title":"Telephony","type":"tags"},{"content":"","date":"26 September 2024","externalUrl":null,"permalink":"/projects/tags/esp-idf/","section":"Tags","summary":"","title":"Esp-Idf","type":"tags"},{"content":"A Halloween pumpkin powered by an ESP32 — flickering flame LEDs at idle, then a strobe and evil laugh triggered by motion when trick-or-treaters walk up. Built in C with ESP-IDF and FreeRTOS, inspired by a Bitluni YouTube video that made it look easy. It was not easy, but it works great.\nThe idea # I needed a simple project to get a better understanding of working with the ESP32, and Bitluni\u0026rsquo;s screaming pumpkin looked very accessible and fun. I figured I\u0026rsquo;d spin up my own version with a few twists — an evil laugh instead of a scream, and a nice flickering flame effect at idle.\nWhat I did # An ESP32 drives a strip of NeoPixel LEDs for a realistic flickering flame effect inside the pumpkin. A PIR motion sensor detects approaching trick-or-treaters and triggers a strobe effect plus an evil laugh played through I2S audio. The whole thing is written in C with the ESP-IDF framework, using FreeRTOS to run the LED animation and audio playback as separate tasks. Different sounds can be swapped in for variety.\nWhat surprised me # It took a lot more than a few hours — even with vibe coding. FreeRTOS timing was tricky. Getting the motion trigger, strobe effect, and audio playback to all fire at the right time required many rounds of tweaking. The tasks needed careful coordination to avoid stepping on each other. But after enough iteration it finally ran perfectly, and the idle flame effect actually looks great.\nResult # Fully working. The pumpkin looks fantastic at idle with the flickering flame, and the motion-triggered strobe plus evil laugh gets a solid reaction from trick-or-treaters. Future plan for next Halloween: build an evil pumpkin family — multiple pumpkins in different sizes, each with their own evil laugh that matches the size and character of the pumpkin.\nTakeaways # The ESP32 is a remarkably capable little board for the price FreeRTOS is impressive — real multitasking on a microcontroller — but the timing coordination has a real learning curve \u0026ldquo;A couple hours\u0026rdquo; on YouTube can easily become days in practice, and that\u0026rsquo;s fine Vibe coding gets you started fast but embedded timing issues still require hands-on debugging The I2S board and small speaker aren\u0026rsquo;t loud enough — the next version needs a sound upgrade Links # Check out the code Bitluni\u0026rsquo;s original screaming pumpkin video ","date":"26 September 2024","externalUrl":null,"permalink":"/projects/electronics/esp32-pumpkin/","section":"Electronics","summary":"An ESP32-driven Halloween pumpkin with flickering flame LEDs and motion-activated evil laugh audio","title":"ESP32 Pumpkin","type":"electronics"},{"content":"","date":"26 September 2024","externalUrl":null,"permalink":"/projects/tags/freertos/","section":"Tags","summary":"","title":"Freertos","type":"tags"},{"content":"","date":"26 September 2024","externalUrl":null,"permalink":"/projects/tags/halloween/","section":"Tags","summary":"","title":"Halloween","type":"tags"},{"content":"","date":"26 September 2024","externalUrl":null,"permalink":"/projects/tags/led/","section":"Tags","summary":"","title":"Led","type":"tags"},{"content":"","date":"26 September 2024","externalUrl":null,"permalink":"/projects/tags/neopixel/","section":"Tags","summary":"","title":"Neopixel","type":"tags"},{"content":"","date":"13 July 2024","externalUrl":null,"permalink":"/projects/tags/6502/","section":"Tags","summary":"","title":"6502","type":"tags"},{"content":"","date":"13 July 2024","externalUrl":null,"permalink":"/projects/tags/assembly/","section":"Tags","summary":"","title":"Assembly","type":"tags"},{"content":"","date":"13 July 2024","externalUrl":null,"permalink":"/projects/tags/atari/","section":"Tags","summary":"","title":"Atari","type":"tags"},{"content":"Growing up with Combat, Breakout, Space Invaders, and Asteroids in the late \u0026rsquo;70s and early \u0026rsquo;80s, I\u0026rsquo;ve always had a soft spot for the Atari VCS. After attending the Central Ohio Retro Gaming Society convention in 2022 and hearing industry veterans talk about developing for the platform, I decided to learn 6502 assembly myself. The ultimate goal is a homebrew game — complete with burned EPROM, cartridge, and label art. The Christmas demo is the first real milestone on that path.\nThe idea # I want to know enough 6502 assembly to create a complete homebrew Atari VCS game from scratch — code, cartridge, and labeling. I enrolled in a Pikuma course on Atari 2600 assembly programming to get started, and the Christmas demo was an approachable target given how far I\u0026rsquo;d gotten in the coursework.\nWhat I did # The toolchain is DASM assembler and Stella emulator for testing, with 8bitworkshop for interactive development in the browser. Between the course material, sample code, and advice from an assembly wizard at the local meetup, I put together a Christmas tree demo. Getting it to render correctly on screen was the real challenge — more on that below.\nWhat surprised me # I went in eyes wide open to the concept of \u0026ldquo;racing the beam\u0026rdquo; — on the Atari VCS, there\u0026rsquo;s no frame buffer. Your code runs in lockstep with the television\u0026rsquo;s electron beam as it draws each scanline. You\u0026rsquo;re not rendering to memory and displaying it; you\u0026rsquo;re feeding pixel data to the TV in real time, and if your code falls behind the beam, you get garbage on screen. After many iterations where the code looked logically perfect but the tree rendered as a jumbled mess, my assembly expert friend spotted it immediately: timing problem. Storing the tree pattern in a data structure and reading it back was just too slow for the scanline timing. The code was correct — it just couldn\u0026rsquo;t keep up with the beam.\nResult # For last Christmas, I wanted the demo running on a real Atari. I haven\u0026rsquo;t yet nailed down the EPROM programming workflow, so for now I copied the binary to an SD card running through a Harmony cartridge to get it on real hardware. It\u0026rsquo;s a bit of a cheat, but it\u0026rsquo;s a stepping stone toward the ultimate goal of burning the ROM onto an actual EPROM chip. I\u0026rsquo;ll be back to elaborate on the EPROM side of things once I have the whole story. But for now, I\u0026rsquo;ll relish in the satisfaction of seeing my code running on the VCS and showing on the Trinitron!\nTakeaways # \u0026ldquo;Racing the beam\u0026rdquo; isn\u0026rsquo;t just a concept — until your logically correct code fails because of scanline timing, you don\u0026rsquo;t truly feel it The Harmony cartridge is a great intermediate step for testing on real hardware while the EPROM workflow is still in progress Having access to an experienced assembly programmer saved hours of frustration — some bugs only make sense to someone who\u0026rsquo;s seen them before 8bitworkshop\u0026rsquo;s interactive browser environment is invaluable for quick iteration What\u0026rsquo;s next # The demo needs some embellishments — it should play a carol and have twinkling lights or other holiday touches. Beyond that, I\u0026rsquo;m working toward burning the ROM onto a real EPROM and eventually building a complete homebrew game with a proper cartridge and label art.\nLinks # Check out the code Pikuma — Learn 6502 Assembly with Atari 2600 Games 8bitworkshop Harmony Cartridge 8-Bit Classics ","date":"13 July 2024","externalUrl":null,"permalink":"/projects/electronics/atari-vcs/","section":"Electronics","summary":"A Christmas tree demo in 6502 assembly for the Atari VCS — the first milestone toward a homebrew game","title":"Atari VCS Christmas Demo","type":"electronics"},{"content":"","date":"13 July 2024","externalUrl":null,"permalink":"/projects/tags/gaming/","section":"Tags","summary":"","title":"Gaming","type":"tags"},{"content":"","date":"13 July 2024","externalUrl":null,"permalink":"/projects/tags/retro/","section":"Tags","summary":"","title":"Retro","type":"tags"},{"content":"","date":"1 January 2023","externalUrl":null,"permalink":"/projects/tags/audio/","section":"Tags","summary":"","title":"Audio","type":"tags"},{"content":"","date":"1 January 2023","externalUrl":null,"permalink":"/projects/tags/hi-fi/","section":"Tags","summary":"","title":"Hi-Fi","type":"tags"},{"content":"A whole-home digital audio system built on S/PDIF (Sony/Philips Digital Interface) over repurposed CATV coax. S/PDIF carries digital audio over a single cable — it\u0026rsquo;s the orange RCA jack on the back of most receivers. A basement media server streams to vintage hi-fi systems in multiple rooms, and when a record drops on the turntable, it automatically takes over every zone. Every room in the house has noise-free digital high-fidelity audio on tap — powered by vintage gear, a media server, and a few dollars\u0026rsquo; worth of gear and repurposed coax.\nThe idea # I\u0026rsquo;ve always been a music listener — always have been, probably always will be. I love hearing music on vintage gear from the \u0026rsquo;70s and \u0026rsquo;80s, and while I\u0026rsquo;m a vinyl aficionado, I also appreciate the convenience of digital and streaming. I wanted the best of both worlds: high-quality digital audio in any room of the house — or even outside — just by turning on the system in that room. And if a record is playing, I wanted it to follow me through the house just as easily. Put the record on, and it\u0026rsquo;s everywhere.\nWhat I did # At my previous house, I had a similar setup — but it was all analog, with two coax cables running to each room. It worked, but running an unbalanced signal was never noise-free, even on short runs. When it came time to replicate the system after moving, I knew I wanted to upgrade. The new house only had single coax runs to each room, and I didn\u0026rsquo;t like the idea of pulling a second line to upstairs bedrooms. Little did I know, that limitation would actually become an advantage. I eventually came across the DAC and ADC approach and decided to try it.\nIt starts with a media server in the basement running iTunes, Spotify, Tidal, and MusicBee for playing lossless FLAC files ripped from my CD collection — all controllable from my phone or any computer via RDP. The S/PDIF output from the sound card runs at 48 kHz sampling — on par with DVD audio, slightly above CD quality — and feeds into an automatic digital A/B switch that can override one channel with another when a signal is present.\nFrom there, the digital output is split and sent over repurposed CATV coax lines to each room. The master bedroom has a vintage Marantz system, and another bedroom runs an \u0026rsquo;80s-era Carver setup that lines up pretty close to Ferris Bueller\u0026rsquo;s system in his Day Off movie. The family room home theater takes a direct S/PDIF input, and an old receiver in the basement feeds speakers outdoors. There\u0026rsquo;s even an output to the FM transmitter so I can listen on my \u0026rsquo;80s-era ghetto blaster while playing arcade games or working in the garage. Each system has a DAC that feeds into aux for perfectly clean audio.\nNow for the vinyl side — and this is where it feels like magic. In my living room office, I have my Onkyo system with the amp I bought as a high schooler, and this is the primary system for spinning records. An ADC on the tape monitor output digitizes whatever the system is playing and sends it back to the basement over a second coax line I ran specifically for the return. The turntable is the most common source, and powering it on activates the ADC — but switching to the cassette deck or CD player would work just as well. There, it feeds into the digital A/B switch and automatically overrides the media server input. So when a record is playing, it takes over every room — no button presses, no app switching, just music.\nWhat surprised me # When I first tried splitting the S/PDIF signal, I didn\u0026rsquo;t expect it to reach multiple rooms — especially upstairs — but it did. Originally I was splitting analog out of the media server with passive splits and ADCs on each line. When I moved to an all-digital backend, one of the upstairs rooms became hit or miss on signal reliability. I\u0026rsquo;ll eventually build an active S/PDIF splitter to send an amplified signal upstairs. In the meantime, I have a workaround with an extra ADC just to keep that room reliable.\nResult # The system works and it\u0026rsquo;s highly convenient. I can have a record playing, move on to tasks around the house, and just turn on the system in whatever room I\u0026rsquo;m in — the music is never far away. Cleaning to \u0026rsquo;80s hair metal happens at double speed. For Dark Side of the Moon headphone listening in the bedroom, there\u0026rsquo;s zero static from the high-fidelity streaming. It just works.\nTakeaways # S/PDIF is more resilient than I expected — it carried signal through passive coax splits to multiple rooms, though the move to an all-digital backend did cut signal strength enough to matter on the longest run Bang for the buck, the DACs and ADCs sell for under $20 online — you\u0026rsquo;d have to spend hundreds or maybe even thousands to match this with a commercial digital streaming system 48 kHz is DVD-level quality sampling, and some gear goes up to 192 kHz, but I\u0026rsquo;d happily A/B this system against far more expensive gear — the media source, speakers, amps, and headphones make the biggest difference in the signal path, not the sampling rate. I love good sound, but I\u0026rsquo;m not a hard core audiophile A Sonos setup might have a slight edge with its digital delay synchronization between rooms, but repurposing the existing CATV coax lines gets you there for not a lot of money ","date":"1 January 2023","externalUrl":null,"permalink":"/projects/electronics/spdif-audio-distribution/","section":"Electronics","summary":"A DIY whole-home audio system that distributes digital audio — and live vinyl — to vintage hi-fi gear in multiple rooms using S/PDIF over existing coax","title":"S/PDIF Audio Distribution","type":"electronics"},{"content":"","date":"1 January 2023","externalUrl":null,"permalink":"/projects/tags/spdif/","section":"Tags","summary":"","title":"Spdif","type":"tags"},{"content":"","date":"1 January 2023","externalUrl":null,"permalink":"/projects/tags/vintage/","section":"Tags","summary":"","title":"Vintage","type":"tags"},{"content":"The leather on my seats was cracking and worn out, so I ordered replacement covers from Lseat.com and installed them with the help of my Sweetie. The covers themselves were impressive quality — getting them stretched tight was the real challenge.\nThe situation # The leather on my seats had been tearing for a while — ugly, but mostly cosmetic. I ordered replacement covers from Lseat.com early on, but the project stayed wrapped tightly in its industrial-looking shipping pillow. I wasn\u0026rsquo;t sure how much effort the install would actually take, and it was easy to keep pushing it down the list.\nThat changed one evening taking my Sweetie on a date. A ripped piece of leather on the back of the passenger seat was poking her in the back. Just like that, this went from \u0026ldquo;I\u0026rsquo;ll get to it eventually\u0026rdquo; to the number one priority.\nWhat I did # We set aside a weekend and were ready to dive into this project head first. We tackled the passenger seat first — we didn\u0026rsquo;t know how long the project might take, and I didn\u0026rsquo;t want to risk being without the car. Out came the seat, then we separated the seatback from the bottom cushion.\nWe used beefy metal cutters to clip out the old hog rings — and a word of advice: wear eye protection, because there will be flying shrapnel.\nWith the covers off and the foam fully exposed, it was the point of no return. The project is essentially four recovering jobs: seat bottom, seat back, and repeat for the passenger seat. The foam has embedded wires for the hog rings to crimp onto, so it\u0026rsquo;s a matter of getting the new cover lined up the best you can and clamping it down.\nThe hardest part of the whole exercise? Running out of strength in your hands from crimping so many rings.\nEventually, the time came to transplant the side airbag from the old cover to the new one. At first, it felt like we were handling a bomb — but it turned out to be no big deal.\nWhat surprised me # From the outside looking in, this project seemed like it would be very difficult. I was pleasantly surprised that it was actually straightforward. The leather was hard to stretch sometimes, but it was always clear how the cover was supposed to be aligned. Perhaps if this were custom upholstery it might have been way more difficult, but the Lseat kit was designed exactly for this model.\nResult # It took the whole day to do one seat. The next day we did the driver\u0026rsquo;s seat, and while the seats were out it was a good chance to deep clean the carpet and really bring the car back to newish looking. I was hoping the newly refreshed leather seats would bring back the \u0026ldquo;new car smell,\u0026rdquo; but that didn\u0026rsquo;t quite happen.\nI was ecstatic about the outcome, though my Sweetie said \u0026ldquo;That was too much work, I\u0026rsquo;ll never do that again.\u0026rdquo; But sure enough, a few days later I ordered the rear seat covers anyway so it would all match perfectly. And Sweetie helped on those anyway ❤️\nBefore and after # Takeaways # Links # Leather Seat Covers from Lseat.com Step-by-step install walkthrough (YouTube) ","date":"14 August 2022","externalUrl":null,"permalink":"/projects/car-projects/car-seat-reupholstery/","section":"Car Projects","summary":"The leather on my seats was cracking and worn out, so I ordered replacement covers from Lseat.com and installed them with the help of my Sweetie. The covers themselves were impressive quality — getting them stretched tight was the real challenge.\nThe situation # The leather on my seats had been tearing for a while — ugly, but mostly cosmetic. I ordered replacement covers from Lseat.com early on, but the project stayed wrapped tightly in its industrial-looking shipping pillow. I wasn’t sure how much effort the install would actually take, and it was easy to keep pushing it down the list.\n","title":"Car Seat Reupholstery","type":"car-projects"},{"content":"","date":"14 August 2022","externalUrl":null,"permalink":"/projects/tags/interior/","section":"Tags","summary":"","title":"Interior","type":"tags"},{"content":"","date":"14 August 2022","externalUrl":null,"permalink":"/projects/tags/upholstery/","section":"Tags","summary":"","title":"Upholstery","type":"tags"},{"content":"","date":"1 December 2011","externalUrl":null,"permalink":"/projects/tags/arcade/","section":"Tags","summary":"","title":"Arcade","type":"tags"},{"content":"","date":"1 December 2011","externalUrl":null,"permalink":"/projects/tags/restoration/","section":"Tags","summary":"","title":"Restoration","type":"tags"},{"content":"","date":"1 January 2008","externalUrl":null,"permalink":"/projects/tags/fm/","section":"Tags","summary":"","title":"Fm","type":"tags"},{"content":"A Ramsey FM transmitter kit, soldered by hand and wired to a dipole antenna in the attic, that turned a basement WinAmp music server into a neighborhood radio station. Friends could request songs from a flip phone and hear them on any nearby FM radio. Built in the late 2000s, before Bluetooth speakers existed.\nThe idea # Back in the late 2000s, before Bluetooth speakers and when flip phones were still the rage, I had a rig for on-demand music. Hanging out in my neighbor\u0026rsquo;s garage, my buddy could say \u0026ldquo;play Van Halen\u0026rdquo; and out of the FM boom box would come Van Halen. I was the neighborhood DJ, ready to play all the classic rock tunes on weekends in the garage, driveways, or around firepits — all from a flip phone, over the air to anyone\u0026rsquo;s FM radio nearby.\nFor my home music server I was running WinAmp, and it supported a skinnable plugin called BrowseAmp. With a mobile skin that was actually pretty navigable on a flip phone, I exposed the site via a reverse proxy where I could select artists, albums, or single songs to play or queue up. All I needed was a way to get the music playing in my house over to my neighbors. That\u0026rsquo;s when I found the Ramsey FM Transmitter kit. I ordered it and it came with all the parts to run a small radio station.\nWhat I did # Over the course of several sessions I worked to get all the components soldered onto the board. I hadn\u0026rsquo;t done that much soldering since the time I was a kid in my basement messing around with random parts from Radio Shack — not really accomplishing much other than making a mess. But I carefully soldered all the components in place and then came the moment of truth: apply power and test it out.\nI connected the transmitter to a source and powered it on. On the radio, I scanned the dial and found an empty slot — 102.7 FM, nothing but static. Then I started turning the transmitter\u0026rsquo;s tuner toward that spot on the dial, and — much to my surprise — it actually worked. Boom. My stuff coming through crystal clear on 102.7.\nI ran coax cable all the way to the attic and put a simple dipole antenna up there, with the transmitter connected to my audio system in the basement.\nWhat surprised me # The range was better than I expected. The next-door houses were all in pretty clear range, but I tested reception from my car and found I could still hear faint signals about a mile away — not listenable, but it was there. My house and the nearby houses were good enough for weekend parties.\nResult # It worked great. The whole setup — WinAmp with BrowseAmp, the flip phone as a remote, the Ramsey transmitter broadcasting to the neighborhood — came together into something genuinely useful and fun. Once in a while if we were away, the neighbors would ask me to leave the site on so they could use it in our absence. Absolutely!\n102.7 FM Today # When Bluetooth speakers became all the rage and anyone with Spotify could play any song, my FM rig sadly became obsolete. No one needed it anymore — they had the same function in their pocket, and my giant MP3 collection wasn\u0026rsquo;t as complete as the online streaming services.\nBut alas, I have a modern use case. I scored a vintage GE ghetto blaster on eBay nicknamed \u0026ldquo;The Judge,\u0026rdquo; and the FM transmitter now supplies my home music collection to The Judge when I\u0026rsquo;m either in the garage or playing games on the Planet Earth Arcade machine. There\u0026rsquo;s something about 80s music coming through a real 80s boombox over FM that a Bluetooth speaker just can\u0026rsquo;t replicate — it sounds exactly the way it was meant to be heard. The combo is also a hit on Halloween — The Judge blasting Halloween-themed songs from the driveway during trick-or-treat. My fellow Gen X parents love it. The transmitter has been powered on for most of its life and it still works as good as the day I first assembled it.\nTakeaways # Sometimes the best tech solutions are the ones your neighbors ask you to leave running when you go out of town Good hardware outlasts the software ecosystem around it — the transmitter is still going strong nearly two decades later What\u0026rsquo;s next # I have a digital tuner version of the Ramsey transmitter sitting in a box that I\u0026rsquo;ll assemble one day — should be a cleaner lock on the frequency. The other enhancement is building a custom antenna size-matched to 102.7 FM for improved coverage over the generic dipole in the attic.\nThe rig # Links # Ramsey Electronics on eBay — Ramsey is mostly out of business, but an eBay store does seem to live on Ramsey Kits Calls It Quits (ARRL) ","date":"1 January 2008","externalUrl":null,"permalink":"/projects/electronics/fm-transmitter/","section":"Electronics","summary":"A soldered-from-kit FM transmitter that turned a basement music server into a neighborhood radio station in the late 2000s","title":"FM Transmitter","type":"electronics"},{"content":"","date":"1 January 2008","externalUrl":null,"permalink":"/projects/tags/kit/","section":"Tags","summary":"","title":"Kit","type":"tags"},{"content":"","date":"1 January 2008","externalUrl":null,"permalink":"/projects/tags/radio/","section":"Tags","summary":"","title":"Radio","type":"tags"},{"content":"","date":"1 January 2008","externalUrl":null,"permalink":"/projects/tags/ramsey/","section":"Tags","summary":"","title":"Ramsey","type":"tags"},{"content":"","date":"1 January 2008","externalUrl":null,"permalink":"/projects/tags/soldering/","section":"Tags","summary":"","title":"Soldering","type":"tags"},{"content":"","externalUrl":null,"permalink":"/projects/tags/circuits/","section":"Tags","summary":"","title":"Circuits","type":"tags"},{"content":"","externalUrl":null,"permalink":"/projects/tags/embedded/","section":"Tags","summary":"","title":"Embedded","type":"tags"},{"content":"","externalUrl":null,"permalink":"/projects/tags/infrastructure/","section":"Tags","summary":"","title":"Infrastructure","type":"tags"},{"content":"","externalUrl":null,"permalink":"/projects/tags/microcontrollers/","section":"Tags","summary":"","title":"Microcontrollers","type":"tags"},{"content":"","externalUrl":null,"permalink":"/projects/tags/microprocessors/","section":"Tags","summary":"","title":"Microprocessors","type":"tags"},{"content":"There\u0026rsquo;s nothing quite like using something you built yourself, bringing new life back to something broken, or learning things you never expected along the way. A lot of these projects are things I once assumed were beyond me. But with my Sweetie, advice from people who knew more than I did, and a little help from AI, they became possible.\nWhat finally makes the difference is simple: patience, a bit of luck, and the willingness to start before you feel ready. Ignore the doubts. Don\u0026rsquo;t wait for perfect. Just begin. The satisfaction lasts a lot longer than the struggle ever does.\nIf this site does anything, I hope it nudges you to take on that project you\u0026rsquo;ve been thinking about.\n","externalUrl":null,"permalink":"/projects/","section":"Projects","summary":"There’s nothing quite like using something you built yourself, bringing new life back to something broken, or learning things you never expected along the way. A lot of these projects are things I once assumed were beyond me. But with my Sweetie, advice from people who knew more than I did, and a little help from AI, they became possible.\nWhat finally makes the difference is simple: patience, a bit of luck, and the willingness to start before you feel ready. Ignore the doubts. Don’t wait for perfect. Just begin. The satisfaction lasts a lot longer than the struggle ever does.\n","title":"Projects","type":"page"},{"content":"","externalUrl":null,"permalink":"/projects/tags/prototyping/","section":"Tags","summary":"","title":"Prototyping","type":"tags"},{"content":"","externalUrl":null,"permalink":"/projects/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","externalUrl":null,"permalink":"/projects/tags/terraform/","section":"Tags","summary":"","title":"Terraform","type":"tags"}]