Pleasing 1 customer

The nature of software is that it can be copied. Implying once you’ve created the initial version of your software, and somebody is willing to pay you to gain access it, you arguably have a license to print money. This results in that as you start marketing your software product, it becomes imperative to please your first customer. Because that first customer will provide you with valuable feedback, that will allow you to significantly improve the quality of your software – Resulting in that it becomes easier to sell to the 2nd customer, the 3rd customer, and so on. In addition, your first customer, will also hopefully give you valuable quotes, that you can use in your future marketing process, making it easier for others to believe in whatever product it is you’re trying to sell.

The first customer you have as you start out your software company, hence becomes validation of that you’ve done something right – In addition to that he’ll lead you into an even better path for your future efforts, and such improve your product, while also proving that your product has the right to live.

Take very good care of your first customer. Because if you can please him, you can please the world – And if the world is pleased, the world will take care of you!


To feel appreciated is a fundamental human need. Science have shown that unless babies are given physical care and love, they will grow up to become cognitively disabled – And regardless of how much we tend to believe we are rational and thinking human beings, a simple touch or gesture, telling somebody you’re happy they’re there, will create a spiral of positive consequences for the receiving party.

Yesterday I attended a DZone Core meet up with a lot of really interesting people. I felt that others appreciated I was attending, and I would therefor want to reciprocate the feeling. We had a long and fruitful discussion about subjects close to our hearts, and Blake later wrote about his ideas of building online communities at Medium.

However, I think the most important thing in Blake’s article, was that he took the time to listen to us, ask us all for a quote, and wrote down what we all said we felt was important. If you’re the CEO of DZone and reading this article of mine here, then whatever you’re paying Blake is not enough – He practically singlehandedly made DZone pass the Turing test as far as I’m concerned! 😉

Blake’s article about building online communities should be mandatory reading for anybody doing any type of networking, and/or trying to build an online community! Besides, it also quotes all participants of the meeting, in addition to some not participating. #MustRead!

Gene Kim spoke about his latest book, The Unicorn Project, and it was very interesting to hear his thoughts about DevOps. In case you don’t know Gene from before, he’s a Washington Post best selling author of software development books, and sold half a million copies of his first book about DevOps called the Phoenix Project. I must confess I haven’t read any of his books, but after meeting him yesterday, both of his books are definitely on my list of #MustReadBooks for 2020. If there’s anything like a Stephen King of software development, Gene is probably it. Highly interesting ideas, and more importantly, a down to earth and really nice guy, with little or no ego, willing to listen to even the smallest amongst us, even though he’s obviously massively successful from before. A unique quality in a unique person.

Ray Elenteny and myself had a lengthy discussion about dynamic versus static programming languages, and I jokingly proclaimed that we were about to solve a 50 year old software development dispute as our discussion progressed. Ray is an amazingly skilled software architect, and he have written a lot of articles about Docker and Kubernetes at DZone. For those curious about what we concluded with, it was basically that it takes an extremely skilled software developer to use dynamic languages, and that although Miles Davis probably would have used Lisp, you should probably start out with something easier (static) in the beginning – To avoid spending the rest of your professional life, maintaining the bugs you created as you started out 😉

Here’s one of Ray’s articles about planning and designing Docker Images, if you’re curious about him. Even though I know little or nothing about Docker, after hearing Ray speak about architecture and software development yesterday, I can pretty much guarantee you the guy knows what he’s talking about.

After me and Ray concluded with that Miles Davis would have used Lisp, Dheeraj Gupta made us all come back to earth, by informing us about the importance of monetisation. Dheeraj is an Indian Java software developer whom I am sure we will hear more great things from in the future. Dheeraj writes about Big Data, Hadoop and other interesting things over at DZone. Some of his articles have 50.000+ page views, so I must only assume he knows what he’s talking about – Even though I’m not a Java guy myself. Because even though flying high is important to see the big picture, in the end, monetisation is what makes us able to fly high I guess. #KeepingItReal would be my assessment of Dheeraj!

