<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Raul Carini</title><description>Full-stack web developer based in Milan, building and shipping side projects that solve real problems</description><link>https://www.raulcarini.dev</link><item><title>2024 Developer Wrapped</title><link>https://www.raulcarini.dev/blog/2024-developer-wrapped</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/2024-developer-wrapped</guid><description>I built a personalized &quot;Developer Wrapped&quot; web app with Next.js, Tailwind CSS, and animation libraries to visualize my 2024 coding journey, covering GitHub contributions, website traffic, and blog views, plus my goals for 2025.</description><pubDate>Tue, 24 Dec 2024 00:00:00 GMT</pubDate></item><item><title>AI Enhanced Blog</title><link>https://www.raulcarini.dev/blog/ai-enhanced-blog</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/ai-enhanced-blog</guid><description>I added an &quot;AI Assistance&quot; indicator to articles co-written with AI tools, explaining why transparency matters, how the feature works, and what it means for the authenticity of my content going forward.</description><pubDate>Mon, 04 Nov 2024 00:00:00 GMT</pubDate></item><item><title>AI: Price vs. Intelligence in 2025</title><link>https://www.raulcarini.dev/blog/ai-price-vs-intelligence</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/ai-price-vs-intelligence</guid><description>A look at how AI model intelligence and pricing trade off as of April 2025, using ArtificialAnalysis.ai&apos;s Intelligence vs. Price chart (built on benchmarks like MMLU-Pro and GPQA Diamond) alongside findings from the Stanford AI Index 2025 report on falling inference costs. Covers why &quot;smartness&quot; is hard to quantify, why even top models still make confident mistakes, and how to balance cost against capability when picking a model for a given task.</description><pubDate>Fri, 25 Apr 2025 00:00:00 GMT</pubDate></item><item><title>Archive Space</title><link>https://www.raulcarini.dev/blog/archive-space</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/archive-space</guid><description>Archive Space is an open-source, self-hostable cloud storage platform built on Cloudflare R2, Next.js, Hono, and MongoDB, offering multi-region performance, data sovereignty, and a cost-effective alternative to Google Drive and similar services.</description><pubDate>Fri, 27 Sep 2024 00:00:00 GMT</pubDate></item><item><title>Built-in AI with Chrome</title><link>https://www.raulcarini.dev/blog/built-in-ai-with-chrome</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/built-in-ai-with-chrome</guid><description>Chrome&apos;s built-in AI, powered by Gemini Nano, brings local, on-device AI processing to the web through Task APIs like Translator and Summarizer and Exploratory APIs like Prompt, covering the benefits, hybrid architecture, and how developers can get started.</description><pubDate>Sun, 08 Dec 2024 00:00:00 GMT</pubDate></item><item><title>Dynamic Social Images with Next.js</title><link>https://www.raulcarini.dev/blog/dynamic-social-images-with-nextjs</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/dynamic-social-images-with-nextjs</guid><description>A walkthrough of generating dynamic Open Graph preview images in Next.js using the `opengraph-image` file convention and API routes with `ImageResponse`, including code examples, caching considerations, and edge runtime tips.</description><pubDate>Thu, 19 Dec 2024 00:00:00 GMT</pubDate></item><item><title>GitHub Contributions</title><link>https://www.raulcarini.dev/blog/github-contributions</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/github-contributions</guid><description>A dynamic GitHub contributions dashboard built with Next.js, TypeScript, and Tailwind CSS, featuring an interactive heat map that auto-refreshes every 12 hours via cached data fetching, with light and dark mode support.</description><pubDate>Tue, 05 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Hetzner Cloud Review</title><link>https://www.raulcarini.dev/blog/hetzner-cloud-review</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/hetzner-cloud-review</guid><description>A hands-on review of Hetzner Cloud, the German hosting provider known for undercutting AWS, Google Cloud, and Azure on price. Covers real costs from running a personal project for two weeks (around $6 total), the strong points (transparent pricing, simple console, solid AMD EPYC/Intel Xeon performance, EU data centers with GDPR compliance, generous bandwidth with no egress fees) and the weak points (limited global data center footprint, few managed services, slower support, no advanced autoscaling or managed Kubernetes). Ends with guidance on when Hetzner fits and when it doesn&apos;t.</description><pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Hono and Cloudflare Workers</title><link>https://www.raulcarini.dev/blog/hono-and-cloudflare-workers</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/hono-and-cloudflare-workers</guid><description>A practical guide to building high-performance serverless APIs by pairing the lightweight Hono framework with Cloudflare Workers&apos; global edge network. Walks through project setup with wrangler, installing Hono, defining basic and dynamic routes, grouping routes by prefix, and writing global and route-specific middleware. Also covers leveraging Cloudflare&apos;s edge for low-latency delivery, using KV storage for session data, caching strategies, and WebSocket support for real-time, high-frequency data processing use cases like IoT and messaging apps.</description><pubDate>Wed, 06 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Icon Picker Component</title><link>https://www.raulcarini.dev/blog/icon-picker</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/icon-picker</guid><description>A deep dive into building an Icon Picker component for React that stays fast even with thousands of icons. Explains the three implementations shipped in the open-source project: a basic version for small icon sets, virtualized versions built on TanStack Virtual and React Virtualized for large sets, and a popover variant that combines virtualization with a compact UI. Covers the tech stack (Next.js, TypeScript, Tailwind, shadcn/ui, Lucide React), performance trade-offs of each approach, and planned future enhancements like multi-select, categorization, and custom icon sets.</description><pubDate>Thu, 17 Apr 2025 00:00:00 GMT</pubDate></item><item><title>Image Optimization in the Modern Web</title><link>https://www.raulcarini.dev/blog/image-optimization-in-the-modern-web</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/image-optimization-in-the-modern-web</guid><description>An overview of modern image optimization techniques for faster-loading websites, focused on the Next.js `&lt;Image/&gt;` component: how it handles progressive loading, automatic resizing, and responsive delivery based on viewport width, with a code example of basic usage. Also covers CDN-based alternatives like Cloudinary and Cloudflare Images for on-the-fly resizing, format conversion, and AI-powered optimization, plus how to measure the real-world impact using Lighthouse, WebPageTest, and Google PageSpeed Insights.</description><pubDate>Fri, 20 Dec 2024 00:00:00 GMT</pubDate></item><item><title>Anti-Piracy Measures Threaten Internet Access</title><link>https://www.raulcarini.dev/blog/italian-spanish-internet-censorship</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/italian-spanish-internet-censorship</guid><description>An examination of how anti-piracy IP-blocking laws in Italy and Spain have knocked legitimate websites offline by targeting shared cloud infrastructure. Details Italy&apos;s &quot;Piracy Shield&quot; system run by AGCOM, including the February 2024 incident where a single Cloudflare IP block took down tens of thousands of unrelated sites and a mistaken Google Drive disruption. Covers Spain&apos;s LALIGA-driven blocking of IPs used by Vercel, Cloudflare, GitHub Pages, and BunnyCDN during match days, Vercel&apos;s public criticism of the &quot;indiscriminate&quot; enforcement lacking SNI-based targeting, and the dismissed legal challenges, ending with a call for more proportionate, technically sound enforcement.</description><pubDate>Sun, 27 Apr 2025 00:00:00 GMT</pubDate></item><item><title>Lazypr - AI CLI Tool</title><link>https://www.raulcarini.dev/blog/lazypr</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/lazypr</guid><description>A narrative deep dive into building lazypr, a CLI tool that generates pull request titles and markdown descriptions from a repo&apos;s commit history. Covers the layered architecture (Git collector, template resolver, prompt/AI layer using the Vercel AI SDK with Groq&apos;s GPT-OSS models, terminal UX layer, and a resilience/config layer), key design trade-offs like keeping the CLI single-purpose and respecting existing PR templates, why Node.js and Bun were chosen for distribution and development, prompt engineering strategies for reliable structured output, and lessons carried over from the author&apos;s first published package about minimal surface area, sensible defaults, and designing for failure.</description><pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Learn The Web</title><link>https://www.raulcarini.dev/blog/learn-the-web</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/learn-the-web</guid><description>Learn The Web is a Fumadocs/Next.js documentation site I built to give aspiring developers a structured, &quot;why before how&quot; path through web development, starting with internet fundamentals like the client-server model, DNS, and HTTP, and expanding into front-end, back-end, and advanced topics.</description><pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Learn View Transitions on the Web</title><link>https://www.raulcarini.dev/blog/learn-view-transitions-on-the-web</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/learn-view-transitions-on-the-web</guid><description>A breakdown of the browser-native View Transitions API, covering how it snapshots and animates DOM changes, the difference between same-document (SPA) and cross-document (MPA) transitions, practical use cases, and how to add smooth page transitions to a Next.js app with next-view-transitions.</description><pubDate>Tue, 17 Dec 2024 00:00:00 GMT</pubDate></item><item><title>Linear Issue Tracker: Streamline Project Management</title><link>https://www.raulcarini.dev/blog/linear-issue-tracker</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/linear-issue-tracker</guid><description>Linear replaces disconnected issue trackers, spreadsheets, and roadmap tools with one fast, keyboard-first platform. It covers streamlined issue tracking, cycle-based project management, and timeline roadmaps that tie daily engineering work to product strategy, plus deep Git integration and an API/webhook system built for developer workflows.</description><pubDate>Tue, 29 Apr 2025 00:00:00 GMT</pubDate></item><item><title>Live Map</title><link>https://www.raulcarini.dev/blog/live-map</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/live-map</guid><description>Live Map is an interactive world map showing real-time visitor locations and country-level stats, built with react-simple-maps, MongoDB, and Cloudflare Workers/KV. Covers data collection, high-resolution map performance optimization, an FPS monitoring overlay, live location updates via Cloudflare instead of WebSockets, and Recharts-powered visitor analytics.</description><pubDate>Wed, 09 Oct 2024 00:00:00 GMT</pubDate></item><item><title>Snappy - LLMs Speed Test</title><link>https://www.raulcarini.dev/blog/llms-speed-test</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/llms-speed-test</guid><description>Snappy is a web app that benchmarks local LLMs running through Ollama, running easy/medium/difficult prompts to measure tokens-per-second and other speed metrics on your own hardware, so you can compare models instead of guessing which one performs best on your machine.</description><pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Multi-Region R2 Bucket System</title><link>https://www.raulcarini.dev/blog/multi-region-r2-bucket-system</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/multi-region-r2-bucket-system</guid><description>A Cloudflare Workers system that mirrors large files across R2 buckets in five regions and routes each download to the nearest bucket using geolocation-based distance calculations, with multipart uploads, Bearer token auth via Upstash Redis, and a cost breakdown showing roughly $15 per month per terabyte versus $500 on AWS S3.</description><pubDate>Sun, 26 May 2024 00:00:00 GMT</pubDate></item><item><title>New Blog Page</title><link>https://www.raulcarini.dev/blog/new-blog-page</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/new-blog-page</guid><description>An announcement of a blog restructuring into three categories - Projects for technical deep-dives and case studies, Updates for career news and milestones, and Articles for broader industry discussion - alongside a new, more frequent posting schedule across all three.</description><pubDate>Sun, 03 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Optimizing Performance in React</title><link>https://www.raulcarini.dev/blog/optimizing-performance-in-react</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/optimizing-performance-in-react</guid><description>Learn how to stop unnecessary re-renders in React and Next.js apps using useMemo and useCallback, how the new React Compiler automates memoization, and how to profile with React Scan and the React DevTools Profiler to find real bottlenecks.</description><pubDate>Wed, 23 Apr 2025 00:00:00 GMT</pubDate></item><item><title>Polar: a better Stripe alternative</title><link>https://www.raulcarini.dev/blog/polar-better-stripe-alternative</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/polar-better-stripe-alternative</guid><description>A deep dive into Polar as an alternative to Stripe for indie developers, open-source maintainers, and small SaaS builders. Compares subscriptions, sponsorship tiers, benefits fulfillment, EU VAT handling, and GitHub integration between the two platforms, and explains when Stripe&apos;s raw flexibility still wins out over Polar&apos;s opinionated, all-in-one approach.</description><pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Rail Radar</title><link>https://www.raulcarini.dev/blog/rail-radar</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/rail-radar</guid><description>Rail Radar is an interactive web app tracking trains in real time across Italy, Switzerland, Finland, Belgium, the Netherlands, Germany, and the UK using official railway data from over 5,700 stations. Covers the pnpm/Turborepo monorepo architecture, the Cloudflare Workers + Hono API that normalizes seven different railway data sources, Next.js 16 and Mapbox GL frontend performance tricks, and the custom Damerau-Levenshtein fuzzy search engine built to handle multilingual station names.</description><pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Raul Carini - NextJs Blog</title><link>https://www.raulcarini.dev/blog/raulcarini-dev</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/raulcarini-dev</guid><description>A behind-the-scenes look at building this Next.js 14 portfolio and blog, covering why MDX was chosen for content, how frontmatter and posts are parsed and rendered with next-mdx-remote, the tradeoffs against @next/mdx, a Redis-powered page view counter with Upstash, using Partial Prerendering to mix static and dynamic content, adding a Resend-powered newsletter, and tracking stats with Cloudflare Analytics.</description><pubDate>Fri, 13 Sep 2024 00:00:00 GMT</pubDate></item><item><title>Rebuilding My Portfolio with TypeScript and @next/mdx</title><link>https://www.raulcarini.dev/blog/rebuilding-with-typescript-and-mdx</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/rebuilding-with-typescript-and-mdx</guid><description>A full rebuild of my portfolio covering three major migrations: moving content from next-mdx-remote to @next/mdx for build-time compilation and typed metadata, swapping next/og for the Rust-powered @takumi-rs/image-response to generate faster, crisper OG images on the Edge, and converting the entire codebase from JavaScript to strict TypeScript, including enforcing a typed Post schema and narrowing unions at the React Server Components boundary.</description><pubDate>Tue, 21 Oct 2025 00:00:00 GMT</pubDate></item><item><title>I Rebuilt My Website with Astro in Three Days</title><link>https://www.raulcarini.dev/blog/rewriting-my-website-in-astro</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/rewriting-my-website-in-astro</guid><description>Eight months after my last rebuild, I moved my portfolio and blog from Next.js and Vercel to Astro and Cloudflare in three days. This is why I rewrote it so soon, how AI helped with the migration, and why predictable infrastructure matters more to me than having the most powerful platform.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Running LLMs Locally</title><link>https://www.raulcarini.dev/blog/running-llms-locally</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/running-llms-locally</guid><description>An overview of running Large Language Models locally instead of relying on cloud APIs, comparing Ollama&apos;s developer-focused, command-line approach against LM Studio&apos;s graphical interface and Hugging Face model discovery. Covers the benefits of local inference (cost, privacy, offline use, customization, latency) and highlights efficient open models like Llama 3, Qwen2, and DeepSeek Coder that make local deployment practical.</description><pubDate>Thu, 06 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Shortly</title><link>https://www.raulcarini.dev/blog/shortly</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/shortly</guid><description>Shortly is a personal project that turns long, unwieldy URLs into short, shareable links, similar to services like bit.ly. Built with Next.js and MongoDB, it features full user authentication with roles and permissions, plus Stripe-powered subscription payments for premium plans.</description><pubDate>Wed, 24 Apr 2024 00:00:00 GMT</pubDate></item><item><title>Spotify Web Player</title><link>https://www.raulcarini.dev/blog/spotify-web-player</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/spotify-web-player</guid><description>A custom Spotify Web Player that turns your music into real-time visual displays using audio feature data from the Spotify Web API. Covers OAuth authentication and token refresh with Next-Auth v5, working within Premium-only playback API restrictions, and building dynamic, album-art-driven backgrounds with shadergradient, plus a roadmap covering a listening stats dashboard and YouTube-powered related content.</description><pubDate>Fri, 01 Nov 2024 00:00:00 GMT</pubDate></item><item><title>Tailwind Color Palette</title><link>https://www.raulcarini.dev/blog/tailwindcss-color-palettes</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/tailwindcss-color-palettes</guid><description>An overview of TailwindCSS Color Palette, a web tool for browsing every TailwindCSS default color in HSL, RGB, and HEX, copying colors or class names instantly, and building custom palettes saved locally in your browser. Covers the Colors and Palette pages, exporting palettes as TailwindCSS config, and planned features like a VSCode extension and AI-powered color suggestions.</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate></item><item><title>Texta - Editor</title><link>https://www.raulcarini.dev/blog/texta-editor</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/texta-editor</guid><description>The story behind Texta, a minimalist AI-powered text editor built with Next.js, TipTap, Tailwind CSS, and Radix UI. Covers the tech stack and architecture, custom TipTap extensions, keyboard shortcuts, drag-and-drop image support, and how in-browser AI via Chrome&apos;s built-in Prompt and Summarizer APIs was integrated during the Google Chrome Built-in AI Challenge hackathon to keep writing private and distraction-free.</description><pubDate>Mon, 13 Jan 2025 00:00:00 GMT</pubDate></item><item><title>The Developer&apos;s Dilemma</title><link>https://www.raulcarini.dev/blog/the-developer-dilemmas</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/the-developer-dilemmas</guid><description>A personal reflection on why developers, myself included, keep starting side projects but rarely finish them, driven by scope creep, perfectionism, and fading motivation. Recounts a 30-day experiment to ship complete projects judged by external attention, why none met that bar, and why the learning and joy of building still make starting new projects worthwhile.</description><pubDate>Mon, 28 Apr 2025 00:00:00 GMT</pubDate></item><item><title>Turbopack Production Builds in Next.js</title><link>https://www.raulcarini.dev/blog/turbopack-production-builds-nextjs</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/turbopack-production-builds-nextjs</guid><description>Next.js 15.3 introduces an alpha of `next build --turbopack`, extending Turbopack&apos;s Rust-based speed from dev servers to production builds. With 99.3% of integration tests passing and benchmarks showing up to 83% faster builds on 30 CPU cores, it&apos;s a promising but not yet production-ready successor to Webpack—best tried in staging while ecosystem tools like Sentry catch up.</description><pubDate>Thu, 24 Apr 2025 00:00:00 GMT</pubDate></item><item><title>Turbopack vs. Webpack</title><link>https://www.raulcarini.dev/blog/turbopack-vs-webpack</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/turbopack-vs-webpack</guid><description>A comparison of Turbopack and Webpack as bundlers for Next.js. Explains how Webpack&apos;s plugin-based flexibility can cause slow builds and HMR, how Turbopack&apos;s Rust-based incremental computation engine caches and parallelizes work for near-instant feedback, key Turbopack advantages like lazy bundling and a unified graph, and the current state of production build support before deciding whether to migrate.</description><pubDate>Wed, 18 Dec 2024 00:00:00 GMT</pubDate></item><item><title>UI Components Library</title><link>https://www.raulcarini.dev/blog/ui-components</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/ui-components</guid><description>An overview of a UI components library built with Next.js, React, and Shadcn UI, covering six component families: virtualized icon pickers, GitHub-style contribution heatmaps, music players, URL-aware search bars, rating groups, and theme switches. Details the technical foundation, performance and accessibility priorities, the Shadcn CLI registry system for easy installation, and the roadmap for future variants.</description><pubDate>Wed, 10 Sep 2025 00:00:00 GMT</pubDate></item><item><title>What are React Server Components?</title><link>https://www.raulcarini.dev/blog/what-are-react-server-components</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/what-are-react-server-components</guid><description>An explainer on React Server Components (RSCs) and how they shift rendering and data fetching to the server, reducing client bundle sizes, improving First Contentful Paint, and keeping API keys secure. Covers how Server and Client Components interact, a blog-listing use case, React 19&apos;s native RSC support, Next.js App Router conventions with &apos;use client&apos;, and the limitations around browser-only APIs.</description><pubDate>Fri, 27 Dec 2024 00:00:00 GMT</pubDate></item><item><title>Why Bun Will Be the Default</title><link>https://www.raulcarini.dev/blog/why-bun-will-be-default</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/why-bun-will-be-default</guid><description>Bun bundles a runtime, package manager, bundler, and test runner into one blazing-fast tool built with Zig. After migrating a personal project from Node, I break down why its install speed, Node API compatibility, and simplified tooling make it feel like the future of JavaScript development.</description><pubDate>Mon, 27 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Why UV is Better Than Pip</title><link>https://www.raulcarini.dev/blog/why-use-uv-over-pip</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/why-use-uv-over-pip</guid><description>UV is Astral&apos;s Rust-based drop-in replacement for pip, pip-tools, and virtualenv, installing dependencies up to 15x faster in real-world tests. I cover its integrated environment management, smarter dependency resolution, automatic lockfiles for reproducible builds, and how easy it is to migrate existing pip projects over.</description><pubDate>Thu, 23 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Zed: Building a New IDE from Scratch</title><link>https://www.raulcarini.dev/blog/zed-editor</link><guid isPermaLink="true">https://www.raulcarini.dev/blog/zed-editor</guid><description>Zed takes a bold approach to IDE design, rejecting the Electron-based norm popularized by tools like VS Code in favor of a from-scratch Rust architecture. I explore why this brings unparalleled performance, a more native feel, and freedom to innovate on collaborative editing and LSP integration, and why its success could reshape expectations for developer tools.</description><pubDate>Tue, 29 Apr 2025 00:00:00 GMT</pubDate></item></channel></rss>