[{"data":1,"prerenderedAt":249},["ShallowReactive",2],{"about":3,"recent-posts":48},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"currently":9,"body":10,"_type":42,"_id":43,"_source":44,"_file":45,"_stem":46,"_extension":47},"\u002Fabout","",false,"About","Senior Frontend Engineer & Tech Lead with 15+ years of experience building complex frontend systems, leading distributed teams, and driving technical decisions.","Senior Frontend Engineer · Tech Lead · Remote from Sardinia 🏝️",{"type":11,"children":12,"toc":39},"root",[13,29,34],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18,21,27],{"type":19,"value":20},"text","Senior frontend engineer and tech lead with ",{"type":14,"tag":22,"props":23,"children":24},"strong",{},[25],{"type":19,"value":26},"15+ years",{"type":19,"value":28}," building complex systems end-to-end, leading distributed teams, and driving technical decisions..",{"type":14,"tag":15,"props":30,"children":31},{},[32],{"type":19,"value":33},"I love designing systems that last, writing code others can build on, and helping engineers grow into senior ownership. Fully remote since 2018, with daily cross-cultural collaboration across European teams.",{"type":14,"tag":15,"props":35,"children":36},{},[37],{"type":19,"value":38},"My work has spanned e-commerce, medical, automotive, and gaming. Each domain different; the approach consistent.",{"title":5,"searchDepth":40,"depth":40,"links":41},2,[],"markdown","content:about.md","content","about.md","about","md",[49,153],{"_path":50,"_dir":51,"_draft":6,"_partial":6,"_locale":5,"title":52,"description":53,"date":54,"body":55,"_type":42,"_id":150,"_source":44,"_file":151,"_stem":152,"_extension":47},"\u002Fblog\u002Fportale-case-vacanze","blog","I built a vacation rental platform for my tiny apartment","A side project that started with a seaside apartment in Sardinia and ended with a rabbit hole of Italian bureaucracy.","2026-07-15",{"type":11,"children":56,"toc":148},[57,62,67,72,88,93,98,102,107,120,125,130,135,140,143],{"type":14,"tag":15,"props":58,"children":59},{},[60],{"type":19,"value":61},"I have an apartment in a small coastal village outside Castelsardo in northern Sardinia. The kind of place that sits empty most of the year while I work remotely from a different part of the island.",{"type":14,"tag":15,"props":63,"children":64},{},[65],{"type":19,"value":66},"A while back I decided to rent it out during the summer months. I signed a seasonal mandate with a local agency. Then, once I'd signed, they stopped telling me anything useful — which dates were booked, at what price, who was staying. I'd ask and get vague answers. The information was there; it just wasn't flowing in my direction anymore.",{"type":14,"tag":15,"props":68,"children":69},{},[70],{"type":19,"value":71},"The obvious alternative was Airbnb and Booking — both solid platforms with real reach that I already use as a guest. However, the fees can be high and I wanted something I controlled directly: a page for the apartment that I could update myself, where guests could see availability and send requests straight to me, without a middleman deciding what I could and couldn't see about my own property.",{"type":14,"tag":15,"props":73,"children":74},{},[75,77,86],{"type":19,"value":76},"So I built my own ",{"type":14,"tag":78,"props":79,"children":83},"a",{"href":80,"rel":81},"https:\u002F\u002Faw-properties.netlify.app",[82],"nofollow",[84],{"type":19,"value":85},"Portale Case Vacanze",{"type":19,"value":87}," (scrappy naming, I'll come up with something better...) by using Nuxt and Vue, plus @nuxt\u002Fcontent as I wanted a quick and easy way to add new pages (same as this website where sections are defined in .yml files and blog posts in .md files).",{"type":14,"tag":15,"props":89,"children":90},{},[91],{"type":19,"value":92},"The idea is simple: owners can create a mini-site for their property — photos, description, calendar, optional services with pricing, a form for direct availability requests. No commission. The platform sits alongside Airbnb and Booking rather than replacing them; the idea is eventually to sync calendars across all three so that availability is always consistent without manual updates.",{"type":14,"tag":15,"props":94,"children":95},{},[96],{"type":19,"value":97},"The Via Siena 16 page has been live for a while and we've had bookings through it.",{"type":14,"tag":99,"props":100,"children":101},"hr",{},[],{"type":14,"tag":15,"props":103,"children":104},{},[105],{"type":19,"value":106},"The part I underestimated was the bureaucracy.",{"type":14,"tag":15,"props":108,"children":109},{},[110,112,118],{"type":19,"value":111},"Renting out a vacation property in Italy is not a simple thing. There's the SCIA — the notification you have to file with your municipality to declare yourself a short-term rental operator. There's the ",{"type":14,"tag":113,"props":114,"children":115},"em",{},[116],{"type":19,"value":117},"tassa di soggiorno",{"type":19,"value":119},", a tourist tax that varies by municipality and that you're responsible for collecting and remitting. There's the Alloggiati Web portal — a system run by the Ministry of the Interior where you're legally required to submit the personal details of every guest within 24 hours of check-in. And in Sardinia specifically there's ROSS1000, the regional tourism registry where accommodation facilities have to register and report occupancy data.",{"type":14,"tag":15,"props":121,"children":122},{},[123],{"type":19,"value":124},"None of this is explained anywhere in a useful way. The Alloggiati portal has a UI that looks like it was built in 2003 and last updated in 2007. ROSS1000 has documentation, but the documentation assumes you already know what it's talking about. The municipalities have different rules and different forms. The fines for non-compliance are not small.",{"type":14,"tag":15,"props":126,"children":127},{},[128],{"type":19,"value":129},"So the platform currently handles the direct channel side reasonably well. The bureaucracy side it doesn't handle at all, which means every owner using it is on their own for the compliance piece — exactly the part they need the most help with.",{"type":14,"tag":15,"props":131,"children":132},{},[133],{"type":19,"value":134},"That's the next thing to build: a step-by-step system that walks you through check-in and check-out, tells you what to file and when, and ideally integrates with Alloggiati and ROSS1000 directly. Whether direct API access to those systems is actually possible is something I'm still working out. The Alloggiati portal has a web service interface. ROSS1000 is less clear.",{"type":14,"tag":15,"props":136,"children":137},{},[138],{"type":19,"value":139},"The dashboard also needs work. Right now it shows you your properties and not much else — no occupancy data, no revenue tracking, no sense of how the season is going. And the calendar sync with Airbnb and Booking is the other obvious gap: both expose iCal feeds, consuming them to keep the Portale calendar updated automatically is technically straightforward. I haven't done it yet.",{"type":14,"tag":99,"props":141,"children":142},{},[],{"type":14,"tag":15,"props":144,"children":145},{},[146],{"type":19,"value":147},"The thing about building for yourself is that you know exactly when it's good enough. The mini-site is good enough. The direct request flow is good enough. The rest isn't yet — and I have a list of what \"good enough\" would look like, which is more than I can say for the agency I started with.",{"title":5,"searchDepth":40,"depth":40,"links":149},[],"content:blog:portale-case-vacanze.md","blog\u002Fportale-case-vacanze.md","blog\u002Fportale-case-vacanze",{"_path":154,"_dir":51,"_draft":6,"_partial":6,"_locale":5,"title":155,"description":156,"date":157,"body":158,"_type":42,"_id":246,"_source":44,"_file":247,"_stem":248,"_extension":47},"\u002Fblog\u002Fopera-guide","I built an opera guide to stop pretending I knew what was happening","A Vue 3 side project born from sitting through two hours of sung Italian and nodding politely.","2026-05-20",{"type":11,"children":159,"toc":244},[160,172,177,182,196,201,206,211,216,234,239],{"type":14,"tag":15,"props":161,"children":162},{},[163,165,170],{"type":19,"value":164},"I went to see Rigoletto a few years ago and spent the entire first act confidently lost. I knew it was Verdi, I knew it was tragic, and I knew the ",{"type":14,"tag":113,"props":166,"children":167},{},[168],{"type":19,"value":169},"La donna è mobile",{"type":19,"value":171}," melody because it's in every pizza commercial. That was the extent of it.",{"type":14,"tag":15,"props":173,"children":174},{},[175],{"type":19,"value":176},"During the interval I opened Wikipedia on my phone. The plot summary was three paragraphs of character names I'd already forgotten, written with the emotional tone of a property deed. I came back for the second act knowing approximately the same amount as before.",{"type":14,"tag":15,"props":178,"children":179},{},[180],{"type":19,"value":181},"This bothered me for longer than it should have. Not because I couldn't follow the opera — you can follow the drama without understanding the words — but because I knew there was more there, and I was missing it. The hunchbacked jester protecting a daughter nobody knew he had. The duke singing cheerfully about women's fickleness while that same daughter is dying offstage because of him. It's a devastating construction once you know the shape of it.",{"type":14,"tag":15,"props":183,"children":184},{},[185,187,194],{"type":19,"value":186},"So I built a guide. It runs at ",{"type":14,"tag":78,"props":188,"children":191},{"href":189,"rel":190},"https:\u002F\u002Fopera-lirica.statichost.page\u002Fit",[82],[192],{"type":19,"value":193},"opera-lirica.statichost.page",{"type":19,"value":195},", it's in Italian and English, and it covers about twenty operas across Verdi, Mozart, Puccini, Donizetti, Wagner, Strauss, and a few others. Vue 3 in my playground repo. Straightforward.",{"type":14,"tag":15,"props":197,"children":198},{},[199],{"type":19,"value":200},"The code took a weekend. The writing took considerably longer, which is not a sentence I expected to type about a side project.",{"type":14,"tag":15,"props":202,"children":203},{},[204],{"type":19,"value":205},"The problem with opera guides is that they tend to split into two useless extremes: the synopsis (plot summary with no context, no feeling, no reason to care) and the musicological analysis (for people who already care deeply and don't need to be convinced). What I wanted was something in between — a guide that assumed no prior knowledge but also assumed you were an adult with functioning taste.",{"type":14,"tag":15,"props":207,"children":208},{},[209],{"type":19,"value":210},"That meant being opinionated. The character descriptions on the site are not neutral. The Duke of Mantua in Rigoletto is described as \"the attractive villain\" — charming, wealthy, cheerful, never facing consequences for anything. That's what makes him interesting and what makes the finale hit. You can't get there by listing his vocal register and the arias he sings.",{"type":14,"tag":15,"props":212,"children":213},{},[214],{"type":19,"value":215},"The Verdi page has a line about how his characters \"burn\": fathers losing daughters, women dying for honour, heroes destroyed by jealousy. It's the kind of thing a music critic would cut for being imprecise and an encyclopedia would never write for being too subjective. I kept it because it's true and because it tells you something in five words that a plot summary in five paragraphs doesn't.",{"type":14,"tag":15,"props":217,"children":218},{},[219,221,225,227,232],{"type":19,"value":220},"Some specific things I didn't know before writing these pages: Verdi kept ",{"type":14,"tag":113,"props":222,"children":223},{},[224],{"type":19,"value":169},{"type":19,"value":226}," secret from the cast and orchestra until the final rehearsal before the Venice premiere in 1851, because he knew it would be all over the city within hours if anyone heard it before opening night. He was right. By the following morning people were singing it in the streets. Wagner didn't call his works \"operas\" — he called them ",{"type":14,"tag":113,"props":228,"children":229},{},[230],{"type":19,"value":231},"Gesamtkunstwerk",{"type":19,"value":233},", total art works, and considered the word \"opera\" an insult to what he was doing. Whether you agree with him or not depends mostly on how you feel about five-hour musical dramas about Norse gods.",{"type":14,"tag":15,"props":235,"children":236},{},[237],{"type":19,"value":238},"The site is genuinely used. I open it before performances on my phone, or sometimes in the interval when I want to check which character just died and why. It's also the only project I've built where the question \"does it work?\" is answered by whether I enjoyed the opera more than last time.",{"type":14,"tag":15,"props":240,"children":241},{},[242],{"type":19,"value":243},"I think I did.",{"title":5,"searchDepth":40,"depth":40,"links":245},[],"content:blog:opera-guide.md","blog\u002Fopera-guide.md","blog\u002Fopera-guide",1788876799762]