perrygeo

About | Articles | CV

Matthew T. Perry

Software Engineer, Geospatial data and distributed systems.

One-page Resume (pdf)

Professional Experience

TileDB, Cambridge, MA (remote). Principal Software Engineer. June 2022 - present. As an engineer on the Geospatial team, I work to support the development of geospatial applications using TileDB

  • Testing TileDB integrations with GDAL, OGR, and PDAL and related Python wrapper libraries.
  • Writing web services in Golang to serve TileDB data through standard geospatial APIs.
  • Building distributed systems for processing satellite, lidar and geometry datasets on TileDB Cloud.

Descartes Labs, Santa Fe, NM (remote). Senior Software Engineer. Mar 2021 - Feb 2022. As a senior engineer on the Descartes Labs Platform team, my roles include:

  • Bugfixes, QA testing, and customer support for our web services and open source clients, primarily in Python and Rust.
  • Lead the design and implementation of Tables, our spatial-relational data management service backed by PostGIS.
  • Implemented monitoring and observability tools, replication and load balancing for high-traffic Postgresql instances
  • Managed a petabyte-scale distributed system using Kubernetes on GCP and AWS.

Descartes Labs, Santa Fe, NM (remote). Senior Software Engineer. Mar 2021 - present. As a senior engineer on the Descartes Labs Platform team, my roles include:

  • Bugfixes, QA testing, and customer support for our web services and open source clients, primarily in Python and Rust.
  • Lead the design and implementation of Tables, our spatial-relational data management service backed by PostGIS.
  • Implemented monitoring and observability tools, replication and load balancing for high-traffic Postgresql instances
  • Managed a petabyte-scale distributed system using Kubernetes on GCP and AWS.

Aurora Insight, Denver, CO (hybrid remote). Senior Software Engineer. Aug 2019 - Aug 2020. A remote sensing approach to mapping wireless network infrastructure. My roles included:

  • Implemented a self-serve application platform on AWS to facilitate rapid development of internal data science applications.
  • Implemented a large scale data processing pipeline to analyze raw data and store the results in our data warehouse
  • Developed a digital invbentory system to track remotely sensed data assets and index them for easy access
  • Tested and refined our digital signal processing libraries and built a CI/CD system to increase quality control and development speed.

Timescale, New York, NY (remote). Solutions Engineer. Jan 2021 - July 2021. Customer-facing role to increase adoption of TimescaleDB, a time series database based on Postgresql.

  • Pre-sales engineering to understand customer requirements, provide on-site support for proof-of-concept projects.
  • Developer relations, blogging, presentations, and regular office hours to provide community support.
  • Implemented web applications to demonstrate the integration of TimescaleDB with PostGIS to create a robust spatial-temporal time series database.

Mapbox, San Fransisco, CA (remote). Senior Software Engineer. Oct 2015 - present. As a member of the Satellite team, a small team responsible for building and maintaining Pixel Monster (PXM), our distributed cloud processing service for satellite imagery and aerial photography. My roles included:

  • Developing Python modules for image processing tasks; histogram matching, cloud detection, best-pixel mosaicing
  • Configuring AWS cloud services (S3, ECS, EC2, SQS, Elasticache, Cloudformation)
  • Building and deploying applications with Docker containers
  • Code profiling and debugging to reduce performance bottlenecks
  • Dialing our github workflows for better technical communication
  • Future-proofing our codebase (Python 3 compatibility, security updates)

Ecotrust, Portland, OR. Senior Applications Developer. Apr 2011 – Jan 2015. Lead software developer for Ecotrust. Responsible for developing software tools for data-driven decisions and solutions for environmental and economic prosperity.

  • Managed a team of four programmers and served as technical lead on over a dozen projects including:
  • Madrona: our signature framework for collaborative geospatial decision support tools
  • Forest Scenario Planner: a public tool to analyze economic and environmental impacts of alternative timber management strategies.
  • Prioritization Tool: a framework using simulated annealing for optimizing conservation resources
  • Worked closely with our GIS team to build ArcPy scripting, C# .NET and ArcGIS Server capacity
  • Streamlined release procedures through devops automation, test-driven development, virtual machines and continuous integration.
  • Worked with current and prospective clients to develop specifications, timelines and project budgets

MarineMap Consortium, Santa Barbara, CA (remote). Geospatial Web Application Developer. Oct 2009 – Mar 2011. Responsible for developing web-based spatial decision support tools for collaborative, science-based marine planning.

  • Developed new software features for 3-dimensional browser-based maps
  • Created full-coverage automated testing suite.
  • Worked in Python using the Django web framework for server side features.
  • Worked with Javascript and Google Earth API for client side user interface.
  • Maintained documentation (technical and end-user).
  • Integrated spatially-explicit models into common interface and data model.