To end out where I started, and live as I preach, I want to finish with the following.

  • Yi-Kai Chen
  • Rei Vilo
  • Dheeraj Gupta
  • Rahul Rai
  • Davide Guida
  • Radivoje Ostojic
  • Unni Mana
  • Gene Kim
  • Ray Elenteny

Thank you all for a nice meet up yesterday. I appreciated it!

Angular Material Select and database lookup tables (referential integrity)

This article is an addition to the video below, and it demonstrates how to use “lookup tables” from your database, and combine these with Angular Material Select widgets. The specific table I am wrapping, is the “account_types” table from the “magic_crm” MySQL database, but the idea is similar for all lookup tables. You might have to use a different [value] for your “mat-option” elements, if the primary key in your lookup table is not the same as the display column.

Above is how our final result will look like. Notice the Material Select dropdown parts.

In the following video, I am walking you through all the required steps to create the above result.

Walkthrough of how to use Material Select to ensure and simplify database referential integrity

The HTML code I created for the above video was as follows. Notice, this code should replace your existing “mat-form-field” wrapping your input data-bound towards “data.entity.account_type” in your “accounts-edit-modal.html” file. Delete that entire mat-form-field, and paste in the following code as its replacement.

      placeholder="Account type"
        *ngFor="let el of accountTypes"

Replace the existing “account_type” input widget with the code from above. Then import OnInit with the following import declaration in your “accounts-edit-modal.ts” file. Basically, just add “OnInit” into your list of imports from “@angular/core”.

import { Component, Inject, OnInit } from '@angular/core';

Make sure you implement OnInit on your component. This interface ensures Angular invokes your “ngOnInit” method as the component is initially loaded by Angular.

export class AccountsEditModalComponent implements OnInit {

Add a field in your class to hold your “account_types”. This becomes our “data source” for our Angular Material Select widget.

private accountTypes: any[] = [];

And implement the ngOnInit method in your TypeScript file. This method retrieves all “account_types” from your backend, and assigns them to the field we created in the above code. The rest will be automagically wrapped up by Angular and Magic in combination.

