Marc de Mas
  • Home
  • Lessons Learned
  • Data Engineering
  • Tools & Automation
  • Analytics
  • BigQuery
  • dbt
  • Python
Lessons LearnedTools & Automation

Three Months of Developing with an AI Coding Agent

by Marc 18 March 2026
written by Marc

I have been using an AI coding agent as my primary development tool for three months. Not a chatbot I paste code into, but an agent with filesystem access, shell execution, and persistent memory that works inside my terminal. It reads my codebase, runs my tests, pushes my commits, deploys my services, and remembers what it learned yesterday. This post is about the technical patterns I have developed to make that work well — the context files, the memory system, the tool integrations, and the compounding feedback loop that makes it better over time.

Continue Reading
18 March 2026 0 comments
0 FacebookTwitterPinterestEmail
Data EngineeringLessons LearnedPython

Teaching an AI Bot Your Metrics: The Corrections File Pattern

by Marc 17 March 2026
written by Marc

Our AI-powered Slack bot had a credibility problem. It could query BigQuery, generate syntactically valid SQL, format results in neat tables, and respond conversationally. But when someone asked “what was revenue last month?” the number was wrong. Not because of a bug in the code — the SQL executed perfectly. The problem was semantic: the bot did not understand what “revenue” actually means in our domain.

Continue Reading
17 March 2026 0 comments
0 FacebookTwitterPinterestEmail
Data EngineeringTools & Automation

Consolidating Three Cloud Functions into One

by Marc 15 March 2026
written by Marc

We had three Cloud Functions handling exchange rate data. One fetched rates from an external API and wrote them to Google Cloud Storage. A second read from GCS and loaded into BigQuery. A third was an abandoned earlier attempt that loaded directly from the API to BigQuery but had never been decommissioned. Three functions, three sets of logs, three potential failure points — for what is fundamentally one job: “get today’s exchange rates into BigQuery.”

Continue Reading
15 March 2026 0 comments
0 FacebookTwitterPinterestEmail
Lessons LearnedTools & Automation

Auto-Deploying Knowledge Changes Across Repos with GitHub Actions

by Marc 12 March 2026
written by Marc

We have an AI-powered Slack bot that answers business data questions. It uses a knowledge base — schema descriptions, business rules, SQL query patterns — to generate accurate queries. The problem: this knowledge base must stay in sync with two upstream repos. When a BI model changes, the bot needs to know about new dimensions and measures. When dbt models change, the bot needs an updated schema index. Keeping this in sync manually was a recipe for stale knowledge and wrong answers.

Continue Reading
12 March 2026 0 comments
0 FacebookTwitterPinterestEmail
Data EngineeringPython

Incremental Sync: From 35 Minutes to 5 Seconds

by Marc 10 March 2026
written by Marc

Our helpdesk ticket sync to BigQuery was broken. The Cloud Function responsible for it was hitting a 504 gateway timeout after 900 seconds — and the root cause was simple: it was listing every single ticket via the API on every run. With 52,000+ tickets and a page size of 50, that’s over 1,040 API calls before any data lands in BigQuery. Around 35 minutes of sequential HTTP requests, every single time.

Continue Reading
10 March 2026 0 comments
0 FacebookTwitterPinterestEmail
Data EngineeringTools & Automation

Cold Starts Kill Webhooks: Scheduling Cloud Run Min-Instances

by Marc 8 March 2026
written by Marc

We lost ~25 webhook events in 7 minutes because our Cloud Run service was scaling to zero. Here is how I used Cloud Scheduler to toggle min-instances during business hours — and the workaround for Cloud Scheduler not supporting PATCH requests.

Continue Reading
8 March 2026 0 comments
0 FacebookTwitterPinterestEmail
Data EngineeringPython

Migrating a SaaS Helpdesk Connector to a Custom Cloud Run Sync

by Marc 6 March 2026
written by Marc

We had a managed connector (think Fivetran, Airbyte, or similar) syncing our helpdesk data — tickets, contacts, threads, comments — from a SaaS helpdesk platform into BigQuery. It worked fine until it did not: the connector would miss webhook events, lag behind on incremental syncs, and occasionally produce phantom duplicates that our dbt models would faithfully propagate into dashboards. The cost was also non-trivial for what amounted to six tables.

Continue Reading
6 March 2026 0 comments
0 FacebookTwitterPinterestEmail
Data EngineeringLessons Learned

Consolidating GCP Service Accounts: Fewer Keys, Less Chaos

by Marc 5 March 2026
written by Marc

We had four service accounts for BigQuery, one per GCP project. Each had its own JSON key file, its own set of IAM roles, and its own set of problems. When a local CLI tool needed to query production data, it used one key. When it needed to write to the raw data project, it used a different key. Our Slack bot had two keys mounted as secrets. The monitoring scripts had yet another. Every new tool or integration meant figuring out which key to use, and getting it wrong meant cryptic PERMISSION_DENIED errors that could take 20 minutes to debug.

Continue Reading
5 March 2026 0 comments
0 FacebookTwitterPinterestEmail
PythonTools & Automation

Building a Headless BI Usage Scraper with Playwright

by Marc 1 March 2026
written by Marc

Our BI tool does not expose a usage API. So I built a headless Playwright scraper on Cloud Run that logs into the BI platform, scrapes dashboard usage metrics, loads them into BigQuery, and sends weekly Slack summaries. Here is how I handled the hardest part: session management.

Continue Reading
1 March 2026 0 comments
0 FacebookTwitterPinterestEmail
Data EngineeringdbtLessons Learned

DRY Revenue Logic: Extracting a Shared dbt Macro for Partner-Specific Calculations

by Marc 25 February 2026
written by Marc

Revenue numbers that don’t add up are the kind of bug that erodes trust fast. Last month I tracked down a case where a quote adjustment of over two thousand euros was producing zero revenue in our reporting layer. The root cause? Duplicated business logic across two dbt models — logic that had drifted apart over time.

Continue Reading
25 February 2026 0 comments
0 FacebookTwitterPinterestEmail
Newer Posts
Older Posts

Recent Posts

  • How many jelly beans are in the jar?
  • Teaching a small CNN to pick the right cover image
  • LiitoKala 34B 18650 — first impressions in a Waveshare UPS 3S
  • The Caveat Nobody Mentions
  • Builder is the new role

Recent Comments

No comments to show.
  • Linkedin
  • Telegram

© 2026 - NoeMarc. All rights reserved.


Back To Top
Marc de Mas
  • Home
  • Lessons Learned
  • Data Engineering
  • Tools & Automation
  • Analytics
  • BigQuery
  • dbt
  • Python