Async Producer / Consumer Pipeline

In my previous post I mentioned I wrote what I call an async producer / consumer pipeline. I described in detail a compiler error I encountered in my initial efforts, and how I resolved the error, but did not share or discuss the actual pipeline code. I focused on how the VB language, generally regarded as less capable and elegant than the C# language, supported a syntax of defining and immediately invoking a lambda expression, while the C# language did not support the syntax. This syntax is well known to JavaScript developers as an Immediately Invoked Function Expression, or IIFE. […]

Leaderless Replication

Introduction I have been reading Designing Data-Intensive Applications by Martin Kleppmann. (I heard of the book via a review Henrik Warne posted on his blog. I encourage you to read Henrik’s blog- excellent content, clearly articulated). I am only a third of the way through the book but can already say it is one of the best technical computer books I have ever read. As I said in a comment I left on Henrik’s blog, Martin Kleppmann has put a lot of effort into writing clearly and without pretension. He doesn’t use terms without defining the concepts behind them. And […]

Updated Comparison of C# and Go Performance

Previous Efforts A couple weeks ago I wrote a post that examined performance of the C# and Go programming languages when parsing large XML documents. Why compare C# and Go? Because the goals of the languages are similar: to provide programmers with a statically typed, compiled syntax paired with a runtime that enforces memory safety and automatic garbage collection (reclaiming memory from unreferenced objects). I compared the performance of my C# code with Go code written by Eli Bendersky in his Faster XML Stream Processing in Go blog post. I concluded my C# code ran slightly faster. Then I made […]

XML Parsing Performance : C# Versus Go

Interest Piqued Recently I read Eli Bendersky’s Faster XML Stream Processing in Go blog post. While the point of his post was to explain the difference between in-memory and stream parsing, then examine various stream parsing techniques in the Go programming language… I got hung up on his choice of language. Update 2019 Aug 17: I’ve run an apples to apples comparison test. See Updated Comparison of C# and Go Performance Go is a new programming language developed at Google. It’s statically typed, compiled, with a runtime that enforces memory safety and automatic garbage collection (reclaiming memory from unreferenced objects). […]

Hello World, Poker Style

I have updated my reference application with code that evaluates Texas Hold ‘Em poker hands. I had written the poker logic a few months ago. Recently, I moved it into a class library and service. This project is a long way from a functioning poker application that enables users to play Texas Hold ‘Em against artificial intelligence “bots”- my ultimate goal. But it’s a fun start. Evaluating poker hands certainly is more entertaining than confirming a “Hello World” message sent through an SOA stack appears at the other end of the pipe- on a web page in the user’s browser. […]