I am an independent, hands-on software engineering and cloud consultant with 20 years of experience across product engineering, software delivery, and production operations, primarily utilizing the Microsoft ecosystem.
My practice is built on Minimum Necessary Complexity, keeping technical decisions proportional to the real need to deliver high customer value, reliable operations, and justified costs while establishing a solid foundation for future evolution.
More about my consulting work at petesramek.com or you can connect on LinkedIn.
- .NET
- ASP.NET Core
- .NET MAUI
- Entity Framework Core
- Microsoft Orleans
- .NET Aspire
- Microsoft Azure
- Amazon Web Services (AWS)
- Backend, mobile, and cloud applications
- Monoliths built for MVP delivery and future evolution
- Distributed, service-oriented, microservice, and stateful actor systems
- Multi-tenant SaaS platforms with strict data and identity boundaries
- Legacy systems requiring stabilization and preparation for modernization
- Technical design and durable product foundations
- System behavior, data consistency, and correctness
- Root-cause diagnostics, performance, reliability, and observability
- Staged system modernization, migration, and technical debt reduction
- Operational cost and infrastructure efficiency
- Application security, tenant isolation, and data protection
- CI/CD, automated testing, and practical engineering workflows
- Clear design over unnecessary complexity
- Production behavior over theory
- Maintainability over cleverness
- Useful automation over ceremony
- Systems teams can understand, operate, and evolve safely
Some of my engineering work and technical experiments.
A side-by-side implementation of the same distributed workflow using microservices and Microsoft Orleans virtual actors, making trade-offs in state ownership, concurrency, failure handling, observability, deployment, and system evolution directly comparable through a unified UI and observability tooling.
A hands-on ASP.NET Core lab where production-style problems can be triggered, observed, and compared with safer implementations. The scenarios cover data access, reliability, runtime pressure, memory, networking, observability, configuration, and deployment behaviour.
A practical decision guide for choosing .NET collections from thread-safety needs, data lifetime, access patterns, ordering, and mutability. Decision flows, reference tables, examples, common mistakes, and benchmarks show where each option fits and where it does not.
A lightweight .NET Standard 2.1 library for encoding and decoding Google-compatible polylines, providing extensible, type-safe abstractions for custom coordinate and polyline types alongside strict input validation, configurable precision, and stateless, thread-safe execution.
A lightweight, experimental serial communication protocol for constrained devices, exploring reliable UART communication, explicit wire encoding, message integrity, and practical behavior under limited processing and memory resources.




