Show HN: ColumnLens – Query millions of rows in milliseconds on your Mac
2 comments
Full disclosure: I’m a much better C++ developer than I am a marketer, so I asked Claude to help me write this post. Which is a bit ironic given that ColumnLens is literally about keeping your data local and off other people’s servers. Anyway — the app is real, the numbers are real, and the frustration with uploading CSVs to SaaS tools is very real. ;-)
I built ColumnLens because I wanted to stop uploading sensitive data to SaaS tools just to run a GROUP BY. It's a native C++ desktop app that opens 5GB+ CSV, JSONL, Parquet, and Excel files in about 3 seconds, then lets you query them with DuckDB's full SQL engine — JOINs, CTEs, window functions, all running on your machine.
The idea is simple: your laptop is a perfectly good analytics workstation. You shouldn't need a cloud pipeline to look at your data.
Some things I learned building it:
- DuckDB's columnar engine is absurdly efficient. 12M rows, sub-second queries, under 1 GB RAM. On hardware that fits in a backpack.
- ImGui + OpenGL is a great stack for data-heavy desktop apps. No DOM, no layout engine overhead — just raw GPU rendering. The data grid scrolls 12M rows without a single frame drop.
- I added a "3D City View" that maps rows to buildings (height = one column, color = another). Sounds gimmicky, but outliers and clusters are immediately visible in ways they aren't in tables or charts. Our brains are good at spotting the tall building in a skyline.
- Lua scripting turned out more useful than expected. People write small scripts to fetch data from APIs, run queries, and configure charts — repeatable analysis without leaving the app.
- Everything runs locally. Zero telemetry, zero network calls. The binary is 33MB, statically linked.
Free download at https://columnlens.com
Would love to hear from anyone else building local-first data tools — I think the "ship everything to the cloud" era is starting to swing back.