<?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: nickdenboer7-dev</title>
    <description>The latest articles on DEV Community by nickdenboer7-dev (@nickdenboer7dev).</description>
    <link>https://dev.to/nickdenboer7dev</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%2F4142658%2Fd50fc55e-b688-4c6f-a6ab-a8c294feb204.png</url>
      <title>DEV Community: nickdenboer7-dev</title>
      <link>https://dev.to/nickdenboer7dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nickdenboer7dev"/>
    <language>en</language>
    <item>
      <title>I Built a Real-Time Public Transport Map for the Netherlands — Here’s What I Learned</title>
      <dc:creator>nickdenboer7-dev</dc:creator>
      <pubDate>Fri, 25 Sep 2026 13:01:13 +0000</pubDate>
      <link>https://dev.to/nickdenboer7dev/i-built-a-real-time-public-transport-map-for-the-netherlands-heres-what-i-learned-3aen</link>
      <guid>https://dev.to/nickdenboer7dev/i-built-a-real-time-public-transport-map-for-the-netherlands-heres-what-i-learned-3aen</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%2Fp531arput7f2frk8hwyx.png" 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%2Fp531arput7f2frk8hwyx.png" alt=" " width="" height=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/..." 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/..." alt="Uploading image" width="800" height="400"&gt;&lt;/a&gt;# I Built a Real-Time Public Transport Map for the Netherlands — Here’s What I Learned&lt;/p&gt;

&lt;p&gt;What started as a simple idea —&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What if I could see public transport across the Netherlands moving on one live map?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;— quickly turned into a much bigger engineering project.&lt;/p&gt;

&lt;p&gt;I’ve been building &lt;strong&gt;OVspot&lt;/strong&gt;, a real-time public transport map that combines trains, buses, trams, ferries, stops, delays, journey progress and estimated positions in a single interface.&lt;/p&gt;

&lt;p&gt;You can try it here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://ovspot.nl" rel="noopener noreferrer"&gt;https://ovspot.nl&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And building it taught me that “show vehicles on a map” is definitely not as simple as it sounds.&lt;/p&gt;
&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;Most public transport apps focus on planning a journey.&lt;/p&gt;

&lt;p&gt;OVspot takes a different approach.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How do I get from A to B?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;OVspot lets you explore what is actually happening on the network.&lt;/p&gt;

&lt;p&gt;You can open the map and see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;trains&lt;/li&gt;
&lt;li&gt;buses&lt;/li&gt;
&lt;li&gt;trams&lt;/li&gt;
&lt;li&gt;ferries&lt;/li&gt;
&lt;li&gt;stations and stops&lt;/li&gt;
&lt;li&gt;destinations&lt;/li&gt;
&lt;li&gt;delays&lt;/li&gt;
&lt;li&gt;vehicle journeys&lt;/li&gt;
&lt;li&gt;upcoming stops&lt;/li&gt;
&lt;li&gt;estimated and live positions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to make the Dutch public transport network feel visible.&lt;/p&gt;
&lt;h2&gt;
  
  
  Screenshot suggestion #1
&lt;/h2&gt;

&lt;p&gt;Use a large desktop screenshot here showing the Netherlands with many vehicles visible.&lt;/p&gt;

&lt;p&gt;Caption:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OVspot showing live and estimated public transport vehicles across the Netherlands.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The hard part: not every vehicle has GPS
&lt;/h2&gt;

&lt;p&gt;One of the biggest challenges is that not all operators provide vehicle positions in the same way.&lt;/p&gt;

&lt;p&gt;Some vehicles have real-time positioning data.&lt;/p&gt;

&lt;p&gt;Others only have timetable information.&lt;/p&gt;

&lt;p&gt;If I only displayed vehicles with GPS, large parts of the network would simply disappear.&lt;/p&gt;

&lt;p&gt;So OVspot also calculates estimated positions.&lt;/p&gt;

&lt;p&gt;For those trips, it uses GTFS data such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;trips&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stop_times&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;route shapes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shape_dist_traveled&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;departure and arrival times&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The basic idea is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scheduled trip progress
        ↓
distance travelled along route
        ↓
interpolate position on GTFS shape
        ↓
estimated lat/lon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows OVspot to place a vehicle approximately where it should be according to the timetable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ferries were a good example
&lt;/h2&gt;

