<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tech Blog on Discover Zoos</title><link>https://www.discoverzoos.com/tech/</link><description>Recent content in Tech Blog on Discover Zoos</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 15 Apr 2026 10:00:00 +0000</lastBuildDate><atom:link href="https://www.discoverzoos.com/tech/index.xml" rel="self" type="application/rss+xml"/><item><title>Panning Around</title><link>https://www.discoverzoos.com/tech/2026-04-15-panning-around/</link><pubDate>Wed, 15 Apr 2026 10:00:00 +0000</pubDate><guid>https://www.discoverzoos.com/tech/2026-04-15-panning-around/</guid><description>&lt;p&gt;I want panning on the map to feel easy and natural, but I also don&amp;rsquo;t want people panning around a zoo to be able to pan far outside the zoo and be lost as they try to use the map to understand the zoo&amp;rsquo;s geography.&lt;/p&gt;
&lt;p&gt;I tried a number of approaches before settling on my current approach, and I&amp;rsquo;m reasonably happy with how it works. The very short version is, I take the convex hull of a zoo, add a buffer based on a percentage of the display area, and require that region always be &amp;ldquo;maximally visible&amp;rdquo; in the display area.&lt;/p&gt;</description></item><item><title>Architecture Overview</title><link>https://www.discoverzoos.com/tech/2026-04-09-architecture-overview/</link><pubDate>Thu, 09 Apr 2026 10:00:00 +0000</pubDate><guid>https://www.discoverzoos.com/tech/2026-04-09-architecture-overview/</guid><description>&lt;p&gt;This is a fairly terse rundown of the structure for anyone curious.&lt;/p&gt;
&lt;p&gt;Discover Zoos is the App, which has and displays all the zoo info, and the Pipeline, which processes and renders map data. The App uses Rust, PostgreSQL, HTMX, and Web Components. The Pipeline uses Python, Planetiler, and OpenStreetMaps data. During development, everything is orchestrated with Make. For hosting, the data is exported into blobs, and there is no PostgreSQL. The production deployment of the App is on Fastly Compute, with the larger static files (the map tiles) hosted on Fastly Object Storage.&lt;/p&gt;</description></item></channel></rss>