CCRPC

- 5 mins read

Census Downloader


The US Census Bureau’s data and geopgraphical boundaries are accessible through 2 different APIs. Traditionally planners would have to manually join these two tables with their GEOIDs. This process was time consuming, required python scripting knowledge, and GEOIDs would differ from dataset to dataset.

I joined was tasked with producing a QGIS Plugin that automatically combines Census Data and geographical boudnaries with a neat user friendly GUI. The original codebase was 3000+ lines and had limited functionality, extensiblity, and exposed API keys. By rewriting it, I was able to reduce it to under 1000 lines while increasing performance, functionality, and extensibility.

Ameren Demographic Tool


Ameren is the primary energy provider (gas and electric) across south and central Illinois. They have additional resources that have to be allocated to their various supported zip codes.

We produced a webmap that takes desired demographic variables and produces a dynamically generated and weighted priority index to inform Ameren where to focus their funding resources. Additional functionality includes overlays for geographic entities and population density.

Sidewalk Inventory


The Sidewalk Inventory hosts all sidewalks, curb ramps, pedestrian signals, and crosswalks (referred to as features) in Champaign County. Every year the cities would send us a list/map of all features that had improvements within the last year. Over the summer I would manage a team of data collection interns to collect numerous measurements relating to ADA compliance and overall condition.

The interns would collect the data on QField which live updated to the PostgreSQL databse, which was QC’ed back at the office through QGIS. Once QC was complete the data would be processed with python or SQL scripts to produce ADA Compliance and Overall condition scores. When mobile hotspots failed, an offline updating method was used instead. These scores are then converted into MBTiles and served as the Sidewalk Explorer Webmap.

Land Use Inventory


A full inventory of building footprints, parcels, and related data compiled into a single interactive webmap. The data and webmap are closed and not open 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. It aims to develop a data-driven, strategic approach to address traffic safety concerns in the Champaign Counties Urban and Rural Areas within the Champaign-Urbana Metropolitan Planning Area (MPA) boundary. The Urban and Rural Area Safety Plans presents an analysis of crash trends, identifies emphasis areas, and outlines specific strategies for each.

Public input is collected on a live comment map.

Linux Laptops


The D&T developers do all of their work on Linux laptops. When I was onboarded, every developer’s machine was running a different version of Ubuntu, many of them outdated. These systems had all kinds of 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 fix this, I moved the department over to Ublue’s Bluefin, a cloud-native distribution with batteries included for a seamless out of the box developer experience.

The operating system is built as an OCI image in GitHub Actions, then pulled directly onto each device. If something breaks, it fails in GitHub first, and 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 pulls it down, enabling non-intrusive, invisible automatic updates, a significant improvement over the traditional package-based model. If one of these automatic updates does end up breaking something, the user can roll back with rpm-ostree to the previous working version and pin it for as long as necessary until a fix is released. For extended support, the active community and core developers are readily available on GitHub Discussions.

Much of the system is read only, meaning the traditional packages cannot be installed. Instead GUI applications are installed as Flatpaks, CLI tools are managed with Homebrew, and anything else can be added using a Distrobox. If that still doesn’t cover it, packages can be layered with rpm-ostree.

The result is a rock-solid, stable system with opinionated extensible configurations that results in developers doing less sysadmining, and more developing.

Internal Documentation


At our organization, we used DokuWiki for our internal documentation. Its plain‑text design makes it easy to 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 in simple text files that can easily stored on a USB for cold storage for worst case scenarios.

However, DokuWiki’s default setup feels outdated and isn’t very user-friendly for non-technical contributors. Editing demands familiarity with its unique markup language, adding new pages requires a good understanding of its namespace system, and attaching files means navigating the obtuse media manager.

To address these challenges, I implemented a variety of plugins and themes that modernized the wiki and made it more approachable for non‑technical contributors. User accounts were given read/write access acording to division. A visual editor replaced the need to learn DokuWiki’s markdown, while features like spellcheck and paste‑from‑Word expedited documentation imports. Contributors could now create new pages with a GUI menu instead of manual linking. They coudl 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 aid staff through the new features.

Misc


  • Designed and documented a reproducible NixOS Raspberry Pi 4 cluster running Kubernetes (K3s) support to support our existing cloud resources
  • Set up Uptime Kuma to monitor uptime of all internal and external services
  • Created a Home Page for the organization that had 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 bottleneckes
  • Advocated for and instituted the usage of password managers for each developer