README.md

August 6, 2026 · View on GitHub

Noah Weidig

GIS Analyst · Data Scientist
Translating complex geospatial data into clear insight about how our world changes.

noahweidig.com  •  Blog (Substack)  •  Research  •  noah@noahweidig.com


About

I leverage remote sensing, GIS, and data science to translate complex data into clear insight about how our world changes. I believe understanding patterns through time gives people the power to see beyond the moment and shape a more intentional world.

Currently a GIS & Remote Sensing Research Associate at the University of Florida, with a focus on wildland-urban interface (WUI) risk, land-use change, and spatial decision-making.

Actively seeking Data Scientist or GIS Analyst roles.

📄 Download Resume


ProjectDescriptionLink
DataVizPlotly gallery of data visualizationsView Gallery
FireR PackageR package for U.S. fire dataView Package
Map ExplorerCollection of interactive mapsSee Gallery
WUI Wildfire ExplorerGEE app for visualizing wildfire riskLaunch Tool
Image StudioShiny App for interactive image editingLaunch Tool
MapLabSimple GIS software built for non-GIS usersLaunch Tool
QuickPlotShiny app for no-code data visualizationLaunch Tool
ChartifyRTutorials for data analysis and visualization in RRead Blog
TIGER RoadsUS Census TIGER Roads in Google Earth EngineView Catalog
Wildfire RiskWildfire risk visualizer by stateLaunch Tool
WordCloud StudioWord cloud generatorLaunch Tool
Less.A personal exploration of minimalismView Site
FastStatsFast, client-side analytics in the browserOpen Tool
FrameLabA tool for browser framingLaunch Tool
Lorem ChartsumA placeholder chart APISee API
R Project TemplateA template for creating R projectsLaunch Tool
ShelfMy personal reading journalSee Journal

Tech Stack

Languages

R Python JavaScript SQL

Markup

Markdown LaTeX HTML CSS

Libraries & Frameworks

tidyverse pandas NumPy Plotly

GIS & Remote Sensing

ArcGIS Pro Google Earth Engine QGIS GDAL sf terra GeoPandas OSM

Workflows

Git GitHub GitHub Actions Conda


Experience

GIS & Remote Sensing Research Associate — University of Florida (Aug 2025 – Present) Led GIS-based analysis assessing spatial patterns and land-use impacts on community and regional risk management.

Graduate Research Assistant — University of Florida (Aug 2023 – Aug 2025) Conducted geospatial analysis to support wildland-urban interface and emergency management decision-making.

Research Assistant Intern — USDA Agricultural Research Service (May 2023 – Aug 2023) Collected, cleaned, and validated spatial datasets for GIS-based risk assessment and land-use planning.

Fire & Recreation Intern — Student Conservation Association / US Forest Service (Jan 2023 – May 2023) Applied GIS to support spatial planning and risk assessment for land management projects.

Research Assistant — University of Cincinnati (May 2022 – Jan 2023) Quantitative data analysis for biomedical research using statistical modeling and visualization.

CAD Design Specialist — Garage Living (Sep 2021 – Jun 2022) Developed CAD drawings and project plans for residential remodeling projects.

Research Assistant — Northern Kentucky University (Feb 2020 – May 2022) Collected and analyzed complex ecological datasets using spatial and statistical methods.

Elections Data Specialist — Boone County Clerk's Office (Aug 2017 – Feb 2020) Managed and analyzed precinct-level GIS data for voter registration and electoral planning.


Education

M.S. Forest Resources & Conservation — University of Florida (2023–2025) Thesis: Large Wildfire Patterns in the WUI · 4.0 GPA

B.S. Biological Sciences — Northern Kentucky University (2018–2022) Ecology / Evolution / Organismal Track · 4.0 GPA


Awards & Grants

AwardOrganizationYearAmount
Outstanding Thesis in Natural ResourcesUniversity of Florida, College of Agricultural & Life Sciences20262025 Academic Year
Outstanding Thesis in Forest Resources & ConservationUniversity of Florida, School of Forest, Fisheries, & Geomatic Sciences20262025 Academic Year
Outstanding Teaching Assistant of the YearUniversity of Florida, School of Forest, Fisheries, and Geomatic Sciences20252024 Academic Year
Best Student PresentationIALE-NA2025$300
BioLEAPS Travel GrantIALE-NA2025$1,650
Student Travel GrantIALE-NA2025$850
Doris and Earl Lowe and Verna Lowe ScholarshipUF CALS2024$2,000
IFAS Travel GrantUF IFAS2024$250
Graduate Research AssistantshipUF CALS2023$27,500/yr (2 yrs)
Outstanding Graduate in BiologyNKU2022$250
1st Place, Undergraduate PosterEntomological Society of America2021$75
Dr. Carol Swarts Milburn Research FellowshipNKU2020$3,500
President's ListNKU2018–20224.0 GPA

Interests

Applied AI · Geospatial Analytics · Spatial Data Science · Data Visualization · Statistical Modeling · Machine Learning · Bayesian Analysis · Remote Sensing · Reproducible Research · Data Storytelling · Quantitative Ecology · Forecasting · Land Use Change · Social-Ecological Systems


This Site

Built with Quarto and deployed to GitHub Pages — no external theme dependency. The landing page, listings (custom EJS templates in _ejs/), and light/dark SCSS themes (assets/) all live in this repo. Publications under publications/ are regenerated from Zotero on the 1st & 15th by .github/workflows/update-pubs.yml (do not edit by hand); every push to main — including the Zotero sync commit — re-renders and publishes via .github/workflows/publish.yml.

quarto preview                 # local dev server
quarto render                  # build to _site/
node scripts/update-pubs.js    # refresh publications from Zotero
``$

### \text{Open} \text{Graph} \text{cards}

\text{Every} \text{page} \text{gets} \text{a} 1200 \times 630 \text{social}-\text{preview} \text{card}, \text{generated} \text{automatically} \text{as} \text{part} \text{of} $quarto render`  nothing to update by hand when titles or descriptions change.

- `scripts/generate-og.ts` runs as a Quarto **post-render** step (wired up in `_quarto.yml`  `project.post-render`). Quarto executes it with its bundled Deno, so there is nothing to install; for standalone debugging use `node --experimental-strip-types scripts/generate-og.ts` after a render.
- The script walks the rendered HTML in `_site/`, reads each page's title, description, author, and category/section from the rendered `<head>`, and writes a card to `_site/assets/og/<slug>.png` (e.g. `blog/welcome/` → `blog-welcome.png`).
- Cards are **PNG** (1200×630, ~0.7 MB, well under every platform's 5 MB ceiling). Every card shares one background — the brand amber → magenta → teal gradient under the site's own `assets/media/topography.svg` texture — with the page's kicker, title, description, and a section-specific call to action ("Read the post →") set in bold white Inter over a contrast scrim, inside a 110 px safe-area margin so nothing is clipped by a platform's crop.
- Rasterization uses [resvg](https://github.com/yisibl/resvg-js) compiled to WebAssembly plus static Inter faces, both vendored in `scripts/vendor/` (see the README there) so `quarto render` stays the only build step — no `npm install`, no network access at build time.
- After writing each card, the script upserts the page's Open Graph set **inside `<head>` only** — `og:title`, `og:description`, `og:url`, `og:type`, `og:site_name`, `og:image` plus `og:image:type`/`width`/`height`/`alt`, and `twitter:card=summary_large_image` with `twitter:title`/`description`/`image`  using absolute URLs built from `site-url` in `_quarto.yml`. Any `og:`/`twitter:` tags that end up in `<body>`, where no unfurler looks, are stripped.

---

MIT © 2026 Noah Weidig