.NET Core is Boiling the Ocean

I get asked regularly in the Akka.NET Gitter Chat and elsewhere about “when will Akka.NET support .NET Core?”

TL;DR; .NET Core

Part of the issue I’ll address here is that .NET Core means different things to different people and there hasn’t been clear messaging on that from Microsoft as far as I know, so I’ll summarize how it’s relevant to me, Petabridge, and Akka.NET.

.NET Core is about decoupling .NET from Windows. Allowing it to run in non-Windows environments without having to install a giant 400mb set of binaries.

This will allow .NET to run in containers on Linux and lots of other places it can’t today and presents a very exciting opportunity for those of us in the server-side .NET development space to start taking advantage of modern DevOps and deployment tools.

Because let’s face it: deployment tooling built specifically for Windows is...

Read More

Introducing the New .NET Stack

I’ve been a .NET developer for roughly 10 years now - since the summer after my freshman year in college in 2005 I’ve been developing in Visual Studio and .NET. I’ve founded three startups on .NET, worked for Microsoft, and founded multiple successful OSS projects in .NET - I say all of this in evidence to the depth of my commitment and investment in the .NET ecosystem.

But it’s time we, the .NET community, address a major elephant in the room - .NET is, and often has been, way behind in other ecosystems in terms of overall innovation, openness to new ideas, and flexibility.

And you know what - we are addressing it! And this has created some exciting new possibilities for .NET developers that were never available to us before, to a point where we may actually be competing with platforms like Node.JS, Java, and others for mindshare...

Read More

Broken Windows: How Bad Software Releases Happen to Good Teams

One of my primary responsibilities with the Akka.NET project is release manager - I put together the release notes, press the big green button when we’re ready to deploy, and make sure that each contributor signs off on the release.

The thing I take most seriously about my job is quality control - trying to ensure that no release ever does any of the following:

  1. Introduces a breaking change to a public interface;
  2. Introduces a game-changing bug that forces users to roll-back to a previous version;
  3. Causes a major degradation in performance or stability; or
  4. Never significantly alters the behavior of a component in a manner that falls out of alignment with previous behavior without giving the users sufficient advanced notice.

Unfortunately, within the past few months we’ve had all of the above happen at least once each. Akka.NET is an open source project that has seen...

Read More

Introducing NBench - an Automated Performance Testing Framework for .NET Applications

I originally posted this to the Petabridge blog earlier today. See the original here.

Not long ago in Akka.NET-land we had an issue occur where users noticed a dramatic drop in throughput in Akka.Remote’s message processing pipeline - and to make matters worse, this occurred in a production release of AKka.NET!

Yikes, how did that happen?

The answer is that although you can use unit tests and code reviews to detect functional problems with code changes and pull requests, using those same mechanisms to detect performance problems with code is utterly ineffective. Even skilled developers who have detailed knowledge about the internals of the .NET framework and CLR are unable to correctly predict how changes to code will impact its performance.

Hence why I developed NBench - a .NET performance-testing, stress-testing, and benchmarking framework for .NET applications that works and feels a lot like a unit test.

Read More

The Beginner's Reference Guide to Startups

I was asked by a close friend earlier this week about whether or not I have any references, books, or recommended reading for anyone wanting to get into startups. I don’t have a single source that I can point to, so I thought I’d write one!

Let’s start from the beginning.

Getting Acquainted with Startups

Before you get into trying to do your own business, it’s a great idea to see what all of the other entrepreneurs are up to across the world. Learn from their experiences, successes and failures both.

Start with Paul Graham’s essays. Paul’s one of the founders of Y Combinator, one of the most successful early stage startup investment vehicles on the planet. He’s worked closely with hundreds of startups, met thousands of founders, and seen deals of...

Read More

Introducing Access to {AI} Conference, November 12-13 2015

Access to {AI}

And now for something completely different - I’m hosting a conference in the November 12-13th in Mountain View, California called Access to {AI}.

The goal of the conference is to have experienced practicioners of Machine Learning, Natural Language Processing, and Artificial Intelligence introduce the techniques and tools they use everyday to programmers who’ve never done any of that before.

If you’re a TL;DR; sort of person, just click here to register for updates about Access to {AI}.

Why is this important? Well…

Breaking into advanced fields is hard

I first learned how to do distributed computing in college, and I was overwhelmed learning the strange new lexicon that came with it. I barely knew how to write C++ and C#, even...

Read More

Developers Who Can Build Things from Scratch

There’s lots of different types of developers you’re going to need to work with over the span of your career in the software business, but the one I want to talk about today is the kind you need when you’re trying to build something new.

A photo posted by Aaron Stannard (@stannardian) on

Finding a developer who can transform a set of ideas into...

Read More

Akka.NET Request for Contributors: Akka.Cluster

Akka.NET - Distributed Actor Model for .NET

The next major milestone for Akka.NET is Akka.NET v1.1, the primary focus of which is a stable, production-ready release of the Akka.Cluster module.

We’ve made some solid progress towards that goal in some of our maintenance releases, but I came to the realization over the past couple of months that the way we’ve been working with our contributors isn’t the most effective way for the project to achieve these milestones.

In this post I’m going to invite you, a .NET developer who’s interested in distributed computing, to work with me directly on the guts of Akka.Cluster and take on a project that’s bigger than you or me. And it’ll be awesome - you’ll learn a...

Read More

Visual Studio ProTip: Copying Binaries on Pre and Post-Build Macros

Last year I had to spend a fair amount of time working on C and C++ projects in Visual Studio 2013, and one of the tasks that I had to learn how to do was use Visual Studio’s pre-build and post-build events to copy all of my dependent DLLs into the final output folder for my applications.

In C# we take the ability to do this for granted - if we need to add a reference to another project in our Visual Studio solution we just Add Reference –> Projects –> [Project Name] and boom, we’re all set. Visual Studio will automatically copy our dependent binaries into our final /bin/[Release|Debug] folder automatically.

In C/C++ - hellllllllll no. You have to do this all yourself!

Read More

Real-time Marketing Automation with Distributed Actor Systems and Akka.NET

MarkedUp Logo

This is an archive of a blog post I wrote for the MarkedUp Analytics blog on July 23rd, 2014. It’s been a popular post and I’m posting it here in order to preserve it. I shut down MarkedUp in November, 2014.

The MarkedUp team has had experience developing SDKs, high-performance APIs, working with Cassandra / Hadoop, and service-oriented software for several years. However, when we started laying out the blueprint for MarkedUp In-app Marketing we knew that it would require a radically different set of tools than the traditional stateless HTTP APIs we’d been used to developing for some time.

Read More

P.S. Get the latest from Aaronontheweb

Have my most recent essays and articles delivered directly to your mailbox.