A sluggish ASP.NET page with 3,850 checkboxes was taking 38 seconds to load. By collaborating with Claude Code and shifting to client-side rendering, load times dropped to just 1.5 seconds — a 25× performance boost. Here’s how AI-assisted refactoring transformed the page and the development process.
AI in Coding: Using ChatGPT and Copilot to Build JavaScript Animations
Artificial intelligence isn’t just changing how we write code—it’s transforming how we think about creativity in development. In this post, I revisit the playful spirit of early programming through a series of AI-assisted experiments using ChatGPT, GitHub Copilot, and JavaScript Canvas on CodePen. Along the way, I uncover practical lessons for developers on using AI to accelerate learning, inspire exploration, and rekindle the joy of creative coding…
Best Practices for Proposing Improvements to Your Development Team
Working within a software development team has tremendous benefits, but it also comes with its share of complications. One of those complications is inertia – the more people who get used to a process or a certain set of tools, the more difficult it can be to introduce changes. Maybe this manifests in a positive way, where repetition and familiarity …
How to Implement a Clean Service Layer in Flutter (With API Examples)
This blog walks through building a clean, modular service layer in Flutter to keep mobile apps scalable, maintainable, and resilient to change. Using real examples with third-party APIs, it demonstrates how to abstract logic, structure code for API calls, and easily swap data sources without major rewrites. You’ll also learn strategies like creating request/response classes and centralizing error handling to reduce redundancy and improve code quality.
Long-Running Workflows Made Simple with C# + Azure Durable Functions
It’s common to face challenges around long-running workflows, state management, and resiliency when you’re building cloud-native applications. Traditional approaches like background services or message queues might work sometimes, but they often require a lot of “glue code” and custom retry logic. This entails not only more work up-front for the developer, but also more maintenance in the long run.
That’s where Azure Durable Functions come in.