&lt;p&gt;I first used this technique for the GVB ferries in Amsterdam.&lt;/p&gt;

&lt;p&gt;Later, I realized the same system could be used for ferry operators around the Dutch Wadden Islands.&lt;/p&gt;

&lt;p&gt;OVspot can now estimate positions for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TESO&lt;/strong&gt; — Den Helder ↔ Texel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rederij Doeksen&lt;/strong&gt; — Harlingen ↔ Terschelling / Vlieland&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wagenborg&lt;/strong&gt; — Ameland and Schiermonnikoog services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These operators have GTFS route shapes and distance information, so their scheduled progress can be projected onto the actual ferry route.&lt;/p&gt;

&lt;p&gt;The important part is that OVspot does &lt;strong&gt;not&lt;/strong&gt; present these positions as GPS.&lt;/p&gt;

&lt;p&gt;They are explicitly treated as estimated positions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshot suggestion #2
&lt;/h2&gt;

&lt;p&gt;Zoom in on Texel, Terschelling or Ameland with a ferry visible.&lt;/p&gt;

&lt;p&gt;Caption:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ferry positions can be estimated from GTFS shapes when no live GPS position is available.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  “Live” data has different levels of quality
&lt;/h2&gt;

&lt;p&gt;Something I underestimated at first was how important data confidence is.&lt;/p&gt;

&lt;p&gt;A position can come from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;live GPS&lt;/li&gt;
&lt;li&gt;real-time journey updates&lt;/li&gt;
&lt;li&gt;timetable interpolation&lt;/li&gt;
&lt;li&gt;cached data after a feed outage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are very different things.&lt;/p&gt;

&lt;p&gt;So OVspot distinguishes between states such as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The vehicle has recent real-time information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Estimated&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Its position has been calculated from available journey data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Timetable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is no real-time information available.&lt;/p&gt;

&lt;p&gt;This sounds like a small UI detail, but I think it is essential.&lt;/p&gt;

&lt;p&gt;A map should not imply more certainty than the underlying data actually provides.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thousands of moving vehicles are expensive
&lt;/h2&gt;

&lt;p&gt;The next challenge was performance.&lt;/p&gt;

&lt;p&gt;Rendering 20 markers on a map is easy.&lt;/p&gt;

&lt;p&gt;Rendering hundreds or thousands of moving vehicles with labels, interaction and continuous updates is not.&lt;/p&gt;

&lt;p&gt;At one point I experimented with regular DOM-based markers.&lt;/p&gt;

&lt;p&gt;That worked fine at low numbers.&lt;/p&gt;

&lt;p&gt;At high vehicle counts, it absolutely did not.&lt;/p&gt;

&lt;p&gt;I ended up working on things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;canvas-based rendering&lt;/li&gt;
&lt;li&gt;zoom-dependent labels&lt;/li&gt;
&lt;li&gt;adaptive detail levels&lt;/li&gt;
&lt;li&gt;viewport filtering&lt;/li&gt;
&lt;li&gt;limiting DOM work&lt;/li&gt;
&lt;li&gt;avoiding unnecessary rerenders&lt;/li&gt;
&lt;li&gt;reducing expensive station labels&lt;/li&gt;
&lt;li&gt;measuring frame rate during pan and zoom&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The map now deliberately changes how much detail it draws depending on the zoom level and current load.&lt;/p&gt;

&lt;p&gt;One of the biggest lessons:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Performance is not something you optimize after building a map like this. It becomes part of the product design.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Screenshot suggestion #3
&lt;/h2&gt;

&lt;p&gt;Use a screenshot of a dense area such as Amsterdam, Rotterdam or Utrecht.&lt;/p&gt;

&lt;p&gt;Caption:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dense urban areas can contain hundreds of visible vehicles, making rendering strategy important.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The popup became surprisingly complicated
&lt;/h2&gt;

&lt;p&gt;Clicking on a vehicle originally opened a tiny information box.&lt;/p&gt;

&lt;p&gt;That slowly evolved into something much more detailed.&lt;/p&gt;

