Questi appunti fanno parte di un progetto di Learn in Public. Ogni settimana leggo e riassumo un capitolo di Designing Data-Intensive Applications di Martin Klepmann. Gli appunti sono presi in inglese e tradotti in Italiano da Claude. Contestualmente al libro sto lavorando ad un progetto di creazione ed ingestion di …
If you’ve ever read this blog, you know I work in analytics and data collection in MarTech. And if you’ve ever read this blog, I will never know it. Despite what I do for a living, this site has no way of tracking you. I even installed the Google Fonts on my own server so your IP address never reaches Google, and I …
Last month I wrote hexdump from scratch and admitted I didn’t know a good alternative to printf per row. I found it: one fwrite per 64 KiB chunk instead of 128 million calls into stdio, and a 23× speedup, most of it from the part I thought was boring.
Yes, I’m saying we should remigrate them. No — deport them. All of them, down to the last one. They live here, in our country, the one we had the privilege of being born in, and with sheer ingratitude they drain our resources, take our jobs, and drive prices up.
Sì, dico di remigrarli. Anzi, deportarli tutti. Tutti, dal primo all’ultimo. Stanno qui nel nostro paese, dove noi abbiamo avuto il privilegio di nascere, e con ingratitudine sfruttano le nostre risorse, ci tolgono il lavoro e fanno alzare i prezzi.
Questo è il primo episodio di una serie dedicata a Google Tag Manager. L’obiettivo non è il solito tutorial “clicca qui, poi qui”: voglio spiegare come funziona GTM davvero, sotto l’interfaccia, e demistificare alcune convinzioni che negli anni si sono sedimentate attorno allo strumento. Si parte dal client-side, la …
Say we want to inspect a corrupted file. To figure out its real type we can check its signature, the first few bytes of the file. On Unix-like systems, the tool for the job is hexdump: a program that shows the hexadecimal content of a file or of a data stream.
After reading the rules on Wikipedia, I set out to understand 2D grids. I spent a good hour drawing grids and numbering indices to see how they move across rows and columns. I knew I’d need two nested loops to walk the cells, so I wanted to first understand the foundation of the problem: what the game’s world is made …
A large-sized Italian tourism operator running hop-on-hop-off bus tours and experience bookings across three domains came to me with a common problem: their advertising platforms were not receiving reliable conversion data. Meta, LinkedIn, Google Ads, and TikTok dashboards told conflicting stories. Attribution was …
I audited the Adobe Analytics data layer implementation across 8 European websites of a major grocery retailer. Two different data layer architectures, inconsistent page type taxonomies, and diverging product data. Here is what a real-world multi-market audit looks like and what you can learn from it.
Browser tracking is losing signal. Safari caps cookies at 7 days, ad blockers strip requests to googletagmanager.com, and Firefox blocks third-party resources by default. Google Tag Gateway and server-side GTM both solve this, but they take fundamentally different approaches. This guide compares them head-to-head with …
Managing GTM at scale is tedious. Creating GA4 ecommerce tracking means 12+ tags, matching triggers, and variables—each requiring careful configuration. I built an open-source MCP server that connects Claude and ChatGPT directly to the GTM API. Describe what you need in plain English, and the AI handles the …
Implementing GTM Server-Side on self-hosted infrastructure reduces costs from €50-150/month (Google Cloud) to €5-20/month while ensuring on-premise compliance essential for regulated industries. This technical guide covers complete Docker implementation: container setup, DNS configuration, Caddy reverse proxy with …
The Problem If you’re running a Single Page Application (SPA) built with frameworks like Nuxt.js, Next.js, React Router, or Vue Router, you might notice an unusually high percentage of Direct traffic in your Google Analytics 4 reports.
This happens because:
SPAs don’t trigger traditional page loads - When users …