Geosyntec Consultants, Santa Barbara, CA. GIS Analyst/Manager. Jan 2007 – Oct 2009. Responsible for managing the GIS and Data Management department of an environmental consulting firm. Primary duties involve coordinating the management, visualization and analysis of environmental data.

  • Managed and trained a team of three technical staff members.
  • Served on the company-wide GIS and Database Action Group Steering Committee.
  • Created Advanced GIS Workshop materials for internal training.
  • Developed cartographic products using ArcMap.
  • Web-based application development with MapServer.
  • Automated procedures for data management/processing with VB, C#, Python, GDAL.
  • Databases design and implementation with SQLServer and MS Access.
  • LIDAR terrain analysis for hydrologic modeling with GRASS and ArcGIS Spatial Analyst.
  • Remote sensing to derive land use and hydrologic model inputs.
  • Geostatistical evaluation of soil and water sample data.
  • Statistical summaries of analytical chemical data.

National Center for Ecological Analysis and Synthesis, Santa Barbara, CA. GIS Analyst and Software Engineer. Dec 2005 – Jan 2007. Primary duties included developing spatial models for evaluating land-based threats to marine ecosystems and developing metadata software.

  • Lead developer of metadata software providing spatial functionality to an ecological data repository.
  • Developed GIS models to estimate sedimentation, nutrient and pesticide loading for major river basins.
  • Organized and processed global datasets in support of marine ecology study.
  • Optimized raster processing algorithms in various software packages.

HostGIS, Arcata, CA. GIS Developer/Consultant. Mar 2003 – Dec 2005. Lead GIS developer for web GIS hosting and consulting company.

  • Programmed PHP, Python, Mapserver and Javascript applications for web-based data processing, collaborative editing and visualization.
  • Developed MWW, a reusable web-based javascript library for interactive web mapping.
  • Integrated spatial functionality into existing software systems.
  • Processed legacy datasets from a variety of sources into usable GIS formats.
  • Geospatial database design and implementation with PostGIS.

Humboldt State University, Arcata, CA. Graduate Research/Teaching Assistant. Jan 2002 – May 2005. As a graduate student at HSU, assisted with various research projects and taught four semesters of GIS lab courses.

  • Designed system for real-time data, web-based query and visualization of water quality sensors in Humboldt Bay.
  • Taught and developed materials for GIS lab courses for skill levels ranging from introductory to advanced.
  • Created an extensive, web-based spatial data library for the Klamath River Basin.
  • Vegetation mapping using field surveys, remote sensing and aerial photo analysis.
  • Digitized historical data from hardcopy maps and aerial photographs.

National Institute for Personal Finance Employee Education, Blacksburg, VA. Research Assistant. Jan 1999 – July 2000.

Our survey research team studied the detrimental impacts of financial stress in the workplace and quantified return on investment for educating employees on financial matters.

  • Managed survey databases, performed statistical analysis using SPSS and SAS.
  • Edited newsletter articles, designed grant proposals, and drafted surveys for research projects.

Education

Humboldt State University. Arcata, CA. M.S., Natural Resource Planning and Interpretation, 2005. Thesis topic: Design and Evaluation of a Web Mapping Service for the Klamath River Basin.

Humboldt State University. Arcata, CA. Certificate of Study, Geographic Information Systems and Remote Sensing. 2004.

Virginia Tech. Blacksburg, VA. B.S., Psychology/Statistics, 2000. Emphasis: Survey research design in industrial/organization psychology

Technical Skills

  • Geospatial: QGIS, GDAL/OGR, PostGIS, GeoPandas, Raster, Fiona, Shapely, Mapnik
  • Programming: Python, Javascript, C/C++, Bash, Clojure, SQL
  • Front-end: D3.js, React, Leaflet, Mapbox GLJS, OpenLayers, Angular2
  • Back-end: Nginx, Django, Flask
  • Modeling: SciPy, Scikit-Learn, Numpy, EVS/MVS, FVS, Marxan
  • Database: MS Access, Postgresql/PostGIS, Redis, SQLite
  • IT: Ansible, Linux, Mac OSX, Docker, Amazon AWS
  • Statistics: R, Machine Learning, SALib, Bayesian inference, Discrete Optimization
  • Domain Knowldege: Forestry (optimization, growth and yield), Ecology, Climate

Software Projects (Lead Developer)

  • simanneal
  • harvestscheduler
  • growth-yield-batch
  • pyimpute
  • rasterstats
  • madrona
  • python-mbtiles
  • leaflet-simple-csv

Software Projects (Contributor)

  • geopandas: Spatial joins and intersections in python data frames.
  • GDAL: Original author of gdaldem.
  • Openlayers: UTFGrid support for web mapping client.
  • Tilestache: Redis caching backend.

