<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Data-Systems on betolink</title><link>https://betolink.github.io/blog/tags/data-systems/</link><description>Recent content in Data-Systems on betolink</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 05 Nov 2026 09:15:00 -0600</lastBuildDate><atom:link href="https://betolink.github.io/blog/tags/data-systems/index.xml" rel="self" type="application/rss+xml"/><item><title>Earth observation data is a software problem</title><link>https://betolink.github.io/blog/posts/earth-observation-is-software/</link><pubDate>Thu, 05 Nov 2026 09:15:00 -0600</pubDate><guid>https://betolink.github.io/blog/posts/earth-observation-is-software/</guid><description>&lt;p&gt;Earth observation archives are often described as data problems. In practice,&#10;most of the friction is software: metadata that does not agree with itself,&#10;formats that require whole-file downloads, and access patterns that assume a&#10;local filesystem.&lt;/p&gt;&#10;&lt;h2 id="what-cloud-native-changes"&gt;What cloud-native changes&lt;/h2&gt;&#10;&lt;p&gt;Chunked, self-describing arrays make partial reads practical. A workflow can&#10;open a dataset, inspect coordinates, and request one time slice without&#10;downloading the archive.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; xarray &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; xr&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ds &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; xr&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;open_zarr(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://example.com/store.zarr&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; consolidated&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; chunks&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{},&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(ds)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The hard part is not the API. The hard part is consistency across collections,&#10;clear provenance, and clients that fail gracefully.&lt;/p&gt;</description></item></channel></rss>