CCRPC
Census Downloader
The U.S. Census Bureau’s data and geographical boundaries are accessible through two different APIs. Traditionally, planners had to manually join these two tables using their GEOIDs—a process that was time-consuming, required Python scripting knowledge, and was complicated by inconsistent GEOID formats across datasets.
I was tasked with developing a QGIS Plugin that automatically combined Census data and geographical boundaries through a clean, user-friendly GUI. The original codebase contained over 3,000 lines and suffered from limited functionality, poor extensibility, and exposed API keys. By rewriting it, I reduced the codebase to under 1,000 lines while improving performance, functionality, and extensibility.
Ameren Demographic Tool
Ameren is the primary energy provider—both gas and electric—across southern and central Illinois. The company allocates additional resources to its various supported ZIP codes.
We developed a webmap that processes selected demographic variables to generate a dynamic, weighted priority index, helping Ameren identify where to focus its funding resources. Additional features include overlays for geographic entities and population density.
Sidewalk Inventory
The Sidewalk Inventory includes all sidewalks, curb ramps, pedestrian signals, and crosswalks (collectively referred to as features) in Champaign County. Each year, the cities provide a list or map of all features that have undergone improvements within the past year. Over the summer, I managed a team of data collection interns who gathered numerous measurements related to ADA compliance and overall condition.
The interns collected data using QField, which live-updated to the PostgreSQL database and was quality-checked (QC’ed) back at the office using QGIS. Once QC was complete, the data was processed with Python or SQL scripts to generate ADA compliance and overall condition scores. When mobile hotspots failed, an offline updating method was used instead. These scores were then converted into MBTiles and published as the Sidewalk Explorer WebMap.
Land Use Inventory
A complete inventory of building footprints, parcels, and related data was compiled into a single interactive web map. The data and web map are private and not available to the public.
SS4A (Safe Streets for All)
The Champaign-Urbana Urban and Rural Area Safety Plans were developed by staff from the Champaign-Urbana Urban Area Transportation Study (CUUATS), a program of CCRPC. The plans aim to establish a data-driven, strategic approach to address traffic safety concerns in the urban and rural areas of Champaign County within the Champaign-Urbana Metropolitan Planning Area (MPA) boundary. The Urban and Rural Area Safety Plans analyze crash trends, identify emphasis areas, and outline specific strategies for each.
Public input is gathered through a live comment map.
Linux Laptops
The D&T developers do all their work on Linux laptops. When I was onboarded, each developer’s machine was running a different version of Ubuntu—many of them outdated. These systems had numerous issues: broken dependencies, nonfunctional Wi‑Fi drivers, unreliable password caching, Active Directory integration problems, and more. On top of that, the setup scripts were outdated and no longer worked. To resolve this, I migrated the department to Ublue’s Bluefin, a cloud-native distribution that provides a seamless, out-of-the-box developer experience.
The operating system is built as an OCI image in GitHub Actions and then pulled directly onto each device. If something breaks, the failure occurs in GitHub first, while the laptop simply rolls back to the last working image using atomic rollbacks. The system automatically checks for a new image once a week. If one is available, it downloads and installs it, enabling nonintrusive, invisible automatic updates—a major improvement over the traditional package-based model. If an automatic update causes an issue, the user can roll back to the previous working version using rpm‑ostree and pin it until a fix is released. For extended support, the active community and core developers are readily available on GitHub Discussions.
Because much of the system is read-only, traditional packages cannot be installed directly. Instead, GUI applications are installed as Flatpaks, CLI tools are managed with Homebrew, and anything else can be added using a Distrobox. If additional customization is needed, packages can be layered using rpm‑ostree.
The result is a rock-solid, stable system with opinionated yet extensible configurations that allow developers to spend less time on system administration and more time actually developing.
Internal Documentation
At our organization, we used DokuWiki for internal documentation. Its plain-text design makes it extremely portable and dependable. Unlike database-driven systems, if a server goes down, the instructions for fixing it aren’t trapped inside—they’re accessible as simple text files that can be easily stored on a USB drive for cold storage in worst-case scenarios.
However, DokuWiki’s default setup feels outdated and isn’t very user-friendly for nontechnical contributors. Editing requires familiarity with its unique markup language, adding new pages demands a solid understanding of its namespace system, and attaching files involves navigating the cumbersome media manager.
To address these challenges, I implemented a variety of plugins and themes to modernize the wiki and make it more approachable for nontechnical users. User accounts were assigned read/write access based on division. A visual editor replaced the need to learn DokuWiki’s markup, while features like spellcheck and paste-from-Word streamlined content imports. Contributors could now create new pages through a GUI menu instead of manual linking. They could also paste images directly into text, take advantage of extras like footnotes, image galleries, and ready-made templates for recurring needs such as grant outlines. Extensive guides were created to help staff navigate and take full advantage of the new features.
Misc
- Designed and documented a reproducible NixOS Raspberry Pi 4 cluster running Kubernetes (K3s) to support our existing cloud resources.
- Set up Uptime Kuma to monitor the uptime of all internal and external services.
- Created a home page for the organization containing all relevant bookmarks, documentation, and service links for easy access.
- Implemented a Speedtest dashboard to monitor upload speed, download speed, latency, and jitter to diagnose and alleviate network bottlenecks.
- Advocated for and instituted the use of password managers for each developer.