Magic, a part of the official .Net Documentation

From 2017 to 2019 I wrote 6 articles about C# architecture and design patterns for MSDN Magazine. Later the magazine was closed, and its most important and relevant articles were moved to the official documentation for .Net. Although I am saddened to see MSDN Magazine being pulled, and I will dearly miss working with Michael, James and the other brilliant people over there – I can’t deny the fact that I am also proud to see all of my articles about Magic now becoming a part of Microsoft’s official .Net documentation.

This actually implies that Magic is now an integral part of the official .Net documentation – Which is no small feat for an independent software vendor. Notice, parts of my ideas have evolved since I wrote the first article about Active Events in 2017, but the main ideas are still similar enough for most to have some sort of benefit of reading these articles. Two of my articles also became among the most read articles they ever published during their existence. The Active Event article made it up to among top 20 most read articles, and the Hyperlambda article became the 5th most read article, for the magazine’s last decade of existence.

If you want to read these articles, you can find them below.

  1. Super DRY development for ASP.NET Core
  2. Active Events: One Design Pattern instead of a dozen
  3. Make C# more dynamic with Hyperlambda
  4. Create your own script language with Symbolic Delegates
  5. Minimize complexity in multithreaded C# code
  6. Could Managed Ajax put your Web apps in the fast lane?

Out of the above articles, probably the most relevant to Magic are the Active Event article, in addition to the Hyperlambda article. Parts of the ideas have evolved since I wrote these articles, but the general idea should be similar enough to make you recognize it in relationship to Magic and how it looks like today.

The cost of cutting corners

I have worked in software development departments, where after the product was finished, we had to hire an additional 20 developers just to keep it running. Those whom are seasoned developers among us, can immediately understand what I am talking about.

When you cut corners, you create unstable software. When you create unstable software, a large portion of your operations will fail. When an operation fails, you’ll need somebody that understands the system to babysit it, and fix it – Which of course translates to a software developer for all practical concerns.

Requiring a software developer to babysit 25% of your form submissions, spending hours reading through log files, to figure out what goes wrong – Is probably OK if you live in a world where a software developer will cost you $5 per hour. If you live in the real world though, it is not OK!

Preventing 25% of your users to register at your website, having them wait for 2 days while 2-3 software developers tries to figure out why their registration form doesn’t work if the user has an รณ character in his name, because of a bug in your software system – Is not OK!

However, just breadth in and out and stay calm. Because somewhere out there, is somebody whom are not willing to cut corners when creating their systems. Somewhere out there, is some software development department wanting to do things right. They might not make it first to market, and you might be able to outperform them in the short run – However, when they finally do come around, they’ll blow your value proposition off the table, and you’ll be left picking up the scraps from their table, without any amount of sustainable revenue – Yet still needing to hire 10x as many software developers, to maintain a system with 10x as many bugs, spending half their days reading through log files …

Good luck with that ๐Ÿ˜‰


Symbiosis is when two different organisms lives together in a relationship that are mutually beneficial to each other, without competing with each other, but rather helping each other out, making sure the other party have some sort of benefit from the other party’s existence.

Yesterday I attended a meeting as a DZone core member together with the community managers from DZone and some 10-12 other article writers. All of us had been given the opportunity to give DZone feedback before the meeting, and during the meeting we got to hear that they had taken our feedback to their hearts.

For instance, DZone will now start giving out SEO juice to article writers, implying that a popular article on DZone, will now start counting in regards to SEO link optimisation. In addition there were multiple other minor things they were looking to fix, due to the feedback their writers had been giving them over the last couple of weeks.

Small changes like these makes it much more tempting to talk positively about the site, simply because in the end, everybody only wants somebody else to scratch their back I assume. However, few will scratch other people’s backs unless there is something to be gained from the process.

Thank you for a nice meeting Blake, Mike and the others participating – And thank you for listening to us, your writers, and arguably also your main assets. And thank you for understanding this important word – Symbiosis that is. I’ll start with a little bit of paying it forward, as a gesture of how much I appreciate these new ideas, to such hopefully give them water, and the ability to grow into even more and better symbiotic ideas …

Read some great tech and software development news here

Have a nice day ๐Ÿ˜‰

The art of breaking rules

Do you want to know a secret? You don’t have to use things in accordance to the instructions given by those who created the things you want to use. For instance, GitHub is probably one of the largest untapped resources for hiring software developers on the planet today.

Nobody would hire a piano player without listening to him play first. In software development however, we are expected to hire people based upon some rubbish piece of paper, and whether or not the guy remembers how to implement quick sort in Pascal.

If you go to GitHub today, you won’t find any “I am available for hire” badge. Still, many of those creating marvellous open source projects would probably easily accept an offer from you, if given one. This allows you to off shore software development, literally without risk, because you can assess the quality of the developer and his code, before you hire him or her.

Break the rules. It gives you an edge!

The man from the future

Some people are cursed, because they can see the future. Not because they’re psychic or clair voiant or something, but rather because of that they have studied the past, and are therefor able to draw lines, stretching far into the future.

These people are always cursed, because they tell us “inconvenient truths”. Truths the others amongst us for some reasons don’t want to hear, because they would rather live comfortable within the confined space of their own lies.

Such men and women live solitary lives, never being believed, before it’s too late for others to take their wisdoms to their hearts. Such people are always hated and despised by their peers, because they raise the alarm when nobody wants to hear it. And afterwards when the others realise they were right all along, others who didn’t want to listen, feel shameful for not listening in the first place. Even “winning” for these people is a curse.

