Hi! People call me Tom.
I'm a Master GIS and Data Platforms Engineer at King County's GIS Center.
Right now I am building a web app to manage and edit Road Assets like stop signs and crosswalks using the Next.js framework and ESRI's ArcGIS JS mapping library. The back-end of this app is composed of authenticated Feature Services exposed by ArcGIS Enterprise and a .NET 6 Web API.
This web app is a direct reimplementation of a product built on the now deprecated Silverlight 👀 framework from Microsoft.
Phone Numbers in Bulk
- Investigate the portablity of Local, Tollfree, and Wireless numbers
- Validate Phone Number ownership
- Handles up to 350 Phone Numbers in 20 seconds

When large organizations switch VOIP phone service providers often they bring their existing phone numbers with them. I built this tool that accepts phone numbers in groups of up to a few hundred and investigates each of them to verify that they can be ported to our network. It also shows the user the current ownership of each number so that they can verify and audit the numbers that they are submitting to us before we begin the complex process of bringing them over to our network. Our customers love this tool. 🥰
Number Search
- ~700k Entries Ingested Daily
- Web App Supports HTTP/2
- Average Page Load Time of 340ms

In support of my brother's company, I wrote a console application that scrapes phone numbers that are available for purchase from a pair of SOAP APIs and a few REST API, and then aggregates them into a locally hosted database. You can review the results of the ingest process and quickly lookup available phone numbers on the Accelerate Networks website.
Content About Number Search
- Adding Security Headers to an ASP.NET Core 3.1 MVC Web App
- Adding a Loading Spinner to an ASP.NET Core 3.0 MVC Web App
Parcel Details
- 28.1K Users a Month
- ~50% of Users on IE 11 or Below
- Average Page Load Time of 765ms

My primary responsibility at Kitsap County was maintaining the public parcel information system. Parcel Details is a web app that allows anyone to look up a tax parcel in Kitsap County. Parcel Details was originally an ASP.NET 4 WebForms project; In the summer of 2018 I rebuilt Parcel Details as an ASP.NET Core MVC project. What I'm most proud of is getting the average page weight down from 6 MBs to less than 200 KBs.
Content About Parcel Details
- Malicious Scraping and Account Number Schemes
- Using Dapper and .NET Core to pull data from SQL Server 2000
- How I Converted ADO.NET DataSets into Dapper data models
- Purging the Search Page
- Making Zoning Codes Useful
- Parsing Tax Descriptions
- A Most Disappointing Bug Report Button
- Buttons As Actions
- Modernizing Kitsap County’s Parcel Details
Plats Search
- 1.5K Users a Month
- 25.35ms Server Response Time
- Average Page Load Time of 516ms

Plats Search is web app that allows you to look up survey and plat documents related to a tax parcel. Getting a hold of Plat Records from most Counties in Washington requires going through the formal records request process. Plats Search circumvents this process by allowing people to search for Plats related to a tax parcel and directly download scans of those source documents.
Content About Plats Search
Other Stuff
I like camping. Often I'll go out to the Olympics and stay at sites like Lake Cushman, Deer Park, and the coastline around Lake Ozette. I'm also enjoying ski season this winter. ⛷️
I also know a bit about photography. You can see my work on Flikr. Right now I'm shooting with a Sony RX1R MKII. 📸
As of September 2022 I am the author of the top text result on Google for "How to install RAM". Although I don't write product reviews anymore, I still have a deep interest in computer hardware. 🧑💻