Struggling With Where To Begin On Your Next
Ground-Breaking .NET Core Web App?

I've been working on a suite of professional admin tools that extends my open source project Coravel called Coravel Pro!

Coravel Pro helps you to kickstart your non-trivial web app by magically giving you an admin UI that ties right into Entity Framework Core!

Blog Posts

What I've Learned So Far Building Coravel (Open Source .NET Core Tooling) - Part 1

One night, about 4 months ago, I had a couple hours of free-time. I was really enjoying the benefits of building apps with .NET Core. But I felt it was still missing all the “built-in” features that makes Laravel (PHP Framework) such a breeze to work with.

After all, I just want to build awesome apps and not tinker with the same old boilerplate stuff.

What if I just want to schedule my code to run once a week? I don’t want to configure Windows Task Scheduler. Or Cron. I just want to tell my code to schedule itself. Shouldn’t that be easy to do (like with Laravel)?

[Read More]

Keeping Your ADO Sql Connections Safe

What happens when you don’t close your .NET SqlConnections? Bad stuff. Bad stuff that will inevitably bring your IIS website crumbling down to ashes. Well… something like that. We all know that we should take extra care to always close our DB connections. Right?

But what happens when developers try to get fancy with their DB connections and focus more on being able to re-use open DB connections rather than being safe? Well, the consequences were bestowed upon me a few weeks ago.

Let me explain (briefly) what happened, what could happen to you, and a way to fix it - while maintaining the flexibility of re-using open DB connections and being able to safely use DB transactions from your C# code (using ADO).

[Read More]

C# Pattern Matching: Are The Official Docs Lying?

During my day job, I had a case where I needed to use some pattern matching to do some type checking. If you don’t know, pattern matching in C# allows you to test the type of an object and perform some additional “magic” at the same time. While having the chance to play around with this feature some questions arose from my usage.

[Read More]

Refactoring Legacy Monoliths – Part 4: Refactoring Tools

As a software developer it’s important to know what tools are available to you. Tedious and repetitive tasks or large “one-off” time-consuming tasks can often be automated by third-party tooling. And yes - sometimes it’s even worth purchasing some of these tools with your own money. Specifically, when refactoring, we should have some knowledge of what refactoring tools are available to us.

Continuing my “Refactoring Legacy Monoliths” series - I want to go over a few tools that I’ve found super helpful and worth investing in.

To make this blog post more useful than a list of products, I’ll go through some high-level steps that represent a way to tackle a refactoring project.

[Read More]

How I Made LINQ 6X Faster Using A Functional Optimization!

I really did make LINQ 6X faster! Even though the title is “click-bait-ish”… This was a little experiment to see if I could speed up LINQ queries by using the functional pipe technique. By “piping” LINQ queries, we can avoid the inherent issue with LINQ whereby each query will issue a whole iteration over the collection. This optimization allows us to issue the equivalent of one iteration and pass each element through the entire method chain.

[Read More]

Refactoring Legacy Monoliths - Part 3: Game Plan And Refactoring Tips

So your engineering team is convinced that you need to make some drastic changes. The direction of future development needs to improve. Things can’t stay as they are. Management is also convinced that the product needs to move in a new direction. What’s next?

Before doing any actual changes or refactoring to your product, planning a refactor is your next step. In other words, you need a game plan. I’ll also discuss some refactoring tips for you to get started!

[Read More]