<CharlieDigital/> Blog


A JavaScript Rules Engine in .NET using Jint

In the past, when I’ve needed a user-defined rules engine in .NET, I’ve explored writing a custom domain specific language using the Irony language implementation kit. But mostly, I’ve used SpringFramework.NET which includes an awesome expression evaluation engine.  The expression...


6 .NET Myths Dispelled

According to Wikipedia, .NET will be celebrating it’s 21st birthday this year on February 14, 2022. It’s been around for so long that I think many myths and misunderstandings about .NET from the early days persist. In celebration of .NET...


Playwright Browser and Test Automation

If you’ve been following me for a while, you know that I have a thing for browser and test automation.  Previously, I’ve spent quite a bit of time with both LeapWork and Taiko+Gauge from Thoughtworks. (One of my favorite pieces...


Simulate Drag and Drop of Files with Playwright

If you’re trying to simulate drag and drop of files in Playwright for testing, you’ll  need to use page.dispatchEvent to accomplish this. There is a short note on how to do this in the docs:

But this is hardly...


Accidental Complexity and Embracing YAGNI

As a software engineer, I am a self-described minimalist.  My goal is generally to seek the simplest possible technology and architectural solution with the least amount of moving parts to build, maintain, and extend.  Often times, this manifests as solutions...


The Case for C# and .NET

It has been interesting as I’ve shifted out of .NET ecosystem which I’ve worked with on the server side (and some stints of desktop client/tooling work) since the beta versions just before the first release. In the era before ASP.NET,...