<?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: World Eye </title>
    <description>The latest articles on DEV Community by World Eye  (@worldeye_app).</description>
    <link>https://dev.to/worldeye_app</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%2F4245044%2F7022edaf-6636-46e4-862f-a4cc5e8aa428.png</url>
      <title>DEV Community: World Eye </title>
      <link>https://dev.to/worldeye_app</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/worldeye_app"/>
    <language>en</language>
    <item>
      <title>How Live Flight Tracking Actually Works: ADS-B, Explained for Developers</title>
      <dc:creator>World Eye </dc:creator>
      <pubDate>Sat, 14 Nov 2026 20:58:18 +0000</pubDate>
      <link>https://dev.to/worldeye_app/how-live-flight-tracking-actually-works-ads-b-explained-for-developers-oh2</link>
      <guid>https://dev.to/worldeye_app/how-live-flight-tracking-actually-works-ads-b-explained-for-developers-oh2</guid>
      <description>&lt;p&gt;Open any live flight tracker and you'll see ten thousand aircraft moving smoothly across a map, each labelled with a callsign, altitude, speed and destination. It looks like the planes are reporting to the website. In a sense they are — but not to the website, and not over the internet. &lt;strong&gt;Every one of those dots is an aircraft continuously shouting its own position into the sky on a radio frequency, and anyone with a ~$30 receiver can hear it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That system is called ADS-B, and understanding it explains almost everything about how flight tracking works: why coverage is brilliant over Europe and patchy over oceans, why some aircraft vanish, and what you actually have to build if you want to render that firehose on a globe. I run &lt;a href="https://worldeye.app" rel="noopener noreferrer"&gt;WorldEye&lt;/a&gt;, where live flights are one layer on a real-time globe next to cameras, satellites and weather — this is the mental model I wish I'd had before wiring that layer up.&lt;/p&gt;

&lt;h2&gt;
  
  
  ADS-B: the aircraft does the broadcasting
&lt;/h2&gt;

&lt;p&gt;ADS-B stands for &lt;em&gt;Automatic Dependent Surveillance–Broadcast&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automatic&lt;/strong&gt; — it transmits on its own, no interrogation needed (unlike classic radar, where a ground station pings the aircraft).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependent&lt;/strong&gt; — it depends on the aircraft's own navigation systems. The plane works out where it is from GNSS (GPS and friends), then broadcasts that answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Surveillance&lt;/strong&gt; — air traffic control uses it to watch traffic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broadcast&lt;/strong&gt; — it's one-way and unencrypted, addressed to nobody in particular.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Roughly once or twice a second, an equipped aircraft transmits a short packet on &lt;strong&gt;1090 MHz&lt;/strong&gt; (Mode S Extended Squitter). A typical position message contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the aircraft's &lt;strong&gt;ICAO 24-bit address&lt;/strong&gt; (a unique airframe ID, e.g. &lt;code&gt;A0F9D2&lt;/code&gt;),&lt;/li&gt;
&lt;li&gt;latitude / longitude (encoded in a compact format called CPR — more on that below),&lt;/li&gt;
&lt;li&gt;barometric altitude, ground speed and track,&lt;/li&gt;
&lt;li&gt;vertical rate and a squawk code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Separate message types carry the &lt;strong&gt;callsign&lt;/strong&gt; ("UAL123") and aircraft category. Notice what's &lt;em&gt;not&lt;/em&gt; in there: departure and destination airports. Trackers get route information from entirely separate schedule/airline databases and match it to the callsign — which is why the route line is occasionally wrong while the position is dead-on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The CPR trick: positions come in pairs
&lt;/h2&gt;

&lt;p&gt;The lat/lon encoding is the first genuinely interesting engineering detail. To save bits, ADS-B encodes position in &lt;strong&gt;Compact Position Reporting&lt;/strong&gt;: a message by itself only narrows the position down to a grid cell. You need an &lt;strong&gt;even frame and an odd frame&lt;/strong&gt; (the two interleaved grid types), received within a few seconds of each other, to decode an unambiguous global position.&lt;/p&gt;

&lt;p&gt;Practical consequence for anyone building a decoder or consuming a feed: a single packet is not a position. Your pipeline has to pair frames per aircraft, expire stale halves, and handle the local-decode shortcut (if you already know roughly where the aircraft is, one frame plus a reference position is enough). Get the pairing wrong and you'll see aircraft teleport thousands of kilometres — a classic first-week bug.&lt;/p&gt;

&lt;h2&gt;
  
  
  From radio waves to your browser: the aggregation layer
&lt;/h2&gt;

