[{"content":"Race reports, bike builds, and tech projects — whatever I\u0026rsquo;m working on at the moment.\n","date":"11 May 2026","externalUrl":null,"permalink":"/blog/","section":"Blog","summary":"Race reports, bike builds, and tech projects — whatever I’m working on at the moment.\n","title":"Blog","type":"blog"},{"content":"The alarm went off at 5:30 AM. Coffee, oatmeal, double-check the bike. By 7 I was at the start line, number pinned, legs feeling fresh.\nThe race was 120 km with two categorized climbs. The first climb came early — a brutal 8 km at 6% average — and the peloton shattered immediately. I found myself in a chasing group of about 15 riders.\nKey moments:\nKm 45: Bridged across to a small breakaway of 3 riders after the descent. Km 78: Attacked on the second climb and got a 30-second gap. Km 105: Got caught with 15 km to go — group sprint finish. Km 120: Finished 7th overall. Not a podium, but plenty to build on. Lessons learned # My positioning in the final kilometers needs work. I burned too much energy early in the chase. On the positive side, my climbing form is ahead of last year.\nNext race: Two weeks — a hilly circuit race that suits my strengths.\n","date":"11 May 2026","externalUrl":null,"permalink":"/blog/my-first-race-report/","section":"Blog","summary":"The alarm went off at 5:30 AM. Coffee, oatmeal, double-check the bike. By 7 I was at the start line, number pinned, legs feeling fresh.\nThe race was 120 km with two categorized climbs. The first climb came early — a brutal 8 km at 6% average — and the peloton shattered immediately. I found myself in a chasing group of about 15 riders.\n","title":"First Race of the Season","type":"blog"},{"content":"I\u0026rsquo;m a passionate cyclist who lives for the climb, the sprint, and the satisfaction of building something with my own hands. Whether it\u0026rsquo;s crossing a finish line, piecing together a new wheelset, or debugging code at 2am — I give it everything.\nThis is where I document the rides, the builds, and the projects.\nIf you\u0026rsquo;re a potential sponsor or collaborator, welcome — let\u0026rsquo;s talk.\n","date":"11 May 2026","externalUrl":null,"permalink":"/","section":"Manuel Anrig — Cyclist \u0026 Builder","summary":"I’m a passionate cyclist who lives for the climb, the sprint, and the satisfaction of building something with my own hands. Whether it’s crossing a finish line, piecing together a new wheelset, or debugging code at 2am — I give it everything.\n","title":"Manuel Anrig — Cyclist \u0026 Builder","type":"page"},{"content":"","date":"11 May 2026","externalUrl":null,"permalink":"/tags/racing/","section":"Tags","summary":"","title":"Racing","type":"tags"},{"content":"","date":"11 May 2026","externalUrl":null,"permalink":"/tags/road/","section":"Tags","summary":"","title":"Road","type":"tags"},{"content":"","date":"11 May 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"10 May 2026","externalUrl":null,"permalink":"/tags/bike-build/","section":"Tags","summary":"","title":"Bike-Build","type":"tags"},{"content":"Building wheels has always felt like a right of passage. So I ordered the parts and spent a weekend learning.\nParts used # Component Model Rims DT Swiss RR 411 Hubs DT Swiss 350 Spokes Sapim CX-Ray Nipples Brass, 14mm The process # Lacing: I went with a 3-cross pattern on both wheels. Took about an hour per wheel once I got into a rhythm. Truing: This is where the patience test begins. First wheel took me 3 hours of micro-adjustments. Tensioning: Bought a tension meter — worth every cent. Aimed for 120 kgf on the drive side rear. Stress relieving: Squeezed and flexed each spoke pair. The wheel actually went out of true by about 0.3mm — had to re-true. Result # Both wheels ended up within 0.2mm lateral and 0.3mm radial true. Not pro-level, but I\u0026rsquo;m proud of it. They feel stiff and responsive on the road — and there\u0026rsquo;s something special about riding on wheels you built yourself.\nCost vs. buying pre-built: Saved about 30% and learned a ton. Highly recommend trying it.\n","date":"10 May 2026","externalUrl":null,"permalink":"/blog/bike-build-wheelset/","section":"Blog","summary":"Building wheels has always felt like a right of passage. So I ordered the parts and spent a weekend learning.\nParts used # Component Model Rims DT Swiss RR 411 Hubs DT Swiss 350 Spokes Sapim CX-Ray Nipples Brass, 14mm The process # Lacing: I went with a 3-cross pattern on both wheels. Took about an hour per wheel once I got into a rhythm. Truing: This is where the patience test begins. First wheel took me 3 hours of micro-adjustments. Tensioning: Bought a tension meter — worth every cent. Aimed for 120 kgf on the drive side rear. Stress relieving: Squeezed and flexed each spoke pair. The wheel actually went out of true by about 0.3mm — had to re-true. Result # Both wheels ended up within 0.2mm lateral and 0.3mm radial true. Not pro-level, but I’m proud of it. They feel stiff and responsive on the road — and there’s something special about riding on wheels you built yourself.\n","title":"Building My Own Wheelset — First Try","type":"blog"},{"content":"","date":"10 May 2026","externalUrl":null,"permalink":"/tags/wheels/","section":"Tags","summary":"","title":"Wheels","type":"tags"},{"content":"I wanted a simple way to visualize my training data without subscribing to another platform. So I built one.\nStack # Backend: Go (Chi router) Frontend: HTMX + Tailwind CSS Database: SQLite Deployment: Fly.io What it does # It ingests FIT files exported from my bike computer, parses them, and displays:\nWeekly volume (km and hours) Elevation gain over time Power distribution charts A simple training log Why HTMX? # I wanted to see if the hype is real. Honestly? It\u0026rsquo;s refreshing. No build step for the frontend, no JavaScript framework fatigue. A Go template with HTMX attributes does 90% of what I\u0026rsquo;d normally use React for.\nKey takeaway # Perfect is the enemy of done. This took me one weekend to get a working MVP, and I\u0026rsquo;ve been iterating since.\nSource code is on GitHub — feel free to adapt it for your own use.\n","date":"9 May 2026","externalUrl":null,"permalink":"/blog/tech-project-training-dashboard/","section":"Blog","summary":"I wanted a simple way to visualize my training data without subscribing to another platform. So I built one.\nStack # Backend: Go (Chi router) Frontend: HTMX + Tailwind CSS Database: SQLite Deployment: Fly.io What it does # It ingests FIT files exported from my bike computer, parses them, and displays:\n","title":"Building a Training Dashboard with Go \u0026 HTMX","type":"blog"},{"content":"","date":"9 May 2026","externalUrl":null,"permalink":"/tags/go/","section":"Tags","summary":"","title":"Go","type":"tags"},{"content":"","date":"9 May 2026","externalUrl":null,"permalink":"/tags/projects/","section":"Tags","summary":"","title":"Projects","type":"tags"},{"content":"","date":"9 May 2026","externalUrl":null,"permalink":"/tags/tech/","section":"Tags","summary":"","title":"Tech","type":"tags"},{"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":" About # I race road and gravel in Switzerland. I\u0026rsquo;m driven by the discipline of training, the rush of competition, and the camaraderie of the peloton.\nI\u0026rsquo;m currently looking for sponsors and partners who share my values: hard work, consistency, and a love for the sport. If you\u0026rsquo;re interested in supporting my racing journey, get in touch.\n2026 Season Ambitions # Top 10 in the national Criterium Championships Complete the Transalp Gravel Challenge (700 km, 12,000 m elevation) Podium in at least two regional road races Build a local weekly group ride to grow the community Results # 2025 # Race Type Result GP de la Ville Road 14th Mountain Classic Road 7th Gravel Express Gravel 5th (U23) Swiss Cyclocross Cup #3 Cyclocross 22nd 2024 # Race Type Result Tour du Pays de Vaud Road (Stage) 18th GC Alpenbrevet Gran Fondo 12th Gravel Adventure Series #2 Gravel 8th Why Sponsor Me? # I\u0026rsquo;m not just looking for financial support — I want to represent brands I genuinely believe in. In return I offer:\nVisibility at races, on social media, and at community events Authentic content — blog posts, photos, and videos from races and rides Product feedback — I ride hard and put gear through real conditions Ambassadorship — genuine enthusiasm for products I use and trust Interested? Let\u0026rsquo;s talk →\n","externalUrl":null,"permalink":"/racing/","section":"Racing","summary":"About # I race road and gravel in Switzerland. I’m driven by the discipline of training, the rush of competition, and the camaraderie of the peloton.\n","title":"Racing","type":"racing"},{"content":"Coming soon.\n","externalUrl":null,"permalink":"/resume/","section":"Resume","summary":"Coming soon.\n","title":"Resume","type":"resume"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]