Jason Turner, Author of C++ Best Practices
A Leanpub Frontmatter Podcast Interview with Jason Turner, Author of C++ Best Practices: 45ish Simple Rules with Specific Action Items for Better C++
Jason Turner is the author of the Leanpub book C++ Best Practices: 45ish Simple Rules with Specific Action Items for Better C++. In this interview, Leanpub co-founder Len Epp talks with Jason about his background, how he got into programming, conference speaking and remote conferences, his book, writing and being a content creator, and his exp...
Jason Turner is the author of the Leanpub book C++ Best Practices: 45ish Simple Rules with Specific Action Items for Better C++. In this interview, Leanpub co-founder Len Epp talks with Jason about his background, how he got into programming, conference speaking and remote conferences, his book, writing and being a content creator, and his experience as a self-published author.
This interview was recorded on September 22, 2020.
The full audio for the interview is here: https://s3.amazonaws.com/leanpub_podcasts/FM164-Jason-Turner-2020-09-22.mp3. You can subscribe to the Frontmatter podcast in iTunes here https://itunes.apple.com/ca/podcast/leanpub-podcast/id517117137 or add the podcast URL directly here: https://itunes.apple.com/ca/podcast/leanpub-podcast/id517117137.
This interview has been edited for conciseness and clarity.
Transcript
Len: Hi I'm Len Epp from Leanpub, and on this episode of the Frontmatter podcast I'll be interviewing Jason Turner.
Based in Colorado, Jason is a software developer and C++ trainer as well as a popular keynote speaker who has given talks around the world.
He's also the host of the C++ Weekly show, which you can find at https://www.youtube.com/c/JasonTurner-lefticus, and he is the co-host of CppCast, which you can find at http://cppcast.com.
You can follow him on Twitter @lefticus and check out his website at emptycrate.com, and you can support him on Patreon at https://www.patreon.com/lefticus.
Jason is the author of the Leanpub book C++ Best Practices: 45ish Simple Rules with Specific Action Items for Better C++.
In the book, Jason draws on 20 years of experience to help people overcome common mistakes that C++ developers often make, at all levels of programming proficiency.
In this interview, we’re going to talk about Jason's background and career, professional interests, his book, and at the end we'll talk about his experience as an author.
So, thank you Jason for being on the Leanpub Frontmatter Podcast.
Jason: Thanks for having me on.
Len: I always like to start these interviews by talking to people about their origin story. So, I was wondering if you could talk a little bit about where you grew up, and how you first became interested in technology and programming specifically?
Jason: Where I grew up might take up half of this podcast, so we'll skip that part. But I became interested in programming - so, my dad bought a TI-99/4A. This was the early eighties. I messed around on that a little bit, and then my brother - all of his friends had Commodore 64s back then, so he wanted to be able to swap games with his friends and such. So he bought a Commodore 64, and that - having those two computers in the house, I was extraordinarily fortunate.
So I got exposure to computers and programming pretty young, and my brother taught me the basics. It's interesting, because he actually went to university for a Computer Science degree, but lost interest. But that interest that he kind of instilled in me, stuck around for me.
Len: There's a great talk that you gave in 2016 at CppCon, where you talk a little bit about Commodore programming. I'm actually very curious, how did you start programming? I've interviewed people who've started programming at various different eras of computing history. What was your first experience like programming? Did you have like a magazine and type out some code into the computer?
Jason: The first experience that I can recall was a simple example, and I actually recreated this on my other YouTube channel - which I haven't maintained in years, so I don't talk about it - which is called "The Retro Programmer", where I took some graph paper and drew out some like animated figures, and then typed in the codes for it on a TI-99/4A emulator and just made like a little jumping jack figure that is animated.
My brother was always an artist, interested in those things. So this kind of thing is often going to come back to my brother, a few people who really influenced me in my life when it comes to programming.
He was interested in the graphics side of things. And I remember asking him at one point, "How do I do the little dancing, the jumping jack man or whatever?" And he got me started on that. That's the first thing that I remember programming on my own, was putting in the codes for that. That would've been like 1985, and I would've been about seven years old at the time.
But then - after that, it was just - I don't know? I would type in things from magazines, yes. I actually still have some of those magazines, just right down here, that were early 1980's programming magazines. I was interested in this, basically as long as I can remember.
Although, I couldn't break out of this world of BASIC programming. BASIC, the programming language, that is. Because all those computers came with it. And then DOS had GW-BASIC and QBasic that it came with. It wasn't until high school where I started to like actually learn more about how computers work, and then I started experimenting with like Pascal and C a little bit, C++.
Len: And I can see from your LinkedIn profile that you studied Computer Science in university.
Jason: I did.
Len: One of the questions that often comes up on this podcast is - and it depends on what the person's background is, the version of the question that comes up - but if you were starting out now to have a career in programming, would you advise yourself - knowing what you know, to take a four-year proper Computer Science degree? Or would you advise yourself to start elsewhere?
Jason: Personally, I would still do a four-year degree. Although I, like just in the last - I don't know, six months or so - realized if I was going to do that right now, I would focus specifically on photogrammetry. Because I find that just totally fascinating. That would be -
Len: Can you talk a little bit about what that is?
Jason: Sure. That is where you can take a bunch of pictures of a particular scene and - algorithmically, automatically - match up the points in the scene and do a 3D reconstruction of that scene. And it's the kind of thing like watching archaeology TV shows, where people have been using that technology to reconstruct and preserve what a site looks like today. And then in ten years, they can come back and do the same thing again, and see what kind of erosion is happening or whatever. Some of the photogrammetry applications are super simple. You can just take a cell phone and take a few pictures and build a 3D model - it's used in real estate, it's used in all kinds of things now.
Len: That's really fascinating. I actually had never heard of that before. But that's something I'm definitely going to look into, and I'll maybe put a link or two to it in the transcription of this online.
It's interesting. Some of the people I talk to regret their time in university as wasted time. Others are like, "It was the best time of my life." Some people didn't study Computer Science at all, and they studied something else, and they still think it was a good time. Other people regret having spent time on a major that they didn't follow up with later on. So there's as wide a range of experience as there is people.
I'm curious how you got into conference speaking. That's something that a lot of Leanpub authors, or budding Leanpub authors, are trying to break into. How did you get into that?
Jason: It was all very accidental. So full disclosure - like, what was it? It was maybe ten years ago, I was asked to give a presentation for a client that I'd been working with. I'd become a sub-employed contractor at this point in my career. And I hated that. I went back to the manager and I said, "Just so you know, I am never presenting again for your organization." And it's only a room of like ten people, right? It was just my own personal nerves and whatever.
But then over the course of having been self-employed for about five years - I had a lull in my contracts, and I had a bunch of free time available. And I thought, "Well I have no idea what I'm going to with this free time, so I'm just going to put everything out there that I possibly can, and see what sticks." And so I actually applied to speak at some conferences. I had two talks accepted to the first conference ever that I would be speaking at.
That was at C++Now in Aspen - which is in Colorado here also, in 2015, I think that was? And I had a shockingly great time. I just had so much fun. And it was a particularly good venue and a particularly good conference, with really welcoming people. It's the kind of - that particular conference, is the kind of conference where if I don't know the answers, the someone in the audience does, and they'll give the answer - and it's okay, right? It's a good welcoming environment for that. And so I just had so much fun, and decided, "Well, I guess I'm going to keep doing this."
So for people who are curious how to get started, you just have to start putting in applications to speak at conferences. I mean, that's the short answer. But it was all just kind of this weird slippery slope.
And then I became a podcast co-host, and thought, "Well, as long as I'm doing this, I may as well start a YouTube channel too. I don't know?" And so now I have spoken at conferences and/or user groups in many countries. I won't bore you by counting them at the moment. Probably an average of six conference talks a year, something like that, for the last five years. Although none for 2020. I have not done a single one this year.
Len: I've got one or two questions to ask you related to that in just a moment. But before we go on, the last thing I guess about your background is - so, you made this choice to go independent some time ago. What led you to do that, and how did you feel about it when you made that decision?
Jason: I had always like wanted to be independent. Even in high school, I thought, "I'm going to have my own business. I'm not going to work for someone else." And my cousin and I - I said there's a couple of people who have influenced me programming-wise - my cousin and I had talked about starting our own business in high school, and that kind of thing. We were in the same year. We both went to Virginia Tech together as well. And I just - there wasn't a good opportunity. I didn't have like a business that was going to make money, right? So I just took jobs.
And this is - again, is just one of these things. Where, how did it happen? Well, a new manager came in at my last job, and we didn't get along very well. So it ended up that I found myself saying, "Well, I need to find another job," basically. And at approximately the same time, a client that I still work with now - ten years, eleven years later - actually sent me a cold email and said, "Hey, we like this open source project that you have, and we're wondering if you can do work like that for us." And I said, "Sure." I mean, that first contract was tiny. It wasn't nearly what I was used to making. But that just kind of happened from there.
Len: That's really interesting that it was an open source project that got you found.
Jason: I've been extraordinarily fortunate for the last eleven years. Almost every single line of code that I've been paid to produce has been open source, from various clients, various parts of the world.
Len: That's fascinating. And actually - I guess one last question about your background, how did you get into C++?
Jason: How did I get into C++? I don't know.
Len: Fair enough.
Jason: It was the year before I started college, and I wanted to try C++. But why did I want to try C++? I don't remember. But then I didn't really - I kept trying it through university a few times. And then - well, and then it comes down to, "Who knows how this happened?" I ended up unemployed. I was unemployed for seven months. I spent those seven months working on my own project in C++, just to get more skills and knowledge. And it was the work on that open source project that actually led to my first C++ programming job.
Len: That's a really, really great story. I can see there are a lot of details there. Thanks for being so forthcoming about all that.
Before we move on to talk a little bit actually about conferences, I wanted to ask you a little bit about how the pandemic has affected you.
Jason: Sure.
Len: A few months ago, I started kind of date stamping these with an ominous, "This interview was recorded on such and such a date," which I hadn't been doing before, but it matters now, and has for months. So, how have things affected you? I think you're in the Denver area? How have things been in Denver, and how have things been for you?
Jason: So here specifically, our schools have gone back in session. Students are - as far as I know - wearing their masks. That kind of thing. I don't have kids, this doesn't affect me directly. But as far as I know, we don't seem to be having the same issue that a lot of the other parts of the world have. That, as soon as everyone goes back to school - the school is closed, and everyone's sent back home again kind of thing.
So from a pandemic perspective, I would say we're doing pretty well. Most of our stores and restaurants are open with 50% capacity. Depending on where you are in the state, like 100% of people are wearing masks. People are being courteous. And it's - I mean, we have a statewide mandate that you have to, but it's working out. This is my perspective on things.
From a work perspective, that old client that I mentioned, that I've had for like the last eleven years - had a bunch of extra work available this year. And so even though I haven't been doing conferences and training, I have had plenty of programming work to do. So it's basically all worked out, the only difference being, I effectively never leave my home, compared to travelling and training all the time - which I was doing previously.
Len: And did you start adopting sort of pandemic habits? Like ordering groceries online or something like that, that you hadn't been doing before?
Jason: We did not. The grocery stores right around us at the beginning of the pandemic were - if you ordered something online, it would take like a week to get to you, and the order would be wrong. I don't know why, but they couldn't work it out.
My wife and I are a very low-risk group. So, instead my wife just started asking our friends, "Do you need me to go grocery shopping for you?" Because she could get it done better and faster than ordering online was working out. So there's a couple of friends that she did the grocery shopping for, and as such - she just continued doing our grocery shopping.
Len: And I guess, I also need to ask you about fires. Because it's 2020. What were the fires like in Denver?
Jason: We still have an unhealthy warning today. So, the mountains are still on fire. It's messed up my running schedule, basically. But the last couple of mornings, the weather's been great. The skies have been clear and blue, and there hasn't been any smoke in the mornings. So I've been going on long runs with the dog. Otherwise - I mean, for me personally - not a huge effect. Just this - when it smells like campfire all the time in your house, that's weird.
Len: I'm quite a distance away from you, a little bit north of Washington State in Victoria, British Columbia. And we had a week of just smoke in the air.
Jason: From California, yeah.
Len: From California and from Washington State, I think as well.
Jason: Oh, okay.
Len: And - yeah, I mean - I kind of like the smell of campfire. I wish it had smelt something like that, instead of just like poison.
Jason: Right.
Len: But actually, I mean - again, even though we're this far away - I've had a very similar experience. A couple of days ago, things just cleared up, and now it's just blue skies and mountains in the distance. It's nice when things get back to being - not just normal, but actually good and pleasant.
Speaking of normal, there's a little bit of a new normal happening. On one of the recent episodes of the CPPCast, you were interviewing some people from - I think from Microsoft?
Jason: Yes.
Len: About CppCon 2020.
Jason: Yes.
Len: And that's gone totally online. I was wondering if you could talk a little bit about how they handled it? Because this is a pretty big conference, as I gather - and something that a lot of people look forward to every year.
Jason: Well, on the scale of programming conferences, it's kind of shockingly small in a way, right? Because I mean - some of these conferences, like I mean AWS - whatever,they get like, I don't know? Stupid numbers. 20,000 people or whatever at their conferences, right? CppCon is the biggest in the C++ world. I think there might be, I think C++ Russia might sometimes be bigger? But it's about 1,300 people or something like that, in a normal year. My understanding is that they got 900 some odd registrations for CppCon 2020. And used a system called Remo, have you ever heard of that?
Len: No, I hadn't heard of it until I listened to the episode. But if you could explain a little bit about how that works, it sounds really fascinating.
Jason: It gives you like a virtual conference floor. So you've got a bunch of tables, and tables with different numbers of seats at them. Like 2, 4, 6, 8 - something like that. And you can just go and click on a table - and if you choose to, turn on your camera, turn on your microphone, and have a view of the other people at the table. Kind of like - it's described in some ways as like an impromptu Zoom session or something like that. And when you're bored, you can leave that table and go to another table. It kind of replicated the experience of being in an actual conference.
But sometimes in an actual conference, you're just walking down the hallway to go to the bathroom or whatever, right? And you overhear a topic, and you're like, "Wait a minute," - and you go and join that conversation real quick. That's impossible in this kind of virtual environment, right? You're not going to accidentally hear something that catches your interest. You have to end up at a table of people. And there was kind of normal - I think, Zoom, again - behavior, where not everyone was turning their cameras on. So when you did find a table where there were people talking, it became like this magnet where everyone went to it. Then you had a lively conversation.
And then, if you were in an actual conference room where a talk was going to happen, you could still carry on these talks at tables. As soon as the conference talk was getting ready to start, it would automatically shut down the tables, and then do a full screen with the presenter. The presenters I talked to said that it was kind of like talking to a brick wall for an hour, and they found it very exhausting. Which is one reason why I have not spoken at any conferences in 2020.
My personality as a speaker - and if anyone listens to this who knows my style - I jump off the stage, I wander up and down the aisles. I want the audience actively talking back to me. If they aren't, I do things to make them do that. That's kind of impossible with the way that the online conference was done. There's a live chat, and some of the speakers had a separate computer open, and they could read the live chat. But not quite the same thing.
I think people said, "In some ways it was better, though." Because in that live chat, if the speaker brought up a topic that someone didn't know the answer to, or didn't know what that topic was about - then someone else in the chat room could answer for them. So I found it interesting.
Len: Thanks for sharing that. Everybody's having their own experience of how this is affecting the way they operate professionally.
One of the things I've been curious about is how virtuality effects networking. For example, we just had a couple of summer students - co-op students from the local Computer Science department, whose first job was remote. They've never known anything else and -
Jason: Wow.
Len: Yeah. And I mean, they took to it fantastically. But I do wonder how professional networking is going to sort itself out. Because so much of that is a matter of in-person serendipity.
Jason: Yeah.
Len: I've interviewed people, who - their whole professional lives were changed by meeting someone in line for coffee at a conference.
Jason: Exactly. I read a comment from someone recently - they said, to them, the main advantage to doing things like speaking or going to conferences, is new contracts. Like you're saying, they can change your life. And they said, "Usually by the end of the first day, they've got some new contract work lined up when they're at a conference." And they're like, "This is -" And in that person's opinion, that's never going to happen in a virtual conference. I don't know if that's true or not. I didn't line up any new contracts. I also wasn't actively looking for anything new at this one. I don't know. I have no -
Len: Yeah, we'll see how people adapt. I mean, people are going to still have interests, and there still will be chance involved. Back when we were a bootstrap consultancy, our biggest client ever discovered us by pirating my co-founder, Peter's book, then getting in touch with him, saying, "Wow, you really know your stuff. We need you." So those things can happen in various ways
Just moving on to the next part of the interview, where we talk about your book, C++ Best Practices. What was the inspiration for writing this book?
Jason: I did a set of tweets, I think it was at the beginning of the year. I said, "One best practice per retweet." And by the time I had typed in like 45, I was like, "Okay, I'm done here. I can't give away all of my material. Because I'm also a trainer, right?"
But then I had a few people that said, "This is great, this is gold. When's the book version coming out? My co-workers need to read this". So I put that in the back of my mind, and very slowly just collected those things and organized them over the next few months until I decided, "Okay, I'm going to actually announce that I'm going to do this."
And a shout out, since you mentioned my Patreon earlier - I do have a book supporter tier on my Patreon. Because people asked me to. They're like, "Oh, you're working on a book, give us another tier." And I'm like, "Okay." So I gave them another tier, and I've got a list of credits in the back of the book for people who have been supporting me at that level. They get their own coupon codes for the book as well.
Len: Just wondering if you could talk - I mean, without giving the whole thing away - if you can talk a little bit about a couple of the best practices that you talk about in the book. One that struck me was, "Don't copy and paste code."
Jason: Oh goodness gracious, yes. If you don't mind, I'm actually going to bring up my own outline of the book.
Len: Please do, please do.
Jason: Okay.
Len: I've got your table of contents here.
Jason: Thanks, that's helpful actually. And it's funny, because I was just working on it before we got into this call too. Because I'm getting very close to being able to say it's 100% done.
So, yes - don't copy I don't want to say that they're in order of most important to least important, because I don't want it to come across like the things at the end of the list don't matter - but there are definitely things that I want people to think about. And a lot of what I talk about - you said, "Don't copy and paste code." I'll get to that in just a second.
A lot of what I talk about is around tooling. C++ is a complicated language. It's been around for a long time. It has a long history. Part of that means - if you go and Google for how to do something C++ - you are going to find nine out of ten, terrible answers.
With our modern tooling, we can get the compiler and our static analysis and those kind of tools, to tell us when you're doing dumb things, basically. So a lot of what I talk about is around tooling, or, at the very least, if it's a rule - it's how to get the tool to actually help you enforce that rule.
So when it comes to, "Don't copy and paste code," I've been doing a lot of refactoring for clients lately. And one of the main things that I've noticed is - if I'm doing some relatively simple refactoring and I change a line of code and I search for the next use case, and I change the line of code and then I search for the next case, and I change a line of code - and I go, "Those three lines seemed awfully familiar." And then I search again, and the next thing looks like the first thing again. And the next thing looks like the second thing.
And I'm like, "Wait a minute." And you start to - you don't see it when you're doing it, right? It's so easy to be like, "Oh, well I just need to print out another thing. I'm just going to copy and paste this real quick." But what you've just done is, you've taken a block of code, duplicated it, triplicated it - and then you say, "Oh, well the next thing that I need to output looks an awful lot like the last thing that I needed to output." So you go copy that whole block that you've just made three locations of already. Next thing you know, you've got hundreds of lines of code that should've been like one function call ten times. And this - I mean, it's not specific to C++, but it's just a general best practice thing.
What makes C++ relatively unique is with our generic programming mechanisms and template capabilities, we have that many more tools available to us to make it easier to not replicate code. We can say, "Oh well, I just need to take any type of thing and print it out, the standard out here." Okay, well, it's super easy to write a template function that can take anything and write it out, as far as typed languages go.
Len: Thanks very much for sharing that. One of the really interesting things about your book, is you actually talk explicitly about best practices at the beginning. Is that so much -? Like, you can know, you can learn the lesson - but having the discipline to do it seems to be one of the real tricks for - and I'm reminded of a recent podcast interview I listened to, with someone who I think was a psychologist who become a journalist, who then became a kind of like champion poker player.
Jason: Of course.
Len: And she wrote about it. She learned from one of the best poker players in the world. And she said the biggest thing she learned was how to control herself when her impulses were trying to make her deviate from what she knew in her sort of super ego brain, was the right thing to do.
When you're training people, do you have any techniques or tactics that you give them for what to do when you're sitting there, and you're tempted to shortcut?
Jason: Well, going back to what I started with. A lot of that is getting tools in place that catch you when you've - because it's not just you, right?
Okay, let's just say you are a perfect programmer. Is the guy or girl or woman in the cubicle next to you a perfect programmer? Because your code's always perfect. But the person next to you - of course, right? So it's a little bit snarky. But having tools in place, having a culture of saying, "We're not going to move forward unless our tools agree and say that we're doing good things," is definitely part of it.
One of the things that I have in the book is, it's a short chapter called, "Slow Down." This comes down to copy and pasting code. Like, if you find yourself - and particularly, again - C++ is a multi-paradigm programming language. It can do object-oriented, functional, procedural. We can do compile time. We can do generic programming. We can do pretty much anything in this language.
If you find yourself saying, "Well, the solution that I'm currently working on is really complicated." Stop. Go for a walk. Take a glass of water. Because there's almost certainly a simpler solution in there. So that's the main thing that, if you want to say like, "How do you stop yourself?" That's what I would say, is just, "Slow down." But it is easy to just copy paste, copy paste. Do whatever, take the shortcuts and not really think about what you're doing. So guess it's the best I've got to say about it.
Len: You mentioned static analysis, and you also have a section about that in your book. I was wondering if you could talk a little bit - or maybe imagine someone's listening who isn't a programmer, what is static analysis, and how does that help people write the code that runs everything we use nowadays?
Jason: Okay. So I will - if you don't mind, talk about static versus dynamic or runtime analysis - to get the contrast there.
Len: Oh sure.
Jason: So static analysis is analysis that is performed on your program without actually executing the program. Now, that's a little bit of a hand-wavy way of saying this - or a little bit nebulous, ill-defined way. Because static analysis can do things that are complicated, like tracing the control flow of your program. So, it kind of looks like it's running it, but it's not. So what you do, is it analyzes your source code, basically. Static analysis analyzes your source code, and then can give you back results, and say, "Well, this variable could've been const, but you didn't make it const. I suggest that you make this const."
Modern static analysis tools are amazing, because they can even give you a quick fix option. Just - you click a button or run an automated script, and it just does those things for you. So static analysis analyzes your source code and tells you where you're breaking, best practices, or perhaps invoking undefined behavior or getting something else that you don't want in your program.
Runtime analysis and - like the sanitizers I mention in my book, are tools that actually execute your program - but in a special, instrumented way, in some way. So if your program says, "Well, I have this array of five elements," and tries to access the sixth element, if you're lucky your program will crash. If you're not lucky, it'll access data that's not there and cause who knows what to happen. You start getting bad results from your program. You start getting client data that has been corrupted. That's bad. Good is a crash, because at least nothing got corrupted in the process.
Runtime analyzers, like the sanitizers - like I said - they hook and instrument your code in such a way that if you try to make that access to the sixth element that's not there, it does crash. And then it gives you a debug statement that says, "You tried to access the sixth element of an array of five things that was allocated on line five, and you tried to access it on line ten." And these things - these tools are getting absolutely amazing as well, like almost magical.
Len: Thanks very much for that explanation, that was really clear, about something that might be a little arcane to people who aren't sort of in the programming world. There's a lot more to the book than the bits that we've just discussed.
Jason: Yes.
Len: I should mention to people that it's about 100 pages long right now.
Jason: Yes.
Len: The sections are pretty short, so you can just kind of dive in, and you can scan the table of contents and learn a lot of really, really useful things relatively quickly - and it's also very clearly written as well, I should say. So, yeah - if you're looking to learn, this is a good book to learn from.
Jason: And I just want to comment that the terseness is 100% intentional. I could write more words, but it - one of the things that I've learned as a contractor in the last ten years is, if my client asks me a question and I give them a detailed explanation, they don't read it. So I don't give you all the details in this book. Because I want you - something that you can quickly digest and will read.
Len: Thanks very much for sharing that. Actually that offers a perfect segue into the last part of the interview, where we talk about your experience and your approach to being a content creator. I know you've actually made a couple of videos for O’Reilly in the past.
Jason: That's right.
Len: That's something that a lot of Leanpub authors consider doing. What was your experience like with that? Did O’Reilly approach you, did you approach them?
Jason: Someone recommended me. I don't know how, I don't remember the details. And so one of the O’Reilly representatives, one of their - I forget what the job title is, but basically the people who are out there trying to acquire more content for the publisher. They're kind of like agents or something. They came to me and asked if I was interested in this. And I asked other people I knew who had worked with them and had good experience, so I went ahead and did it.
It was interesting. It was one of my first experiences in this content creation world. But for me personally - creating content in someone else's terms, was not really ultimately what I decided I wanted to do. So all of the slides in the video have to be to their template, and with their fonts, and how they want things laid out. And I have my own style, my own template, my own slides. I've been speaking now for several years regularly, right? So I have been contacted again about doing other videos for other people for various reasons, and I - well, if you're going to make me fit my style into your template, then I'm just not terribly interested now.
But it was a good way to get started. It was a good way to help get my name out there. People learned about me partially from those videos that I did with O’Reilly, and it's - they're things that continue to make money. I still get a check every month, even though I did them - was it five years ago they were published? I think that's right.
Len: And do you remember if they gave you any training or anything like that? That's something that I think a lot of people are curious about. "Do I have to learn it all myself?" Or, "If I get involved with a company, will they help me out?"
Jason: They definitely helped me out. They gave me - like I said, the templates. And they shipped me the equipment that I needed to record. At the time, I didn't have any kind of decent microphone here. And they had all of their editors. So when it was all done, it was all very professionally edited.
The way I did it, is I would speak, and then I would type out some of the examples when I was doing some live coding demonstrations. They edited that together so smoothly so that my speaking was done over the typing. And my YouTube videos, I don't go through the effort to do that. It's far too much work, right? And then they did give me guidelines and if I had questions, they'd answer the questions. I did a couple of video conferences with them to make sure that we're all on the same page and that kind of thing. They definitely guided me through the process.
Len: And was it around that time that you got into podcasting as well?
Jason: I had started the podcast the year before that, and I started my YouTube channel a few months after those videos were released.
Len: Okay, so you've been doing it for a while now?
Jason: Yes. I've got - my YouTube channel has 238 videos up now. And at C++ Weekly, that's 238 weeks going. I have not skipped a week. One year I released a video on July 5th, instead of releasing it on Monday, July 4th or something like that. But since then, every single week. And the podcast is on episode 260, something like that. It's been going for a year longer. But we have skipped a few weeks with the podcast.
Len: It's really interesting. I confess to not being that disciplined in my podcast scheduling. But there is a little bit of secret sauce to the podcasting world, which is regularity.
Jason: Yes.
Len: Algorithms that help people discover podcasts, are often weighted in favor of podcasts that publish regularly. Particularly, my understanding is actually, specifically, weekly. But publishing on the same day or days of the week every week if you can, is actually one of the most important things for discoverability.
And it's, I mean - for pretty obvious reasons, right? They want to know that there's something fresh. They want to know that it's active. People - I mean I know for the podcasts I listen to, I'm super disappointed if Monday comes and there's no new Mindscape from Sean Carroll or whatever, iit really does make a difference. So if anyone out there is doing podcasts or are interested in doing it - try and be like Jason and do 200 weeks in a row, because it will serve you really well.
So, my last couple of questions are about your book, and why you chose Leanpub to publish it.
Jason: Right.
Len: Why did you choose Leanpub to publish your book?
Jason: I was - Do you mind if I make a comment on the publishing regularly thing as well?
Len: Oh no, please go ahead.
Jason: I admit, I don't honestly know how long of a podcast you aim for, so I don't know if we've been going a long time or not here, but - so I started a C++ blog in 2003, I think it was? And I did not keep going with it. So at the time it was moderately popular. I ended up being linked to from a Wikipedia article, that kind of thing. Because there were simply, there was like no one else blogging about C++. Not no one else. Herb Sutter was, who is the Chair of the C++ Standards Committee today. We didn't think about doing that so much then. If I had kept going with that blog, I mean - the number of articles and the amount of content and links back to my website that I would have today, would just be astronomical, right? Seventeen years, or something like that. I didn't keep going with it.
So you said, "Release regularly, weekly if you can." I just want to also just encourage anyone who's listening to this - if you're an aspiring content creator, I don't care what you're doing - just try to keep going with it. Set a minimal schedule for yourself. Once a month or something, so that you just keep going with it - if you have any interest at all in becoming independent, building some kind of brand for yourself or something like that. Because that kind of regularity and body of content is absolutely invaluable. If you have 300 articles on your web page, someone knows who you are, right? I mean, unless they're all spam articles. But that's not what we're talking about. So anyhow, sorry - why did I choose Leanpub? Do you want to -?
Len: Well actually no, I was just going to say - that's actually a really important point about spam articles. Because there are a lot of people who kind of might read a book like, "Tips and Tricks for Getting your Content Out There." You'll - I'm going to speak with maybe more confidence than I should about this, but it doesn't - first of all, don't let perfect be the enemy of the good, right? Everything doesn't have to be perfect.
Jason: Right.
Len: You don't have to be aiming for a Nobel Prize in whatever you're writing about. But if there's a lack of kind of authenticity to what you're doing, people will pick up on that. People will pick up on that. And so, for some people - that's just their personality. They want to have a playbook and they want to follow it. And if that's who you are, don't try and be somebody else. But I would definitely recommend, if you're an aspiring content creator trying to pull little tricks to hook people in - again, it's an available option, but it will mark you as a certain kind of person, or a person undertaking a project in a certain kind of way. And I feel that it will probably limit you in the end, even if it gets you some short term success.
Jason: Yeah. Every couple of months I'll allow myself to do a click bait-y style topic on my YouTube channel. And it's disappointing how many extra views and how much more ad dollars it brings in. But I know full well that if I did that regularly, I would lose my regulars. But my regulars know what to expect from me at this point. If they see one every couple of months, they're going to laugh about it, right?
Len: Yeah.
Jason: Yeah.
Len: That's a really excellent point. It's like you can - it's the norm that you want to - you want to think very carefully about the norm that you want to set, but don't be afraid to deviate from it every once in a while - and certainly don't be afraid to have fun -
Jason: Yeah.
Len: And try and get some attention that way too.
The last question is, yeah, why did you choose Leanpub as the platform for the book?
Jason: I think I am aware of it, because I know - I believe three or four other C++ authors who have published on Leanpub and have published more than one book on it. Some of them make a majority of their income, I assume, from publishing. And so I was aware of it - and I thought, "Well, if these people who I personally know trust the platform -" I didn't even ask them. I just said, "Well, they've been using it and have released more than one book here, so I may as well give it a shot."
Part of it was that the Markdown - the fact that you use Markdown, actually. Because everything that I do is in Markdown, right? GitHub is in Markdown. I actually - I've built my own slide system for conference presentations. That's all in Markdown. I love writing in Markdown. And the fact that I can just write in Markdown and organize the topics in a way that made sense to me as a programmer and the way that I like to edit, was a huge sell for me.
Len: Thanks very much for sharing that. I was wondering if that wasn't your sort of way in. Because we've actually had like quite a few C++ books. I think Nico Josuttis, who's been on the podcast - Jonathan Boccara, who's been on the podcast. But a number of others, to the point where I actually - we have weekly and monthly email newsletter sales, and someone tweeted a response like, "C++ much?" or something like that. Because it's just like the books we selected that week, which are selected kind of arbitrarily, there were just like 10 C++ books in there, or courses or whatever it was.
Jason: You seem to have gotten momentum in the C++ community here.
Len: I guess so.
Jason: I don't know who started it though, of those authors. I don't know who was the first, I mean.
Len: I think it might be Nico.
Jason: Okay.
Len: Actually, the last question I always like to ask on the podcast - and we save it for the very end, because it's so sort of obscure - but if there was one feature we could build for you as an author or one bug or annoyance could fix for you, what would you ask us to do?
Jason: I was not prepared for that question.
Len: Sorry I probably should've asked in advance.
Jason: I did want to activate an index. I know that you're working on it, so I won't push on that.
Len: Yeah, we are eventually going to have a way to produce indexes for books writing in Markua, which is our version of Markdown, but it's not - it's spec'd out, but it's not implemented yet.
Jason: Right. I don't know. I mean some of the things - well, I don't have a good answer for you. But I will tell you one of the main hiccups that I - Oh, actually - yes. I have a couple of comments, now that I think about it. Internal linking, which works fine - if you get the syntax right. But I kept getting the syntax wrong for how to specify an anchor. I just ended up just using the terse syntax or whatever, just the hash sign and the anchor name.
But when I've got an internal link that doesn't go anywhere, or a link that's not used because I somehow got a name wrong or I got some of the syntax wrong - like as far as far as I know, there's no diagnostic output at all. There's no way to say, "Oh warning, by the way you put 10 links in here that don't go anywhere." That would've saved me a ton of time. That would be awesome, if I could get some sort of diagnostic dump from the last build.
Len: Thanks very much for sharing that. Error reporting has been one of our sort of biggest weak spots.
Jason: Okay.
Len: Part of the complication is that we actually do have an error dump that you can get. You have to turn it - it's opt in, you have to turn it on and that will -
Jason: Oh really?
Len: I'll try and find the feature for you after the podcast. [Here is a link from the Leanpub Help Center article about this feature - Eds.]
Jason: Okay.
Len: But it was, basically - the reason I don't know where it is, is because we took it away - and then we put it back as an option. And the reason was that - Leanpub authors are mostly programmers, but they're not all programmers.
Jason: Ah.
Len: And giving people a bunch of obscure error reports, who are like, "I just want to write my romance novel", and they're - Ii's not a matter of competence or professionalism or anything like that. It's just like, that's the last thing they want, is a bunch of that. And often our error reporting was kind of - yeah, it was like a big dump.
Jason: Error reporting is hard.
Len: Yeah. It's hard for us too. And so - but yeah, I'll point you to the feature. And I'll put a link to a Help Center article or something - explaining how to get there, in the transcription of this.
But yeah, that's something that's kind of dogged us over the years. Because there's some people who are like, "I can't believe you don't give me a big dump of data about my book build." And then there are other people who are like, "What's wrong with you, why are you showering me with all of this useless information?" Eventually, hopefully we will find the right balance. But for now - turning it off by default and letting people turn it on if they wanted, seems to be a pretty good solution, so I'll point you to that.
And yeah, thanks very much for sharing that. I shouldn't have put you on the spot like that. I actually do that all the time, and I should actually start asking people that question in advance. Saying, "By the way -"
Jason: Well, what you're going to get is what bothered us last.
Len: Right.
Jason: Not what necessarily bothered us most.
Len: Right, very good point. Very good point.
Well, thank you very much Jason, for taking the time out of your day to do the episode, and thanks very much for using Leanpub and being a Leanpub author.
Jason: Thank you.
Len: Thanks very much.
And as always, thanks to 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, and if you'd like to be a Leanpub author, please visit our website at leanpub.com.