&lt;p&gt;Nobody runs a flight tracker off one receiver. Line-of-sight at 1090 MHz from an aircraft at 38,000 ft reaches roughly 400 km; from a rooftop antenna, far less. The live map exists because of &lt;strong&gt;aggregation networks&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Crowdsourced receivers.&lt;/strong&gt; Thousands of volunteers run cheap SDR receivers (an RTL-SDR dongle and a Raspberry Pi will do) and feed what they hear to aggregator networks. Some aggregators publish open data back — the OpenSky Network is the research-friendly example.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MLAT for the gaps.&lt;/strong&gt; Older transponders don't broadcast position at all — they only reply when interrogated. If four or more receivers hear the same reply, the network can locate the aircraft by &lt;strong&gt;multilateration&lt;/strong&gt;: tiny differences in arrival time turn into a position. That's why some aircraft in a feed have noticeably jumpier tracks — they're MLAT-derived, not ADS-B.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Satellite ADS-B for oceans.&lt;/strong&gt; Ground receivers can't cover mid-Pacific. A newer generation of space-based receivers listens from orbit, which is how oceanic flights stopped disappearing from trackers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cleaning and state tracking.&lt;/strong&gt; The aggregator (or you, if you consume raw messages) maintains a state table per ICAO address: last position, velocity vector, last-seen timestamp. Aircraft that haven't been heard from in ~30–60 seconds get dropped or greyed out. Between updates, positions are &lt;strong&gt;dead-reckoned&lt;/strong&gt; — extrapolated along the velocity vector — which is why planes glide smoothly instead of jumping once a second.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By the time data reaches a web app, it's usually a JSON snapshot or stream like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"icao24"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"a0f9d2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"callsign"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"UAL123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"lat"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;40.6413&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;"lon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;-73.7781&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"altitude_ft"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;35000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"velocity_kts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;452&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"track_deg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;84&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"vertical_rate_fpm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"last_seen_s"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Rendering 10,000 moving planes without melting the browser
&lt;/h2&gt;

&lt;p&gt;The front-end problem is its own article, but the short version from building this on a MapLibre globe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Don't create a DOM element or a map feature per aircraft that you update naively every second.&lt;/strong&gt; Keep aircraft in a single GeoJSON source (or a custom WebGL layer) and update the whole buffer at a throttled cadence — 1–2 updates/second is plenty given dead reckoning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interpolate on the client.&lt;/strong&gt; Store position + velocity + timestamp, then let the render loop extrapolate. The data updates correct the path; the eye never sees steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rotate the icon by &lt;code&gt;track_deg&lt;/code&gt;,&lt;/strong&gt; colour by altitude band, and cluster or cull at low zoom — at world zoom, individual icons are noise; a density view is more honest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expire aggressively.&lt;/strong&gt; A plane that landed and stopped transmitting should fade, not sit frozen on the runway forever.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why planes disappear (and why that's expected)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Coverage holes:&lt;/strong&gt; no receiver in range and no satellite pass = no data. The aircraft is fine; the network is blind.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blocked aircraft:&lt;/strong&gt; owners can ask aggregators to suppress their tail number (programmes like LADD in the US). The broadcast still happens — the aggregator just won't show it to you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Military and sensitive flights&lt;/strong&gt; often transmit partial data or none.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MLAT geometry:&lt;/strong&gt; with fewer than four receivers in earshot, a non-ADS-B aircraft simply can't be positioned.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A good tracker is honest about this: showing "last seen 42s ago" beats pretending the extrapolated dot is truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want to explore this yourself
&lt;/h2&gt;

&lt;p&gt;You don't need permission or an API key to start. An RTL-SDR, a small 1090 MHz antenna and open-source decoder software (&lt;code&gt;dump1090&lt;/code&gt; and friends) will put real aircraft over your own house on your screen in an evening — it's one of the most satisfying weekend builds in radio. From there, open aggregator APIs let you prototype against live global data before you ever maintain a receiver.&lt;/p&gt;

&lt;p&gt;And if you just want to &lt;em&gt;see&lt;/em&gt; the finished picture — ADS-B flights sharing a globe with satellites, weather and 74,229 live public cameras — that's exactly the layer stack at &lt;a href="https://worldeye.app" rel="noopener noreferrer"&gt;worldeye.app&lt;/a&gt;. Open the flights layer, click any dot, and remember: what you're looking at started as a plane shouting its GPS position into the sky, twice a second, to anyone listening.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Questions or corrections? I build WorldEye in public and I'm happy to go deeper on any part of this pipeline in the comments — especially the CPR pairing and the rendering side.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>tutorial</category>
      <category>api</category>
    </item>
    <item>
      <title>Building WorldEye: Bringing 74,000+ Live Cameras and Global Intelligence Together</title>
      <dc:creator>World Eye </dc:creator>
      <pubDate>Sat, 14 Nov 2026 20:04:47 +0000</pubDate>
      <link>https://dev.to/worldeye_app/building-worldeye-bringing-74000-live-cameras-and-global-intelligence-together-24o5</link>
      <guid>https://dev.to/worldeye_app/building-worldeye-bringing-74000-live-cameras-and-global-intelligence-together-24o5</guid>
      <description>&lt;p&gt;The world generates an incredible amount of information every second. Aircraft move across continents, weather systems develop, wildfires spread, earthquakes occur, and millions of cameras capture what’s happening in cities and locations around the globe.&lt;/p&gt;

