About
I started as an administrative assistant to an IT director. I write software now. In between came the help desk, product support, website maintenance, SCORM QA, and project management, mostly overlapping rather than replacing each other, because it's a small company and everyone wears several hats.
I learned the stack on my own time by building something that would touch on every part of the stack. I enjoyed that project and found a real use-case for it so continued long after the basic learning project it was. MyBooks is six ASP.NET Core services behind an Angular front end, and every part of it is mine, from the schema to the Playwright suite. I write code professionally now, but my own repositories are the work I can actually hand you.
QA left me with an instinct about how things go wrong quietly. I build things that speak up when they're wrong. For example, I've run fifty thousand dice rolls through a chi-squared test, because a physics engine won't tell you when its dice are loaded.
I have made a practice of constantly updating any decisions I've made about my code. I paused MyBooks rather than rebuild the same ingest path a fourth time around a provider that kept moving it, and I cut PDF conversion instead of shipping it at half quality. I will also look for new and better ways to do things. Sometimes that's a tool, which is where Automation Assist came from. Taking over our CRM turned into a real evaluation of what else was out there, open source included.
Outside of work I'm a geek to the core. I write fiction and play tabletop games. I also read a good deal more than I have shelf space for, which is how the ebook catalog got started.
- Building with
- C#, ASP.NET Core, Angular, TypeScript, Python, SQL Server, Entity Framework
- Verifying with
- pytest, Playwright, Postman, static analysis, runtime instrumentation
- Titles held
- Developer, Technical Product Owner, Project Manager, QA, Product Support, Help Desk
- Currently learning
- Godot, Unity
- Based in
- Savannah, Georgia area · looking for remote
Skills
Roughly grouped. Dashed outlines are things I'm still learning rather than shipping with.
Languages
- C#
- JavaScript
- TypeScript
- SQL
- HTML
- CSS
- Python
- GDScript
Frameworks & platforms
- ASP.NET Core
- Angular
- Entity Framework
- LINQ
- Bootstrap
- Power Apps
- SharePoint
- PySide6 / Qt
- Godot
- Unity
Data
- SQL Server
- MySQL
- SQLite
- Database schemas
- Data-driven design
- SSMS
- Azure Data Studio
Testing & QA
- Manual QA
- Regression testing
- Playwright
- xUnit
- pytest
- Test automation tooling
- End-to-end testing
- Unit testing
- Integration testing
- API testing
- Cross-browser testing
- Bug triage
- Postman
Security
- OWASP
- Secure coding
- Threat modeling
- Authentication
- Authorization
- Security awareness
Build & deploy
- Git
- Git workflows
- GitHub
- Azure DevOps
- Hangfire
- CI/CD pipelines
- Release management
- Docker
- AWS
- Visual Studio
- VS Code
- GitHub Pages
- Cloudflare
Design & architecture
- Software architecture
- Modular applications
- REST APIs
- JSON APIs
- Dependency injection
- UI/UX
- Responsive design
- Localization systems
- SCORM 2004
Product & process
- Product ownership
- Requirements gathering
- Acceptance criteria
- Agile/Scrum
- Stakeholder coordination
- Documentation
- Technical writing
- User training
Contact
Email is fastest. I answer everything that isn't a recruiter template.