RallyCenter
School and club websites with integrated member management, volunteering, communication, and administration.

Independent engineering practice focused on platform modernization, operational tooling, and distributed systems.
Handcrafted code. Mildly obsessive.
Software built and operated by FussyMonkey
School and club websites with integrated member management, volunteering, communication, and administration.
Engineering problems solved
# .github/workflows/release.yml
name: Release Pipeline
on:
push:
tags: ['v*.*.*']
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Security Scanner
run: trivy image --severity HIGH,CRITICAL $IMAGE_NAME
- name: Deploy Canary (10% traffic)
run: helm upgrade --install --set image.tag=${{ github.ref_name }} canary-gateway ./charts/gateway
- name: Verify Health Metrics
run: ./scripts/verify-health.sh --timeout=300sAutomated a multi-stage manual release workflow that had become a recurring operational bottleneck. Reduced deployment friction, improved repeatability, and removed several high-risk manual steps.
// gateway/middleware/strangler.go
package middleware
import (
"net/http"
"strings"
)
// RouteTraffic directs traffic based on migration status
func RouteTraffic(legacy, modernized http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Modernized billing system cutover is 100% complete
if strings.HasPrefix(r.URL.Path, "/api/v1/billing/") {
modernized.ServeHTTP(w, r)
return
}
// Default fallback routing to legacy monolith
legacy.ServeHTTP(w, r)
})
}Incremental migration of a legacy monolith to a maintainable service architecture. Focused on operational stability during transition — zero-downtime cutover with rollback capability at every stage.
How I operate and when we should talk
I don't advocate for complete rewrites or trendy architectures. I value stable, boring infrastructure that continues to run long after the original deployment heroics wear off.
Automation is only useful if it matches the team's cognitive model. Clumsy automation is worse than manual execution; tooling must feel like a natural extension of your workflow.
Every production system is slightly messy. The goal isn't academic purity; the goal is creating interfaces, boundaries, and tests that make the mess safe to modify and operate.