Blake Howell / Backend Software Engineer

Backend systems,
built to be trusted.

Mid-level backend engineer experienced in large-scale, correctness-critical payroll systems where accuracy, reliability, and maintainability are essential. Strengths include complex business logic, backend modernisation, performance-conscious development, and production support.

01 / Experience

Work where correctness counts.

–Current

Software Engineer

Paycom

  • Backend developer and code owner for Paycom’s payroll engine, a C#/.NET, MySQL, and RabbitMQ system that processes millions of payroll calculations each day.
  • Contributed significantly to migrating the payroll engine from FoxPro to C#/.NET while supporting ongoing compliance updates and production changes.
  • Developed and maintained payroll calculation logic, improving runtime validation, monitoring, and production reliability.

–

Systems Engineer

Search Pros Staffing

  • Supported Boeing as a contractor, reviewing engineering documentation and producing wiring diagrams for military aircraft systems.

02 / Selected Project

TTRPG Battle Tracker

Personal project / Local application / In progress

Server-rendered software for keeping complex tabletop encounters moving.

A Rust application for creating stat blocks, organizing encounters, and tracking combatant health, built with Axum, Askama, HTMX, SQLx, and a local SQLite database.

The application follows a vertical slice architecture, keeping each page’s routes, handlers, templates, and data models together. The goal is straightforward implementation with minimal architectural overhead.

Editing a stat block creates a new version with its own identifier. Existing encounters continue referencing the original, allowing the stat block library to evolve without changing encounters already underway.

The core local workflows are implemented. Shared stat block libraries and hosted deployment remain future work.

03 / Toolkit

Skills built around the system.

Backend development C#/.NET

Maintain and extend complex calculation software, implement functionality, resolve defects, and investigate production issues. Combine unit tests and manual verification with monitoring and diagnostic tooling to support correctness and make unexpected behavior easier to investigate.

Database design and performance MySQL

Design schemas and optimize database access, balancing query performance, write overhead, and resource usage. Comfortable with indexing, partitioning, and helping teammates work through SQL questions.

Messaging RabbitMQ

Set up queues and implement message publishing and consumption as part of backend application development.

Development environments Linux, Docker, deployment pipelines

Use Linux daily and work with containers and deployment pipelines as project needs arise, including adding applications to deployment workflows and updating configuration.

Automation Python

Build small utilities that automate repetitive development tasks, support local testing environments, and simplify frequently used API interactions.

Project experience Rust, server-rendered applications

Build server-rendered applications using Axum, Askama, HTMX, SQLx, and SQLite. Explore vertical slice architecture, explicit data modeling, and simple implementations through the battle tracker.

Additional familiarity: Java, C++ (academic embedded projects), MATLAB.

04 / Background

Engineering beyond the job.

Education

University of Oklahoma

B.S. Computer Engineering

Relevant coursework: Data Structures, Computer Hardware Design, Computer Architecture, Electronics Laboratory

How I build

I prefer working close to the hardware, with statically typed, compiled languages and deliberate control over memory. I aim to avoid dynamic allocations and understand roughly what my code asks the machine to do. That awareness helps me spot unnecessary work and straightforward opportunities to improve performance.

I favor explicit assumptions, backed by assertions, and code that makes state and behavior easy to follow. I introduce abstractions when a concrete pain point makes their immediate benefit clear.

I value locality of behavior over strict adherence to the single responsibility principle: code that changes together should be easy to find and understand together. Too many layers of indirection can make software harder to maintain, even when maintainability was the reason for introducing them.

For CRUD-style applications, I prefer server-rendered HTML, adding client-side behavior where it improves the experience. My goal is a simple architecture whose complexity is justified by the problem it solves.