cool-solution — dev.blog

About me

My name is Federico Scamuzzi and I'm a full-stack developer with over 20 years of code behind me. I've lived through almost every revolution that reshaped the craft — from the early-2000s web to today's AI — and I keep at it for the very same reason: the passion for the moment an idea turns into running code.

The frontend, a whole lifetime

I started with plain JavaScript back when everything had to be hand-written: DOM handling without libraries, AJAX with XMLHttpRequest, layouts held together with float, clearfix and endless patience. Then jQuery arrived and suddenly everything felt magical — CSS-like selectors, animations in two lines, a plugin for everything. It was a small revolution.

After jQuery I worked for a long time with Kendo UI: grids with server paging, schedulers, full dashboards that felt like science fiction at the time — doing in two weeks what plain HTML+CSS+JS would have taken months. Then AngularJS, whose two-way binding changed the way we thought about UIs, and right after the jump to Angular 2+ with TypeScript: for the first time the frontend had a serious type system, dependency injection, RxJS, and a real enterprise architecture.

In recent years I work mostly in React and Next.js (App Router, Server Components, Server Actions, ISR, streaming with Suspense): it's how I build most modern UIs today. I lived the shift from JavaScript to TypeScript first-hand — skeptical at the start, today I won't go back: types are the best comment code can have.

And then CSS. Anyone who started before the frameworks knows it: the responsive layout was written by hand, with media queries managed one by one, Internet Explorer hacks, vendor prefixes for everything. No Tailwind, no flex, no grid. Today I have deep empathy for anyone who designs design systems — because I remember exactly what it meant to build them without tools.

The backend, from WebForms to Minimal API and gRPC

On the backend my path almost mirrored the frontend. I started with ASP.NET WebForms (postback, viewstate, server-side controls: today it looks like archaeology, but back then it was the enterprise standard), then ASP.NET MVC with its clean routing → controller → view model, which changed the way web applications were written in the .NET world.

From there the natural move to Web API for REST services, all the way to today's .NET Minimal API — the way I write modern backends: endpoints composed as functions, explicit dependency injection, filters, validation, no more controllers inherited from the 2000s. For high-performance services and typed contracts I use gRPC, with all the clarity that comes from having the protocol defined by a shared schema.

Databases: from Access to vector DBs

The first business application I shipped ran on Microsoft Access — another era, but a formidable hands-on school in normal forms, indexes and query plans. Then SQL Server for years: stored procedures, indexed views, execution plans, serious transactions. When the need shifted toward flexible, document-oriented schemas I moved to MongoDB (LINQ provider, UpdateFieldsAsync for targeted updates, change streams), and to Redis for caching, queues, pub/sub and rate limiting.

Today the catalogue also includes vector databases Qdrant, Chroma, pgvector — for semantic search and for RAG. The interesting challenge is hybrid search: combining lexical ranking (BM25) and vector similarity to retrieve the right documents even when the user uses words different from the ones in the corpus.

DevOps: from the physical server to multi-cloud

I spent years installing on-premise servers — both Linux (Ubuntu, Debian, RHEL: hardening, firewall, systemd, reverse proxy with Nginx) and Windows Server (IIS, Active Directory, scheduled tasks) — and I watched the move to the cloud go mainstream. I work regularly on Azure (App Service, Functions, Container Apps, Cosmos DB), AWS (ECS, Lambda, RDS, S3) and Google Cloud (Cloud Run, Firestore, BigQuery), with CI/CD pipelines on GitHub Actions and Azure DevOps, lean Docker containers and infrastructure as code via Terraform when needed.

Today: everything AI

What excites me most right now is AI — and not as marketing, but as a new layer of the developer's craft. I devote most of my time to three fronts, all connected to each other.

The first is vibe coding: writing software with an AI assistant always running alongside — Claude Code, GitHub Copilot, Gemini, Ollama locally. But for real, not as a slogan. It means designing custom skills and plugins, building MCP servers that expose internal systems as agent tools, configuring guardrails and quality gates so the AI can't do damage, defining coding rules that become part of the process (my base-rules are the starting point of everything), and curating tools like the llm-wiki to give the agent the right project context instead of making it guess every time.

The second front is embedding AI inside real software: putting models and agents into production applications. I use the official SDKs of the major providers (Anthropic, OpenAI, Google, Mistral) but also on-premise models via Ollama and vLLM when the data can't leave the company perimeter. I'm comfortable across RAG, proprietary knowledge bases, vector indexes and hybrid search to give models solid context instead of letting them hallucinate plausible answers.

The third front is agent orchestration: specialized agents, each with its own set of tools, coordinated by a control plane that manages policy, human escalation, audit trail and costs. This is where AI stops being a chatbot and becomes a digital colleague able to close tasks end-to-end inside measurable business processes.

Tech stack

Let's talk