Posts
All the articles I've posted.
-
The limit_zero macro bug: how dbt resolves macro names across packages
· UpdatedWhy a Tuva demo project failed with 'limit_zero' is undefined on DuckDB: bare macro names don't cross packages, dispatch is a second lookup, and the fix.
-
Tracking S3 file changes with ETags and LastModified
· UpdatedDetect changed S3 objects without versioning: read ETag and LastModified with boto3, export an ETag CSV per date prefix, and handle multipart ETags.
-
PostHog across subdomains and projects: identity, multiple instances and client rate limits
· UpdatedOne PostHog project across subdomains with cross_subdomain_cookie, when to send to several projects with named instances, and what client_ingestion_warning means.
-
Working with JSON in Python and pandas: json.load, JSON Lines and read_json
· UpdatedRead and write JSON with Python's json module, clean malformed files, and load JSON arrays or JSON Lines exports into pandas with read_json(lines=True).
-
Greenfield vs Brownfield Projects: What Actually Changes in Engineering
Greenfield vs brownfield software projects: constraints, risks, architecture decisions, and the patterns that work for each — from blank repo to legacy system.
-
Batch API Requests in Python: Throughput vs Rate Limit Trade-Off
Push more records through a rate-limited API in Python: concurrency sizing with Little's Law, batch size trade-offs, and an asyncio token bucket with httpx.
-
Partitioning Strategy in Data Lakes: When It Hurts Performance
Partitioning speeds up queries only when it matches filters and data volume. When over-partitioning backfires, and what to use instead.
-
Delta Lake Schema Evolution Explained with Real Examples
Schema enforcement vs. evolution in Delta Lake: mergeSchema, overwriteSchema, MERGE evolution, column mapping for renames and drops, and type widening.