Hi, I'm Perry :) I'm a software engineer with over 15 years of experience designing, developing, and delivering software.
My background is mainly in C# and .NET, but my work has taken me well beyond traditional application development. I've built real-time simulations, worked with custom hardware and communication protocols, developed reusable libraries, and delivered complete applications from the initial idea through production.
I enjoy solving problems that aren't always straightforward. Sometimes that means designing something entirely new. Other times, it means understanding an existing system well enough to recognize why it isn't working as intended.
Over the years, I've learned that good software development isn't about writing as much code as possible. It's about understanding the problem, making sensible architectural decisions, and building solutions that remain reliable and maintainable.
I'm comfortable working across the full development lifecycle, from technical design and implementation to testing, deployment, and ongoing improvement.
And while the tools and technologies I work with continue to evolve, my approach remains the same: understand what needs to be built, choose the right solution, and make sure it works.
Good software starts with understanding the idea, the problem it needs to solve, and what it takes to turn that into a working product.
Whether I'm starting something entirely new or working with an existing system, I focus on finding the right approach. That means exploring possibilities, understanding requirements, making architectural decisions, and considering how everything should work together.
I enjoy the creative side of software engineering just as much as the technical challenges. From designing complete applications to experimenting with unconventional solutions, I believe there's always room to question established approaches and find better ways of doing things.
Modern tools, including AI, can help explore ideas, challenge assumptions, and accelerate parts of the design process. But the technology should support the solution, not dictate it.
My goal is to create a solid foundation that balances functionality, performance, maintainability, and room for future development.
This is where ideas and designs become real, and where I've spent much of my career.
My main expertise lies in C# and .NET, but my experience extends across different technologies, platforms, and types of software. From business applications and web services to real-time simulations, custom communication protocols, and reusable libraries, I enjoy working on both the small details and the bigger technical challenges.
I believe good development is about more than getting something to work. Code should be understandable, efficient, and maintainable, with the flexibility to evolve as requirements change.
Over the years, my development workflow has evolved alongside the tools available. I use a combination of hands-on programming, automation, and AI-assisted development, choosing the approach that best fits the project. Some problems benefit from direct technical involvement, while others can be handled efficiently through well-designed development processes.
What matters to me is delivering software that does what it's supposed to do, without introducing unnecessary complexity along the way.
Turning a working application into a finished product involves more than simply deploying it. Everything needs to come together, from infrastructure and configuration to performance, security, and the experience of the people using it.
I aim to make this process as smooth and reliable as possible. With the right infrastructure, testing, and deployment workflows in place, releasing new features and improvements becomes a natural part of development rather than a separate challenge.
Automation helps keep this process consistent, while monitoring and feedback provide insight into how an application performs in everyday use. Whether it's a new product going live for the first time or an established application receiving updates, the goal is the same: deliver a dependable experience without unnecessary complications.
Artificial intelligence, neural networks, large language models... different technologies, different names, but all part of a rapidly evolving field that is changing how we interact with software and technology.
As AI continues to develop faster than many expected, we're faced with a choice: try to keep up with the changes, or get ahead of them. Personally, I'd rather take the leap forward.
I've worked with neural networks long before the current AI boom, and I've seen firsthand both what these technologies can achieve and where they fall short. With modern language models opening up entirely new possibilities, I see little reason to hold back from exploring just how far we can take them.
Today, I push these tools as far as I can, from experimenting with model behavior and building AI-powered applications to creating autonomous development workflows capable of handling complex tasks with minimal intervention.
But embracing AI doesn't mean using it blindly. Understanding its limitations is just as important as recognizing its potential. Sometimes the best solution involves an intelligent model; other times, a few lines of conventional code will do the job better.
For me, AI isn't about replacing engineering knowledge. It's about using that knowledge to explore possibilities that would previously have been too complex, time-consuming, or impractical to pursue.