ClickHouse in anger

We needed a data warehouse we actually controlled. Not a managed SaaS, something we could wire up ourselves: operational data from Postgres, event streams from Kafka, analytical queries that had to be fast. ClickHouse was the answer. Here’s what I actually ran into building it. Postgres to ClickHouse via ClickPipes CDC The requirement was simple: don’t let ClickHouse go stale. The application was still writing to Postgres constantly, so a one-time dump was useless....

May 27, 2026 · 4 min

Scraping Facebook Is Hard. But Not Impossible.

Scraping meta ad library costs $40/month on searchapi.io. Apify charges $225 for ~300k ads per month. If there are scrapers out there that can achieve this so why cant I? Getting there wasnt easy, I thought I can achieve this with few prompts. It took 3 infrastructure rewrites and the discovery that Facebook doesn’t fight bots with captchas, it fights them with silence. Here’s everything that didn’t work, and the one stupid thing that did....

May 7, 2026 · 5 min

sqlc: Write SQL, Skip the Boilerplate

AI coding assistants are great at generating boilerplate. But for database code in Go, there is a better option: one that generates it from your SQL itself, with zero hallucination risk. It is called sqlc . What sqlc does You give it your SQL query files and your schema. It generates type-safe Go functions. Setup is a single config file: # sqlc.yaml sql: - engine: "postgresql" queries: "db/queries" schema: "db/models" gen: go: package: "repo" sql_package: "pgx/v5" out: "db/repo" Point it at your queries, point it at your schema, run sqlc generate....

April 8, 2026 · 3 min

Svelte Components in Hugo

To integrate Svelte components into your Hugo website, you’ll need to set up a separate npm project within your Hugo project’s root directory. This approach allows you to manage and build your Svelte components independently, making it easier to maintain and update them over time. Here’s the file structure you’ll be working with: ├── content ├── hugo.toml ├── package.json ├── package-lock.json ├── rollup.config.mjs ├── svelte │ └── components │ └── my-component │ └── my-component....

November 13, 2024 · 3 min

Optimizing Linux Storage: Using SSD for OS and HDD for /home

TL;DR By utilizing both your SSD and HDD effectively, you can create a Linux system that boots quickly, runs smoothly, and provides ample storage for your files. This setup offers a balance of performance and capacity, making it an excellent choice for many Linux users. Why Split Your System This Way? In today’s world of mixed storage solutions, many computers come with both a fast SSD (Solid State Drive) and a larger capacity HDD (Hard Disk Drive)....

September 1, 2024 · 2 min