  ngOnInit() {
    this.service.account_typesGet({}).subscribe(res => {
      this.accountTypes = res;

If you’re still confused, please watch the video above where I demonstrate the process in 10 minutes.

Notice, I want to emphasise that this is useful for database tables with maybe 5-50 items, and it is *not* for tables having hundreds or thousands of records!


404 Not Found

If you asked the CEO for an insurance company how many clients he has, what their policies are, and how much they’re paying every month in total – He’d give you a correct answer in less than 10 seconds. If you asked the CEO for a software company how many lines of code they have, what libraries they’re using, and how many lines of code his organisation is producing every month – He’d have no idea.

Most software organisations have no idea what they’re even doing. Software seems to be be created on a mentality where the CEO prays and hopes everything goes right. No math, no statistics, no ideas of how many users are experiencing fatal flaws as they try to use the services of a software company. This is madness, since it completely blinds the software company’s operations, and makes everything they do based upon a best guess approach.

If you want to run a successful software company, the first thing you need to do, is to figure out what shape you’re in. The way to find the answer to this question, is to ask yourself how many different libraries and technologies you’re using, how many inadequate user experiences your software is creating per month due to bugs, and how big your software projects are.

Imagine a bank that doesn’t know the total size of their clients’ deposits. Then realise that most software companies have no ideas of how many lines of code their current projects contains.

Creating a CRM system in 5 seconds

A couple of days ago we released a new version of Magic. Our main new feature with this release, is that Magic will also create your entire frontend now. Yup, you read correctly. Magic will scaffold up an entire frontend in Angular for you automatically, that more or less implies you’re 90% done with your product, before you’ve even written as much as a single line of code yourself.

This Web app was created in 5 seconds

The resulting Angular code, is highly componentized, clean, and modular in nature – Allowing you to modify it as you see fit afterwards. It gives you Create, Read, Update and Delete capabilities in all your database tables automagically. Below is how it looks like as you try to edit an existing item.

Magic gives you all CRUD operations towards all your database tables

In addition, Magic will also automagically solve authentication and authorisation for you, automatically create a users and roles administration component for you, allowing you to administrate the authentication and authorisation parts of your Web app, still without having to write a single line of code.

Authentication and authorisation, check!

Basically, Magic allows you to start out running, literally solving 90% of your problem, without having to spend more than 5 seconds having your computer create most of your code. And its resulting data grids allows the user to sort, filter, page, and do all other common operations on your CRUD data grids automatically for you.

Magic works with any existing MySQL or MS SQL database, allowing you to use your existing database and data, without requiring having to port data to a new system.

In case this is your first visit here, we do sell licenses to Magic, but you can download it and try it out on your local computer before making up your mind to whether or not you want to purchase a license for it. Click the download menu item at the top of this page if you want to try it out.

Demonstrating creating a CRM system in 5 seconds

Become 1.000.000x more productive as a software developer

You’re probably not going to believe me unless you see this with your own eyes first. So please watch at least the 3-4 first minutes of the following video before you read the rest of this article.

Creating an Angular/.Net Core/Database web application in 60 seconds

I have tested Magic on a database with 122 tables some few days ago. Magic produced the following code for me automatically.

  • 5,198 lines of backend code
  • 43,644 lines of TypeScript Angular frontend code
  • 29,007 lines of HTML
  • 27 lines of CSS
  • 1,628 lines of SCSS

That’s a total figure of 79,504 lines of code (LOC). According to some of the most optimistic figures that science have found relating to software development productivity, a single developer can produce 750 lines of code per month. Read the science behind it here.

Dividing 79,504 lines of code by 750 lines of code per month, becomes 106 months. So basically, a single software developer would have to spend 106 months to create 79,504 lines of code. I created it in 60 seconds!

There are 12 months in a year, which becomes 8.834 years of software development time to produce 79 KLOC of code for a single developer. This figure multiplied with the number of working days per year (220 roughly) becomes 1943.5 days of work. Multiple the number of days with the number of (working) hours per day (8), and multiple this with the number of minutes per hour (60), and you end up with 932,870 minutes of work.

I created 79,504 lines of code in less than one minute a couple of days ago. Which implies at least in theory, that with Magic, I am almost 1 million times more productive as the average (highly skilled) software developer is without Magic.

For the record. When you’re done with creating your Magic Web application, you still have to modify the resulting Angular frontend code, by for instance changing some of your edit fields from textbooks to DateTimePickers, etc – But at least with Magic, you’ll start out flying, and you’ll not have to do all the boring stuff – And it just so might happen that you’ll basically end up becoming 1 million times more productive. Depending upon the size of your existing database.

To provide you with a slightly more interesting figure, and probably conservative estimate, Magic basically does 90% of your job as a software developer – Assuming you want to perform CRUD operations towards a database system. Magic works with both MySQL and Microsoft SQL Server.

Download Magic here.

Hiring Jon Skeet

Do you want to know a secret? I can help you headhunt and hire Jon Skeet. Yup! I guarantee you with 100% certainty even that I can make Jon work for free for you too. You don’t even need to pay Jon a single dollar to have him write most of your company’s C# code.

It’s really quite simple indeed, just hire any junior .Net/C# software developer, and 5 months down the road, Jon Skeet has probably produced most of your company’s code. Simply because most junior developers are copying and pasting code off from – Where of course Mr. Skeet has answered most of the accepted answers about anything relating to .Net and C#, implying Jon’s effectively already written most of your current code base. Resulting in that Jon is probably the by far most productive C# software developer alive today, having possibly written as much as trillions of lines of code, in millions of software companies, all over the world. Pretty impressive feat too may I add, considering the average developer is able to produce roughly 10 lines of code per day, according to the Mythical Man Month …

Doing statistical analysis on this, would probably purely from a scientific point of view, result in realising that Jon Skeet is creating some roughly 10-20 millions of lines of code, every single day, in thousands of companies, on an average day – Compared to the roughly 10 lines of code the average developer is able to produce, for one single company per day.

I think there might be some kind of Andy Warhol/Xerox Copy joke in there somewhere, but it’s too late for me to pull it out. But feel free to fill in the blanks if you feel creative … 😉

Making babies

If one woman and one man can make a baby in 9 months, how much faster then can’t 100 women and 100 men make a baby?

The above might sound like a joke, but is actually an “urban myth” when it comes to software development. Most non-technical managers believes that 100 software developers can move 100 times as fast as 2 software developers – However, as we can clearly understand by the above joke, this is clearly not the case. Even after experiencing this hands on for themselves, often several times may I add, they still seem to cling to their past delusions of that adding more software developers to a project shall somehow make it faster this time. Fact are: “Adding more software developers to an already late project only makes it later!” Or to say it with different words: “One software developer can do in one month what two software developers can do in two months!” – Etc …

In fact, the above statements, are backed up by 50+ years of solid research and science. So why are managers so deluded? Why do non-technical staff seem to believe it’ll go faster if they simply add more manpower to the problem?

Well, because they compare it to traditional work, such as for instance moving furniture, or harvesting potatoes – Where if we add more people to the problem, it obviously goes faster. However, software development simply doesn’t obey by this traditional way of seeing things, and it probably never will either. To explain why, let me ask you a question …

If Michelangelo could paint the Sixteenth Chapel in 4 years, how much faster wouldn’t the chapel be finished if Michelangelo had asked Da Vinci to help him out? If you don’t understand why the previous sentence is funny, may I suggest a book? Literally any book. Then read it for x-mas. When you’re done with your book, buy another one, read it too, and continue until you “get it”

… because it’s actually quite funny in fact 😉

Alternatively, read the header of this article once more, if you’d like to digest the funny parts faster … 😀

The Art of Efficiency

Every now and then in our journey through life, we meet some amazing individual, able to astound us, either because of their resolve, stamina, knowledge or wisdom – Tim Ivaikin is one of those individuals for me. When Tim became my colleague, I immediately understood that he’s an extraordinarily skilled software developer. And as we started talking about Buddhism and Philosophy, I also realized that he’s much deeper than what you would normally expect from a “mere software developer”. However, what I didn’t know, before today in fact – Was that he had written a book – Which perfectly illustrates his meek nature may I add 🙂

Tim’s book, where he combines his software development theories with Philosophy and the ideas of Buddhist Enlightenment

In the first chapter of the book, he manages to use analogies of “never ending loops” to illustrate bad habits, scrum as a process to achieve entering the now, and software development theory as the means to improve how your brain works. I am not sure what to say really, I am simply stunned! But one thing I do know, I now know what I want for x-mas!

Buy his book here

My DZone articles

I remember DZone from more than a decade ago, when it was a small website, where if you went viral, at most you’d get some 3-4.000 page views. Today even a “flunked” article often gets 10-15.000 views, and it’s everything but a small website, but rather one of the primary sources of information for aspiring developers, looking to learn the tricks of the trade.

I’m a member of their core team, which implies I get early access to having my articles published, and I get invited to attend meet-ups and gatherings. In addition I get access to exclusive statistical material, giving me hints and clues about trending subjects, such that I know more accurately what I should write about, to increase the likelihood of gaining lots of page views. I have followed DZone on this journey now for more than a decade. Just some few years ago, Mike was little more than an avatar with a photo. Today him and Blake, their community manager, are living people, whom I can relate to, and have private conversations with – Sometimes face to face. And with this change, came the opportunity to be heard, be listened to, and raise my voice in regards to how they develop and maintain their site. I love it.

Below are some of my articles for those that’s interested in what the “weird Hyperlambda dude” has been writing about over there for the last couple of years.

There are many more, but you can probably find them from my breadcrumbs above I presume. However, a popular article of mine today, easily gets more than 20K readers. 10 years ago, I was lucky if I would get 4K readers. I congratulate DZone, Mike, Blake and the others on this growth, and I hope to be able to follow them for many more years. Thank you #DZone 🙂