Bruce Eckel, Co-Author of Atomic Kotlin
A Leanpub Frontmatter Podcast Interview with Bruce Eckel, Co-Author of Atomic Kotlin
Bruce Eckel is co-author of the Leanpub book Atomic Kotlin. In this interview, Leanpub co-founder Len Epp talks with Bruce about a range of topics including his background, independent consulting, writing books and how preoccupied you should be with the eventual outcome of any book project, working with publishers, his book, and at the end, they talk a little bit about his experience as a self-published author.
This interview was recorded on January 11, 2021.
The full audio for the interview is here: https://s3.amazonaws.com/leanpub_podcasts/FM170-Bruce-Eckel-2021-01-11.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 in this episode of the Frontmatter podcast I'll be interviewing Bruce Eckel.
Based in Crested Butte, Colorado, Bruce is an author of numerous award-winning books, as well as being a consultant, conferance organizer and a popular speaker, who has given hundreds of presentations around the world.
You can follow him on Twitter @BruceEckel and check out his work on his website at bruceeckel.com, as well as his blog at reinventing-business.com, and his other sites, WinterTechForum.com, and MindviewLLC.com.
Along with his colleague James Ward, Bruce is also co-host of the Happy Path Programming podcast, which you can find at happypathprogramming.com or wherever you find your podcasts.
Bruce has published two books on Leanpub, On Java 8 and, along with his co-author Svetlana Isakova, Atomic Kotlin.
In this interview, we’re going to talk about Bruce's background and career, professional interests, his books, and at the end we'll talk about his experience using Leanpub to self-publish.
So, thank you Bruce for being on the Leanpub Frontmatter Podcast.
Bruce: My pleasure.
Len: I always like to start these interviews by asking people for 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 computers and programming?
Bruce: Boy - I'm old enough, we could use the whole podcast for my origin story. But I'll try and keep it succinct.
I grew up in a suburb of San Diego, California, and in high school - I think it was my freshman or sophomore year, we had a teacher,a maths teacher, who had been an engineer. And he had somehow gotten an ASR 33 Teletype in the classroom, that was connected through - I'm sure it was like 110 baud modem. So you could like hear the bits as they're going by with an acoustic phone coupler, that whole thing. And it was connected to, I believe it was an HP 1000.
Anyway, we were able to remotely program in BASIC. I liked that, but I didn't actually touch computers much until I was in college and I studied physics as an undergrad. I actually started in journalism for a year, then changed to physics, and then added engineering. Then I did a master’s degree in Computer Engineering.
Throughout all that, I was dabbling in - computers were becoming more available, and even - actually, when I was in grad school, I had a summer job where I was programming an Apple II to print out reports for a water treatment plant. Anyway, so a lot of BASIC, and then other languages.
And then eventually, when I graduated - because I basically took a lot of time in college, because I didn't want to join the real world and get a job and have somebody tell me what to do. And so I did that for a few years, and then eventually - what I always wanted to do was somehow break off on my own, and I've been independent ever since.
Len: And you created MindView in 1997?
Bruce: Yeah, I guess probably that - I mean, I was going through different companies and company names. I thought it was before that, but I don't actually remember. I became independent when I was - I think it must've been the late eighties or early nineties, something like that.
I had started writing books, and then, I think it was the first actual book contract that I got, I thought, "Oh, I'll try and spend all my time doing this." I think that's when I quit my job.
Len: It's interesting, the notion of not liking being told what to do and going independent, is something that's come up many times on this podcast. I don't know if there's something about being an author - like people who are drawn to writing books and doing long projects like that, and independence, or something like that. But that move, to going independent, is something that a lot of Leanpub authors have made in their careers. I was wondering, when did you get into book writing and book publishing?
Bruce: Okay. So my first book I published when I was 30, so that was 33 years ago. But, before that, I had started writing for a magazine that was published out of Bend, Oregon, called Micro Cornucopia. I became a columnist there, and then what my first book was, was basically a collection of my columns. It's called, Computer Interfacing With Pascal And C. So, basically, my interest was in trying to use high-level languages to interface with computers - which, at the time, people used Assembly language to interface to the outside world.
And there were a lot of people - I think - requesting reprints of articles, or something like that. So I thought, "Oh, I'll turn it into a book." My friend Daniel had just written a book, and we met when we were 11. We were not competitive, but it was more like - if he did something, then I would do it, or vice versa. So it was kind of like, "Well, if Daniel can write a book, then I must be able to write a book too." Plus, I'd had enough background, etc. And it was just a matter of massaging the material together. So it was a very kind of slow step-wise process. To go from - first to write articles, and then you write books.
And the thing that is, I guess, sort of ironic, was that the reason I started writing articles and then writing books, was, I thought it would be a good way to promote my consulting services. But then it sort of - in hindsight, I realized that - yeah, if you want to be a consultant, talk to successful consultants and find out how they get their jobs. Don't make up a story in your head that, "Oh, writing for magazines and writing books will bring consulting clients in." I would get them, and it was probably the right number for me, and the right frequency, but it wasn't - like if you're serious about wanting to be a consultant, don't imagine that, "This path or that path is the right way to go." Do some research, some serious research - which I didn't do. I was just going, "Ah, this will work for sure."
Len: It's funny, in the stories of people who've achieved some success in life, there's often - they had, what I sometimes hear people jokingly refer to as a "Rabbi." But if you go ask people who've done what you want to do, how they did it - that doesn't mean copy them, if they tell you to copy them, keep looking for someone else to help mentor you. But that idea that like - really, other people are a resource. The other thing is that they often are happy to share with someone who they see as like-minded and going along a path. So if you're listening to this and you're thinking of going independent, this is all really, really great advice.
And so, I think your first sort of award winning book, was Thinking in C++?
Bruce: Mmm hmm.
Len: I think for all the budding authors listening to the podcast - what was it like when the book started to get attention?
Bruce: Well, okay. So that is - that's an important question, but the way I'm going to answer it isn't going to be what you want.
What I have done with a lot of things, is - and in particular when it comes to books - is, I don't really want to - I've known people who've actually written bots to let them know when their book has reached a certain level on Amazon or something. And it's like, that kind of repulses me. I don't want -
The Buddha said that, "All suffering comes from attachment to outcome." And that's totally attachment to outcome.
After all these years, I do find myself getting a little sucked into the emails that I get from Leanpub when I sell a book. And it's like - yeah, I totally see how people could get completely drawn into that. But I don't think that's - I feel like what you want to do is focus -
Okay, so when I was writing, Thinking in Java, at the time I started writing it, there were hundreds of - I mean, people had just flooded the market with Java books. There was like, I don't know? Four hundred of them out there. And so I had people very seriously tell me that I was wasting my time, that the niche had been filled, that there was no way that I was going to make any headway in the Java book field. I didn't pay attention, because I wasn't really trying to do that. I was just trying to write the book the way that I wanted to make it.
By that time, I had taken over the publishing process with, Thinking in C++ I was giving the publisher both camera-ready pages and a cover. So I was designing everything. Because my experience with publishers is that they would just half-ass everything. Like when they would - I mean these are professional publishers. When they would send me galleys and I would mark up the guts, okay?
Just a little history. They used to send you these big sheaves of paper that you would have to go through, and those are called "galleys." And so you go through and you mark them up by hand. Then they'd send me another set of galleys. And not only had they not fixed some portion of the correction that I made, they would have introduced new errors into the book. And it's just like, "Okay, this is your job and you're not doing it right."
So I started taking it over. And for both Thinking in C++ and Thinking in Java, to get both camera-ready pages and an index, and to be able to fix it at any time. Because a lot of people said, "Oh, you should use a page layout program." But once you lay out the pages, you're stuck with them. You can't do any of the stuff that I was doing. So, boy - I'm sorry, I totally lost the thread of your question. What was the original question?
Len: Oh I was asking, no, no, that's a great answer. I mean -
Bruce: What does it feel like?
Len: What does it feel like? And then you gave a really good answer about, it's important not to be too preoccupied with outcome - particularly precise outcome. It's interesting, you reminded me of an interview I did with someone - maybe last year? Who, he was a self-published author, he'd had a fair amount of success with that. But he'd also become quite popular on Twitter. And he'd had a very bad experience, ultimately, because he became kind of addicted to tweeting, and then watching the retweets and the replies and the likes come in.
And what he realized after a while was, "What am I doing this -?" Like not that, "I should stop doing whatever I'm doing completely." But, "I've transformed it from a way of communicating with people and having fun and stuff like that, into something where all I'm concerned about is how many reactions I get." And so that preoccupation with outcome can actually become like - the preoccupation itself becomes a substitute to what the initial outcome you were aiming for really was. Which is one of the reasons that I completely agree that sort of - I mean, focusing on the outcome too much can actually become it's own sort of different kind of problem.
But what you were saying also about publishers - I mean, we've heard - over the years we've heard from lots of people on Leanpub who've come to us from publishers. Where, often they've had a similar experience - and almost always what people say is, "The people I worked with at the publishing company were fantastic, but there were problems with the processes that the people I worked with didn't have any authority to improve."
Bruce: I mean, all of those things. They were probably rushed or - well, I remember realizing that the indexes were created by probably some English major that they'd hired off the street. And they've said, "We'll give you a flat fee." So basically, "Do it as fast as you can, don't worry about quality or anything like that". And so the indexes were terrible.
That was one of the other reasons that I took over. Because if I'm going to do an index - I'm going to have to do it myself, because nobody else cares about it that much. Plus, they would charge you. They would charge you to do that indexing, that very bad indexing. So it was insult to injury, completely.
Len: I could talk about this forever. But it's an interesting feature of the publishing world, that because books are involved, it often people feel like the appropriate person to do certain tasks is someone who's not very technical. I've actually seen a version of what you're describing before.
Now, as a former English major who became an investment banker, I'm not disparaging English majors here, or their capacity to learn technical things. But often in publishing houses, you can get people put in roles where they just don't have the necessarily right mindset for the boring, detailed work that they might be given.
Bruce: Well, and with my - I don't know? I guess I studied it for about 10 years on and off, organizational structures. The fact that publishing is one of the oldest surviving industries out there, and how it has accreted all of the cruft that you get with a hierarchical organization - it's not surprising at all.
And the deeper that you go into publishing, I mean the numbers that I've always heard is that about 10% of the books break even, and about 1% are actually profitable. Which, if you think about it, that puts all of the weight of the success of the company on that 1%. And they don't try to figure out how to create better books. What they do instead, is, "Well if 1% is the number, we'll just put out more books."
Even O'Reilly, which started out by saying, "Let's put out quality books," I remember - I think it was a presentation, or - yeah, I'm pretty sure it was a presentation that Tim O'Reilly gave at some conference that I was at. The way I translated it in my head, is that he had fallen victim to the whispering of the MBA in his ear - and that's the moment when O'Reilly started to decline, and they've been trying to climb back up. But they were at the top. I don't know if you remember this idea that "it's an O'Reilly book". You don't have to ask any more - that's the book that you want to get. But then - boy, they took a tumble. Because they were thinking, "Well, we can make more money," or maybe they're publicly held? I don't even know if they're publicly held. But, "We've got to make more money for the shareholders, so we'll reduce the quality of our product."
Len: Yeah, it's funny you say that. You reminded me of a little joke I have about the "vanilla MBA". So not to discourage any MBA's out there, there's lots of variety in the MBA world. But there's like - I remember -
Bruce: I don't disparage the people, I disparage the programs.
Len: Yeah, no, I totally understand. I remember one time I signed up for a newsletter for a sports apparel company where I live. I didn't like the newsletter, so I said, "unsubscribe." And I got a message saying, "You will be unsubscribed after fourteen days." And I knew -
Bruce: Oh, you can't do it instantly.
Len: Well, I knew exactly why it was that number. Because Canada had recently passed something called the Canadian Anti-Spam Legislation, which gave you up to fourteen days before you could suffer a penalty for not unsubscribing someone for a list. So somebody with what I describe as the "vanilla MBA" mindset," would've seen it and gone, "Ah ha, we can keep it for fourteen days." Of course they lost a customer for life. And I tell everybody I can not to go to that place, not that that matters. But you know what I mean, right? There's often people think that they're making the right move, when they're losing sight of the bigger picture.
Bruce: Right. Ultimately I think what annoys me about so many of the business programs and business books and all that, is that it's not that - I mean, they're trying to turn something into a formula, which is - what you want to do, and what people want, is connection. A genuine connection with the customer. And, I - when I'm writing books - I don't know how this happened, but I'm always imagining myself speaking to an audience. And I have spoken to lots of audiences all over. But this was even before then. It was always - and it wasn't like I set myself to think that way, it was just that was the picture in my mind.
And so it's kind of - how is this working? You're serving the audience. And so many people don't understand that your job is to serve the reader. That means - and I have trouble with this too - sometimes I feel flowery, and so I'll write flowery prose. And then I'll go back and I'll see, "Okay, yeah - this is maybe kind of cute or whatever, but does it help the reader?" And usually the result is chopping the sentence down or taking it out altogether, if it doesn't move the story forward. All of these things. Always thinking in terms of what is serving the reader. It's s a very different mindset.
And if you're - I guess it goes back to your previous question. If what you're interested in is the rollercoaster ride - well, you won't get that success unless you connect with the reader. It's really got to be your first and foremost thought.
Len: And speaking of management, connecting with your employees as well. They're the people who make everything that you make or provide every service that you provide. I think we'll actually get an opportunity to circle back around to that subject. Because I learned, when I was researching for this podcast, that you have an interest in business organization theory and stuff like that - and I want to ask you eventually about remote work.
But before we do that - one thing I introduced into this podcast, I think way back in March - was a question - one of the pleasures of this podcast is getting to talk to people from different places all around the world. And so I started asking people what's it been like? What's the pandemic experience been like for you where you are? And that could've been London, it could've been Seattle, it could've been San Francisco. It could have been any number of other places. You live in a very beautiful place called Crested Butte. Which is, sort of remote, in the mountains, - as I gather. What's the experience for you been like, personally just around town? And then I'm going to ask you actually how it's affected you professionally as well, if you don't mind talking about that.
Bruce: So, well - we're a tourist town. It's a ski resort. And for the last, I don't know? Fifteen years or something, I've been - originally it was called, "The Java Posse Roundup." Because the Java Posse was a group of podcasters in the early days of Java, who were very popular. They interviewed me, and I talked about having discovered different ways to do conferences. The idea of an open spaces conference. And then they said, "Hey, how about if you organize a conference for us?"
So we started doing that. And it's always happened in the winter. When they dissolved, we renamed it to "The Winter Tech Forum," "WTF" for short - and have continued doing it. And we had the conference, it ended up - I mean - we plan it six months or so in advance. And it ended up being like right near when everything started to shut down. Everyone was up here. And because it's a tourist town, we had a lot of people coming in. And basically - as far as I can tell, everybody in town got exposed.
We had three people - well, let's see - we had two people from the conference. And then my friend, Carl - who was one of the Java Posse guys, he died - and that was hard. And I was having the disease myself when this came through. It does all kinds of things to you - including your - well, I could say - maybe it's your nervous system. Anyway, it messes with your emotions and all this kind of stuff. So it was very rough. But we haven't really had any resurgence since then. And of course, the trickiness of the disease is that some people have mild symptoms, and may not even know that they have it.
So we have a whole town full of people who are going, "It seems like I would've been exposed, but I didn't have the symptoms." And then there are people like me and one of my neighbors, where it's like, "Yeah, we definitely had it." We just, we had all the symptoms.
I think that's the reason that we haven't gotten re-shut down in this area,is because most people got exposed, and so we haven't had much of a resurgence. We've been careful about tourism, but we've had a fair amount of tourists coming through since then. And it hasn't caused a resurgence, so I'm guessing - that's why, I think? But we don't know.
We can't tell if - that's the thing. Even if you've had it, you can't be sure. You read articles one way or the other, and it's like, one day they're saying, "Yeah, you're good once you've had it." And then others go, "We don't know. Maybe you could get it again?" Hard to say.
One of the things that we did, which is good, is that the main street downtown, they turned it into a one-way street up the middle, and then they put tables outside. So that people could be outside, and that the restaurants could survive. Because we've had a few go out of business. And also, it kind of gave the place more of a festival atmosphere, so they're talking about making it a permanent thing in the summer, which I'm all for. So, yeah, that's kind of been what it's like.
Has it affected my business? I am not a good metric for that, because my business goes all over the place. Sometimes I'm traveling a lot and speaking and consulting and things, and other times it's quiet and I'm just working on a project like this. I would say that having a book to work on - a project to work on, has been really good. Because while I'm working on it, I feel pretty normal.
Len: Thank you for sharing all of that.
Bruce: Sure.
Len: I really appreciate that. It's interesting, you're the second person I've interviewed who contracted the virus. I've interviewed people who were exposed in the early days, and then had to live for two weeks in their basement with their spouses and children kind of prison-style sliding food under the door, and stuff like that. And then there's the sort of funny aspects of it like that, but there's also - you're sitting there for two weeks wondering if you've got it, and if you've spread it to your family or your friends or your colleagues, and things like that.
It's a different experience for everyone. I live in a tourist city myself, in Victoria, British Columbia and -
Bruce: Oh yeah, I've been there.
Len: And yeah, it's been difficult for the economy here. But one thing that's happened here, that has happened in many other places too, is the kind of main drag, they turned off - effectively it was kind of three lanes wide - and they turned off two of them, and turned them into - yeah, places for restaurants to have tables out. Which is a change that people really liked. There was actually - they painted on the middle of the street, a little symbol of a person with a circle around it, but no strike-through, indicating that, "This is for walking now, not for cars."
And so, you can still thread the bollards kind of thing, but they very deliberately said, like, "This is a space for walking now, and it's something that, in my experience, tourists love it when they can just walk around without having to dodge death.
Bruce: I wish we had gone that far, but we have - there are some folks with businesses that just resist any kind of change. And it would've been great if it could've just became a walking - I mean that's what most people would love, but -
Len: Yeah, the Champs-Élysées might go down that path actually in Paris, I just read an article the other day. It's really exciting.
And on that note actually, I wanted to ask you - so I said I'd circle back to remote work. As someone who's interested in organizational structure and design and things like that, do you think that the shift to remote work that's happened for so many people during the pandemic is going to be something that generally persists across various different industries?
Bruce: Well, I mean - just the foundational piece is - before, there were lots of people who would say, "Oh no, this can't work unless I have my eyes on you." That old management style thinking. And they can't say that anymore. Because obviously it does work. And it's certainly possible, and productivity doesn't plummet or anything.
I have friends here who always have worked remote, as programmers, worked remotely. And I've had a small consulting firm with a couple of recent graduates, and they've just been remote. One of them just goes from one place to another whenever he feels the desire, and just is used to working remotely.
I mean, it sure has changed things, and especially in a field like programming, where it's hard to get people in the first place. It's just a lot harder to make the argument - if you make that argument, like me - I don't want to work for you if you're making that argument. If you say, "Hey, sometimes we'll have meetings in the office and you'll get to meet people and hang out," it's like, that attracts me. But if you say, "Oh no, you have to be here, otherwise I can't know if you're working or not." Like, "Yeah, you're not the person I want to be working for."
Len: Thank you for touching on that, I think that's one of the most important points - that there's a certain type of person who sort of has a certain type of management style or theory, who is having a hard time facing the fact that it's actually going to be a way of competing for talent, to provide remote work - and that the most talented, most productive people are going to want some kind of remote work setup probably.
And a lot of that too is because, a lot of people didn't know that the tools work now, right? Because they were used to - I always - unfortunately, I pick on Webex and stuff like that. But a lot of people didn't know that like Zoom works. That you can take over other people's computers and do stuff on them now. It's like standing over their keyboard or whatever at their desk, like these things just work. Now I had a friend who's -
Bruce: Which we've been able to do for a long time, but now it's in the general knowledge sphere - whereas before, it was just a specialty. Because my brother has been remote, taking care of people's computers for years. And he just controls them all remotely, and virtually never has to go onsite. So the tools have been there, but now everybody knows about it.
Len: Yeah, now everybody knows about it. I had a friend who's a relatively prominent lawyer, who's like, "Did you know you can just conference people into video calls and it just works?" Like, "Yeah. I'm so glad to hear you figured that out." And now he gets to spend way more time with his kids and his family, and he gets way more work done, and he's got more work to do than ever - and it's partly because he's more productive, the way he's doing it now.
My pet theory is that, if a company starts forcing people back to work and they're going to be like having to get up at a particular time, get on -
Bruce: Commute.
Len: Yeah, commute. It's just going to feel so arbitrary and capricious. And then of course, what's going to happen in the end, is you're just going to get to your desk and sit in front of a computer, which you probably brought with you from home now - and just do what you could've done without wasting all that time.
Bruce: There's an old Disney animation of what the future is going to be like. I don't know, it was probably from the sixties or something. And you're watching the male wage earner - because he's - the woman is off shopping and doing woman things, right? So back then, that's the way the mindset was. And so anyway - the guy gets up, gets on a train, gets all the way into work, sits at a desk with all of these things - and then when his boss wants to talk to him, his boss talks to him through a monitor. And you're watching this and going, "You were so close. You were almost there, but you just - you couldn't even question the idea that you had to commute in."
I think that goes back to - I think it was Adam Smith who was the one who said - well, I'm pretty sure he's the one that said, "People are lazy and they'll steal." And then later in the book, he refutes that. But people immediately grabbed onto that. They go, "Oh, it's simple. You've got to have eyes on them all the time, or else they'll steal from us."
Len: I could talk about that forever. That - actually, in particular - the idea of vision and being able to see, is a really deep part of it. The image I like to use is old salt mines, where there'd be somebody at the bottom, some guys toiling in the bottom. And then there'd be someone one level up, looking down on them - making sure they're doing their job. And then on the next level above in the salt mine,there would be someone not just looking at the people working, but looking at the people looking at the people working below them. And you can imagine going all the way to the top.
And then this idea that if you can't see - there's almost this preoccupation that if you can't see it, it can't be happening. Which makes programming a difficult kind of work for people like that to wrap their heads around, right? Or even intellectual work, right? AS my brother likes to joke - a guy just resting his head on his hands might be doing the hardest work he's ever done in his life, but you can't see it - and so a lot of people just don't believe it, and don't even think of it as work.
Bruce: Well, programming is typing. So the faster you type, the faster you're programming.
You might want to change your analogy there. Because it turned out that a job in the salt mines was actually a cush gig.
Len: Really?
Bruce: I mean, this has been one of the great things about writing books, I guess - is that I get invited to other countries. Anyway, this was in Poland. I've been to Poland a number of times, wonderful place. And on one of the trips, they took me to visit - they have these salt mines. And you go in and there's sculptures and everything. And you start hearing the background of it. And it's like, "Oh yeah, the job in the salt mine is the one you want." Especially in the summertime, because it's really cool down there. They had a good deal. Even though you always hear that, "Oh well, back to the salt mines," like that's your drudgery.
Len: That is really fascinating.
Bruce: Yeah, I know. I love things where we have this kind of common knowledge, and then you discover that it's totally wrong. For some reason, I find a lot of satisfaction out of discovering those things.
Len: Actually, on that note, not to digress too much - but Adam Smith's concept of the invisible hand is an example of that. If you want to know what he really meant, Google "Noam Chomsky invisible hand," and then you'll find a pretty good article. I wasn't speaking to you, I was speaking to the audience.
Bruce: Sure, but -
Len: It's basically one version. I mean, it's always more complicated than you think, right? One version, one way - a quick way of explaining what it really means - is that people's nationalist interests would override their capitalist interests in certain circumstances. And that that's what the invisible hand was. It wasn't that the market's just going to like naturally optimize. It was actually that people would violate the sort of normal rules of capitalist trade and motives, in order to pursue nationalist motives. There were circumstances under which that would occur. That's my understanding. [This might be what Len was thinking of - Eds.]
Bruce: Okay.
Len: But anyway, we can all go look into it later.
Bruce: Yeah.
Len: So actually, one thing - just as a bit of a segue into the next part of the interview, where we talk about your books. So you've written books. These books mostly have a pedagogical purpose. They're trying to teach people things. And you mentioned at the beginning that you started out in journalism in university, went into physics and then did, I believe, a Master's in Computer Engineering. If you were starting out now with all of the books and online resources and things like that available, with the intention of having a career as a programmer, would you go to university and formally study Computer Science or Computer Engineering - or would you maybe take a different path, do you think?
Bruce: Oh boy, that's a tough one. So when I was going to school, it was - you could go to school for effectively no money. Well, I guess you're in Canada, so isn't more or less the same thing?
Len: It's much cheaper than it is in the United States.
Bruce: Right. So, like - the University of California, I think first started having some fees when I was there and people were reacting - "Is this going to cost us $90 a semester, or a term or whatever?" And of course, now, all the colleges are crazy expensive.
But at the time, I really - I had had some jobs. Actually my father was in construction. And so some of my first jobs were like cleaning out ditches and doing really miserable work. And his foreman would say, "We're giving you all the bad jobs, so that you don't go into this business." And it worked really well. I didn't want to really go into anything, because all work seemed kind of miserable to me. So I was in college to try and avoid that.
I was an undergraduate for like six years. Because I - let's see - journalism, four years of physics - and then I started adding engineering stuff on top of it. And then I was in graduate school for a couple of years, and I even started a PhD program at UCLA, which - fortunately - got cancelled in my first term, because I needed to be booted out. Because otherwise, who knows? I probably just would've kept going. But I was avoiding joining the quote unquote "real world." I was taking all kinds of other classes too. A lot of art classes, and just whatever was interesting to me. I was just trying to get away with not becoming a responsible adult. I really enjoyed being in school. So that part I wouldn't have wanted to have missed out on.
But if you're just being practical, I mean - my gosh - the number of things that I learned from watching YouTube videos now, I just do it more and more. And, because, basically, all the lectures - you're nuts if you don't put all your lectures from your conference on YouTube. And so they're all up there, and you can - if you find them, they're like - that's the best way to see a lecture. If you start to fall asleep, you can pause it and come back to it, if you lose interest or anything like that.
So that's a huge resource. I mean, the internet - I've gotten rid of a ton of my books. I used to have - it still looks like I've got a lot of books, but I've gotten rid of a ton of them. Because I realized, I don't use them. It's rare that a book for programming - most of the ones that I had originally, were for hunting through, to find solutions to answers. The only books that I have now are the ones that have a certain, I guess you could say, "narrative" to them. In other words, it's going to carry you through from beginning. It's what I'm trying to write. Something where you want to read it from cover to cover. And there's not that many of those, and so, I don't know? It's so expensive to go to college.
So I would say, for sure, look seriously at alternatives, because - and even if you do, like the two guys that are working for this little consulting firm that we put together - they came out of college, and they hadn't been exposed to Git. And of course now they use it all the time, and they're going, "Why weren't they teaching that in college?" Some sort of distributed version control, it sounds very practical - and so a lot of colleges are wanting to teach theoretical stuff.
But you know - I've been kind of struggling to understand, "How is Git working?" To, "Why was it doing all these things?" And then there's all kind of different ways that you can use it. And it's like, "This is almost like a programming language in itself. This is definitely something that should be taught in school." And a lot of them still aren't. A lot of schools are still teaching Java as their - like, they decided, "Oh, we can just choose this one language and teach it all the way through." Well, you're kind of crippling people by not teaching them multiple languages - at least another one.
Len: You're reminding me,I once interviewed someone for the podcast who was not just a Computer Science professor, he had a role in sort of shaping policy around what was being taught in Computer Science courses around the country. And he compared Git to the moment when surgeons realized they needed to wash their hands. And so it's a really -
Bruce: Excellent example.
Len: It's a useful analogy. Because, of course you've got to understand all the fancy doctor/surgeon theory stuff. But one thing that's a very important part of what you learn, is just how to scrub up, and like holding your hands in the air, or whatever. As practical or trivial as it might seem - actually learning those techniques, learning why they work and how they work - is just crucial to getting anything done properly.
Thank you very much for answering that. I ask that of almost everybody who's got a background in Computer Science when they come on the podcast. I also ask people who went the other way, if they regretted not going to university and stuff like that. And it's always interesting to hear people's perspectives on it.
Bruce: Yeah, I think there's a lot of - I mean, because I had a friend - we did a lot of things together, and he had dropped out of college. I think he had been studying music? And he played in bands and things like that. And then he got involved with C# and C++ and C#. Anyway, we did a lot of speaking together. But Richard, I think was always kind of embarrassed that he didn't finish college. And I'm going, "You're teaching people who have graduate degrees, why -?" But, no, that couldn't shake it. And I think a lot of it is because we go, "Well, you have to have degrees, and you have to have these certifications that are granted you by society, in order to make you a legitimate person." And gosh, that's a lot of cultural baggage.
The thing is, some of the best programmers I've ever seen, have not had backgrounds in Computer Science. Like physicists - I mean, yeah, I was a physicist. But I do find physicists make really good programmers, because they're used to struggling with difficult things and being methodical - that was their training. But then there's a lot of musicians turn out to be kind of good - well, like Richard was.
I had other friends who were musicians, and I think they understand this idea. Maybe the processor makes sense to them? The cadence of stepping through the T-states or something like that. I don't know? But for some reason, reading music is like reading source code.
And despite the supposed rise of no-code programming, I think that's probably going to drive even more demand for programmers, not less. Because people are going to be building things, and then they need more help beyond what the no code platform is able to give them. And so, yeah - anyway, next question.
Len: Thanks. So, moving onto the subject of your book, Atomic Kotlin. I was wondering if you could talk a little bit about - well let's just begin with, and I know this is a big subject that you know a great deal about - but what is Kotlin?
Bruce: So Kotlin is - well, one way to look at it, is that it's an object functional hybrid language. And that means it supports both object-oriented programming and functional programming.
But another way to look at it, which I'm fond of, because I study programming languages - that's kind of my deal, and my specialty is predominantly in looking at languages and comparing them and seeing what works and what doesn't - and what I love about what they did in Kotlin, is that they said, "Instead of inventing new things, let's look at the best things that have worked in all the other languages."
I think they had a particular advantage at JetBrains, because they were making these development tools. IntelliJ IDEA supports all these different languages. And then they have sometimes, separate tools - like PyCharm and stuff. And anyway, they've dug into the details of all these languages. And they're comparing them - consciously or unconsciously. And so I think they were in a really good position to create a language themselves. And their attitude of, "We know all these other languages and we see what works and what doesn't, let's just find the things that work best and put them together in a language." And so it's extremely well thought-out.
If you go back and look at how Java was put together, it was - I mean, the initial version of Java was put together in a real hurry. They threw things in there that, years later, they had to withdraw from the language, deprecate and everything. So to see a language which is so thoughtfully created in contrast, is just a delight.
It's every detail. For example, Java mindlessly adopted the new keyword from C++. And in C++, it was essential. In Java, it wasn't - because they're using a garbage collector.
And in Kotlin, like in Python - they don't have a new keyword, because you don't need it. It's extra noise. And there's so much in Kotlin that the noise has removed. And so it's a lot easier to - I don't know? It's just elegant and clean and I could - I mean, I believe that it will - because Java can only fix itself so far. And there's themes that you experience with those fixes. And, so, more and more people, I think, are going to move to Kotlin. It solves a bunch of problems that Java just wasn't designed to solve. I don't know if that's -?
Len: Oh yeah, that's a great answer. I should mention that there's a really fascinating section at the beginning of the book, where you actually go through the history of languages that led up to the development of Kotlin. Which is really informative, and just a great primer for anyone who's interested in the history of programming languages - just in itself as a subject.
Bruce: I'm glad you liked that, because that was something - we didn't have that, and that was something we added in the last five or six months. Svetlana said, "We got a response from a reader who said, 'Why should I use this language?'" And so, I spent quite a while creating that particular - well, we call them "atoms," but that one was more of a chapter. I'm glad you like it.
Len: I mean, it's just the way my mind works. There's circumstances in which it's really enjoyable to just be floating free and trying to achieve some goals, and that can be really exciting. But if you're going to be doing something long-term, it's very important - having an actual foundation - which involves not just theory, but the history of the development of that theory. If you're going to be doing something for years, just taking a day to think about these things, can actually like make the huge difference.
I actually wanted to take an opportunity to ask you about a very specific decision that was made in Kotlin, one of these deep decisions - which is around the issue of indicating no value. Which will maybe give you a bit of an opportunity, if you're up for it, to show people the importance of what we were just talking about.
Bruce: Gosh, where to attack that one? So this is the problem. When you go way back, memory was super expensive - and so people would do things to conserve memory, because they just didn't have that much of it. And that is still affecting programming language design now, even though we have tons of memory and we don't need to conserve it. And there are reasons not to conserve it.
Because, for example - if you use invariants instead of variables. Because the only reason to use a variable is to conserve memory. You can always do something using invariants. And then, if it's invariant - like if you're using concurrency, you never have to worry about locking that memory - because it's never going to change. That's huge for safety.
One of the problems with this is, you would write a function and you would say - well the function is supposed to return an "int" so I will only do that.
In fact, this kind of gave rise to James and I's - the name of our podcast, which is "Happy Path Programming." Because that's - the happy path is, you go, "Everything will always be okay. I don't have to worry about something going wrong."
But, a common case is, suppose you have a map, a hash table, associative array - those are all the same meaning. And you want to look something up in that associative array. Well, there might not be a value for what you're trying to look up.
Say you got a dictionary - a physical dictionary - and you're looking up a word that isn't in the dictionary. So you have a function that says, "Look up this word." What if there's nothing there? This is the concept of - it's not that you've given it the wrong input, because it's okay to ask for something that isn't there. It's not an error. But there's nothing there. So you have to have a way to represent that. And it turns out there's a lot of situations where you could throw an exception or somehow report, error reporting.
The more that I study it, and it's actually an interesting subject to me as I unravel it. But the more I study it, the more I go, "Wow, this is a deep topic." It's another thing which often isn't taught in school.
One of the things that you can do, is to say, "Okay, I'll return a meaningless value." And this has often been "null." This is the billion-dollar mistake. The problem is that there's different ways to get "null." And there are things - if you're dealing with C++ and you have pointers, you can have a null pointer. And if you de-reference that, you're pointing some place inappropriate. Anyway, it's a big mess.
But you can also use "null," which is the way Kotlin does it. You can use "null" to represent no value, but not in a way that is going to - I guess I should say - you can architect your libraries in such a way that each library can accept that "no value" and go, "Oh, that's no value, I'll return no value." It's a way to handle the situation, without throwing exceptions. See? Because what Java decided to do was just say, "Oh, if we ever try and use the null, we'll just throw an exception." And you don't know where it came from usually, and you don't know what it means. It's not very informative.
Whereas what Kotlin does, is it says, "Okay, we're going to use" - there's another alternative which we're going to be expressing in the Scala book, which is the idea of a monad. Which a lot of people, myself included, get like freaked out when they hear about it. Because it's like, "I don't understand what a monad is."
A monad is a little package that carries information, and that information can be the information you're looking for. Or, if something doesn't work right - some additional information. And that's all it is. It's just a package, and people have not been able to explain that for way too long.
One of the things that you can do, is to say, "Okay, I'll return a monad and it'll have my information, or it'll have error information." And then the next function along the line can take that and unpack it, and decide what to do. And, so the null is kind of a - there's a word for it - anyways, the super simple case of a monad. It says, "Oh, you can have information or you can have a null," and it's all in this one package. It's simplified, because you go, "I'm going to return an 'int.'" And then if your function returns a "null," it's like, "Oh, that's the other case." It's a way to pass the information without throwing an exception. Because that really should be treated as a normal programming case.
Anyway, there's all kinds of stuff that you can go into. I gave a presentation at one of the Python conferences on error handling. And now I've looked back on it, and it's a little embarrassing. Because I go, "Oh, I understand this topic so much better now, and I'll probably try and give another presentation at some point, where I try and go into it deeply enough." It's kind of a big topic. It's way bigger than I ever thought. When I first encountered somebody's C library, I - yeah, the idea of thinking - I just assumed that when I called this thing, everything would work right. But I was young, so -
Len: Thanks very much for that. One thing I should mention, lest people get the wrong impression of the book. Atomic Kotlin is actually meant for beginners. And Bruce and -
Bruce: Svetlana.
Len: Svetlana, do a really good job building things up. And as the title implies, they've introduced this idea of "atoms", these little units of learning that are built up upon very systematically throughout the book. And so, if you found Bruce's explanation of this sort of deep computer science, and its history kind of intimidating - it won't be intimidating if you read the book. Because you'll get it, it's all explained very well. And like I said before, it's put in context, which really helps people to understand things.
I also wanted to thank you for diving in and explaining what a monad is. I've had a number of people on the podcast in the past where I challenge them with that, and everybody responds in a different way. I think the most recent was Chris Penner, who described it as a semicolon. He went in and explained the analogy. I found that one to be maybe a little bit more informative than the burrito one that people often use.
Bruce: Yeah. Which is pointless, because - it doesn't really matter. It's a package. If you want to call it a package, a burrito - that- doesn't help anything. When I first saw the burrito analogy, it just confused me even more. I feel like I've only started to grasp it in the last six months or so.
But anyway, thank you for clarifying that. We started the atomic concept with the previous book, which was Atomic Scala. And my co-author, Dianne Marsh and I wanted to - I had taught from both Thinking in C++ and Thinking in Java, which were really initially kind of class notes for a seminar. I had these chapters on one topic, and I would lecture through the chapter. It was almost always at least an hour of lecturing, and that's way too long. People would lose track. I would lose track.
And so what I thought for the atomic idea, was that - well, I'd like something where the lecture was five or 10 minutes long, and then we'd do exercises. Because that's where people get value. So that is how it developed.
And then JetBrains asked me to write a book just like that, but for Kotlin. And that was - I don't know how many years ago that was. And anyway, the book took three and a half years to do and -
Len: That gives us a great opportunity to segue into the final part of the interview, where we talk about your experience as an author and how you approach book writing, and things like that.
I always start this section by asking the author, how they found out about Leanpub, and why they decided to use us as a platform.
Bruce: I think it was because I've known people who have published on Leanpub. I think that was it. Because, I mean - I go to lots of events and conferences and things. And so I run into a lot of people.
Anyway, some people had said, "Oh yeah, we've got this book on Leanpub." And I probably may have gotten one or two books off of there beforehand. I don't remember specifically. But anyway, it came on my radar and we had - there's another service that the book was originally published on, and it was a startup. It's still there for people who bought the book off of it, but I'm trying to steer people towards Leanpub, just because it's - I don't know? I've just had a better experience.
I got a message from somebody who said, "Thanks for doing that, now I can read it on my -" Whatever device he had.
And that was the other thing. I've actually gone in and done the programming necessary to create a Kindle book and all the different formats - I've spent months working on these things. And I got stuff working, but - I don't know? I like solving problems like that, but at some point having someone else maintaining that software -
One thing I'll say is that the limitations are definitely there. The restrictions in what I can do with - And I know you've been working on a different format, but like everything you can do with Markdown is - it's a restricted version of Markdown. But if you're willing to work within that, the book that we just - like the print book, we were able to just go directly from the Leanpub, to the print book. Otherwise, I would've been spending weeks or months processing that.
One of the advantages of the atomic format - because you don't have support for indexes - is, I was able to say, "Okay, each of these topics is just ideally just a few pages long. And so, we're going to get away without an index, plus it's on an electronic format. So if you want to search for something, that's easy."
But the print book doesn't have an index. Because the chapters are small, basically the table of contents is the index. That's the hope, that that works okay. We'll see how many complaints we get about not having an index.
But generating an index without software support - because, I mean, in Word, I would put in tags in the right places. And then you generate the index and you go through it and mark it up and change your tags. I would spend a couple of weeks generating the index that way.
But despite the constraints, I would say, "Oh yeah, this has just made the process way easier." Plus, you guys do some nice promotions, and you handle stuff like that. And people go there looking for books already. So, yeah - I'm very pleased with the whole experience.
Len: Thanks for sharing all of that. I can't tell you how many Leanpub authors we've spoken to, who - a lot of our authors are people who program, and like solving their own problems - and don't like being told what to do. And so we've spoken to a lot of people who've like tried to make their own thing first, before finally coming to us.
But one of the great things about that, is that we get people who've tried to tackle the problem that we're trying to solve - coming at it from all kinds of different experiences and areas. And so, if - in so far as Leanpub is a good platform for writing and publishing and selling books, it's because we've had precisely - authors like you, who've like really thought hard about like the technology behind it, and how it works to produce outcomes, and things like that.
I should say with respect to indexes - Markua - which is our Markdown for books, written by my colleague, Peter Armstrong - is going to have index support at some point. And it's - the specification has been written - like how it's going to - how you as an author are going to create an index in Markua, has been figured out. Now, it's just a matter of implementation. Markua's slowly being implemented, and eventually everything will be implemented and we will have support for indexes, which will make a lot of authors and a lot of readers very happy, when that finally happens.
And so you mentioned the print book, which just became available today, congratulations. I've got a question about that, just for the other potentially self-published authors listening - how did you go about making a print book?
Bruce: Well, the bookstore that we mentioned earlier was - I guess have to go back to - I have been using, it was called, Lightning Source. I've done two books through Lightning Source. And then Lightning Source was bought by Ingram, and they call it IngramSpark now. It's a print-on-demand service.
Lightning Source used to be something where they would - they would allow you to do a press run. So if you had the space to hold the books, and you were shipping the books out yourself, which we did with First Steps in Flex If anyone remembers Flex, it's pretty dead now. I did that with James Ward, who I do the podcast with. And then, Atomic Scala.
We ended up doing press runs. My dad was alive then, and he was retired and I had him take - sending out all the orders and handling. He was basically my order department. And it was nice, because he didn't have enough to do, and he liked doing that kind of stuff - and he was great to have there, and I could always rely on him.
But - and, what was really nice - is they would negotiate with the printer. They had a whole bunch of printers. They would negotiate with them. And then you'd have a truck, a flatbed truck show up in front of your house, and unload all these books that you'd put in your garage and sell them.
So I thought that Ingram did that. That they would also go, "Hey, this book is getting enough that we'll do a press run." But I haven't heard anything more about that. I think either they're doing everything print-on-demand, or if they decide to do a press run and warehouse the books or whatever - that's their business, and they don't change your fees or anything, the amount that you get.
There was another thing about - so anyway, we're using IngramSpark. But my friend - who I mentioned, that I've known since we were 11 years old - he does all my book design, book cover design. He designed the cover and did all of those things for me. That's Daniel Will-Harris - his name is somewhere on the cover, as the cover designer. So if people want a cover design, they can go to him.
Len: I was going to ask you about that. Your books have great covers. And then I discovered that you have your friend Daniel Will-Harris design them. He's at will-harris.com, if you want to find out more about him. We'll put a link in the transcription and everything about that.
Bruce: Thank you.
Len: I should also mention - we talked about the bookstore, but that was before we started recording. So the bookstore, in Crested Butte is called, "Townie Books."
Bruce: Right.
Len: And it's towniebooks.com. *[Actually it's not; the site is at https://towniebookscb.indielite.org/. Here's a link to the book - Eds.]
Bruce: I think it's just towniebooks.com.
Len: Think it's just towniebooks.com? I'll make sure to put a link in here as well.
Bruce: I suggest that you buy it through your local bookstore, but if you want to buy it through my local bookstore, there is a link, they'll ship it to you and everything. So I'm trying to support them. But I'm also hiring Arvin to do promotion for me for the books. So we'll see what happens there.
Len: Great.
Bruce: Every time we do a cover, there's always this long process, where I have an idea, Daniel has an idea. We try out a bunch of things. And then usually there's this moment of, "Ah ha." The cover often comes together really quickly at that point.
We went through all kinds of different things with this cover, and finally he just grabbed the Kotlin logo and blew it up really big, and then we put in that - there's a little - that's mid-century - because when you say "atomic," you could also be talking about atomic age stuff, which is mid-century design.
The original cover that we had was very mid-century. It looked like a Palm Springs sign. It was very cool, but Svetlana had no clue about it. Because - I mean, she - her parents were in Russia at the time, and their experience was, they didn't see any of this stuff. So she was just like absolutely clueless about what I was talking about.
So we ended up changing it. That's my experience with book covers, is that you are always going through - you think you're going to do it one way, and you always end up - by the time we were done, we sent it to her and then she showed it around to everybody at JetBrains, and they go, "Oh, this is awesome." They just loved it, so it all worked out. But it's always a big process.
Len: Well it's worth it, because a great book cover is just a joy in itself to create and see, but also really does help with sales and credibility. Not that you need any of that.
So the last question I always like to ask people, if they're a Leanpub author, on this podcast, is, if there was one thing we could fix for you, or one thing we could build for you - bracketing indexes - for the purposes of this conversation - can you think of anything that you would ask us to do?
Bruce: Well I guess it would be nice to have a little more - I mean, I'm able to work within the constraints of what I can do with Markdown, and even - I've studied Markua. Now how do you pronounce it MAR-COO-A?
Len: MAR-COO-A.
Bruce: MAR-COO-A, okay. I've only read it, so I pronounced it differently. But I guess it would be nice to have a little more latitude in the kinds of elements that I can put into the book. Being able to, for example - when you have the greater-than signs on the left, to have a - Wwat do they call it? It's sort of like a callout or something. Right now all it does is just indents it. It would be nice to be able to have some maybe stylistic control that would be a little broader. It doesn't have to be everything, but it would be nice to have a few more things.
Oh, and tables, at least in the Markdown, are kind of troublesome. It would be nice to, I don't know? Like in the next book, I'm thinking of maybe just making the tables graphically, using some kind of graphics program, rather than using the Markdown stuff. Because they're pretty restrictive.
Len: Thanks very much for that. With respect to sort formatting the callouts, or asides or blurbs or whatever you want to call them, we've actually just - just in the last couple of weeks, had a little bit of an uptick in requests for more formatting control around those. So we'll make sure -
Bruce: Oh okay, so it's not just me?
Len: No, no.
Bruce: Okay.
Len: I'll make sure to communicate to the team that you're after that as well.
Bruce: Yeah. There's a few things like that. There's various little dingbats and stuff that might be nice to have slightly more control over. But that one in particular, I think it would've been nice to have been able to do nicer callouts.
Len: Yeah. And when it comes to tables, we've done a fair amount of improving to them in the last few months, in response to requests from authors.
But there is a certain level beyond which something like Markua is probably never going to go, when it comes to detailed formatting control. And so actually quite a few Leanpub authors just go, "You know what? I've got some other app or software or process or whatever, for making my tables exactly as I like them." And then they put them in as an image, and that seems to work really well.
Bruce: It took me this long to kind of - do I have that? Because I'm trying to make everything work within the Markdown table format. And well, especially if the table has like a paragraph of text in it, that all has to be a single line. I had to write a program to do that and everything. And now I'm looking at it going, "Ah, I could have tables look exactly the way - or any graphics." And if you had - I guess - to recommend that somewhere in your table section, say, "Hey, this is limited. Do you want to do more?" And then maybe even recommend some? Because I'm not sure what program I would go looking for at this point that could make nice tables.
Len: You know what? What we really need is a Help Center article about how to make tables, with an example that you can copy and paste, and an explanation of how it works. Because we try to do this in our Help Center articles where we can. Or on the Authors Forum, when people create threads about things. We always do try and say what's our recommended workflow. And that doesn't always mean, "Only use Leanpub stuff."
Alot of the time, we're telling people, like - we built a whole workflow called Bring Your Own Book, which means like - if you want to use all of our storefront type stuff, and community type stuff, and be part of our author community, you can do all that - and you don't have to use Markua at all to create your ebooks, but you can still come to Leanpub.
Bruce: That does remind me of one more thing, which is - in your help system, your articles will say things like, "Over a week old". That is useless. If you're going to do that, remove it - put a real date on it, or don't say that. Because that's just like, "Ugh, frustrating." Len: I couldn't agree with you more. We use a service that we really like called Intercom. I haven't been able to find a setting to change that, or turn that off.
Bruce: Okay.
Len: I have spent lots of time shouting at the computer when information is hidden. I'm a huge enemy of "a day ago," "a week ago," "a month ago."
Just, "Tell me when it was." And, "Don't hide the email address anymore, Gmail." Things like that.
Bruce: It's frustrating.
Len: Yeah, I couldn't agree with you more. Every time I look at that, I'm like, "I wish I could turn that off."
Bruce: It's just like a dig.
Len: Yeah. If anyone knows how to change that or turn that off in Intercom articles, please let me know. But by the way, Intercom's a wonderful, wonderful service and we love them very much.
Well, Bruce, thank you very much for taking the time to do this interview today. I really appreciate it. And thank you for using Leanpub to publish a couple of your books.
Bruce: Oh it's my pleasure.
Len: Thanks.
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.
