Rebus FM is now an ISV partner on NordPool

Michael‘s hard word has paid off, and we passed NordPool’s conformance test (in all categories!) in the first attempt! ๐Ÿ˜Ž

This adds Rebus FM to the list of ISV partners, meaning that we can now offer a plug’n’play integration between NordPool and Copper Power Platform.

Having tight integration with Europe’s biggest power exchanges makes Copper Power Platform an even more compelling solution. Get in touch with me via [email protected] if this sounds interesting to you. ๐Ÿ™‚


Rebus FM is now a certified ISV on EPEX

Copper M7 has now completed the “M7 conformance test” (which went pretty smooth, by the way โ€“ thanks for asking! ๐Ÿ˜‰)!

This adds Rebus FM to the list of certified software providers, approved to deliver tight, realtime integration with EPEX M7 โ€“ just as tight as EPEX’ own ComTrader app.

But more importantly, it means that Copper Power Platform customers trading on EPEX can get all of the possibilities that this entails, e.g. robust trade integration, realtime latest trade prices, whatever algos customers can come up with, etc.


Copper M7

I am happy to announce that Rebus FM is now in the process of becoming a “Certified ISV” on EPEX!

This will add Rebus FM to the list of approved software providers, which is a fine accolade to get, but the most interesting thing is that it will mean that โšกCopper Power Platformโšก will get tighter integration with the exchange, giving access to much more information as well as faster updates!

Also, as a byproduct of this process, I built the .NET library I wished I had had, when integrating with the M7 API, which would handle all the hard stuff around connecting to the exchange’s RabbitMQ, complying with request limits, implementing the communication protocol, gracefully handling failover, etc.

To help other shops I chose to packetize it! So I am now happy to announce

โšกCopper M7โšก

which is a packetized version of the M7 API integration. Check it out here on the M7 product page.

In other words: If you’re a .NET shop and you want direct read/write access to EPEX’ M7 API, you can take a pretty serious shortcut by leveraging Copper M7!

Get in touch if this sounds interesting to you. ๐Ÿ™‚


Copper Power Platform

As some of my connections might have picked up already, Rebus FM has a new business leg going! ๐Ÿค 

I’ve had a lot of fun building power trading software for short term power traders since 2012, intensifying the fun over the last 3-4 years, and so a good year ago I basically decided to condense my experiences and ideas into a new product:

โšกCopper Power Platformโšก

It’s a platform for small and medium-sized short term power trading firms* interested in avoiding grunt work.

Check out the page here for a couple of screenshots: https://copper.rebus.fm

If you’re interested, please don’t hesitate to get in touch with me. Or if you know anyone who might be, I would be very grateful if you would connect me with them.

*) Operating on the European market.


Moving day!

The Rebus FM headquarters has moved into the ground floor of the northern wing of this beautiful building โ€“ the old courthouse of Horsens. ๐Ÿ™‚

The new address is

Rรฅdhusgade 3 st.
8700 Horsens.

Looking forward to reciving old and new friends and business connections there โ€“ as always, there’s Aeropress/Hario V60 and/or freshly made americanos to be had (and beer ๐Ÿค โ€ฆ)


GitHub stars

Rebus has reached 1000 stars on GitHub. ๐Ÿค 

It may seem like an odd thing to notice, but I couldn’t help getting all warm and fuzzy inside! In my view, that silly little number, albeit primitive and one-dimensional, is a clear indication of a something pretty important: Street credibility among programmers.

Even though Rebus started out as a selfish project, in the sense that I needed a handy messaging library that didn’t have licensing obstacles in the way of delivering great software to consulting clients, it has grown to be so much more.

Many thanks to the almost 100 contributors besides me, who have contributed with their time and intellect to build Rebus and around 50 integration libraries.

Much โค๏ธ.


Generic host

Over the years, people have often asked me if Rebus had a “generic host”, similar to NServiceBus’ Generic Host. In case you don’t know, NServiceBus’ generic host is a library that helps you easily get an NServiceBus endpoint up and running as a Windows Service.

Rebus doesn’t have a generic host though โ€“ and there’s a good reason for that! ๐Ÿ™‚

The reason is, that there’s no reason why the Windows Service host should in any way be Rebus-specific!

What you really want in a Windows Service host (and in any host, really) is just a simple model for initializing something, keeping it around for the duration of the program’s lifetime, with proper termination at the end.

The cool thing is that .NET has great built-in mechanisms for initializing and terminating things โ€“ they’re called CONSTRUCTORS and IDisposable!

So what if a Windows Service could be composed of something, that should simply be newed up and disposed afterwards? And what if the hosting library made it possible to also run the app as an Azure Web Job? And what if it could host any number of “things”?

That’s what Topper does! ๐Ÿ˜Ž

Topper is built on Topshelf, so that means F5-debugging as a Console Application, and the ability to be installed as a Windows Service.

In addition to this, Topper will detect if it’s running as an Azure Web Job and do what’s necessary to shut down cleanly.

This is what your program can look like with Topper:

class Program
    static void Main()
        var configuration = new ServiceConfiguration()
            .Add("first", () => new MyFirstService())
            .Add("second", () => new MySecondService());


ServiceConfiguration allows for adding any number of named factories, each returning an IDisposable, and async factories (Func<Task<IDisposable>>) are supported, too.

As you can see, there’s no good reason why a “generic host” should be tied to any particular service bus library…ย so that’s why Rebus does not have a generic host. ๐Ÿค“


MongoDB database migration

When you’re developing a fairly large application, and you design things properly, you will almost inevitably end up distilling out some nice things into independent, well-factored libraries โ€“ because, Separation of Concerns, you know… ๐Ÿค“

That also happened this Friday, when Fleet Manager got its evolutionary database design library for MongoDB moved out into its own project: Mongrow.

With Mongrow, you can write database migrations as C# classes and have them executed in a safe, consistent, and deterministic manner, probably when your application starts up.

Its design is very much inspired by migr8, another little database migration library, only made for MSSQL and Postgres.

So… if you’re using MongoDB in .NET, you might want to check it out: The binaries are on NuGet.org.


We have a mailing list

If you’re interested in receiving weekly emails with little nuggets of Rebus wisdom, go here and sign up! ๐Ÿ’Œ


Meet Afonso

Hi everyone, meet Afonso!

Having finished a secondary school professional programme within Computing, he came to Denmark two years ago from his home island of Madeira in Portugal, to pursue an AP degree in IT Technology at Dania Academy in Viborg. ๐ŸŽ“

Afonso has now moved to Horsens to do his final internship here at Rebus FM, where he will spend most of his time performing a security review of Fleet Manager. ๐ŸšŒ

In addition to this, it’s already quite clear that he will inspire Alley 87‘s residents to extend #skalerbar‘s assortment of beverages into the territory of fortified wines, which we’re looking forward to. ๐Ÿท