<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kenzy Zero</title>
    <description>The latest articles on DEV Community by Kenzy Zero (@kenzyzero).</description>
    <link>https://dev.to/kenzyzero</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4036176%2F030e13fd-0ad7-4e18-9d80-2a00e4bf1405.png</url>
      <title>DEV Community: Kenzy Zero</title>
      <link>https://dev.to/kenzyzero</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kenzyzero"/>
    <language>en</language>
    <item>
      <title>hey dev.to</title>
      <dc:creator>Kenzy Zero</dc:creator>
      <pubDate>Sun, 19 Jul 2026 07:45:43 +0000</pubDate>
      <link>https://dev.to/kenzyzero/hey-devto-3g5i</link>
      <guid>https://dev.to/kenzyzero/hey-devto-3g5i</guid>
      <description>&lt;p&gt;Hey everyone 👋&lt;br&gt;
I'm Kenzy. I work with big data &amp;amp; location intelligence, basically turning huge, messy datasets (and "where people actually go") into things you can make decisions with.&lt;br&gt;
Lately I've been building my own tools on the side, so I figured I'd stop lurking and finally post here. First thing I've shipped is kenze... for cleaning data files that are too big for pandas, without your RAM tapping out. Proper writeup coming soon.&lt;br&gt;
Honest heads-up: I'm a data guy, not a career dev, and I build a lot with AI helping me write the code. I'll be sharing what I make, what breaks, and whatever I pick up along the way.&lt;br&gt;
Glad to be here - say hi&lt;/p&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>introduction</category>
    </item>
    <item>
      <title>Medium Data: when your file is too big for pandas but too small for Spark</title>
      <dc:creator>Kenzy Zero</dc:creator>
      <pubDate>Sun, 19 Jul 2026 07:34:59 +0000</pubDate>
      <link>https://dev.to/kenzyzero/medium-data-when-your-file-is-too-big-for-pandas-but-too-small-for-spark-3h9o</link>
      <guid>https://dev.to/kenzyzero/medium-data-when-your-file-is-too-big-for-pandas-but-too-small-for-spark-3h9o</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxtpct35qjyrhjopwb75j.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxtpct35qjyrhjopwb75j.gif" alt=" " width="720" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's an awkward size of data nobody wants to own.&lt;/p&gt;

&lt;p&gt;Your file is a few GB. You open it in pandas… and your machine runs out of RAM and dies. Okay, so you reach for Spark, and now you're standing up a cluster and a whole distributed-systems mindset to do what is basically "filter some rows and drop a column." :(&lt;/p&gt;

&lt;p&gt;I hit that wall constantly, so I built a tool for it: kenze. This is the story of it.&lt;/p&gt;

&lt;p&gt;Quick honesty first&lt;/p&gt;

&lt;p&gt;I'm not a software engineer. I work with big data files every day, that's my actual world... but I'm not a tooling/systems dev by trade. And I built kenze with a lot of AI help (Claude wrote a big chunk of the code while I drove the design, tested everything, and used it on my own real files).&lt;/p&gt;

&lt;p&gt;I think that's just what building looks like now, and I'd rather be upfront than have someone "catch" me. The stuff I'm claiming here, especially the "never-runs-out-of-memory" part is tested (58-test suite, CI green on Linux + Windows) and benchmarked, and I use it daily. Real tool, honest about how it got made.&lt;/p&gt;

&lt;p&gt;Enter kenze&lt;br&gt;
One install: pip install kenze&lt;/p&gt;

&lt;p&gt;Then either run one-liners:&lt;br&gt;
kenze filter sales.parquet --where "amount &amp;gt; 0" -o clean.csv&lt;br&gt;
kenze keep   users.csv --cols id,city,email    -o small.parquet&lt;br&gt;
kenze dedup  users.csv --on id                 -o unique.parquet&lt;/p&gt;

&lt;p&gt;…or just run kenze with no arguments and land in an interactive shell, think a Claude-Code-style REPL, but for data prep.&lt;/p&gt;

&lt;p&gt;The one real promise: it doesn't run out of memory&lt;br&gt;
This is the whole reason kenze exists.&lt;/p&gt;

&lt;p&gt;Under the hood it's DuckDB doing the heavy lifting. kenze caps memory to a fraction of your free RAM and spills to disk instead of dying. So you can point it at a file bigger than your RAM and it just… works, one streaming pass, no crash.&lt;/p&gt;

&lt;p&gt;And don't take my word for it: the repo has a reproducible benchmark (it also runs in CI) that gives pandas and kenze the same memory budget on a file bigger than it. pandas OOMs. kenze spills to disk and finishes. On my laptop, a 60M-row Parquet opens instantly and a filter + dedup down to ~27M rows runs in about 3.5 seconds.&lt;/p&gt;

&lt;p&gt;The interactive shell...&lt;br&gt;
My favourite part. Run kenze, load a file once, and stack steps that each preview live:&lt;/p&gt;

&lt;p&gt;kenze &amp;gt; load sales.parquet        # 60M rows, opens instantly&lt;br&gt;
kenze &amp;gt; filter amount &amp;gt; 0         # each step previews the result&lt;br&gt;
kenze &amp;gt; plot amount by city       # ascii bar chart, right in the terminal&lt;br&gt;
kenze &amp;gt; keep id, city, amount&lt;br&gt;
kenze &amp;gt; dedup id&lt;br&gt;
kenze &amp;gt; run clean.csv             # streamed through DuckDB, no OOM&lt;/p&gt;

&lt;p&gt;It has a / command menu, it TAB-autocompletes your file's actual column names, and it can draw quick ASCII histograms / bar charts so you can eyeball a column without leaving the terminal. The whole session is really a recipe, you can save it and re-run it later.&lt;/p&gt;

&lt;p&gt;No SQL required... but no lock-in either&lt;/p&gt;

&lt;p&gt;You don't need SQL for the everyday stuff (simple verbs, or a readable recipe file). But if you want it, there's a sql escape hatch straight to DuckDB. And you can eject any recipe to plain SQL or Python, so if you outgrow kenze, you walk away with the code, not a dependency.&lt;/p&gt;

&lt;p&gt;It reads/writes CSV, Parquet, JSON, gzip and Excel (.xlsx), local or on s3:// / gs://. It also does joins, pivots, PII masking, schema validation, and data-quality asserts that abort a run before it writes bad output.&lt;/p&gt;

&lt;p&gt;Where it stops, ""on purpose""&lt;/p&gt;

&lt;p&gt;kenze is one machine. That's a feature, not a gap. If you've genuinely outgrown a single box, multi-TB, distributed, real SLAs - that's Spark/Dask territory, and you should use them. kenze is what you reach for before you need those.&lt;/p&gt;

&lt;p&gt;The mental model I like: pandas &amp;lt; kenze &amp;lt; Spark.&lt;/p&gt;

&lt;p&gt;Try it / break it&lt;/p&gt;

&lt;p&gt;Open-source (MIT), early, and I'm actively improving it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PyPI: &lt;a href="https://pypi.org/project/kenze/" rel="noopener noreferrer"&gt;https://pypi.org/project/kenze/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/Kenzy-Zero/kenze" rel="noopener noreferrer"&gt;https://github.com/Kenzy-Zero/kenze&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you live in that "too big for pandas, too small for Spark" middle, I'd genuinely love for you to try it and tell me what breaks. What do you reach for when a file's in that awkward size?&lt;/p&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>showdev</category>
      <category>dataengineering</category>
    </item>
  </channel>
</rss>
