An interview with Mark Nijhof
  • June 26th, 2019

Mark Nijhof, Author of CQRS: The Example

51 MIN
In this Episode

Mark Nijhof is the author of the Leanpub book CQRS: The Example. In this interview, Leanpub co-founder Len Epp talks with Mark( about his background, moving a lot during your career, setting up a startup and the difficulty of making sales into big enterprises, his current company Småkassen, which is a clothing subscription service for kids, his book, and at the end, they talk a little bit about his experience as a self-published author.

This interview was recorded on June 4, 2019.

The full audio for the interview is here: You can subscribe to the Frontmatter podcast in iTunes here or add the podcast URL directly here:

This interview has been edited for conciseness and clarity.


CQRS: The Example by Mark Nijhof

Len: Hi, I'm Len Epp from Leanpub. And in this episode of the Frontmatter Podcast, I'll be interviewing Mark Nijhof.

Based in Bergen in Norway, Mark is the founder of Småkassen, a clothing subscription service for parents of small children, that selects and delivers high-quality curated clothing to parents periodically as their children grow. It's like having a personal shopper for your kids.

Mark is the author of a couple of Leanpub books, including CQRS: The Example and SOLID: Software development is not a Jenga Game.

In this interview, we're going to talk about Mark’s background and career, professional interests, his books, and at the end, we'll talk a little bit about his experience self-publishing.

So, thank you Mark for being on the Frontmatter Podcast.

Mark: Thank you for having me.

Len: And thanks for taking some time out of your evening in Norway.

I always like to start these interviews by asking people about their origin story, and how they came to their careers. Can you talk to us a little bit about where you grew up, and how you first became interested in in programming and technology generally?

Mark: I grew up in in Holland, and my dad was working in IT with computers for some car paint company. I guess that sort of grew on me. I've never been a big hacker or something, but having computers around was natural for me. When it came time to decide what I wanted to become, it was a choice between programming or architecture. Both of these have creativity in the heart of it - and it became programming. So that's shortly how I got started.

Len: One question I like to ask people is, did you study Computer Science formally at university or college?

Mark: I have what you could call a bachelor's level of computer science, yes. So not a high degree.

Len: And if you were starting out now with the intention of becoming a software engineer, would you study Computer Science formally again, or would you choose a more independent path? This is something I always like to ask people.

Mark: I think that's a very difficult question, because I don't know what would have happened if I would have done the other thing. But I think, I'm happy with what I got. There's some companies that I can't apply to because they want - I hate, quote unquote – a "higher standard." But then it turns out that those are not the companies that I want to work for anyway.

Anything that you learn at school, especially in something like programming or anything IT related - it's just a foundation. Anything else during your career, you need to learn yourself anyway, so you're constantly learning new stuff, things that no school could have prepared you for.

With some things like AI and artificial intelligence, neural networks and these type of things, having a more theoretical background might have helped. But, we'll never know.

Len: And what was your first job in software engineering?

Mark: Since it was quite a practical training that I had, my first "job" was as an intern at a small company that created websites for other businesses, basically. I could start there, but their offer was so ridiculously low that I said, “No thank you." Then I started working for a consultancy company, CSC. In Holland, they're not as huge as in America. But they gave me a very good base to basically develop myself and continue learning, and getting on bigger challenges every time.

Len: And how did you make your way to Norway from Holland?

Mark: By going to Sydney. My family is all over the world. One of my cousins lives in Australia. He was getting married, and that seemed like a really good opportunity to go to Australia. So I went there for about three weeks. One week for a wedding, and then two weeks for traveling - and during those travels I met my wife. We hooked up later again, travelled back home from Australia, and my wife of course, being Norwegian - that helps the story.

Len: And being part of the EU, you could just move to Norway - is that right? There were no kind of barriers to that move?

Mark: No, no barriers. As an IT person, you can pretty much work wherever you want. As soon as you have a job, you can move from the EU to Norway. I don't know if it's easy if you don't have a job, but this was easy for us.

Len: I see from just lurking on your LinkedIn profile, that you eventually made a shift towards becoming more independent, like a consultant in your career.

Mark: That took a while. I've done many things. We've lived in several places. I mean, we lived three times in Norway, about three times in Holland. We lived in Germany, in Spain - and also in Australia.

Len: Oh wow.

Mark: And I've had jobs as a consultant, I've been an in-house developer, I've been an Agile coach in Germany. And so there's lots of different roles that I've had. And now I'm running my own company, together with my wife - which is Småkassen. And in order to basically pay our food and a roof over our heads, I'm renting myself out as a consultant as well, yes.

Len: Okay. I asked partly because many of the authors who come to Leanpub have similar profiles, where they've moved in between formal work and independent consulting.

Before we talk about your current company, you co-founded something called Snowflake AI?

Mark: Yes.

Len: Can you talk a little bit about that, it sounds really interesting.

Mark: It's a platform that allows companies to use any of their data to communicate with their customers. Most of these platforms use very simple keyword lists, where you describe a customer basically by flattening everything you know about that customer into a fixed keywords key-value list - and then you can run rules against that.

But together with my friend - and at one time, colleague - I was working at an insurance company. They have a whole lot more data than you can fit in one of those flattened lists. So we saw that as a problem, and we decided that we wanted to try and build a solution for that, which means that you could use the data in the form that you have it in your own company, and use that data to communicate individually to individual customers, so that you can pretty much form and shape the way you communicate, based on what you know of that customer.

Len: And is the communication meant to be a form of marketing, or is it customer support?

Mark: Everything. So for one, everything you do is sort of marketing. Even if you communicate directly to the customer about some system, whatever functions.

When we started, we had documents in mind, like PDFs, emails, and, for example, SMS, where you basically can create the communication. If it's an insurance document, then you need a lot of data to put into that template. But for an email, that can be a lot less data. And then whether that is an email that goes out from the system to notify that customer of something - or whether that is a marketing email, there is not really that much of a difference there.

When you send out a marketing email, you also want to be very specific. And if you already know things about that particular customer that can help you form and shape the content of that email, then you're making it much more interesting for a customer. Whereas a lot of the marketing right now is completely uninteresting to the customer.

Len: That's definitely true. Did you do fundraising for this startup?

Mark: We tried. We learned a lot during this startup, and mostly about what not to do. We built a product which was amazing. Småkassen was first built on top of that as well. The thing is that we didn't go after customers quickly enough, and the customers that we were trying to get were way too big. Because we were thinking they are the ones that really need it, considering our background in the insurance company. But they are also way too skeptical to go and work with a small start-up. Things start rolling like a snowball - so if you don't get customers, or the customers that you get are not that impressive, then it's harder to get funding. Whereas, if we would have gone the more self-help route, where any company could just sign up, and start using it, and just get a lot of small customers, I think that would have been a differentiator for us.

Len: Rhat's very interesting. I've done a little bit of work myself in a similar kind of area. And so, you essentially sort of tried to do enterprise sales for your product?

Mark: Yes.

Len: Right.

Mark: Which, in hindsight, is completely idiotic. Because enterprises work with enterprises.

Len: It's really interesting, because, I mean, the prize is so attractive. And as you say - the idea, if you can sign up one big customer, all of a sudden, things can really get going. Because now you have this reference point. But getting into a big enterprise is just so hard.

Mark: We've had meetings with the biggest bank of Noway - many meetings. But before you actually get them to basically commit, it just takes way too long. So getting the "in" is not even - at least in Norway, wasn't even the biggest problem. But getting them to basically say, "Yes, here's a signature."

Len: Did you ever encounter - I mean, I can't go into detail - but "internal resistance" from someone who may have had another service they were championing?

Mark: Yes, definitely. One other problem for us was that, as I mentioned initially, we were focused on transactional emails, like "Here's your new password." "This happened in the system, there's an update.” But we were also considering a solution for marketing emails. And even though technically they're very similar, the people using them are very different. And the people using the marketing type platforms - they are used to a very different way of working, versus talking to the programmer that just wants to send out emails based on triggers and so on.

And so, we were successful on the technical side - which is not surprising, because both of us were technical. But we were not successful on the marketing side. We had a smaller bank as a customer in Bergen, and from the technical people, we were doing our job as they expected us, and everything was fine. But getting the marketing team to transfer to our platform seemed impossible, basically, at least for us.

Len: I know where you're coming from. Getting that kind of internal sign-on is just such - it's just so tricky, for so many reasons. Just one example is that you can have - in this world, there are all kinds of profiles of the different types of people you might encounter. One of them is someone who might be a lower-level employee who is like, "Oh, yet another service I have to learn." And so they might resist it cynically, because they've had different competitive executives pushing all kinds of products on them all the time. Then, you might have someone else who really loves it, but just doesn't have the influence to get someone higher up to sign on.

Mark: Yeah, for sure. People don't change really easily. That's an experience that I got very hands-on when I was doing the Agile coaching.

Len: I've interviewed people with experience Agile coaching on this podcast before, and a number of them have expressed a similar sentiment.

I see from your profile that you worked on Snowflake for about three years. Did the underlying technology change a lot in that time? I'm asking because one of the things - it's a big deal nowadays in the marketing and customer support world, to do exactly what it sounds like you were trying to do. Because it lets you scale so dramatically, when you can automate your interactions with customers in a complex way. Did things change a lot, even during the period of time when you were working on the product?

Mark: For us, not so much, to be honest. We started out using Erlang in the backend for our product, mainly because we knew this was going to be a problem where we would need to be able to scale on different levels, and Erlang is ideal for that.

We did change to Elixir, which is basically a different language on top of the Erlang VM, because the dialect is slightly easier, especially for people that are not used to working with Erlang.

But other than that, we haven't changed much on the technology side. Our front end is going to be, of course, JavaScript. We started out with something and ended up with React fairly quickly already, which was working fine for us.

Len: One thing I wanted to ask you - just generally as someone who's worked in the AI space at a pretty high level - have you been surprised at developments in AI in the last few years? I confess I'm one of those people who was totally shocked - I mean, I'm using the AI loosely - that AIs beat Go grandmasters as quickly as it did.

Mark: To clarify one thing, first, even though there was AI in the name of our company, we didn't actually use AI yet. That was something that we've envisioned that would happen, because of what we did. But initially it handled rules that made decisions. I believe that AI will be doing this soon.

I think AI can do a lot, especially since computers are speeding up, everything is speeding up. And that's what you need, and you need a lot of data. And companies are also getting really, really good at collecting a lot of data.

But they're going to be all still, for a very long time, I think, very specialized solutions. It's not going to be like a life form that suddenly starts realizing stuff and doing things themselves. I think for a very long time, it's going to be for an extremely long time, going to be extremely specific solutions to specific problems. And they can be really smart, yes. If that made sense?

Len: Yeah, it totally does. I interviewed someone recently named Andriy Burkov, who wrote a book called, The Hundred-Page Machine Learning Book and he works in AI. He had this really interesting observation, that - it's funny, it's like the really complex stuff that AI will be good at, and the generalized stuff that AI will not be very good at.

He used a striking example from self-driving. The kind of thing that you just do automatically when you're driving - like whoa, swerve out of the way when something is suddenly in front of you - he said, "That's easy." It's that specific kind of thing, like, "Something's coming at me, get out of the way." But the much more generalized things, like getting from A to B efficiently - that's harder.

Mark: From a very high level, I think, you should still see those basic configuring rules, only the configuration is a lot more complex. But as soon as it's learned, something done - and that's the filter.

Len: And so you've got a new startup, Småkassen. Can you talk a little bit about what the inspiration was for that? It sounds just like a really great idea.

Mark: Thanks. That started quite interestingly. So with Snowflake, in order to explain to people what we did - I very often used the example of a kids' store. So, if a mom walks into the store and buys clothing for a one month baby boy, what should that store then do in two months? They should send an offer for three month baby boy clothing. And the more often that customer goes back to that same store, the more the store understands about the style and the wishes of that particular mom. So the offers can be more specified for that particular mom, right? That's the premises of what Snowflake should be doing for that store owner - eventually, automatically.

My wife, she loves shopping for kids clothing. We have five kids ourselves as well, so it's a good thing she likes it.

And at some point with Snowflake - my friend, partner - he needed to get out, he needed to get some stability in his life. So I went from having at least a two-people business, we went to just me. I was trying to keep that going for a while. But if it was hard with two, it was impossible with one. And so at some point I realized, "What if instead of the software just offering these particular things, why don't we take that whole chain and ask people what they like? And then based on their profile, we will find clothing that matches the profile and send it to them."

My wife liked the idea as well. So we built a nice website. I think that's important, the website was really nice. But we had nothing else. We had a few Facebook ads, and got our first orders that same evening. And then we went to regular stores and bought clothing, based on the profiles that these people have given us. We put it into a mailer box, and we send it to them.

And just to test whether or not this was something that people liked - we didn't get those boxes back, people liked it. We got more and more orders, and we started putting stuff in place in order to handle that, like deals with the clothing brands. Other things, like payment providers and everything. Basically everything that you need to properly have an online business, we started building after testing whether or not this was something that people would want.

Len: It must have been very exciting to get those first orders.

I don't have kids myself, so it took me a moment to realize what a great idea it is - because children grow.

It's so interesting to hear that it emerged as a an example of a potential use case, and then became a real business. But it makes total sense that as children grow, predictably, they're going to need new clothing. And then you could build a service behind that natural fact, that would make life easier for parents.

In particular, part of the pitch to customers, is that not only will you have someone making tasteful and informed decisions about the clothing, but that the parent gets a surprise?

Mark: Yes, definitely. When we started, we were in one of those incubators, and people were telling us, "People don't like that. People want to be able to choose and see what they're getting." And our hypothesis was that that was not true.

It turns out that the surprise element is indeed very important in this whole thing. So we have sometimes people that tell us, "Okay, I would like to know what I'm getting." And then we tell them, "Then you should go to a regular store, because that's not what we do." And the majority of people really enjoy basically getting a box, not knowing what's in it - and then discovering that they love it.

Len: That's a really cool idea. Then it becomes an event. "Oh, the latest box."

Mark: Absolutely. They unpack it together with the kids. And for those that have slightly older kids, some say, "It's like Christmas."

Len: Yes, well it is like Christmas.

I'm curious about - there's this sophisticated technology underneath it, but there's also, at the same time, all these sort of practical issues running a business like that. I think I know the answer, but people can return the items of clothing from the boxes to you, and then you refund them?

Mark: Yes. How we started - the whole journey has been experiment after experiment after experiment.

Initially when we started, we told people that instead of a refund, we can pick something else for you that you like.

The funny thing is, when we started, we didn't do a good enough Google. It turns out that we were definitely not the first - in America, there are a few really big ones.

A major difference between them and us, I think, is that we are going for the high-end market, whereas they are going for a much lower-end market. So it's a different type of quality product.

But when we started, we just had these ideas - that people want an X amount of clothing, and they're willing to spend an X amount of money for it - and if they don't like what we send them, then they can send it back and we can send something else back.

But then you get into things like - okay, so how are we going to do that with shipping? Initially they pay for shipping back to us, and we pay them for the return again. But now we are at a place where we are paying for the return shipping as well. And then it becomes too expensive to exchange clothing. So then we say to people, "Can you just keep what you love, and return the rest to us - and then you get a refund for that money, for the items that you return to us."

Len: And the returned items can't be used?

Mark: No.

Len: Right, so you open the box and you know that like, "Oh, I just don't like purple," or something like that. And then, you can return just the items that you don't love?

Mark: Yes. We ask quite a few questions now. That has evolved a lot as well. We're asking about color preferences, what type of clothing they want, and whatnot. [Note: They now actually do let people return used clothing, as long as the quality is good - eds.]

In 2018, we had around 20 boxes where we got the whole box back, and they wanted all of their money back. That was for around 1,200 boxes sent out. We were quite happy with that number.

In general, most people like what they're getting, and they're keeping everything.

But now we are moving also into, not just Norway, but also Sweden, Denmark, Germany, Holland, and Belgium. And there, we wanted to offer a bit more security, and therefore we also include free return shipping - and that kind of changes the model a little bit, like I mentioned before - not doing exchanges anymore, but just return the items to us. But this is also still an experiment, we may change that as well again.

Len: That's really interesting. I thought I saw a map online with a sort of circle around a bunch of different countries, and I didn't know that was an expansion - I thought that might have been the way it had been done the whole time. But that must be really interesting dealing with new countries.

I'm curious - Leanpub reaches people all over the world. Leanpub books can be written in all kinds of languages, but we use English exclusively for communicating with people. Have you had to change the language with which you communicate, as you've expanded?

Mark: Of course, in Norway, we have Norwegian as a main language. With the other countries, we are also adding individual languages there, yes. I think with Leanpub, you are talking about a more - advanced is maybe not the right word. But you have more technical people, for sure, using it. And they are used to using English, even if English is not their own language.

But we are talking about moms that are stressed with screaming kids - and you don't want them to start thinking about what they're reading in English, in order to sell them a box. You want them to be as comfortable as possible. So I think for us it is important to be in the native language. And we do that with the website, we do that as much as possible also with the emails. The main limitation is that we don't possess the skills to translate these languages ourselves, so we're using a few moms for that.

Our philosophy is that we're helping moms. One way of helping them is also giving them a little bit of extra work, or money, in that way. Especially people that don't want to have a full-time job, but have a few hours here and there. So we extend that towards basically everything, where we can.

Len: One of the big differences between Leanpub and your company is that we don't deal in physical goods. And at the same time, as you point out correctly - most of our books are technical books, and so most of our authors are technical authors. And most of our readers are technical readers, so they are familiar with English.

But I have noticed that when it comes to communicating with people in languages that we're not familiar with, when it comes to very detailed step-by-step things that people can do to resolve their own issues - online translation services have kind of revolutionized how well we can communicate with people. So if it's a matter of, "Go to this part of the website" - like if someone communicates with us in, say Spanish, asking for a refund - we use online translation services pretty well to communicate to them. Like, "Go to this page, click this button, then you'll get your refund." But if it were much more complicated, about a matter of like physical goods and returning, I don't think they would be up to the level that that you need.

Mark: No, and also I think a main difference here is that when we speak to German people or French people - then I'm using the translation services as well. But then then it's me as a person talking to another person, and their expectation of how that communication goes is a lot lower than when they actually go to a website where they can read the website in their own language.

Len: I see.

Mark: And for that, these translation services are not nearly good enough - nowhere near good enough, to be honest. If I take an English text and I translate that using any of these that I've used, into German - then even I can see that not everything is perfect. And then when I give it to a German person, they will go and change a lot.

I think one of the things that we need to do with our customers, is build trust, right? That's the biggest thing. That's important for every business really. But what we are doing, is we're just basically telling them, "Okay, give us your money, tell us what you like - and we'll find something, and then we'll give it to you as a surprise. You don't know what you're getting." That there requires an additional level of trust, as well.

And the prices are also not very cheap. I mean the smallest box starts at €150. I don't know what that is in US at the moment, but it goes up to €500. So these are bigger-ticket items. And when you're building trust, you don't want to show a website where you can clearly see that it's done by Google Translate. Then at that point, I think it's better to go for English.

Len: You're reminding me - there was a period early on in Leanpub’s existence when we were a little bit, shall we say, kind of cowboy in our in our approach to that.

We wanted to be able to internationalize book landing pages, so that if a book was written in, say Japanese, then the instructions on the page would be Japanese. We have customers who are both readers, and customers who are authors, who love writing. And there were technical people.

So we actually did do Google Translate, knowing that people would go, "This is totally wrong." And then we set up a GitHub repo so they could correct it themselves. And that's how we internationalized Leanpub. It worked, because half of our customers are writers themselves, and everyone's technical. So when someone like that sees what we've done, they kind of knew what they were looking at. Like, "Oh, it's a bootstrapped startup that's -"

Mark: Yeah, I think it's perfectly fine in that case - definitely. Partly we do that as well, meaning that we're using our own customers to translate. Not just because we feel that fits within our motto, but also because they are our target audience. So the language that they speak comes much closer than if we were to use a translation agency. If we're getting a 50 year old guy translating our stuff - then that may work perfectly fine, but there's also a really big chance that that person does not speak the language that 30 year old women are speaking.

Len: Moving on to the next part of the interview, a few years ago you wrote a couple of books on Leanpub. I wanted to ask you about the CQRS book. What was the origin of that book?

Mark: The origin is really Greg Young, who is one of the main inventors behind the CQRS pattern.

He was staying in Berlin for several days, I think a few weeks even, when he was doing consulting work and other stuff. We were chatting about this CQRS framework, and how it worked. Based on that, I started writing a few blog posts. And those blog posts - more and more people started reading them. So what I did then was, I was being lazy, and I converted those blog posts into what is now the CQRS book.

I tried to change the wording enough, but I think you can still see that it originated from a blog. It's made a lot of people happy, I think - and it still does actually. Peoplebuy it, and I also give it away to anybody that asks for free one.

Len: I actually wanted to ask you about that specifically in a couple of minutes. But just before I do that - som CQRS stands for Command and Query Responsibility Segregation. There's actually a really great video where you explain everything in detail very generously. But if you could talk a little bit about what Command and Query Responsibility Segregation is, and what Greg Young's innovation on that was?

Mark: Now I'm going to get calls from him telling me that I'm completely wrong, of course, but the main thing is that you have different problem spaces, right? If we start from the simplest cases, you want to show data on a screen, or you want to use data for a particular use case. Then you want that retrieval of that data to be as easy as possible. You want to not have to join 20 different tables in order to show an overview of some information to a user. Especially not if that happens a lot of the time.

So, you want to have a specific data model for that specific use case that you want to display the data. And then you've got other use cases - where you're changing data, you want to update certain thing.

But it's not like a CRUD app - where you just have a table, you make a change to that table - and that's it, a one-to-one relationship with the data that you changed, and the stores of it. You have logic, you have data - a business logic that makes certain decisions based on certain actions or certain data entry points from the user. And based on that business logic, stuff may happen, stuff may change. I call it "logic happens."

Again - there you want to be as specific as possible to the actual problem that is being solved. Now, these two are are the not matching anymore? So, the way you read the data and quickly show it, does not match the way that the data is being used when the business logic needs it, and in order to migrate between these two points, you start using events. So the business logic triggers an event, which then can update one to X data stores for reading - so that you optimize for each individual use case. I hope that makes sense?

Len: Yes it does make some sense, and when you talk about business logic - that reminds me that part of the inspiration for this was Domain-Driven Design.

Mark: Yes.

Len: And that the idea is partly that there ought to be a kind of deep connection between the way the business actually functions, and the way the software functions.

Len: If it makes a lot of things a lot easier, yes. Reasoning is one big thing that makes it easier. So if the way your business works, if that can be translated roughly into how the code works - let's talk about events, the type of events that that code generates. If they are understandable by the business people themselves, then you can reason between the business people - the conversation between the business people and the developers becomes a lot easier if they are speaking the same type of language.

Len: It's a really deep idea.

One of the things that I find so fascinating about it is that, for sort of normal non-technical people - and I'm one of those myself - people often assume that the way a business would work is that there'd be the people in suits who then just tell the programmers, "Go make it work." And this is the way that, unfortunately, many companies have operated for a long time.

But there's been this revolution in understanding that actually there's a logic to the business, and there's a logic to the software. And if those can match - not only are there all sorts of efficiencies that come from that, but also it gives you a shared language for talking about what you're doing, which has always been this notorious problem where the tech guys and the executives can't talk to each other.

Mark: Yeah, not just them. I think communication is probably the biggest problem that the world knows.

Len: Right.

Mark: So, lots and lots of projects are wrong. So there's different things, right? If you communicate wrongly, then it's not surprising that the software that you get is not what you really wanted.

Another problem is, of course, that you say something - then you go away for three or four months. And then you get together again, and then suddenly you realize that it doesn't work. That's another major issue of course for lots of companies - by speeding up releases and being able to communicate more often in a language that you both share, you are increasing the chances of success a lot.

Len: And it's so important, when software is eating the world, and every business is becoming a software business, or has to be in order to compete.

Moving on to the last part of the interview. So, a few years ago you decided to write a couple of books, and you decided to use Leanpub as your platform. Do you recall what the reason was that you chose Leanpub as the platform for your books?

Mark: It was easy. At the time, definitely easy. And I think it still is easy. But that was one of the main choices. I think it was with Dropbox at that point, that I connected. And you write in plain text with a markup language. And you save the files, and you generate a really nice looking PDF.

Len: Thanks for saying that. We like hearing from people that they find it easy, because not everybody does. But for some people, it just fits and makes sense.

Mark: I'm a technical person, so for me it was definitely easy. And also - I think they've discontinued it not too long ago, but you generate the PDF that Amazon could use to create the Kindle, and also a written physical book. These type of things, I think it made the book accessible on multiple platforms. And if it wasn't that easy - I wouldn't have done it, most definitely.

Len: Oh, are you saying Amazon discontinued something?

Mark: CreateSpace or something, I think?

Len: Oh yeah, so they used to have a different brand called CreateSpace and they merged it into KDP. Basically you can still do what you did, but you have to use a different sort of service within Amazon.

Mark: Right.

Len: That's interesting, so it was just that easy for you to get your book up in print-on-demand in Kindle on Amazon?

Mark: Yes, for sure.

Len: That's great, that's always nice to hear.

You mentioned - and you also say it on the Amazon page with the book - that if someone can't afford the book, you'll give it to them for free. Have you had people ask you for free copies?

Mark: Yes, quite regularly. It's becoming less, but for sure.

You guys can probably see this, I don't know how many I've given away for free. But it wouldn't surprise me if it was half.

The reason for doing this has never been to make a lot of money. I should have been writing a lot better books then; But it was to share the information. And the money that I'm getting from Leanpub, I've always been using during vacation time. As you know, I've been saving up - so I don't get my monthly royalty checks from you guys. I just ask you, "Can you now transfer the money what is there." But with that sharing - it also means that if people can't afford it, and they get a free copy.

Len: It's very generous. And also at the same time, one thing that we've learned over the years - and in the self-publishing world, there's huge debates and theories about the value and purpose of giving away free copies. But one thing we've noticed, particularly because we have a variable pricing model, so you can actually set the minimum price of your book to free - but then you can set a suggested price for some dollar amount. Our bestselling books by revenue have free minimum prices.

Mark: Right. I didn't know that actually.

Len: Oh really?

Mark: I mean I did not know that I could do that, so -

Len: Actually there are a number of Leanpub authors who have a similar model to yours, which is a paid minimum and a paid suggested price. But who also often say, "Look, if you can't afford it - we'll give it away to you for free." I think that's partly because so many Leanpub books are nonfiction, and they're created in order to teach people something.

And so, although everyone likes money - as the old joke goes, "That's why they call it money" - people who write conventional Leanpub books are also trying to spread information and help people. And so being able to spread that information is their main motivation for doing the work they've done in the first place. And so, being able to give it away for free, which you can do very easily on Leanpub by giving people coupon links, is a very attractive proposition.

Mark: I 100% agree. My reasoning is - okay, if you can afford it, and the information is useful, then you'll probably earn a lot more than the than the book's cost, with the new information. So for them I think, you can just pay.

I don't like the tendency, especially among developers, where they say, "I don't want to pay for a tool." But then they go, and what do they do? They build tools, right? That's a bit of silly reasoning in my in my mind.

But for people that can't afford it, or for students or people countries where the minimum amount is still a lot of money - then yeah sure, you can have it for free. Because, why not?

Len: That's interesting you say that. That's exactly the kind of reasoning that we suggest people use when they're - I mean, pricing is hard, as you know from your company. And that's exactly the reasoning that we sort of suggest people think about when they're pricing their books.

Because the difference between, say, a genre fiction book and nonfiction technical book, is that a nonfiction technical book can actually get you a promotion or help you build something that you couldn't have built otherwise. And if you're a consultant and you can, as a result of what you've learned, bill yourself out at a higher rate - the value of a book to you is quite a bit greater than it would be if it were - mot to disparage entertainment, but if something is there for entertainment, it enriches your life, but it doesn't fatten your wallet. Whereas certain types of nonfiction books actually can do that.

Mark: Exactly. And with the CQRS book, there's actually even a complete repository with working codes, and the book describes the working code. So if you want, you can just use that repository as a quick start for getting something up and running - like a proof-of-concept to show people how it works, and then you can move on and build your actual proper implementation. I think the money that you save by being able to do that, should be worth whatever the price would be.

Len: Definitely. And so, the last question I always like to ask people on this podcast is - I don't know if it's entirely appropriate in your case, because you've got five kids and you've got a business that you're working on, and so I don't know if you're going to be writing another Leanpub book anytime soon. But I do always like to ask people, if there's one thing you can think of that we could build for you, or one thing we could fix for you - is there anything that you can think of?

Mark: I'm really happy with what you guys are doing. So I have no immediate wishes in that respect.

As to writing something new, I like the aspect of writing - but it does take a lot of time. I'm currently doing a lot of other type of writing, like sales pages. I'm reading books that are like 20 years older than I am, and I think once I get more proficient in that, it would be fun to write something about copywriting for people like me - people that don't have that background, and didn't start in that way.

I think it's really interesting, especially reading a book from 1920 or something. These type of things still work in the human mind. I think a lot of people that build a startup, and we look at other startups, and how they present their pages, and stuff like that - they just have no clue. And I think as a technical person myself, if I could write something like that and help other people understand that there's a better way of communicating towards your potential customers, that would be a fun project to do.

Len: That's sounds like a really great project.

Mark: But not yet.

Len: Fair enough. Well than you very much, Mark, for taking the time out of your evening to talk to me and to all of our listeners.

Mark: Thanks for having me.

Len: Thank you very much. And best wishes with the business, it just sounds amazing.

Mark: Thanks. You guys as well, keep going.

Len: Thank you.

And as always, thanks to all of you for listening to this episode of the Frontmatter Podcast. If you like what you heard, please rate and review it wherever you found it. iTunes is particularly helpful for us. And if you'd like to be a Leanpub author yourself, please go to Thanks.

Podcast info & credits
  • Published on June 26th, 2019
  • Interview by Len Epp on June 4th, 2019
  • Transcribed by Alys McDonough