<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: kylebarron</title><link>https://news.ycombinator.com/user?id=kylebarron</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 16 Apr 2026 20:54:37 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=kylebarron" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by kylebarron in "Show HN: Parqeye – A CLI tool to visualize and inspect Parquet files"]]></title><description><![CDATA[
<p>Looks great!<p>Another seemingly extremely similar project released in the last few days: <a href="https://github.com/raulcd/datanomy" rel="nofollow">https://github.com/raulcd/datanomy</a></p>
]]></description><pubDate>Tue, 18 Nov 2025 04:14:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=45961319</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=45961319</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45961319</guid></item><item><title><![CDATA[How to Build High-Speed Rail on the Northeast Corridor]]></title><description><![CDATA[
<p>Article URL: <a href="https://nec.transitcosts.com/">https://nec.transitcosts.com/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45648765">https://news.ycombinator.com/item?id=45648765</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 20 Oct 2025 20:18:03 +0000</pubDate><link>https://nec.transitcosts.com/</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=45648765</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45648765</guid></item><item><title><![CDATA[Making performant Python bindings to compiled code]]></title><description><![CDATA[
<p>Article URL: <a href="https://kylebarron.dev/blog/fast-python-bindings/">https://kylebarron.dev/blog/fast-python-bindings/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45503522">https://news.ycombinator.com/item?id=45503522</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 07 Oct 2025 14:31:23 +0000</pubDate><link>https://kylebarron.dev/blog/fast-python-bindings/</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=45503522</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45503522</guid></item><item><title><![CDATA[New comment by kylebarron in "Representing Python notebooks as dataflow graphs"]]></title><description><![CDATA[
<p><a href="https://github.com/manzt/juv" rel="nofollow">https://github.com/manzt/juv</a></p>
]]></description><pubDate>Sat, 09 Aug 2025 16:29:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=44847840</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=44847840</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44847840</guid></item><item><title><![CDATA[New comment by kylebarron in "Notebooks as reusable Python programs"]]></title><description><![CDATA[
<p>Agreed, I find this to be a super productive environment, because you get all of vscode's IDE plus the niceties of Jupyter and IPython.<p>I wrote a small vscode extension that builds upon this to automatically infer code blocks via indentation, so that you don't have to select them manually: [0]<p>[0]: <a href="https://github.com/kylebarron/vscode-jupyter-python" rel="nofollow">https://github.com/kylebarron/vscode-jupyter-python</a></p>
]]></description><pubDate>Wed, 19 Mar 2025 21:22:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=43417461</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=43417461</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43417461</guid></item><item><title><![CDATA[New comment by kylebarron in "Stop using zip codes for geospatial analysis (2019)"]]></title><description><![CDATA[
<p>Equal distances to each adjacent neighbor: <a href="https://www.uber.com/blog/h3/" rel="nofollow">https://www.uber.com/blog/h3/</a></p>
]]></description><pubDate>Fri, 07 Feb 2025 20:03:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=42976835</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=42976835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42976835</guid></item><item><title><![CDATA[Obstore: Efficient streaming object store operations in Python]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/developmentseed/obstore">https://github.com/developmentseed/obstore</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42731867">https://news.ycombinator.com/item?id=42731867</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 16 Jan 2025 22:46:46 +0000</pubDate><link>https://github.com/developmentseed/obstore</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=42731867</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42731867</guid></item><item><title><![CDATA[New comment by kylebarron in "Railroad Tycoon II"]]></title><description><![CDATA[
<p>This worked for me last month on a Mac M2: <a href="https://www.portingkit.com/game/278" rel="nofollow">https://www.portingkit.com/game/278</a></p>
]]></description><pubDate>Tue, 14 Jan 2025 15:33:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=42698467</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=42698467</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42698467</guid></item><item><title><![CDATA[Literate Flatbush: Understanding a fast, elegant RTree implementation]]></title><description><![CDATA[
<p>Article URL: <a href="https://kylebarron.dev/literate-flatbush/">https://kylebarron.dev/literate-flatbush/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42635401">https://news.ycombinator.com/item?id=42635401</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 08 Jan 2025 15:47:23 +0000</pubDate><link>https://kylebarron.dev/literate-flatbush/</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=42635401</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42635401</guid></item><item><title><![CDATA[New comment by kylebarron in "Show HN: OpenFreeMap – Open-Source Map Hosting"]]></title><description><![CDATA[
<p><a href="https://visgl.github.io/react-map-gl/" rel="nofollow">https://visgl.github.io/react-map-gl/</a> is a react interface to MapLibre</p>
]]></description><pubDate>Tue, 24 Sep 2024 21:11:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=41640942</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=41640942</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41640942</guid></item><item><title><![CDATA[New comment by kylebarron in "Show HN: OpenFreeMap – Open-Source Map Hosting"]]></title><description><![CDATA[
<p>I develop Lonboard [0], a Python library for plotting large geospatial data. If you have small data (~max 30,000 coordinates), leaflet-based Python libraries like folium and ipyleaflet can be fine, but because Lonboard uses deck.gl for GPU-accelerated rendering, it's 30-50x faster than leaflet for large datasets [1].<p>[0]: <a href="https://developmentseed.org/lonboard/latest/" rel="nofollow">https://developmentseed.org/lonboard/latest/</a><p>[1]: <a href="https://developmentseed.org/lonboard/latest/how-it-works/" rel="nofollow">https://developmentseed.org/lonboard/latest/how-it-works/</a></p>
]]></description><pubDate>Tue, 24 Sep 2024 21:09:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=41640916</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=41640916</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41640916</guid></item><item><title><![CDATA[New comment by kylebarron in "Parquet-WASM: Rust-based WebAssembly bindings to read and write Parquet data"]]></title><description><![CDATA[
<p>It can read from HTTP urls, but you'd need to manage signing the URLs yourself. On the writing side, it currently writes to an ArrayBuffer, which then you could upload to a server or save on the user's machine.</p>
]]></description><pubDate>Mon, 22 Apr 2024 20:29:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=40119868</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=40119868</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40119868</guid></item><item><title><![CDATA[New comment by kylebarron in "Parquet-WASM: Rust-based WebAssembly bindings to read and write Parquet data"]]></title><description><![CDATA[
<p>Arrow JS is just ArrayBuffers underneath. You do want to amortize some operations to avoid unnecessary conversions. I.e. Arrow JS stores strings as UTF-8, but native JS strings are UTF-16 I believe.<p>Arrow is especially powerful across the WASM <--> JS boundary! In fact, I wrote a library to interpret Arrow from Wasm memory into JS without any copies [0]. (Motivating blog post [1])<p>[0]: <a href="https://github.com/kylebarron/arrow-js-ffi">https://github.com/kylebarron/arrow-js-ffi</a><p>[1]: <a href="https://observablehq.com/@kylebarron/zero-copy-apache-arrow-with-webassembly" rel="nofollow">https://observablehq.com/@kylebarron/zero-copy-apache-arrow-...</a></p>
]]></description><pubDate>Mon, 22 Apr 2024 20:25:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=40119796</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=40119796</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40119796</guid></item><item><title><![CDATA[Parquet-WASM: Rust-based WebAssembly bindings to read and write Parquet data]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/kylebarron/parquet-wasm">https://github.com/kylebarron/parquet-wasm</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40115155">https://news.ycombinator.com/item?id=40115155</a></p>
<p>Points: 179</p>
<p># Comments: 14</p>
]]></description><pubDate>Mon, 22 Apr 2024 15:10:00 +0000</pubDate><link>https://github.com/kylebarron/parquet-wasm</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=40115155</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40115155</guid></item><item><title><![CDATA[New comment by kylebarron in "Friends don't let friends export to CSV"]]></title><description><![CDATA[
<p>That's why I'm working on the GeoParquet spec [0]! It gives you both compression-by-default and super fast reads and writes! So it's usually as small as gzipped CSV, if not smaller, while being faster to read and write than GeoPackage.<p>Try using `GeoDataFrame.to_parquet` and `GeoPandas.read_parquet`<p>[0]: <a href="https://github.com/opengeospatial/geoparquet">https://github.com/opengeospatial/geoparquet</a></p>
]]></description><pubDate>Wed, 27 Mar 2024 02:36:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=39835161</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=39835161</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39835161</guid></item><item><title><![CDATA[New comment by kylebarron in "Friends don't let friends export to CSV"]]></title><description><![CDATA[
<p>Your issue is that you're using the default (old) binding to GDAL, based on Fiona [0].<p>You need to use pyogrio [1], its vectorized counterpart, instead. Make sure you use `engine="pyogrio"` when calling `to_file` [2]. Fiona does a loop in Python, while pyogrio is exclusively compiled. So pyogrio is usually about 10-15x faster than fiona. Soon, in pyogrio version 0.8, it will be another ~2-4x faster than pyogrio is now [3].<p>[0]: <a href="https://github.com/Toblerity/Fiona">https://github.com/Toblerity/Fiona</a><p>[1]: <a href="https://github.com/geopandas/pyogrio">https://github.com/geopandas/pyogrio</a><p>[2]: <a href="https://geopandas.org/en/stable/docs/reference/api/geopandas.GeoDataFrame.to_file.html" rel="nofollow">https://geopandas.org/en/stable/docs/reference/api/geopandas...</a><p>[3]: <a href="https://github.com/geopandas/pyogrio/pull/346">https://github.com/geopandas/pyogrio/pull/346</a></p>
]]></description><pubDate>Wed, 27 Mar 2024 02:26:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=39835098</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=39835098</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39835098</guid></item><item><title><![CDATA[New comment by kylebarron in "Friends don't let friends export to CSV"]]></title><description><![CDATA[
<p>Sorry, this is not true _at all_ for geospatial data.<p>A quick benchmark [0] shows that saving to GeoPackage, FlatGeobuf, and GeoParquet are roughly 10x faster than saving to CSV. Additionally, the CSV is much larger than any other format.<p>[0]: <a href="https://gist.github.com/kylebarron/f632bbf95dbb81c571e4e64cd31fed4e" rel="nofollow">https://gist.github.com/kylebarron/f632bbf95dbb81c571e4e64cd...</a></p>
]]></description><pubDate>Tue, 26 Mar 2024 13:36:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=39827643</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=39827643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39827643</guid></item><item><title><![CDATA[New comment by kylebarron in "Vega-Altair: Declarative Visualization in Python"]]></title><description><![CDATA[
<p>Is this open? Is there a way to read more about it? Issues/pull requests?</p>
]]></description><pubDate>Mon, 26 Feb 2024 06:43:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=39508243</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=39508243</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39508243</guid></item><item><title><![CDATA[New comment by kylebarron in "Goodbye, Node.js Buffer"]]></title><description><![CDATA[
<p>nodejs-polars is node-specific and uses native FFI. polars can be compiled to Wasm but doesn't yet have a js API out of the box.<p>As for the fastest way to serialize data to Pandas data to the browser, you should use Parquet; it's the fastest to write on the Python side and read on the JS side, while also being compressed. See <a href="https://github.com/kylebarron/parquet-wasm">https://github.com/kylebarron/parquet-wasm</a> (full disclosure, I wrote this)</p>
]]></description><pubDate>Tue, 24 Oct 2023 17:52:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=38002706</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=38002706</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38002706</guid></item><item><title><![CDATA[New comment by kylebarron in "Protomaps – A free and open source map of the world"]]></title><description><![CDATA[
<p>pmtiles are only the counterpart to the "overviews" part of COG. pmtiles doesn't give you analysis-ready data. For that, look to FlatGeobuf or GeoParquet (once it gets a spatial index in v1.1 of the spec)</p>
]]></description><pubDate>Mon, 23 Oct 2023 13:32:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=37985354</link><dc:creator>kylebarron</dc:creator><comments>https://news.ycombinator.com/item?id=37985354</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37985354</guid></item></channel></rss>