I am here to tell you to be that man! Not because it will give you rewards, quite the contrary in fact – But because we need more people like this!

I can promise you it will be painful, and I can promise you that you will be hated, and you will be despised – But in the end you will start to realise that is the reward in fact.

Be the man from the future! We need more of you! Because in the end, the Truth shall truly set you free – Often in ways you cannot even possibly comprehend as you start being the Man from the Future.

Be the man from the future! We need more like you!

Machinery Nirvana

I once heard a funny joke about having a job, it went like this “If having a job was such a fantastic thing, owners of companies would have kept all the jobs to themselves.”

Let’s be honest about this, a lot of the jobs we do, aren’t exactly rocket science, and not particularly intellectually challenging. Don’t get me wrong, I love my job. As a software developer, I get to work on really hard and intellectually challenging problems – But a lot of the work I do, is also arguably work we could have trained monkeys to do. It’s repetitive in nature, requires little intellect to complete, and yet a tiny error can still have drastic consequences.

The first time a brain surgeon performs some difficult procedure, it’s challenging. The 5th time he does the same procedure, it’s routine. The 1.500th time he does it, he’s probably thinking of his upcoming weekend at Disney Land, as his autonomous nervous system cuts through your brain tissue on autopilot. For the record, this is not a good thing.

If the brain surgeon could somehow teach a machine to do the same procedure, the surgeon could instead of being bored at work, spend his time at Disney Land with his wife and children. And the machine would never be bored, it would always perform the procedure the exact same way, and it would highly unlikely do errors that the human being could do, due to lack of focus. Machines are simply better at this type of work than humans. This is a fact. As long as the parameters are not changing, or some unforeseeable event occurs, and the task is repetitive in nature – The machine will always outperform the human.

Brain surgery is probably not the best example here, and you might not necessarily be willing to allow some computer to rewire your synaptic connections, based upon some algorithm – But in software development, I can think of a million tasks, where the parameters are never changing, yet the task is extremely repetitive in nature. Having a human being do these tasks, is not only boring and less cost effective – But also flat out madness.

Don’t be insane, have your computer do whatever your computer can do!

The Magic Hammer

I once heard a story, apparently it’s true. 40 years ago some company had a problem with their hard drive. For some reasons the hard drive wouldn’t start in the morning. This was in the days when hard drives were the size of refrigerators, and still couldn’t store more than 20 megabytes. Hard drives back then also had a cost of a small fortune. The CEO of the company that owned the hard drive was panicking. His 25 employees couldn’t work, and the company was slowly suffocating. They call in some brilliant repair guy, and the guy comes over with a small hammer. He carefully nudges his hammer in the corner of the hard drive, and the hard drive magically starts working. Naturally everyone are grateful, and the repair guy goes back to his shop after having spent only 5 minutes with his customer.

Later the repair guy sends an invoice for $2.500. The CEO almost has a heart attack, and asks the repair guy on the telephone “did you really send us an invoice for 2.500 dollars to nudge our hard drive with a hammer?” The repair guy answers as follows …

“No, I invoiced you only 1 dollar to nudge your hard drive. The rest of the invoice was because I knew where to nudge it, and because I have a special hammer.”

Facts are, you could have hired 1.000 carpenters with hammers, and none of them would have been able to fix your hard drive. Sometimes it’s better to pay only one, assuming he’s got a magical hammer.

Your computer can talk

Computers can talk to each other. Most people don’t realise this, and computers don’t talk our language – But computers can communicate. For instance, your SQL database can submit its database schema to another computer. This allows the other computer to create code that scaffolds a Web API backend for you, which in turn can supply its meta information to some frontend created in for instance Angular, React or Vue.

The end result of the above process becomes that your Web application almost automagically creates itself. For a human being, this type of work is repetitive, boring, and will likely result in bugs.

A computer though, can produce perfect result, over and over and over again. It never gets bored, and it never does a mistake, unless we tell it to.

Magic, as it is today, is only the beginning. We have many ideas for how to improve upon it. However, already today you can click a button, and abra ka dabra, you magically have a backend HTTP REST Web API wrapping your SQL database.

Sometime in the future we will look back at our past and laughingly admit that we created this code ourselves. Our grandchildren will look upon us with awe and ask us “did you really create your own computer programs back then grandpa?” And we will be forced to admit.

Yes my child, the world was not as evolved back then as it is today.

If you think this is fiction, check out our landing page.

How to start your car

When you start your car in the morning, 10.000 small things starts moving. Energy flows into its engine, spark plugs ignites, and your lights turns on. If you don’t acknowledge this as Magic, you’re either delusional, or a car mechanic. Simply because any technology sufficiently advanced to not be understood by the individual, is indistinguishable from Magic.

When you click the Crudify button in Magic, a similar process starts. Magic extracts meta information from your database, creates a data structure out of it, and passes this data structure into its Hyperlambda generator. The Hyperlambda generator creates your HTTP REST endpoints in turn, from the data it’s being passed. In 30 seconds, it has accomplished work that would normally require half a dozen software developers, working for 6 months.

Henry Ford is famous for among other things having said “If I was to give people what they wanted, I would have made a faster horse”. People like Henry and me are here to tell you, that sometimes you don’t know what you want, before you have seen it. Hence, I present to you, Pure Magic …

Pure Magic!