EN 中文

John Tung · 童曉瑜

Principal Data Engineer.

I've run production on GCP, AWS, and Azure, with orchestration on Airflow — or just a scheduler when that fit. Lately most of the work is taking something built too heavy and turning it back into a query that runs on a schedule. I pick tools to fit the problem.

About

Based in Taiwan. I lead the social analytics data platform at a media group — owning everything from the Cloud Run Jobs that pull from the Meta Graph API to the dbt marts that surface in Looker Studio.

Across previous roles I've shipped on GCP, AWS, and Azure, orchestrating with Airflow and lightweight schedulers, and processed enough data with PySpark, dbt, and BigQuery to know that the right tool is the one that matches the actual requirement — including the team's ability to operate it. Spent 2.5 of those years as a Data Team Lead before switching back to a hands-on Principal IC role.

I spend equal time on data modeling and on the boring infrastructure that keeps tokens fresh, jobs idempotent, and bills small.

The work I'm most invested in now — LLM-augmented pipelines and semantic search over the editorial archive — is really a return to the text mining and sentiment analysis I started out in.

Selected Work

Things I've shipped that made a measurable dent.

$300 → <$1 monthly cost

Inherited pipeline rewrite

Took over a Composer + Apps Script revenue pipeline and replaced it with BigQuery External Tables + Scheduled Queries. Same outputs, same SLAs, ~300× cheaper to run each month.

The lesson I keep applying: most "pipelines" don't need an orchestrator — they need a query that runs on a schedule.

BigQuery Scheduled Queries Cost
15 jobs orchestrated

Multi-platform social ingestion

End-to-end pipelines for Facebook, Instagram, Threads, and YouTube into BigQuery via 15 Cloud Run Jobs on staggered schedules, then modeled in dbt with full historical snapshots — every change preserved, not just the latest state.

Powers the Looker Studio dashboards editorial and marketing teams actually open every morning.

Cloud Run Jobs dbt BigQuery
60-day token auto-rotated

Threads OAuth 2.0, end-to-end

Dual-account OAuth across 8 permission scopes, with a weekly Cloud Run Job that rotates the 60-day token through Secret Manager. Replaced the original "alert the on-call human and hope they re-auth in time" design with one that's fully unattended.

OAuth 2.0 Secret Manager Cloud Run
Frontend-only no backend, no ops

Self-serve OAuth for non-engineers

Pure-frontend authorization helper on Cloudflare Pages. Social-team editors grant API access end-to-end without filing a ticket or pinging me. Static hosting, zero backend, near-zero ops.

Cloudflare Pages OAuth DX

Currently

What's on the workbench.

  • Editorial semantic search

    Evaluating BigQuery Vector Search vs. self-hosted Elasticsearch so editors can search the historical archive by meaning.

  • Migration wrap-up

    The new architecture is already producing; now decommissioning the last revenue pipeline off the old Composer DAG / Apps Script.