&lt;p&gt;The current vehicle popup can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;line&lt;/li&gt;
&lt;li&gt;destination&lt;/li&gt;
&lt;li&gt;carrier&lt;/li&gt;
&lt;li&gt;journey number&lt;/li&gt;
&lt;li&gt;delay&lt;/li&gt;
&lt;li&gt;data quality&lt;/li&gt;
&lt;li&gt;previous stop&lt;/li&gt;
&lt;li&gt;next stop&lt;/li&gt;
&lt;li&gt;complete journey progression&lt;/li&gt;
&lt;li&gt;estimated arrival&lt;/li&gt;
&lt;li&gt;route display&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even the wording required thought.&lt;/p&gt;

&lt;p&gt;For example, I originally displayed:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Nu hier” — “Here now”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;next to the most recent stop.&lt;/p&gt;

&lt;p&gt;But that was misleading.&lt;/p&gt;

&lt;p&gt;The stop might simply be the last known point in the journey.&lt;/p&gt;

&lt;p&gt;The vehicle could already be hundreds of meters away.&lt;/p&gt;

&lt;p&gt;So the UI now only says &lt;strong&gt;“Nu hier”&lt;/strong&gt; when the vehicle is actually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;within about 50 meters of the stop&lt;/li&gt;
&lt;li&gt;and almost stationary&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Otherwise that stop is shown as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Gepasseerd” — “Passed”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is a tiny change, but it makes the interface much more truthful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshot suggestion #4
&lt;/h2&gt;

&lt;p&gt;Show a vehicle popup with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;journey timeline&lt;/li&gt;
&lt;li&gt;next stop&lt;/li&gt;
&lt;li&gt;delay&lt;/li&gt;
&lt;li&gt;Live / Estimated badge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is probably the most useful screenshot for developers because it immediately shows that OVspot is more than just map markers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Public transport data has a lot of edge cases
&lt;/h2&gt;

&lt;p&gt;A huge part of the work happens before anything reaches the map.&lt;/p&gt;

&lt;p&gt;Things I’ve encountered include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;missing route shapes&lt;/li&gt;
&lt;li&gt;missing trip IDs&lt;/li&gt;
&lt;li&gt;stale feeds&lt;/li&gt;
&lt;li&gt;duplicate station names&lt;/li&gt;
&lt;li&gt;different operator naming conventions&lt;/li&gt;
&lt;li&gt;multiple platforms&lt;/li&gt;
&lt;li&gt;parent stations&lt;/li&gt;
&lt;li&gt;cross-border services&lt;/li&gt;
&lt;li&gt;vehicles outside their expected route&lt;/li&gt;
&lt;li&gt;impossible coordinates&lt;/li&gt;
&lt;li&gt;deadhead trips that passengers should never see&lt;/li&gt;
&lt;li&gt;different line numbering systems&lt;/li&gt;
&lt;li&gt;services without GPS&lt;/li&gt;
&lt;li&gt;timetable changes during the day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend is probably the most visible part of OVspot.&lt;/p&gt;

&lt;p&gt;But a lot of the project is really about turning inconsistent transport data into something predictable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Detecting bad vehicle data
&lt;/h2&gt;

&lt;p&gt;Another feature I’ve been working on is detecting suspicious positions.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;coordinates at &lt;code&gt;0,0&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;vehicles outside a realistic geographic area&lt;/li&gt;
&lt;li&gt;impossible speeds&lt;/li&gt;
&lt;li&gt;a bus hundreds of meters away from its own route&lt;/li&gt;
&lt;li&gt;stale vehicle updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of blindly trusting every feed message, OVspot tries to validate the data first.&lt;/p&gt;

&lt;p&gt;That is especially important in a live map because one broken coordinate can suddenly put a bus somewhere in Africa.&lt;/p&gt;

&lt;p&gt;Yes, that happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search also became more complicated than expected
&lt;/h2&gt;

&lt;p&gt;OVspot search now needs to understand several completely different things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vehicle numbers&lt;/li&gt;
&lt;li&gt;stations&lt;/li&gt;
&lt;li&gt;stops&lt;/li&gt;
&lt;li&gt;line numbers&lt;/li&gt;
&lt;li&gt;journey numbers&lt;/li&gt;
&lt;li&gt;vehicle blocks / duties&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The useful behavior is not just returning results.&lt;/p&gt;

&lt;p&gt;When you click one, the map should immediately:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;find the right object&lt;/li&gt;
&lt;li&gt;move to it&lt;/li&gt;
&lt;li&gt;zoom to a useful level&lt;/li&gt;
&lt;li&gt;open the relevant popup&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Those tiny interaction details make a huge difference to how usable a live map feels.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;A few things this project has taught me:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Real-time data is rarely simply “live”
&lt;/h3&gt;

