
[{"content":"For Christmas, my in-laws gave us a birdfeeder with a camera. Awesome idea and my wife loved it! However, the camera was copletely closed off, only worked in the cloud and had an app with a subscription. I already had Frigate running for home security cameras, fully local, and was not looking forward to adding a cloud based, subscription only camera to my setup. My wife agreed. So she gave me a challenge: Re-create the bird feeder camera features with a local setup.\nI looked for camera\u0026rsquo;s. Landed on the REVODATA UltraHD 4K (8MP) POE IP Mini Camera,2.8-12mm Manual Zoom and pointed it at the bird feeder. That worked! Frigate handles the real-time object detection. I added some scripts on top to filter for birds specifically, log the sightings, and try to figure out what species we\u0026rsquo;re seeing. It\u0026rsquo;s not perfect, but it catches a surprising amount. Also installed a Birdnet docker instance and pointed it to our camera feeds and it now tracks and identifies visiting birds by sound.\nThe project still needs tinkering and its a work in progress, but Spring is coming and mostly this is just a fun project. Not everything needs to be serious.\n","date":"6 March 2026","externalUrl":null,"permalink":"/projects/backyard-birding/","section":"Projects","summary":"","title":"Backyard Birding with Frigate","type":"projects"},{"content":"","date":"6 March 2026","externalUrl":null,"permalink":"/tags/birds/","section":"Tags","summary":"","title":"Birds","type":"tags"},{"content":"","date":"6 March 2026","externalUrl":null,"permalink":"/tags/frigate/","section":"Tags","summary":"","title":"Frigate","type":"tags"},{"content":"Welcome — I\u0026rsquo;m Oscar. I build things, break things, and write about what I learn.\nBrowse my projects or read the blog.\n","date":"6 March 2026","externalUrl":null,"permalink":"/","section":"Home","summary":"","title":"Home","type":"page"},{"content":"","date":"6 March 2026","externalUrl":null,"permalink":"/tags/ml/","section":"Tags","summary":"","title":"ML","type":"tags"},{"content":"","date":"6 March 2026","externalUrl":null,"permalink":"/tags/nature/","section":"Tags","summary":"","title":"Nature","type":"tags"},{"content":"","date":"6 March 2026","externalUrl":null,"permalink":"/projects/","section":"Projects","summary":"","title":"Projects","type":"projects"},{"content":"","date":"6 March 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"1 March 2026","externalUrl":null,"permalink":"/tags/ai/","section":"Tags","summary":"","title":"AI","type":"tags"},{"content":"20 years ago I bought a digital picture frame for my mom. In those 20 years the whole family has been sending her pictures. It\u0026rsquo;s incredibly fun to sit in her living room and see the pictures come by as there are so many events over so many years. I decided it would be fun for my family too. So I bought one for our own home. The frame worked well, however, it required an app to upload pictures and of course the app had better features with a subscription. I was using it, the kids loved it. My wife however is someone who hates having to set up accounts and download different apps for everything. So ultimately, I was only capturing half of our memories. Only the pictures I took ended up on the frame.\nI didn\u0026rsquo;t want to change her personality. Honestly, I too get tired of all the alls and accounds. So how could I make this easier, more seamless? Like how you can just send people photos through iMessage? Turns out iMessage is very proprietary and hard to set up. However, Signal was already on her phone. So I used Claude Code to set up a Signal message relay and add a script to send any incoming pictures from only allowed Signal user UUID\u0026rsquo;s straight to the Picture Frame folder which is shown on the Picture Frame. Now, she can just open Photos on her iphone, select the images she wants to share and hit the Signal assistant and it lands in our Immich library where the photo frame displays it. Done.\nThen I read about OpenClaw. Which was interesting, but also sounded pretty dangerous and kinda hyped. But I wondered what usable features we could grab from OpenClaw and implement into the Signal relay.\nAfter some tinkering, the same Signal interface now talks to a local LLM running on Ollama. It checks our calendar and can add/remove stuff from it, looks up recipes in Mealie, manages the grocery list, pulls photos from our library, and controls Home Assistant. All through a normal text conversation in Signal.\nSimple and private, with the option of adding Claude API to it if you want to. I chose to keep it local for now. And the best part is, my wife doesn\u0026rsquo;t need to use any of these features. She can just send pictures to it and that\u0026rsquo;s all it needs to do.\nThe full project is on GitHub: Jarvis\n","date":"1 March 2026","externalUrl":null,"permalink":"/projects/signal-assistant/","section":"Projects","summary":"","title":"Building a Family AI Assistant Over Signal","type":"projects"},{"content":"","date":"1 March 2026","externalUrl":null,"permalink":"/tags/home-assistant/","section":"Tags","summary":"","title":"Home-Assistant","type":"tags"},{"content":"","date":"1 March 2026","externalUrl":null,"permalink":"/tags/llm/","section":"Tags","summary":"","title":"LLM","type":"tags"},{"content":"","date":"1 March 2026","externalUrl":null,"permalink":"/tags/privacy/","section":"Tags","summary":"","title":"Privacy","type":"tags"},{"content":"","date":"1 March 2026","externalUrl":null,"permalink":"/tags/python/","section":"Tags","summary":"","title":"Python","type":"tags"},{"content":"","date":"1 March 2026","externalUrl":null,"permalink":"/tags/signal/","section":"Tags","summary":"","title":"Signal","type":"tags"},{"content":"","date":"18 February 2026","externalUrl":null,"permalink":"/tags/automation/","section":"Tags","summary":"","title":"Automation","type":"tags"},{"content":"","date":"18 February 2026","externalUrl":null,"permalink":"/tags/data-engineering/","section":"Tags","summary":"","title":"Data-Engineering","type":"tags"},{"content":"","date":"18 February 2026","externalUrl":null,"permalink":"/tags/immich/","section":"Tags","summary":"","title":"Immich","type":"tags"},{"content":"Back in the day, one of the primary ways to share photos was by email. I kept most of my emails over the past 20 years. As I was setting up my local Immich photo storage, I knew I had to have a bunch of photos trapped in those 20 years of emails.\nI used Claude code to come up with a plan. First problem: I use Proton for my email and they are pretty well protected. But Claude knew of a service I could run inside a docker image to download my emails locally and then it could create a Python script to scan the emails for images. It took about 14 hours to download all the emails.\nThe Python script ran and grabbed about 16,000 images. A lot of those were those small images which are part of email signatures. And a lot of duplicates of those. Time to filter out all the useless images. First step was to delete all images below 60kb. That removed about 10,000. Then Claude knew a couple of scripts we could run to remove duplicates based on size and color patterns. That removed a bunch. Next up: There were over a thousand of screenshots in there which I had sent back and forth for work during my career. Removed those based on screen resolution. Final step was to browse through them manually.\nAfter all the filtering, I ended up with roughly 700 real photos that I\u0026rsquo;d basically lost track of. Pictures of the kids, old trips, stuff I hadn\u0026rsquo;t seen in years.\nThey all live in our Immich library now, right alongside everything else. It felt like finding a box of old prints in the attic, except the attic was my email archive.\n","date":"18 February 2026","externalUrl":null,"permalink":"/projects/email-photo-rescue/","section":"Projects","summary":"","title":"Rescuing 20 Years of Photos from Email","type":"projects"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/tags/ai-assisted/","section":"Tags","summary":"","title":"AI-Assisted","type":"tags"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/tags/claude-code/","section":"Tags","summary":"","title":"Claude-Code","type":"tags"},{"content":"11 years ago I created an application for my brother. It was created using Symfony 3.4 and was running on PHP 7.1. I moved on from my own business, but my brother kept using the app on a small scale. Every year that passed by, it became harder to find someone who wanted to maintain it. So it wasn\u0026rsquo;t really maintained and he decided not to really use it anymore, even though he knew there was a business case there. Eleven years of PHP evolution, framework breaking changes, and deprecated patterns had piled up. Upgrading it manually would have taken weeks of tedious, mechanical work.\nTwo years ago I decided to see if GPT could help with the upgrade. It cheerfully said it had done it, but it had removed dozens of features, some pages didn\u0026rsquo;t work at all and overall it was a mess.\nOne year ago I tried again. This time the LLM saw the pitfalls, but couldn\u0026rsquo;t work through the complexity.\nThis year when Opus 4.6 dropped, I read the familiar \u0026ldquo;This changes everything\u0026rdquo; articles. Yet those articles somehow had a different tone. The Symfony 3.4 project had now become my litmus test. So I started using Claude Code. There are hundreds of small changes between Symfony 3.4 and 8.0, and most of them are well-documented but incredibly time-consuming to apply by hand. Plus there were deprecations with the pddf generator, the email handlers, translation functionality, user authentication. Claude Code worked through the mechanical refactoring while I made the architectural calls about what to keep, what to restructure, and what to throw away. After 12 hours of back and forth, the application was fully upgraded to Symfony 8 and was running on the latest PHP 8.5. And the top 10 slow pages were now optimized.\nIt was a good test of where AI actually helps in engineering. The answer, at least for legacy migrations, is \u0026ldquo;a lot.\u0026rdquo;\n","date":"10 February 2026","externalUrl":null,"permalink":"/projects/symfony-migration/","section":"Projects","summary":"","title":"Modernizing a Legacy Symfony App with AI","type":"projects"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/tags/php/","section":"Tags","summary":"","title":"PHP","type":"tags"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/tags/symfony/","section":"Tags","summary":"","title":"Symfony","type":"tags"},{"content":"","date":"15 January 2026","externalUrl":null,"permalink":"/tags/docker/","section":"Tags","summary":"","title":"Docker","type":"tags"},{"content":"","date":"15 January 2026","externalUrl":null,"permalink":"/tags/proxmox/","section":"Tags","summary":"","title":"Proxmox","type":"tags"},{"content":"","date":"15 January 2026","externalUrl":null,"permalink":"/tags/self-hosted/","section":"Tags","summary":"","title":"Self-Hosted","type":"tags"},{"content":"I hadn\u0026rsquo;t updated my desktop computer in over a decade. Didn\u0026rsquo;t really use it. At work, I don\u0026rsquo;t really touch the code myself anymore. At some point, I got the itch and wanted to do something. So I started with Home Assistant to automate my home. Turn the lights on/off, set up scenes for dimming the lights when watching a movie, that kind of stuff. Bought a small Intel NUC and used it for a while. Also installed Adguard to block ads from the games my kids play on their ipads and from the TV streaming services. Game changer. I got tired of every service I used wanting to phone home, upsell me, or train a model on my family\u0026rsquo;s data. So I started replacing more things. Then I installed Frigate and set up a doorbell camera and a camera in the yard. Mostly to capture the elusive deer wandering through our yard at night.\nAs I was tinkering, the small Intel NUC became busyier. And sometimes thinks broke for a while. When my family couldn\u0026rsquo;t even get through a single episode of Star Trek anymore because adguard was down and there were too many ads, I knew it was time to upgrade my hardware and get a more serious setup.\nSo I traded my old Desktop computer parts on Ebay and used the money to buy other parts. Slowly built another, more upgraded desktop which I could use as a home server. Now, my stack runs on Proxmox and Docker. Home Assistant handles automation. Frigate watches the cameras and does object detection locally. Immich replaced Google Photos. Paperless-ngx eats our mail and spits out searchable PDFs. Mealie keeps our recipes. AdGuard filters DNS. Nothing leaves the house unless I tell it to. And its separated in critical infrastructure like AdGuard and nice-to-haves like Immich.\nIts not something that is set up easy. And it\u0026rsquo;s also never done. There is always stuff to tinker, maintain, update. But it works, and it keeps my mind busy. That server is less of a single project and more of the foundation everything else on this site sits on top of.\n","date":"15 January 2026","externalUrl":null,"permalink":"/projects/local-infrastructure/","section":"Projects","summary":"","title":"Why I Went Local","type":"projects"},{"content":"","date":"28 November 2024","externalUrl":null,"permalink":"/blog/","section":"Blog","summary":"","title":"Blog","type":"blog"},{"content":"","date":"28 November 2024","externalUrl":null,"permalink":"/tags/family/","section":"Tags","summary":"","title":"Family","type":"tags"},{"content":"","date":"28 November 2024","externalUrl":null,"permalink":"/tags/thanksgiving/","section":"Tags","summary":"","title":"Thanksgiving","type":"tags"},{"content":"Thanksgiving morning, 8:17 AM. I\u0026rsquo;m eating breakfast. The pumpkin pie my wife baked from scratch the night before is sitting in the pantry warming up. We keep the pantry door closed overnight because Arthur will get into anything left out. Arthur is one of our three cats. Big, solid black, rescue. Looks like a small panther. His thing is stealing chips and cookies from the pantry and dragging them to one of his sleeping spots. We\u0026rsquo;ve learned to keep stuff out of reach.\nSo the pie was in the pantry overnight, door closed. In the morning I opened the door to let it warm up. I was keeping an eye on Arthur. Or thought I was.\nHe\u0026rsquo;s patient though. And quiet. While I was finishing my breakfast he slipped in. I walked into the dining room and caught him walking out, licking his chops.\nI texted my wife right away.\n\u0026ldquo;I opened the pantry to get it to warm up. Was keeping an eye on Arthur but while I was eating my breakfast he snuck in and when I walked into the dining room he walked out, licking his chops a bit. He might have had a lick of the pumpkin pie, not sure.\u0026rdquo;\nI showed the pie to our oldest. We looked it over. He shrugged. Totally fine. Would still eat it. One lick, maybe two.\nThen my wife came downstairs and actually held the pie under a good light. Inspected it properly.\nHe had licked almost the entire surface.\nThe pie was done. I felt bad. She\u0026rsquo;d baked it from scratch, it was Thanksgiving morning, and our cat had methodically cleaned the top of it like a furry Roomba. She started checking whether we had enough ingredients to bake another one. I had bought extra, so it was possible. But the mood was deflated. Nobody wants to rebake a pie at 8 AM on a holiday.\nThen she had the idea.\nShe scraped the top layer off the destroyed pie, cut it up, and served the mangled remains to the boys as Thanksgiving breakfast.\n\u0026ldquo;Breakfast pie.\u0026rdquo;\nThey thought it was the greatest thing that had ever happened to them. Pie? For breakfast? On a day off? Served by Mom with a straight face like this was a completely normal thing to do? They were thrilled. Turns out the inside of a pumpkin pie is just as good without its top layer.\nArthur walked over a little while later and gave me a big meow. Probably apologizing.\nWe baked the replacement pie that morning and it joined the rest of the desserts at dinner. The story came with it. Everyone heard about Arthur\u0026rsquo;s heist, the inspection, the invention of breakfast pie. It got bigger laughs than anything else that day.\nThat was over a year ago. We bring it up every Thanksgiving season now. It\u0026rsquo;s one of those stories that gets better every time. Not because we exaggerate it, but because it reminds us what actually matters about holidays. It\u0026rsquo;s not the perfect pie on the perfect table. It\u0026rsquo;s your wife looking at a cat-licked disaster and deciding to make something better out of it. It\u0026rsquo;s your kids eating pie at 8 AM with huge grins. It\u0026rsquo;s the text thread where you\u0026rsquo;re pretending to voice your cat\u0026rsquo;s inner monologue: \u0026ldquo;I CAN\u0026rsquo;T HELP MYSELF. I LOVE PUMPKIN.\u0026rdquo;\nArthur still stares at the pantry door every time we open it. We\u0026rsquo;ve thought about installing a lock.\nWe probably won\u0026rsquo;t.\n","date":"28 November 2024","externalUrl":null,"permalink":"/blog/pumpkin-pie-incident/","section":"Blog","summary":"","title":"The Pumpkin Pie Incident","type":"blog"},{"content":"","date":"28 November 2024","externalUrl":null,"permalink":"/tags/traditions/","section":"Tags","summary":"","title":"Traditions","type":"tags"},{"content":"I\u0026rsquo;m Oscar. Engineering manager by day, builder by nature.\nI\u0026rsquo;ve spent over 15 years in software engineering. I built a healthcare SaaS platform from scratch, managed engineering teams at a Fortune 100 company, and worked across healthcare, insurance, and business intelligence. I keep ending up in places where technology meets real human needs, and I think that says something about what I\u0026rsquo;m drawn to.\nI build in the digital and the physical. On any given weekend, I might be designing a simpler way to upload photos to our family photo frame, tearing up a subfloor, or installing minisplits in our 1890s farmhouse. I run a self-hosted infrastructure stack at home because I think people should own their data, not rent it. I tinker with local LLMs, camera-based ML, and home automation, and I write about what I learn here.\nI live in Concord, New Hampshire with my wife, our two boys, and three cats: Arthur, Gwen, and Morgan. Yes, there\u0026rsquo;s an Arthurian legend theme. Arthur in particular has a well-documented history of food crime.\nWhen I\u0026rsquo;m not coding, managing engineers, or renovating something, I volunteer with the Concord Multicultural Festival and at our local animal shelter, serve on nonprofit boards, and try to figure out what to do with the empty barn foundation in my backyard.\nYou can find my projects on GitHub or reach me at oscar@oscargala.com.\n","externalUrl":null,"permalink":"/about/","section":"Home","summary":"","title":"About","type":"page"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]