[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog:index::":3},{"page":4,"tags":120},{"items":5,"meta":115},[6,21,33,44,56,66,75,85,95,104],{"id":7,"slug":8,"title":9,"excerpt":10,"tags":11,"read_minutes":19,"published_at":20},"bbfc5b48-c600-44a8-8eb8-eabb4b7a085a","strategic-modern-software-architecture","Strategic Modern Software Architecture","Bad software does not announce itself as a cost. It arrives as a cloud bill growing faster than the business, a portal staff quietly work around, and customer data scattered across vendors nobody has audited. This is the case for a lean stack - compiled Go services, a typed frontend, one PostgreSQL holding both records and AI embeddings, and analytics that run where the data already sits - written for the person signing for it rather than the person maintaining it.",[12,13,14,15,16,17,18],"Architecture","Go","PostgreSQL","pgvector","DuckDB","AI","Cost",14,"2026-08-30T12:00:38.146556Z",{"id":22,"slug":23,"title":24,"excerpt":25,"tags":26,"read_minutes":31,"published_at":32},"488d06c7-e036-4df1-a0ab-0b5a85fb6cbe","anatomy-of-a-bi-pipeline-airflow-dbt-duckdb-superset","Anatomy of an End-to-End BI Pipeline: Airflow, dbt, DuckDB & Superset","A complete walkthrough of a production-style data pipeline we built for a five-store restaurant chain — incremental extraction to Parquet, a tested dbt warehouse on DuckDB, Airflow orchestration, and seven Superset dashboards. All open-source, all code, with screenshots of every layer.",[27,28,29,30],"Data Engineering","Airflow","dbt","Superset",17,"2026-07-12T00:00:00Z",{"id":34,"slug":35,"title":36,"excerpt":37,"tags":38,"read_minutes":42,"published_at":43},"61d11639-6d8f-48e9-8794-88cf62ae147c","hls-video-streaming-on-a-budget","Streaming Course Video on a Budget: HLS, R2 and a CDN","How we serve adaptive-bitrate course video for near-zero cost using ffmpeg, Cloudflare R2's free egress, and signed URLs at the edge.",[39,40,41,12],"Video","Cloudflare R2","HLS",7,"2026-07-09T00:00:00Z",{"id":45,"slug":46,"title":47,"excerpt":48,"tags":49,"read_minutes":54,"published_at":55},"732de24e-2fbe-49ef-b372-ff0b25fcc066","cloud-data-warehouse-cost-optimization","Cost Optimization in Cloud Data Warehouses: A FinOps Playbook","Snowflake, BigQuery and Databricks bills rarely explode overnight — they creep. Practical queries and settings to find idle compute, fix clustering, and stop paying for warehouses nobody is using.",[50,51,52,53],"FinOps","Snowflake","BigQuery","Databricks",8,"2026-07-08T00:00:00Z",{"id":57,"slug":58,"title":59,"excerpt":60,"tags":61,"read_minutes":54,"published_at":65},"23742789-f030-4a96-843b-23006c78bf25","real-time-streaming-pipelines-batch-to-event-driven","Building and Scaling Real-Time Streaming Pipelines","Moving from nightly batches to event-driven architecture is a mindset shift, not just a tooling swap. Kafka vs. Redpanda, late-arriving data, and where Flink earns its complexity.",[62,63,64,12],"Streaming","Kafka","Flink","2026-07-05T00:00:00Z",{"id":67,"slug":68,"title":69,"excerpt":70,"tags":71,"read_minutes":54,"published_at":74},"2c6ce459-fe9d-4d84-97d3-3c489e051dd5","data-engineering-for-llms-rag-pipelines","Data Engineering for LLMs: Building Production RAG Pipelines","Every organization is bolting AI onto its products; few have infrastructure to feed enterprise data into models reliably. Parsing, chunking, metadata, and vector databases — the new ETL.",[17,72,73,27],"RAG","LLM","2026-07-01T00:00:00Z",{"id":76,"slug":77,"title":78,"excerpt":79,"tags":80,"read_minutes":42,"published_at":84},"e07750cd-8d9a-4c35-8e9c-b63dcb59f367","zero-trust-data-governance-and-quality","Zero-Trust Data Governance: Automating Quality and Access in the Pipeline","Manual data quality checks and hand-managed permissions don't scale. Contracts enforced in the pipeline, observability that catches what tests can't, and RBAC as code with dbt.",[81,82,29,83],"Data Governance","Data Quality","RBAC","2026-06-27T00:00:00Z",{"id":86,"slug":87,"title":88,"excerpt":89,"tags":90,"read_minutes":42,"published_at":94},"64764a1e-4f04-4d10-b3e2-606bff5c843d","transitioning-to-apache-iceberg","Transitioning to Apache Iceberg: The Open Table Format Endgame","Snowflake, Databricks, AWS and Google all speak Iceberg now. What ACID on object storage, time travel, and hidden partitioning actually buy you — and how to migrate without downtime.",[91,92,93,12],"Apache Iceberg","Data Lake","Lakehouse","2026-06-22T00:00:00Z",{"id":96,"slug":97,"title":98,"excerpt":99,"tags":100,"read_minutes":102,"published_at":103},"d5328699-b158-4c93-a106-2bdc4fc8703d","why-dashboards-need-data-pipelines","Your Dashboard Is Only as Good as Its Pipeline","Pretty charts on top of fragile spreadsheets erode trust fast. Why every serious dashboard project should start with an orchestrated, tested data pipeline.",[27,28,29,101],"Analytics",6,"2026-06-18T00:00:00Z",{"id":105,"slug":106,"title":107,"excerpt":108,"tags":109,"read_minutes":113,"published_at":114},"2617a12d-0136-43cb-a7e5-07387ef8a850","skillup-for-the-ai-age-roadmap","SkillUp for the AI Age: A Practical Roadmap","AI won't replace developers — but developers who can build with data and AI will replace those who can't. A concrete learning path that starts with fundamentals.",[110,17,111,112],"SkillUp","Careers","Learning",5,"2026-05-30T00:00:00Z",{"has_more":116,"limit":117,"next_offset":118,"offset":119,"total":118},false,24,10,0,[121,123,125,126,127,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157],{"tag":12,"count":122},4,{"tag":17,"count":124},3,{"tag":27,"count":124},{"tag":29,"count":124},{"tag":28,"count":128},2,{"tag":101,"count":130},1,{"tag":91,"count":130},{"tag":52,"count":130},{"tag":111,"count":130},{"tag":40,"count":130},{"tag":18,"count":130},{"tag":53,"count":130},{"tag":81,"count":130},{"tag":92,"count":130},{"tag":82,"count":130},{"tag":16,"count":130},{"tag":50,"count":130},{"tag":64,"count":130},{"tag":13,"count":130},{"tag":41,"count":130},{"tag":63,"count":130},{"tag":93,"count":130},{"tag":112,"count":130},{"tag":73,"count":130},{"tag":15,"count":130},{"tag":14,"count":130},{"tag":72,"count":130},{"tag":83,"count":130},{"tag":110,"count":130},{"tag":51,"count":130},{"tag":62,"count":130},{"tag":30,"count":130},{"tag":39,"count":130}]