&lt;p&gt;You need to understand how old it is, where it came from and how reliable it is.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. GTFS is much more powerful than just departure times
&lt;/h3&gt;

&lt;p&gt;Shapes and &lt;code&gt;shape_dist_traveled&lt;/code&gt; make surprisingly good position estimation possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Map performance becomes a systems problem
&lt;/h3&gt;

&lt;p&gt;Backend payload size, update frequency, rendering strategy and UI complexity all affect each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Small UX wording matters
&lt;/h3&gt;

&lt;p&gt;“Here now” versus “passed” can completely change how users interpret the data.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Edge cases are the project
&lt;/h3&gt;

&lt;p&gt;The normal case is easy.&lt;/p&gt;

&lt;p&gt;The weird cases are where most of the engineering time goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;There is still plenty I want to improve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;better position estimation&lt;/li&gt;
&lt;li&gt;more international trains&lt;/li&gt;
&lt;li&gt;improved ferry data&lt;/li&gt;
&lt;li&gt;better station pages&lt;/li&gt;
&lt;li&gt;more real-time quality indicators&lt;/li&gt;
&lt;li&gt;stronger anomaly detection&lt;/li&gt;
&lt;li&gt;faster mobile performance&lt;/li&gt;
&lt;li&gt;richer vehicle journey information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OVspot is still evolving, and I’m finding new edge cases almost every day.&lt;/p&gt;

&lt;p&gt;If you work with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GTFS&lt;/li&gt;
&lt;li&gt;GTFS-Realtime&lt;/li&gt;
&lt;li&gt;public transport APIs&lt;/li&gt;
&lt;li&gt;mapping&lt;/li&gt;
&lt;li&gt;Leaflet&lt;/li&gt;
&lt;li&gt;real-time systems&lt;/li&gt;
&lt;li&gt;data visualization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d be very interested in your feedback.&lt;/p&gt;

&lt;p&gt;You can try it here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://ovspot.nl" rel="noopener noreferrer"&gt;https://ovspot.nl&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What would you improve first?&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>softwaredevelopment</category>
      <category>webdev</category>
    </item>
    <item>
      <title>OVspot – Live public transport map of the Netherlands</title>
      <dc:creator>nickdenboer7-dev</dc:creator>
      <pubDate>Fri, 25 Sep 2026 09:49:18 +0000</pubDate>
      <link>https://dev.to/nickdenboer7dev/ovspot-live-public-transport-map-of-the-netherlands-48a6</link>
      <guid>https://dev.to/nickdenboer7dev/ovspot-live-public-transport-map-of-the-netherlands-48a6</guid>
      <description>&lt;p&gt;OVspot – Live public transport map of the Netherlands&lt;/p&gt;

&lt;p&gt;I built OVspot, a live map of all public transport in the Netherlands: trains, buses, trams, metro and ferries on one map.&lt;/p&gt;

&lt;p&gt;Technical stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python/Flask backend with SQLite (3GB GTFS database)&lt;/li&gt;
&lt;li&gt;ZeroMQ for KV6 live stream from all operators&lt;/li&gt;
&lt;li&gt;Leaflet with DivIcon labels and smooth movement guards&lt;/li&gt;
&lt;li&gt;International trains fully tracked: ICE, Eurostar, Nightjet, GoVolta, DB, NMBS beyond NL borders&lt;/li&gt;
&lt;li&gt;Shape-distance interpolation for estimated positions without GPS&lt;/li&gt;
&lt;li&gt;PWA with offline fallback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest challenge was KV17 processing blocking the KV6 stream because the JSON file was fully rewritten on every update (18MB). Fixed with a debounce that writes to disk at most once per 5 seconds.&lt;/p&gt;

&lt;p&gt;Source code for the KV6 collector and GTFS parser: &lt;a href="https://github.com/nickdenboer7-dev/ovspot-collector" rel="noopener noreferrer"&gt;https://github.com/nickdenboer7-dev/ovspot-collector&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ovspot.nl" rel="noopener noreferrer"&gt;https://ovspot.nl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the NDOV data infrastructure.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>database</category>
      <category>python</category>
    </item>
  </channel>
</rss>
