Hi, I'm Geoffrey

A web developer and mapper with a biology background

Butterfly on a Rattlesnake Master flower

Main Projects

App to help plan a garden to attract wildlife through the year

Wildlife garden planner

Made using React with Typescript


Input plant characteristics that attract wildlife (blooms, fruits/seeds, other). Get an intuitive plot of all the plant characteristics through a year to pinpoint time gaps where plants are not attracting wildlife. This lets the planting plan be modified to better attract wildlife.

Web map with interactive charts of Minnesota crop rotations from 2008-2021

Visualizing crop rotations in Minnesota from 2008-2021

Made using Mapbox


Map contains thumbnail charts of crop rotations (corn, soy, hay, spring wheat, sugar beets, dry beans, and all other land uses) in Minnesota at the state and county levels from 2008-2021. Click on any chart to explore an interactive version of it with tooltips.

Block Island glass floats project interactive map

Locations of glass floats found on Block Island, Rhode Island

Made using JavaScript's Leaflet library


Interactive web map with data filtering and background selection to see where glass floats have been found on the island as part of an annual scavenger hunt since 2012.

WordPath

WordPath

Made using JavaScript


Find as many words as you can in the grid in 3 minutes with the integrated timer. When the time's up, you can display a list of all of the possible words in the grid. Clicking on the word in this list highlights its 'WordPath' in the grid from dark green (first letter) to dark purple (last letter). The number of vowels in the grid can be changed too.

Maps made with drone collected imagery

Maps and surface models from drone-collected imagery

Made using WebODM drone mapping software and JavaScript's Leaflet library


Variety of maps and digital surface models made using photographs taken by a drone in several locations to demonstrate its capabilities.

NumberPath

NumberPath

Made using JavaScript


Fill in the grid with consecutive numbers from 1 to 81 (no diagonals allowed), using the pre-filled numbers as a guide. If you're stuck, you can toggle the answer as a trace through the grid.



About

Hi, I'm Geoffrey - I'm an early career web developer and web mapper with a background in environmental biology. I enjoy the type of applied problem solving that goes along with putting together jigsaw puzzles, building with Legos, and planting gardens.

To me, the process of computer programming feels similar, and I like that challenge. I first dabbled in Java in high school, but only understood the true power of being able to write my own computer programs in graduate school when I needed to analyze large datasets from sensors in a customizable way.

During the next several years, I gained a lot of hands-on experience writing reusable scripts for scientific data analysis using MATLAB, R, Python, and bash, to run on local and remote computers (and a lot of associated troubleshooting experience to get those scripts working reliably!)

I realized that the programs I enjoyed writing the most were ones with some sort of visual output, and so I started learning GIS and Javascript to translate my skills to web development and web mapping, which has been a good fit.

Through internships, self-guided projects, classes, and tutorials, I've built a strong foundation in developing web applications using Javascript, Typescript, and React, and web mapping using Mapbox, Leaflet, and flying a drone to collect images for interactive mapping (I'm a licensed Part 107 pilot).

From my Biology research background, I developed skills to successfully manage and complete complex projects as well as a strong work ethic even under challenging field conditions. These provide me with a deep drive to continue learning and expanding my skills in web development and mapping.



Other Projects

Interactive peace messages

Interactive messages of peace from around the world

Made using JavaScript's Lit and SVG libraries


Interactive messages of peace from around the world. Click on a message to see what language it is, and link them all with the color panels to see what happens. Made using custom web components.

Interactive cursor following with lines and colors

Interactive cursor tracker

Made using JavaScript


Line segments rotate to follow your cursor around the screen and change color with cursor distance. Can change the line width and 'glow' effect.

Story map of aquatic invasive species spread in Minnesota

Story map of aquatic invasive species spread in Minnesota

Made using Mapbox


Scrolling story map with information about six different invasive species and maps showing their spread over time.

Valles Caldera topographic map

Topographic map of the Valles Caldera National Preserve, New Mexico

Made using ArcGIS Pro


Topographic map of the area including complex topographic shading and custom color scales.

Longmont city trees

City trees in Longmont, Colorado

Made using ArcMap


Analyzing spatial patterns of city trees in Longmont by tree species and neighborhood age.

cityPopulationTrends

U.S. city population trends

Made using R Shiny


Interactive website to map and identify the population changes of U.S. cities from 2010 to 2019.

tidyTuesday

Tidy Tuesday data analysis

Made using R


Weekly data analysis projects

un-PC

un-PC

Made using R


A quick-to-run, intuitive way to visualize patterns of genetic differentiation across a landscape.

Published in: House and Hahn 2018. Evaluating methods to visualize patterns of genetic differentiation on a landscape. Molecular Ecology Resources. 18:3 448-460

msLandscape

msLandscape

Made using Python, R, and bash


A toolbox to easily generate and visualize landscape-scale population genetic models using the ms simulation program.

Published in: House and Hahn 2018. Evaluating methods to visualize patterns of genetic differentiation on a landscape. Molecular Ecology Resources. 18:3 448-460

Prarie precipitation gradient

Differences in plant-associated fungi from prairies across the Midwest

Made using R


The identity of mycorrhizal fungi in prairie plant roots differs across a precipitation gradient and with site disturbance.

Published in: House and Bever 2018. Disturbance reduces the differentiation of mycorrhizal fungal communities in grasslands along a precipitation gradient. Ecological Applications. 28:3 736-748

Prairie restoration

Plant-associated fungi and biochar in prairie restorations

Made using R


Beneficial fungi in the plant roots improved establishment plant establishment in a prairie restoration more than biochar additions to the soil.

Published in: House and Bever 2019. Biochar soil amendments in prairie restorations do not interfere with benefits from inoculation with native arbuscular mycorrhizal fungi. Restoration Ecology DOI:10.1111/rec.12924

AMF_prairies

Plant-associated fungi in prairie soils with site disturbance

Made using R


Site disturbance affects the types of fungi found in the roots of prairie plant species.

Published in: Koziol, Schultz, House, Bauer, Middleton, and Bever. The Plant Microbiome and Native Plant Restoration: The Example of Native Mycorrhizal Fungi. BioScience, Volume 68, Issue 12, December 2018, Pages 996-1006

Selected as an 'Editor's Choice' article

AMF_DNA_sequence_divergence

High amount of genetic variation in plant-associated fungi

Made using Python and R


The amount of DNA sequence variation differs widely across species of mycorrhizal fungi found in prairie plant roots.

Published in: House, Ekanayake, Ruan, Schütte, Kaonongbua, Fox, Ye, and Bever. Phylogenetically Structured Differences in rRNA Gene Sequence Variation among Species of Arbuscular Mycorrhizal Fungi and Their Implications for Sequence Clustering. Applied and Environmental Microbiology, Volume 82, Issue 16, July 2016, Pages 4921-4930


Contact