Public Applications

  • Gravel Mine Restoration DST: Site evaluation using bayseian belief networks.
  • Forest Planner: Visualize alternative forest management strategies.
  • Priorities Tool: Optimization of multi-objective spatial planning.
  • Madrona: Framework for building web based spatial decision support tools.
  • MarineMap: Collaborative tools for marine spatial planning.
  • Global marine threats: research project quantifying the human threats to marine ecosystems.

Presentations

Matthew T. Perry. Spatial-Temporal Prediction of Climate Change Impacts. Free and Open Source Software for Geospatial Conference, 2014, Portland, OR.

Matthew T. Perry. Spatial-Temporal Prediction of Climate Change Impacts. Scientific Python Conference. 2014, Austin, TX.

Matthew T. Perry. Introduction to Open Source GIS. Western Forestry and Conservation Association, 2012 Annual Field Technology Conference. Portland, OR, Sept 2012.

Matthew T. Perry, Tim Welch. Introducing the Madrona framework. Oregon Central Coast Web Mapping Meeting. Newport, OR, May 2012.

Matthew T. Perry, Doug Renwick. Online GIS, Internet Mapping: Where it is and where it’s going next. CalGIS Conference, Santa Barbara, CA, 2006.

Matthew T. Perry, Gregor Mosheh. Web-assisted GIS hosting services. FOSS GIS Conference, Minneapolis, MN, 2005.

Matthew T. Perry, Doug Renwick. Integrating Mapserver with Online Data Services. Open-Source GIS Conference, Ottawa, ON, 2004.

Matthew T. Perry, Steven J. Steinberg. Trinity River Information Network. Mapserver Conference, Minneapolis, MN, 2003.

Publications

David Diaz, Matthew Perry, Jocelyn Tutak, Ryan Hodges, Mike Mertens. (2014). Potential climate change impacts on management outcomes for western Oregon BLM forestlands simulated using Climate-FVS. Report to Bureau of Land Management. Ecotrust, Portland, OR.

David Diaz, Matthew Perry, Ryan Hodges, Mike Mertens, Jocelyn Tutak. (2014). Projected Changes in Habitat Suitability for Tree Species in Western Oregon due to Climate Change. Report to Bureau of Land Management. Ecotrust, Portland, OR.

Benjamin S. Halpern, Colin M. Ebert, Carrie V. Kappel, Elizabeth M.P. Madin, Fiorenza Micheli, Matthew Perry, Kimberly A. Selkoe, Shaun Walbridge (2009). Global priority areas for incorporating land-sea connections in marine conservation. Conservation Letters, vol. 2, issue 4.

Benjamin S. Halpern, Shaun Walbridge, Kimberly A. Selkoe, Carrie V. Kappel, Fiorenza Micheli, Caterina DAgrosa, John F. Bruno, Kenneth S. Casey, Colin Ebert, Helen E. Fox, Rod Fujita, Dennis Heinemann, Hunter S. Lenihan, Elizabeth M.P. Madin, Matthew T. Perry, Elizabeth R. Selig, Mark Spalding, Robert Steneck, Reg Watson (2008). A global map of human impact on marine ecosystems. Science, vol. 319

Matthew T. Perry. Design and Evaluation of a Web Mapping Service for the Klamath River Basin. Master’s Thesis, Humboldt State University, August 2005.

Awards

Other Experience

  • Writer for perrygeo.com - a blog about open source GIS and data science.
Title: Projects Date: 2010-12-03 10:20 save_as: projects.html

Current Projects

In my spare time, I maintain several active open source projects including - The rasterstats Python library for zonal statistics. - The simanneal Python library for Simulated Annealing optimization. - A set of Docker images for GDAL and Postgres - For a full list of personal projects, check out my Github page. Last but not least, I occasionally write technical articles for this site - perrygeo.com.

Open Source

As a contributor: - Rasterio - Fiona - GeoPandas - Starspan - GDAL As primary author: - harvestscheduler - growth-yield-batch - pyimpute - madrona - python-mbtiles - leaflet-simple-csv - pairing - Python library for Cantor pairing

Past Projects

Remote Sensing

- Pixelmonster (PXM), the distributed image processing pipeline used by the Mapbox Imagery team. - mapbox.satellite basemap - Landsat Live

Data Visualization

My recent work has explored the use of D3.js for buidling interactive user experiences that go beyond the map and allow deep exploration of the underlying data. - PLCIT, USFWS - Open Payments - Agro-ecological zone viewer - Climate Explorer - Daylight

Decision Support Systems

* Our Florida Reefs * Marine Map * Forest Planner * Aquatic Priorities Tool * COGS ROI * Floodplain Restoration

Research

* Scipy Presentation * Foss4G * Science * BLM

Data Analyses

* BLM Climate * Sensitivity Analysis * Discrete optimization * Growth Yield Batch * Harvest Scheduler * Climate Impacts * Machine Learning for supervised classification