&lt;p&gt;But accessing this information often means switching between dozens of different websites and tools.&lt;/p&gt;

&lt;p&gt;That’s the problem I wanted to solve with WorldEye.&lt;/p&gt;

&lt;p&gt;🌎 &lt;a href="https://worldeye.app" rel="noopener noreferrer"&gt;https://worldeye.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What is WorldEye?&lt;/p&gt;

&lt;p&gt;WorldEye is a browser-based global exploration and real-time intelligence platform that brings multiple sources of public information together in one interactive experience.&lt;/p&gt;

&lt;p&gt;Instead of navigating separate applications for cameras, aircraft, satellites, weather, and natural disasters, users can explore these different layers through one platform.&lt;/p&gt;

&lt;p&gt;Some of the features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;74,000+ public live cameras: Explore live camera feeds from locations around the world.&lt;/li&gt;
&lt;li&gt;Aircraft tracking: Follow aircraft movements across the globe.&lt;/li&gt;
&lt;li&gt;Satellite tracking: Explore satellite activity and movements.&lt;/li&gt;
&lt;li&gt;Weather radar: Monitor weather systems and changing conditions.&lt;/li&gt;
&lt;li&gt;Wildfire monitoring: Discover active wildfire activity.&lt;/li&gt;
&lt;li&gt;Earthquake tracking: Explore seismic activity around the world.&lt;/li&gt;
&lt;li&gt;Transportation: Access transit and transportation information.&lt;/li&gt;
&lt;li&gt;Interactive 3D globe: Explore locations and information through a unified geographical interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why build something like this?&lt;/p&gt;

&lt;p&gt;One of the biggest opportunities in technology is making complex information easier to access.&lt;/p&gt;

&lt;p&gt;Geospatial intelligence, public camera feeds, transportation data, and environmental monitoring are useful across many different industries.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Travelers can check road and destination conditions.&lt;/li&gt;
&lt;li&gt;Researchers can explore locations and global activity.&lt;/li&gt;
&lt;li&gt;Weather enthusiasts can monitor developing storms.&lt;/li&gt;
&lt;li&gt;Technology enthusiasts can explore aircraft and satellites.&lt;/li&gt;
&lt;li&gt;Businesses can use global information to better understand changing conditions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted to create a platform where these capabilities could exist together.&lt;/p&gt;

&lt;p&gt;Where WorldEye is heading&lt;/p&gt;

&lt;p&gt;WorldEye is an evolving project. I’m continuing to expand its capabilities, improve the user experience, and explore additional data sources and intelligence tools.&lt;/p&gt;

&lt;p&gt;Some areas I’m particularly interested in include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More real-time global data integrations.&lt;/li&gt;
&lt;li&gt;Advanced geospatial intelligence.&lt;/li&gt;
&lt;li&gt;Historical camera recordings and monitoring.&lt;/li&gt;
&lt;li&gt;Custom alerts and notifications.&lt;/li&gt;
&lt;li&gt;Additional transportation and environmental data.&lt;/li&gt;
&lt;li&gt;More powerful tools for researchers and businesses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d love feedback from developers&lt;/p&gt;

&lt;p&gt;I’m interested in hearing from developers, geospatial engineers, API providers, OSINT enthusiasts, and anyone working with real-time data.&lt;/p&gt;

&lt;p&gt;What other data layers would you integrate into a platform like this?&lt;/p&gt;

&lt;p&gt;What APIs, open-source projects, or technologies would you recommend exploring?&lt;/p&gt;

&lt;p&gt;Are there interesting applications for combining live camera feeds with geospatial intelligence?&lt;/p&gt;

&lt;p&gt;I’m actively developing WorldEye and would love to hear what the developer community thinks.&lt;/p&gt;

&lt;p&gt;Explore WorldEye: &lt;a href="https://worldeye.app" rel="noopener noreferrer"&gt;https://worldeye.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s make the world easier to explore. 🌎&lt;/p&gt;

</description>
      <category>godseye</category>
      <category>worldeye</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
