Michael Levine's Online Résumé

Tornado reports data source: SPC WCM
Raw CSV file accessed via hyperlink at bottom of page (1950-2024_actual_tornadoes.csv).
FIPS Codes listed in the above file were then cross-referenced with their respective counties.

THIS PAGE IS IN ACTIVE DEVELOPMENT

The following languages/tools are used on this site:
-HTML/CSS
-Javascript/JQuery
-Bootstrap (site layout/stylizing)
-FontAwesome (special buttons)
-Plotly (tornado charts)
-Leaflet (tornado maps)
-PHP (database querying)
-PostgreSQL (database hosting)

Credits:
-The U.S. Census Bureau for their cartographic boundary files, used in the creating of the tornado county maps
-Eric Celeste for converting these boundary files to GeoJSON, so that they could be used with Leaflet

This web server was built and runs on a DigitalOcean droplet.

Please contact Mike Levine at mikelevine@me.com with any questions or bug reports.

Download Résumé

I am the main developer of this tool.
Note: NOAA account credentials are required to view this project.

MDL NDFD_Stats Viewer

Select a state to view a table of tornado counts by county.
Select a county to view its tornado counts by year.
Select neither to view an interactive map of tornado counts by county for the entire country.


Note: Results that contain "Unknown County", represent SPC tornadoes that have incomplete county info or a FIPS code mismatch. These will be addressed soon, hopefully...

Tornado Stats Area

StormNavigator

Most radar apps show you where a storm is. I built one that tells you where to go to meet it.

I’ve been chasing storms for over a decade. When you chase, you’re constantly doing math in your head — how fast is the storm moving, where’s it headed, and can I actually get there in time? Those are educated guesses, and in the heat of the moment they aren’t always right. StormNavigator does that math for me: I tap a storm and it routes me to a safe intercept point on real roads, updating in real time as the storm’s track changes.

What it does
  • Live radar map — NEXRAD Level II/III reflectivity & velocity, with storm cells and their forecast motion tracks.
  • Storm intercept routing — projects the storm downstream, solves for a reachable intercept point, and routes there on real roads with primary + alternate routes.
  • Storm lead time — every route shows how many minutes ahead of the storm you’ll arrive, so you know if a target is actually safe.
  • Flank targeting — choose which flank to approach the storm from.
 
  • Feasibility guidance — if your flank + lead time + position isn’t achievable, it tells you up front and points to what to change.
  • Turn-by-turn guidance — live navigation that re-routes as the storm evolves.
  • Replay Mode — drive historic tornado events (Moore, Joplin, El Reno…) to practice positioning without chasing live.
How it works

Live weather data (NEXRAD radar + NWS storm tracks) → an intercept engine (storm-motion projection, a fan-scan solver, a feasibility screen, and Valhalla road routing) → the iOS app.

StormNavigator how-it-works pipeline diagram
How it’s built

iOS app: Swift, SwiftUI, MapKit.  Backend: Python + FastAPI on a Linux server.  Routing: the open-source Valhalla engine, driven by a custom intercept solver.  Weather: live NEXRAD decoding rendered to map tiles.

Status

In active development, headed for the App Store. Designed and built solo — iOS app, backend, and algorithms.

Screenshots are from the iOS Simulator in Replay Mode (Moore, OK — May 20, 2013), so the radar and storm data shown is a real historic event replayed for demonstration.