Analytics & BI
Columnar engines and the BI layer on top: ClickHouse, DuckDB, PostHog, Power BI, Streamlit, Looker.
Tech
Where it connects
- Data modeling
- Building a member-month churn panel in dbt without leaking the future
- The limit_zero macro bug: how dbt resolves macro names across packages
- Designing Event Schemas for Product Analytics in ClickHouse
- Why ClickHouse Is Fast: Understanding MergeTree Internals
- Where Agents Schema fits in a dbt → Snowflake → Looker pipeline
- dbt + DuckDB: the good, the bad, and the workarounds
- DuckDB concurrency in 2026: why you can't run dbt and DBeaver at the same time
- Resolving PostgreSQL Authentication Errors in Docker Compose for Redash
- Healthcare
- Building a member-month churn panel in dbt without leaking the future
- Synthea vs SynPUF: picking synthetic healthcare data for pipeline tests
- Migrating from SFTP to a roster API: dual-run and reconciliation
- The limit_zero macro bug: how dbt resolves macro names across packages
- Building a data quality dashboard on top of Tuva's DQI mart
- Feature engineering from claims data for a Random Forest classifier
- Predicting patient risk with scikit-learn on top of HCC suspecting data
- Running the Tuva Project on DuckDB — what breaks and how to fix it
- Data pipelines
- Migrating from SFTP to a roster API: dual-run and reconciliation
- The limit_zero macro bug: how dbt resolves macro names across packages
- Designing Event Schemas for Product Analytics in ClickHouse
- Why ClickHouse Is Fast: Understanding MergeTree Internals
- Where Agents Schema fits in a dbt → Snowflake → Looker pipeline
- DuckDB concurrency in 2026: why you can't run dbt and DBeaver at the same time
- Running the Tuva Project on DuckDB — what breaks and how to fix it
- Programming
- Career & CS
- Cloud & infra
All posts (32)
-
Why my average position improved while my traffic collapsed
In Google Search Console, average position can improve while clicks drop 70%. It measures your query mix, not your ranking. Segment before you read it.
-
Building a member-month churn panel in dbt without leaking the future
Turn eligibility, medical and pharmacy claims into a leak-free member-month training table for disenrollment prediction, with dbt tests and Snowflake ML.
-
Synthea vs SynPUF: picking synthetic healthcare data for pipeline tests
Synthea simulates coherent patients and exports FHIR; SynPUF is perturbed Medicare claims. When to use each, and how to turn Synthea into a messy roster.
-
Migrating from SFTP to a roster API: dual-run and reconciliation
Cut over from CSV-over-SFTP to a FHIR roster API without a big bang: phased dual-run, DuckDB reconciliation of CSV vs NDJSON, and exit criteria.
-
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.
-
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.
-
Designing Event Schemas for Product Analytics in ClickHouse
Fixed columns vs Map vs JSON, ORDER BY for funnels, dedup, TTL and materialized views: a practical event schema for product analytics in ClickHouse.
-
Why ClickHouse Is Fast: Understanding MergeTree Internals
Parts, granules, sparse primary indexes, marks and background merges: a hands-on look at how MergeTree lets ClickHouse skip most of your data.
-
Where Agents Schema fits in a dbt → Snowflake → Looker pipeline
Agents Schema doesn't replace dbt, semantic views or LookML. It indexes them inside the warehouse for agents. Where it fits, what it costs, when to skip it.
-
Building a data quality dashboard on top of Tuva's DQI mart
Tuva's DQI mart produces fill rates and anomaly flags for every input field in a claims dataset. Here's how to surface that in a Streamlit dashboard with meaningful visualizations.
-
Building a multipage Streamlit app with st.navigation() — the modern way
Streamlit 1.31 added st.navigation() as the modern replacement for the pages/ directory convention. Here's how the new API works and why it's better for anything beyond a simple demo.
-
Connecting Streamlit to DuckDB: read-only mode and the lock problem
A Streamlit app reading from a DuckDB file while dbt might be writing to it requires read-only mode and careful connection handling. Here's the pattern that works.
-
dbt + DuckDB: the good, the bad, and the workarounds
Running dbt 1.11 with DuckDB 1.10 on a 167k-row dataset is fast and free, but the combination has real rough edges. An honest assessment after a full Tuva Project run.
-
Deploying a Streamlit analytics app in one afternoon
Streamlit Community Cloud deploys directly from a GitHub repo. Here's the exact setup for a multipage analytics app with a DuckDB backend — including requirements.txt, secrets, and the database file.
-
DuckDB concurrency in 2026: why you can't run dbt and DBeaver at the same time
DuckDB's single-writer model means that opening a .duckdb file in DBeaver blocks dbt from acquiring its write connection. Here's the exact error, why it happens, and the right fix.
-
Feature engineering from claims data for a Random Forest classifier
Healthcare claims have dozens of potential features for patient risk models. Here's how to select and validate features from a Tuva Project dataset for a Random Forest classifier predicting HCC gaps.
-
Predicting patient risk with scikit-learn on top of HCC suspecting data
A Random Forest classifier on Tuva's hcc_suspecting__summary table, using age, sex, paid amount, and condition count to predict which patients have above-median HCC gaps.
-
Running the Tuva Project on DuckDB — what breaks and how to fix it
Tuva 0.17.2 on DuckDB 1.10 with dbt 1.11 produces three distinct failure modes. This is what actually broke and how each one was fixed.
-
How PostHog Uses ClickHouse for High-Performance Product Analytics
Modern product analytics platforms must process billions of events while still delivering low-latency queries for dashboards, funnels, and retention analysis. PostHog addresses this requirement by
-
Generating a Calendar Table in Power Query (M Language)
When working with Power BI or other Power Query-supported tools, having a well-structured calendar table is essential for time-based analysis. In this blog post, we will walk through an M Language
-
How to Display an Error in Excel When More Than 5 "FALSE" Values Appear in a Row
Introduction When working with data in Excel, there may be instances where you need to monitor certain conditions and flag errors based on specific criteria. In this guide, we'll walk through a simple
-
Splitting Strings in Excel: A Simple Guide
When working with Excel, you may encounter situations where you need to split a string into separate parts. For example, consider the following string: orderId: 12345abc-de67-89fg-hijk-123456lmnop If
-
Modes and Examples of KPIs in Data Analysis Expressions (DAX)
Last Year Comparison When analyzing sales performance, it is often useful to compare the current year's sales with the same period in the previous year. To do this, we create several calculated
-
Adding Custom Columns to Your Date Table in Power BI
Introduction A Date Table is an integral part of building robust and insightful Power BI reports. While a basic Date Table allows for time-based filtering and analysis, custom columns can add even
-
Creating Dynamic Dates in Excel: A Practical Guide
When working with Excel, you may encounter situations where you need to dynamically generate a date using the current year, a specific month, and a day. This post will guide you through creating such
-
How to Create a Date Table in Power BI Using DAX
Introduction In Power BI, a Date Table is essential for working with time series data effectively. A well-structured Date Table simplifies time-based analysis, allowing you to filter by specific
-
Creating a Custom Column with SWITCH in Power BI
In Power BI, creating custom columns based on multiple conditions is a powerful way to enhance the analysis and presentation of your data. One of the most versatile functions for this purpose is
-
How to Choose the Best Classification Model Based on Performance Metrics
When working on machine learning classification tasks, selecting the best model often involves analyzing various performance metrics like accuracy, precision, recall, and F1-score. In this post, I’ll
-
Creating a Custom Column with a Random String in Power BI Using DAX
Introduction In Power BI, customizing your dataset by adding calculated columns can significantly enhance your data analysis capabilities. One common need is to generate random strings or categories
-
Resolving PostgreSQL Authentication Errors in Docker Compose for Redash
Introduction When setting up Redash with Docker Compose, one of the common errors users might encounter is related to PostgreSQL authentication. Specifically, the psycopg2.OperationalError:
-
Run Redash Locally
This is only for educative purpose. You don't have to do this in production 1 - Clone the project from the oficial github: Redash on GitHub - Y made a fork previously. Take Care git clone
-
Human Resources and Analytics: Enhancing Personnel Selection
Human Resources and Analytics: Enhancing Personnel Selection Introduction In today's dynamic landscape, the convergence of Human Resources and Analytics presents an unprecedented opportunity to