Thomas August Ryan

Github Twitter LinkedIn

Hi! People call me Tom.

I'm a Senior Applications Developer at King County.

Working for the County is fun. Recently I built a web application that customized a Microsoft Dynamics 365 instance to collect requests from Escrow companies for information on the Waterwater taxes owed on specific properties.

Up until the end of 2020 this was a paper-based process that every sale had to pass through. With the app I built most requests submitted to the county now receive an automatic response through a Power Automate Flow. You can see some of the GIS integrations built for this project on Github.

Posts Demos Résumé

Number Search

A 206 area code query in Number Search.

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 REST API, and then aggregates them into a local database. You can review the results of ingest process and quickly lookup available phone numbers on the Accelerate Networks website.

Posts About Number Search

Parcel Details

A comparison of the taxes between years in Parcel Details.

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 that used rapid application development tools provided by a vendor to define its business logic and user interface. Since I took over it's maintenance, I've upgraded the project to .NET 4.7.2, lead a redesign of the user interface, rewrote the business logic and views to remove all dependencies on the vendor's tools, and migrated the database calls from ancient ADO.NET Datasets to a micro Object Relational Mapper (ORM) called Dapper.

What I'm most proud of is getting the average page weight down from 6 MBs to less than 200 KBs. This was achieved despite the addition of a responsive CSS framework (Bootstrap 3.3.7), helpful icons, and a variety of new interactive features.

This summer I rebuilt Parcel Details as an ASP.NET Core 2.2 MVC project. It took about 300 hours port the data access layer and then rebuild the business logic and views in the MVC format. To prevent service interruptions this was a pixel perfect rebuild. This required careful testing to verify that there were no UX impacts and the use of ASP.NET Routing middleware to remap the routes of the old app to the structure of the new app.

Posts About Parcel Details

Plats Search

A Plat in Plats.

Plats Search is web app that allows you to look up survey and plat documents related to a tax parcel.

It's an ASP.NET Core 3.0 project that I wrote from the ground up. Razor pages are used to define the views, Bootstrap is used to style the views, and Entity Framework Core 2.2 is the ORM we used to handle database interactions.

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.

Posts 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 looking forward to ski season this winter.

For fun I've reimagined Kitsap County's parcel viewer as a 3D web map built on top of the MapboxGL.js library and the County's open data dumps.

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 October 2019 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.

I'm helping my dad rebuild his old pickup truck. You can see my project tracking repo on GitHub.

This Site

Open this page in the Desktop version of Chrome. Then hit the 'F12' key to open Chrome's inspect mode. Click the 'Network' tab. Finally hit the 'CTRL' and 'F5' keys at the same time to do a hard refresh.

Performance is a feature. Identifying the most effective compromise often begins with a clear understanding of a project's purpose and constraints.

This is a personal website intended to give new friends an introduction to my world. It's not a social network, it's not a news outlet, and it's not SaaS startup.

To that end this page weighs in at about 5 kilobytes and loads with a single request to the web server.

I've opted not use a JavaScript framework, nor a CSS framework, nor even server-side rendering like I'm used to with ASP.NET.

Instead this page is hand-crafted. The style sheet is embedded in the head. And there's no JavaScript, polyfills, or images to speak of.

It's lightning fast and purpose built.