Natalie sits down with Go book authors Bill Kennedy & Sau Sheong Chang to discuss the ins and outs of writing (and reading) books about Go!
Sourcegraph – Move fast, even in big codebases. Sourcegraph is universal code search for every developer and team. Easily search across all the code that matters to you and your organization: find example code, explore and read code, debug issues, and more. Head to info.sourcegraph.com/changelog and click the button “Try Sourcegraph now” to get started.
LaunchDarkly – Ship fast. Rest easy. Deploy code at any time, even if a feature isn’t ready to be released to your users. Wrap code in feature flags to get the safety to test new features and infrastructure in prod without impacting the wrong end users.
Honeycomb – Guess less, know more. When production is running slow, it’s hard to know where problems originate: is it your application code, users, or the underlying systems? With Honeycomb you get a fast, unified, and clear understanding of the one thing driving your business: production. Join the swarm and try Honeycomb free today at honeycomb.io/changelog
Click here to listen along while you enjoy the transcript. 🎧
Hello everyone, and welcome to an episode about books in Go. And I am joined today by two authors; Bill is a Managing Partner of Ardan Labs, and based in Miami, which is six hours away from me in Berlin. Bill is teaching Go and speaking about Go, and recently published the book “The Ultimate Go Notebook”. Hi, Bill.
Hey, hello. Thanks for having me.
And I’m also joined by Sau Sheong, from the other side, also six hours away from Berlin, but to the earlier, experiencing the future before us in Singapore. And Sau Sheong is the CEO of SP Digital, which is an energy tech company in Singapore, the organizer of GopherCon Singapore, a speaker and the author of Go Web Programming, which was authored five years ago.
Hi, everyone. Thanks, Natalie. Nice to meet everyone.
Thank you both for joining. I want to start with asking you, what was the first programming language that you learned and how did you learn it?
I guess I’ll start then, since I’m in the morning, with the sun here… The first programming language was BASIC, because the first computer I had had BASIC on it, and was kind of there… I was just trying – I think I was doing what most people do, just trying to write games, and leveraging any documentation that was with the computer. I mean, we’re talking like ‘80s here; there’s no internet, and I think I had BYTE Magazine. So whatever I could steal from a magazine here and there was probably helpful. I felt pretty isolated compared to what you have available today in terms of the Internet.
Yeah. I guess I learned BASIC too as one of the earlier languages, although I think that was just a lot of play, and just mucking around with computer. Apple IIe, I think that’s what it was, a very long time ago. But as far as a serious programming language, I think that was probably Pascal and Delphi. That was also a long time ago.
Fun. Pascal, I also – that was probably the first programming language that I learned with, except for Scheme. I had a high school thing with Scheme, a short project, and then the proper language that they taught us was Pascal, which is actually the uncle of Go.
Yeah. That was my first language in university. One in 200 classes were all Pascal, and then they threw us into C. Again, late ’80s, like ‘87, ‘88, ‘89.
And so what was the recent programming language that you learned? And how did you learn that one?
I guess we’re talking Go, because I’ve been coding in this language since 2013, and haven’t really had any desire to learn another language right now. So how did I learn Go? I was kind of forced into it, because we needed to, as a company, get off of Windows. We couldn’t afford to be in the space that we’re in right now, consulting, and – it’s just too expensive, in terms of licensing for your developer teams, and licensing in terms of what you were selling, in terms of product, because the cloud was still new. So every bid was basically your time and Microsoft licensing. So we were coming in twice as much as everybody else using the tech. Now with the cloud and everything, I think Microsoft has leveled the playing field, which is good, and they’ve given the tools away for free. Like, when you’re talking 2000 – in that case 2013, it was very, very expensive for someone to get into that space. So I had to move to Linux, and I needed a language that I felt comfortable in, that felt like C#, that felt like C and C#, and that ended up being Go. So I just kind of put my head down and started learning it. I think, like everyone probably at that time, reading as much code as you can, asking questions on golang- nuts, and just trying to solve problems and getting it to work.
And the learning part, did you do from some book, or did you do it from just the documentation?
I think there were two books at the time; [unintelligible 00:07:05.06] I think had just published a book. And I love books. I like having a physical book in front of me, I like being able to scan it for the things I’m looking for. I definitely wasn’t watching video. Even at top speed, I don’t have the attention span for video. I like the books, and I’m sure I was banging up against Google all day long, looking for snippets of code. My guess is it was probably a lot of Google search, and then I may have used those two books. I know I had them. But I think what happens for me is I’m not necessarily sitting down to read an entire book. I’m more like, “I need to solve this problem now. So let me find some code that works.” That’s how I kind of operate.
Sau Sheong, how about you?
Yeah, Go as well. That’s my most current language. Although I think I have tried to dabble in a couple of other languages. I tried Rust actually, for a short while. I just didn’t have anything that I particularly wanted to do with Rust, and Go was always a fallback for me. So I ended up with Go. So that’s really the most recent working language that I’m still using, more or less on a day-to-day basis. So anytime that I need to code up something, I’ll always fall back to Go. It just seems to be the most convenient. And, you know, once you get kind of familiar with it, you know how to use it and it’s a good tool, it can become a bit difficult to try to dig yourself out of that and get into a different language. So I think I’m at that point where I’m really comfortable with Go; I can do a lot of stuff with Go. And if I try to go somewhere else, it has a steep learning curve, and I sort of get distracted from the things that I actually wanted to do. So I have less motivation to move on. I think compared to some of the other programming languages that I used before in the past, like Ruby and Java, where there were motivations for me to get – I wouldn’t say, get out; I would say try a different programming language that was more useful for me for those cases, and therefore I tried Go. So that was my experience in getting to Go and not leaving Go.
And how did you go about learning Go?
I guess the experience is very much the same as how Bill went through his experience, as in learning through books. I started a bit later. I started in 2015, if I remember correctly. Honestly speaking, I don’t remember which book. I do remember one of the books that I saw was actually Bill’s book. [unintelligible 00:09:42.14] was writing a book at that point in time and I said, “Hey, you know what? Maybe I should try writing a book too”, and so I guess eventually I did. But I picked up a lot of things from everywhere.
I spent a lot of time on the golang.org actually, through the documentation, reading the articles… You know, just cut and paste code from wherever I can find it, just run it, see how it runs; play around the playground, and just do everything to see how – you know, the old tinkering mentality, where you have a nice new toy and then you just try to tear it apart and see how that works and try to put it back together again, and see how it runs, and then just keep on moving from there. Yeah, so that’s how I picked up Go. That’s how I pick up most programming languages, actually.
Yeah. And as people who not just learn, but also pass on the knowledge, the difference between the two experiences of learning BASIC versus Go now - how would you compare that for you? Obviously, you changed a lot as a person as well; technology changed the world, changed the expectations of the world. From you, as a developer, it changed, and everything changed. So what was your experience, if you have to compare those two?
Comparing the experience of learning BASIC versus learning Go?
Learning BASIC, which basically was your first language 30-ish years ago?
What year are we now? [laughs]
Yeah, probably. Yeah, it was a while ago. I don’t know if I have an answer for that question. I think any language I’ve had to learn has been really about just trying to solve problems in the language, because you don’t know what questions to ask until you have that question.
I’ll say this - the ultimate Go book that I just wrote, I wish I had that book when I started. I wish that was the first book I wrote. I feel like that book is the book that’s going to help the average developer get on the right – if you’re someone who wants to read… Because everybody learns differently. There are people who just love video; there are people who love blog posts, there are people who love books. Not one size fits all. And then I think there’s also two different kind of groups of people. I’m going to paint with a broad brush, but there are those who just like the academic side of the material, and then there are those who like more of the conversational side.
I’m an average developer. I need to be entertained at some level. I need people to get to the point; not enough from an academic, but I do need the pace to be like this, which is why I have a hard time with talks sometimes, I have a hard time with video… Because I’m like, “Get to the point, get to the point, get to the point, get to the point”. I don’t have the patience. And so The Ultimate Go book I just wrote is all about getting to the point, getting to the point, getting to the point as quickly as I can, while still feeding you enough of the background. So I wish I had that book. If I had that book back in 2013, I think that book I would have read more than just scanned.
So I think, for me, when it came to the BASIC learning, I think it was the same thing - I was just impatient. I want to figure out, where’s the information to do that? And I can’t do it on the academic side; I need to do it as – I’m an average developer, so just talk to me.
You need this in kind of like a TikTok way, basically; short to the point, just show the information and don’t make long sections.
Yeah. Short, to the point, and keep the pace going, where you’re going to keep me engaged. Because the moment I feel like we’re off pace, my head’s somewhere else. I don’t think I’m unique like that; I think, especially today, with this instant gratification that we all have, it becomes even more important to just get to the point.
I’m waiting now for the Go course that will be completely on TikTok. Just short snippets, explaining things, visuals.
I’m trying to do that on YouTube right now, actually. I’m trying to take small snippets of a minute or two some of the video and get it out there. Sometimes you need to go five minutes, which is a bummer to me. I’m like, “Nah, we need five minutes to get through this.” So then I have to really make sure over five minutes that I’m keeping you engaged. It’s the same thing in the classroom. It’s more important when you’re on video. It’s this, “How do I keep you engaged enough for at least 20 minutes at a time?” I’ve got to do it for an hour at a time, or 40 minutes at a time, which is even harder. And so I am trying to do some of that on YouTube, too. But there are people who just love video, they love going 2X. I’ve learned how to slow down, I’ll tell you that, because I know people want to go 2X on YouTube, and I can’t be moving it 2X and then you go 2X; that doesn’t work either. So I’ve learned to slow down a little bit because of that.
Yeah. Sau, are you secretly working on a TikTok course? I saw you smiled when I mentioned the idea. So if this is a spoiler, then I’m sorry… [laughs]
No, no. I am terrible with videos. I mean, I’m terrible with videos because I don’t have very good equipment. You know, my room looks like a mess… [unintelligible 00:14:36.08] I am more of a book person. I’m more of a writer than a person who does videos. I get distracted quite a bit when I speak, so I ramble on and on. So my experience, I think, coming back to your question on comparing - I can’t really compare BASIC, which I think was a kind of a play language I picked up very much early on when I was In school, actually…
The real epiphany I had about programming languages was actually with Java. Even though I learned C before that in school, I had an epiphany with Java, because it was simple enough for me to pick it up and do something real with it. And the idea behind object-oriented programming really struck me, and it sort of inspired me to really start coding.
The way that I picked up Java is very, very similar to the way I picked up Ruby after that, and the way I picked up Go after that, as well. So I think the learning journey that I had always seems to be the same, where I was totally fascinated by a programming language, I was so obsessed with it that I would start learning it and I would start coding on it and I would start doing everything I know about it, and I would start telling everybody about it. So I would start talking to people, talking to the communities, trying to do stuff with it and showing off what I’ve done… I don’t think I’ve changed that much since the time that I’ve first picked up Java and the time that I’ve picked up Go… So I think the difference is just not there. I’ve always been doing it the same way.
Would you both say that you wrote the books for the purpose of teaching? Or I guess it’s not just your personal notes that you’re like “I might as well just publish that.” It’s kind of reasonable assumption that when you write a book about a programming language, then you do that for the purpose of teaching it.
And Bill, you teach a lot in your free or professional, both, I guess, time. You volunteer some of your time for teaching, you give professional trainings and so on. But the Sau Sheong, you don’t teach so much in your everyday life. So from the two different perspectives of somebody who wrote a book about programming for the purpose of teaching, and one goes to classes and teaches, and then somebody who doesn’t, how do you see teaching with a book? Do many people like that? This is something that I’m personally very obviously familiar with, because that’s how we learn things… But also, when you think about this, a computer is very interactive, and a book is – teaching programming with a book, how do you do that?
Let me start that question back a little bit. I started with blogging. And I was blogging when I was coding in C#, when I had stuff published; but it wasn’t like heads down all the time. When I started learning Go, I said, “I am so new to this language, and I’m so new to Linux.” I mean, I had to learn a whole new operating system on top of a brand new language. I was very productive in C#. I get depressed when I have to learn something new at that kind of scale, because I know the amount of work it takes to learn something, and I like to be that person that knows like 80%; I’m not the 20% kind of person. I want to know 80% of a few things, not 20% of everything. So I get this initial depression when I have to learn something new. I even held back learning Kubernetes, because I know how big it is. I’m like, “Bill, are you to get into this trench? Because once you get in, you’re not getting out.”
When I started learning Go, I had to learn Linux, and I said, “You know what? Here’s an opportunity for somebody who’s completely green to start kind of writing blog posts about their experience, and helping others who are just coming into the same kind of new environment.” Because I can’t be alone. And what I’ve found from the blogging was that – we’ll talk about this more, I’m sure – but I think for me, I can stand up in front of anyone and start to ramble a little bit, and I can monitor my pace and I can make sure that I’m saying things and I’m moving things on. But when it comes to writing, there’s no rambling; like, you literally have to stay on a really tight pace. So if you don’t know what you’re talking about, it comes out fairly quickly when you try to write it down. I think anybody can almost fake it when they’re talking, but you can’t fake it when you have to write it.
And so a big part of the blogging ended up being really having to zone in on my understanding of things, and finding the right language and the right words to use, to the point where I almost won’t teach anything unless I write it down first, because that is incredibly hard. Writing is, I think, some of the hardest kind of work I do today. It’s harder than programming.
And when you write, you mean the blogs?
Yeah. So blogging is great, because I could write a blog in like a month. It used to take me two, maybe three weeks to write a blog post; not full-time but over that time. So there’s no stress. And you get the instant gratification over two or three weeks that it’s done, and it’s published, and you’re getting feedback, and you’re improving. It’s a beautiful thing.
When Brian and Erik came to me about the book, I just thought it was going to be cool. “Whatever I’m writing some blog posts, what’s the big deal? I’m going to go from writing two or three pages to 20 pages, and it’s going to be the same experience.” No. I mean, that book burned me out. That was work, that wasn’t fun. When I see anybody write a book, I’m just like, “Whatever support you need for me, you’ve got it.” Because if you finish it and you’ve got it in your hands, that’s monumental. And there’s no other payoff other than saying, “I wrote the book.” You’re not getting rich, you’re not making money on it… So if you do it, it’s got to be for yourself; it really has to be for yourself and for your own self kind of learning. And if somebody else learns from that book, to me, that’s just gravy. That’s a bonus. But write that book for yourself, write those blog posts for yourself, so you can zero in on that learning. That’s kind of the way I see it. And I like blogging before writing a book anyway. I like to make sure that you have this material set, and you know how to talk about it, and you know how to speak about it, and the writing does that. So it’s hard, hard work.
Sau Sheong, how was your impression of writing a book, of teaching with a book?
I don’t really teach with my books; I don’t really teach, actually. A small anecdote about myself – my dad was a teacher. He taught secondary school physics. He told me, “Never, never be a teacher.” That was what I grew up with. So I never taught actually, but I like writing. I actually grew up wanting to be a writer; not of technical books, but I wanted to be a writer in general. But somehow I ended up doing software, and I thought that software was a different way of writing, different way of telling the story, different way of creating something out of nothing. So that took on big time for me, and I started writing a lot of software.
And after a while, I sort of [unintelligible 00:21:45.06] back into like writing itself, and say, “Hey, you know, I could write about technology”, and I started to pitch certain books to publishers and things like that. It took me a few years actually to finally pitch a book to a publisher. And then I wrote my first book, which was on Ruby, and then the book was published, I was really happy, I was quite proud of myself, and so on.
Then I was surprised that a publisher came back to me for a second one. At that point, I was like, “Okay, do I really want to do that?” The first book, I earned practically nothing; and it was relatively popular at the time, but it faded away, I guess, like most technology books do after a few years.
Then I took on a second book project, because I thought I could do it, but I was really burnt out after the second book. And then my favorite publisher came and bought O’Reilly, which rejected all my initial book proposals. And they came and they wanted me to publish a book on Ruby [unintelligible 00:22:45.17] So I took that as a challenge and it was one of the most fun times I had writing a book, it took me 10 months; it was a crazy 10 months, and I had a lot of fun in that book and I had so much fun.
Then a third publisher came on board; Manning came to me and asked me whether I wanted to write a book on Go. I sort of jumped into it. But of course, I think writing with Manning was very different from writing with O’Reilly, which was also very different from writing with Packt, which was my first publisher. And that experience – I think Manning is very meticulous, they’re very clear about what they want to get as a book, as teaching material, and that taught me a lot of things.
So I think I had very different experiences in different publishers. But at the end of the day, I think I’m quite proud of all the books that I’ve written. The experience really taught me a lot of things. But it is a full-time job. So during the period that I had to write a book, I actually worked on two jobs; I had my day job and then I had a night job. And you get an editor. Technically, for me at least, the projects of writing a book comes in spurts of, say, three weeks, I’d submit a chapter, and then there would be editing, then I’d have to run again another three weeks, and three weeks, and three weeks… So that process is actually quite exhausting. And after that, there’s a lot of editing and stuff like that. So that became quite exhausting.
So it has been five years since I’ve written the last book. There has been a couple of publishers who knocked on my door, but I sort of like didn’t take any more of that. But, of course, I had a new job at that point in time, and a lot of exciting things happening in my job, so I didn’t really have the opportunity… But I don’t know, maybe that’s something that I can do again.
But going back to your original question, which is like teaching using writing - I don’t do that, because I don’t really teach. And I know you said that as a joke earlier on, but it is actually true for me; I write for myself, exactly like what Bill was saying. I write for myself because it’s really about me putting the thoughts that I had in my mind down on paper. I started also writing blog posts, and afterwards moved on to books. And the books actually become a way for me to even reference what I knew at a point in time. Because as I picked up new things, I learned new things, and as you do more things, you sort of forget the things you’d learned before.
So for me writing books and writing blog posts and articles and stuff like that is a way of documenting what I’ve learned as well, and putting down – so I’m literally writing for my future self. So at a later point in time, I go back and I read what I’ve written and say, “Oh, okay, now I remember where I was”, and those things I’ve learnt before, I can pick it up again and do more stuff with it. So that’s a little bit about how I do that.
It sounds like you’re – when you’re writing documentation, then it must be also nice to your future self if you have that person in mind; then you go back to your own code and you understand it. So kudos… It’s not obvious.
Bill, your publication of the recent book was in a slightly less traditional way. How long did it take you to write it? And how did the publication go?
So after I finished Go in Action in 2015, I had PTSD. I couldn’t write. If you go look on my blog – I’ve written over 100 blog posts since I started. If you go look at my blog, there’s almost a year gap of me blogging, because that book completely traumatized me; the process of having to – I would go to a bar every night… Not drink liquor, but when I walked in, they had my coffee, and I had a space where there was power. And I basically spent six months just to get the book done. It took about 18 months, every night after work, go to this bar and sit down and knock out three or four hours. And I was traumatized, I couldn’t write again.
And then I started writing again about a year later, the blog posts. And it was a struggle. The anxiety levels I would get trying to sit down and write was – they were tremendous. But I fought through the anxiety, and I started to be able to publish again blog posts. And I said, “I’ll never write a book again, because this was too much, I’ll never do it again.” I’d rather stay in the blogging medium, it’s enough for me.
I met Hoanh An about a year ago, he’d taken my class and he’d written all of these notes. The notes were pretty good, and he had a whole repo of code, too; a lot of it was the same from the Go training, but he had kind of made some of it his own. And he had this manuscript that he had written, and he was selling it, and people were buying it.
So quietly, I kind of just downloaded it and I looked at I said, “This isn’t bad. This is a good kind of starting point. This is the book that I want to write. I just don’t have it in me to write it, again, because like I’m still traumatized.” At the same time – and this is interesting… I have people coming to me saying, “Hey, he’s selling your material. Hey, he’s selling your material.” And at some level, maybe; but all of my material is open source, everything I do. It’s like, “Take it, make it your own. Do what you want.” And people think you’re crazy, because now people are going to compete against you. Compete against me; if you’re better than me, then you deserve – like, none of that was bothering me, at all. But I reached out to him and I said, “Look, you’ve got a good skeleton here. I think we can really narrow in the focus of what you’ve got here and put it more into the language that I speak in the class.”
So if it wasn’t for him doing that work, this book wouldn’t exist, because though I’ve wanted to write this book, I just couldn’t get myself to the point of starting it. And even over the 10 months that it took me to basically take what he had and rework it to what we have now and add to it, anxiety levels were off the chain. Like, I could work for a week and then I couldn’t work for two or three on it. And then I’d go back and work for a week, and then I couldn’t work on it. I think it wasn’t until I got about 60% done that I started to see the end of the tunnel, and I focused heavily on it. And even now, I don’t know how I got it done. I’m glad I got it done, but… I did.
Now, I decided two things with this particular book. It was really all the material in written form that I speak during the class, so I wanted this to be the notebook. Like, these were the notes that everybody had been asking me for, for like the last five years for the class. So there it is.
So I did a couple things differently here. The whole book is written in I, as if it’s me writing notes to myself. So you read that book - other than some blog posts I added to the end - it’s all I, I, I. I really wanted that kind of feel for it.
The other thing on the self-publishing side was primarily because I wanted to sell this book cheap, not to lessen the value of the book; to make it accessible to everybody, and I wanted control over that. So if I went with Manning or O’Reilly or whatever, two things would have happened; the book wouldn’t be 10 bucks online and 25 bucks on Amazon. It would have been twice as much, and I would have lost that “I” feel; they wouldn’t have gone with that kind of flow. You know, they have their book size, their styling guides, how they’re going to do it, their editors are on top of you there, and I don’t want any of that. So we decided to self-publish.
I spent more time trying to figure out how to have a copy of this book that could be online and in print where I can manage it. If you see – I also wanted the book to feel like a notebook. Not the traditional size, with a smaller font. Maybe because I’m getting old. This is the geriatric Go book here. So you get this book, it’s big, it feels like a school notebook, the fonts are large… I don’t know, I think it’s just – it’s kind of interesting to just have something different too.
Like, real notes, like you would have after a class in university.
You can have it all there, and it’s literally – if you take the class and you open up that book, you’re like, “I can hear Bill’s voice”, right? And that’s kind of what I wanted there. But that was 10 months of struggle. And now, with that book done, I’m looking to do it again with the ultimate service class that I’ve been perfecting for the last three years, trying to figure out how I write that down. And trust me, when I even say, “I’m going to write ultimate service”, the anxiety levels are coming up again.
Well, that person who took the notes for the class of services, please contact Bill to get this book rolling. Thank you. [laughs]
Yeah. If it wasn’t for that, this book would not have gotten done. You know, and I share; everything is shared 50/50 with him, because if he hadn’t done that, this book wouldn’t have existed. So I’m really grateful that he did that work where it was necessary. But don’t get me wrong, I have PTSD, when it comes to these larger – I can blog now, that’s fine. I can get in front of the camera, because I know that’s four hours and I can get that done. Like, even when I’m filming right now – I’ve been filming for the last two weeks; I film for two or three hours a day. That’s it. Because if I’m going to do more than that, my anxiety levels go up. It’s just – I don’t know what it is, it’s just tough. This stuff is not easy.
So anybody who’s doing training, anybody who’s writing, anybody who’s producing video, you’ve got 110% of my support; even if I’m not 100% in alignment with what you’re teaching, it doesn’t matter to me. The fact that you’re there, putting this time in and doing it… I know what that takes; you’ve got 100% of my support. Get it out there. It’s amazing.
Absolutely. It’s also worth mentioning to anybody who gets any content online, written or anything else, if you have something not nice to say, think nicely how to phrase that if it’s any useful, constructive feedback at all, or maybe keep the thoughts to yourself, and then do reach out and say thank you. Even when you get earning from that, as you mentioned, you don’t get rich from that, and that’s so much effort. So thank you on behalf of everyone who consumed the content that you create.
It’s okay that – like, it would be boring if everybody agreed with everything. And I say that in my classes, I go, “You don’t have to agree with everything I’m saying. You’ve got your own experiences, you’ve got your own thoughts on the matter. It doesn’t mean that you’re doing it wrong, because you’re not – “ Like, let’s stop that. Like, you don’t have to agree with me, and I don’t have to agree with you. It doesn’t mean I don’t appreciate what you’re publishing, and it doesn’t mean that you’re not going to be able to help somebody that I can’t. This is the other thing. Not everybody is in tune with my writing, with my videos, with my classes, with how I approach things. You need a dozen or so teachers; you need people writing, because that’s the only way we’re going to be able to resonate with the entire community. Let’s not pretend that there’s one writer, one style, one way of thinking about things that fits all; it doesn’t. It doesn’t. I meet people all the time that just don’t like the way I teach or don’t agree with – that’s fair. But you’re right, that doesn’t give you an opportunity to be mean, it doesn’t give me an opportunity to squash it; it’s for you to say, “Okay, this is not somebody I want to learn from, because I don’t feel like I’m in tune with this particular person.” There is somebody out there that you will be in tune with. Find that person, and then from there, you can learn.
And I always tell other people in the class, this is a two-way road. You’re a student, but you’re also a teacher, because you’re going to have to teach this stuff to somebody else at some point, if you’re working on a team, and these things come up. So you don’t like the way I’m teaching it? Well, how would you teach it? Think about it. How would you explain this to the next person? Improve on that. I think there aren’t enough people doing that. You learn something; how would you teach it? Improve it. I’d love to hear how you’d teach it. I’d love to hear what words you use. I’d love to hear – I mean, that’s good. I may not use it, but I’d love to hear it.
Those are two very interesting tips for people who learn. One is find lots of different content to learn from, and two, think about how will you go about teaching that. And what other tips would you have for people who learn maybe something specifically, like learning from a book; like, use sticky notes, or what would be tips that you can share? Maybe specific to your books, maybe general.
For me, if you’re brand new on a subject and you’re trying to get a foundation, I think that’s where books come in. I think books should be one of two things - either they’re going to be the ultimate reference, where you’ve got a strong index, and I’m looking at how to use something, and boom, I can find it. Or they have to provide a strong, balanced foundation, where you’ve read the book, hopefully that took you six months in, and now you’re looking for the blog post. Now, you’re looking for the small video snippets. Now, you’re looking for –
Here’s the other thing, I think the community has enough general Go books right now. I’m just going to say it. If you’re thinking about writing a book right now, I’m almost going to beg you to not write another general Go book. We’ve got enough of them. This is why the notebook is trying to be a little different. What we need – I tell publishers this all the time; we need books on the standard library. How amazing would it be to have somebody write 50-80 page tops books on all the core standard library packages out there? Give me an amazing book, a lot of code examples on I/O, OS. Name the package. JSON. Like, we all use about a dozen packages. These are the books that are missing. We want to build a strong content for the Go community. I think we need these really narrow focus books now, like standard library stuff or very specific things that give people enough of a foundation where they can now go and take it on their own.
If you’re writing another just traditional Go book from beginning to end, personally, I think you’re wasting your time, because we have almost a dozen books like that now today. We need that next level of content that sits on top.
Sau Sheong, what do you think?
About whether we have enough Go books?
About everything, yeah. What tips do you have to learn from a book specifically? What books would you want to see? What books would you want to write?
Yeah, I’m actually kind of ambivalent about, you know, whether it’s books or blogs… Because I read everything. So it doesn’t really differ. Anyway, I read books, not from a physical book; I normally read eBooks, so –
Wait, even programming books you read as eBooks?
Yeah, I read everything.
Wow. I tried that. Kudos to you. I’ve found it not easy for me.
Yeah. Because I take the public transport quite often, and if I take a programming book in my bag, you know, taking it out and flipping, being on – yeah, it doesn’t work. So I’ve been doing it for a very long time. I use my iPad, and I would just read everything from there. So in a sense, a blog post, a book - they all, after a while, mash into one for me, and then all the information comes to one place. So for me, it doesn’t really differ a lot.
I sort of agree with what Bill said, that there are a lot of general Go knowledge already that’s readily available… [unintelligible 00:39:13.11] knowledge about the packages are really important. And I mean, this is so coincidental, because I just started a – I’m not like trying to publicize or anything like that… Like, I just started this publication where I’m trying to write really small articles, even snippets, to actually talk about certain specific things that you do pretty often.
And we will include the link to those in the show notes.
Yeah, thank you. It is really around the standard library and things like – a recent one I wrote is about how you actually use Go for 2D image manipulation. How you use the image package. Which I use quite often. The problem is, every time I start a project, I use it and so on, and then I do some other stuff. And then when I come back and say, “Okay, now I want to use an image” it’s like, “Okay, I can’t remember how I do it.” So I need to look at my old code and start to relearn things. So I need to write it down somewhere; sort of like Sau Sheong’s notes, and I want to just publish it as a publication or small little snippets, and I can refer to it whenever I need to… And maybe somebody else can also pick it up and learn from there. So I’m not really trying to deliberately teach anyone that; I’m really like talking to my future self, so that I can pick it up at a later point in time.
If you’re asking me tips to say how to learn… For me, one of the best ways to learn is really trying to explain what you have learned to somebody else. And if the other person can actually understand what you’re saying and you can actually understand what you are trying to explain, then you probably have learned the thing well enough.
So when I write the blog post or even the book, I take time to really try to go a lot deeper into those topics. And then I try to explain it. And when I explain it, and I read it again and say, “Look, that doesn’t make sense at all, what I’m writing.” Probably I don’t really understand what I’m saying; then I try to do more stuff, and that process enables me to learn more. And finally I’m able to condense it in a version or in a way that people can actually read and understand. I can read it, like – say I leave it alone for three weeks and then I come back and I read it again and say, “Oh, I understand what I was trying to say.” Then you would have achieved that level of understanding of the topic that you are trying to pick up. So it goes round for what I’m trying to do.
I really do not have an ideal audience to say “This is the reader I’m trying to target.” I know the publisher sometimes tells me, “Imagine who your reader is.” Actually, I’m just writing for myself. And I will tell the publisher, “Okay, this is the ideal reader” and then I write like, “Okay, this is me, actually” and I just pretend that I’m the ideal reader and I propose it to the publisher. And so far, that sort of works on me.
You both mentioned that you agree that there’s a lot of general Go content out there, and we should write, as a community, books about specific things like the standard library.
I want to take this one step back and ask about the – still the idea of teaching programming with books. So I guess I started in university computers, we had lots of different books, so it’s kind of usual for me. But friends of mine who went to bootcamps to learn programming, because their original profession is something unrelated - it’s less common to learn, for example, in the bootcamps that I know of, with books. You learn more with interactive content, and a little bit in-person class, or Zoom calls, and a little bit just programming exercises with the computer. And in some way, it’s similar to how your job is going to be, in the sense that you will sit in front of a computer and will be writing code. And it’s interesting, the idea of teaching something as interactive as programming with a book. Do you think this is something that will stay as we move to more content online, in the variations of recordings or live trainings, and TikToks maybe…?
It’s all about code. Code, code ,code, code, code. I think I’ve got over 400 code examples in The Ultimate Go. It’s all about code. Even if you’re going to give a talk at a programming language conference, you’ve got to be showing code. It’s all about code.
If you look at the Ultimate Go book, the way I literally wrote it is - I spent almost eight years writing all that code. And I tell people who are blogging, I tell people who are giving talks, I say, “Let’s develop the outline, so we know what the path is, and then before you write a single word, whether this is a talk for a slide deck or a blog post, all the code has to be written and reviewed. Let’s validate that we have every example that we want to share, and then we’ll figure out – once we have all the examples, how do we break that down?” Sometimes you want to show it in parts, where it’s being adapted, refactored, and there are other times where we could just show the code and explain it, so people can then copy and paste that code out.
Here’s the other thing about code - people will copy and paste code blindly. So you have to make sure that every example is production-ready. You can say, “Well, I’m going to add a comment telling people not to do this.” Yeah, they don’t read.
They will copy with the comment. [laughs]
Yes. And so unless the book is an anti-pattern book, which still scares me a little bit, because you’re putting code examples out there that you don’t want people to use, don’t add any example to the books or blog posts that you don’t want somebody to copy, because they’re going to copy it, and that makes it hard.
So I want to really focus on all the code examples first, and get that solid. And then you can start writing about that code. Like, for me, you should be writing about that code. Without that code, you don’t have it. So like in Ultimate Code, there’s like, I think 400-something code examples in there, that I talk to.
So I think a book that understands that a programmer needs to see code and needs to understand code can work, you know, if the book really focuses on that. If the book is about theory - that’s one thing; that’s fine, that’s fair. But you know, you’re going into those coding camps to learn how to write code. So you need code to look at, you need code reference, you need code to understand, and I think that’s where that focus has to be.
So here’s the other thing as well. Like, if you’ve been in any of my classes, you hear me talk about there’s a micro level of understanding and a macro level of understanding. And the micro level is down to every line of code; that’s Ultimate Go. I’m going to break down – so you have readability and comprehension down to a line of code. That’s the micro level. And that’s a foundational level, you need that. Then the macro level is a service class, which is we’re going to talk about project structures and modules, and how we layer code, and then all the macro level architectural engineering decisions that go in, between writing code.
There’s a big lack of the macro right now, I think, in the community. Like, there is no idiom on project structures. And I don’t think there ever will be. But I’d like to see more solid examples. Service tries to provide one example of “This is how I layer my projects.” And it’s not what I’m doing, it’s the why. We need more macro-level engineering content that talks about why somebody is doing it. That way, I can still disagree with you, but at least I know where your head is coming from; why you did this, why did I do this, why did I do this. Good. “You know what? I’m going to do it like this, because this is why.” And that’s fair. I want to get away from frameworks and into starter kits for everything.
Give me a piece of code, even if it’s fairly large, explain to me why the engineering is what it is, and then let me take it. But it all goes back down to code. Your bootcamps should be doing the same thing. “Here’s some code that we’re using. This is why it’s being written like this. Now you can take it on your own.”
So when I think about the Ultimate Service book, I’ve been struggling a little bit, because this is higher level, macro level, sort of concepts. How do I take something, break it down, refactor it, and continue to explain the why over and over and over and over and over again in a book that runs at a good pace and is entertaining? It’s taken me three years to be able to do it in front of the camera, to be honest with you. It’s taken me three years to get this class to a point where I feel comfortable talking about it at the right pace, at the moments of refactoring. There’s been a lot of practice there; writing it is going to take it to a whole other level.
I can tell you this - I can tell you something and it makes sense. I try to write it down and suddenly I’m like, there’s holes here. There’s a hole here, there’s a hole there, there’s a hole here. I’m not really explaining this. Oh, my God, that person was probably lost here. Because I’ve got bias in my head. I’ve got things in my head, that when you’re reading on paper, it kind of starts to show what’s missing. But to me, it’s code, code, code, code, code, code, and you have to start with your outline, and then you’ve got to start with every code example you want to present. And make sure it’s idiomatic and make sure that it’s formatted right please, and get the community or people to review that code. Because once you’ve got the code, and you know it’s solid, and everybody kind of agrees, like “That’s why we should write that piece of code”, and that’s a good teaching piece of code, the rest will just fall into place.
My approach for writing books is slightly different, I think. I mean, code is actually pretty important, of course, like this programming book or programming blog; you need code. I think for books, in particular, if everything is code, then it probably shouldn’t be in a book; it should be in a blog post, or it should be an online book, or whatever. Or it should be a repository; or it would just go to a repository.
Books, I think has a slightly different function, which – I mean, this is the theory that I subscribe to… It’s supposed to tell a story; it’s supposed to tell more than just the code. It’s supposed to bring the reason behind the code. I mean, obviously, there are some great technical books, but generally, I try to write something a little bit beyond; that is like the reason for the code. So I always start with the reason for the software, and if I’m trying to explain certain things, I will always try to explain it from a history perspective, like, “Where does this come from? Why is it this way?” You know, so people have a perspective of why it became that way.
When I was writing the Golang Programming book, I started with a chapter that explains the HTTP, the Internet, and stuff like that; how we came about having something called web programming in the first place. When you get into the actual code, you understand why certain things are that way, because from the historical perspective, it sort of evolved from where it came from to where it is today, and certain ways of doing things are because of certain protocols, certain history, and so on and so forth. That, for me, I think is the function of the book, to explain all these things. Having just code alone then - it’s basically a repository, which you can actually go in the GitHub repository, and you can read the code. So obviously, you need to have a lot more documentation to explain everything. But the context of it, like the story behind the code is why I write the book or why I write the post. The story, the history, the context of why that software exists. Why did I do it this way? If I write a piece of software and it achieves a target, a rationale, it’s like, “Couldn’t I have done this in a different way? Couldn’t I have used a different programming language, a different technology?” Because there are so many of them. “Why don’t I do it that way?”
So at the end of the day, it will not always be a technical reason why you would want to do it. “Oh, I think this is the best way of writing it.” Sometimes, I think, I think much more times than we think that it is, it would be because it is something that I know that I’m familiar with, that I’m comfortable with, and therefore, I decide – right now, a lot of the stuff that I write based on Go is not because I think Go is the greatest [unintelligible 00:52:55.08] It’s because I’m really comfortable with it, and I’m the one writing it. So I would write it in Go. But somebody else wouldn’t; somebody else would write a completely different way. But obviously, I need to rationalize why I do it, because I’m a rational person, so I need to find reasons why I do it this way. So I try to explain the reasoning for the software and how I get to actually write it that way. So that’s how I would put it.
And the code examples that you both include in the books - do you think it makes more sense to have many different small examples of code or have like one example story and kind of develop that by showing every time working on a different part of it, but actually still one main plot of code?
I think when you’re writing that book, or you’re on stage and you’re giving that talk, from my perspective, you have to change your mindset for a second and become the authority. I try to tell people, I’ve got imposter syndrome and I doubt myself as much as anybody else. But the moment I’m in front of that camera, I can’t be that way. I have to stand there and say, “I’m an authority on what my beliefs and opinions are. You don’t have to agree with me, but I’m going to be fairly strong in what I’m going to teach you.” I think that’s important.
So if I’m writing a book or a blog post about a particular piece of code, I don’t want to be wishy-washy and say, “Yeah, you can do it this way, you can do that.” I’m going to show you how I am going to do it, and why I’m going to do it that way, for me. And I think there’s a lot of people who appreciate that, because there’s a lot of average developers out there - I’m one of them - who are busy day in and day out trying to get things done, and a lot of people just need to be told what to do, and feel confident that if they do this, they’re at least on the right path, until they learn more.
And so for me, I don’t want to be wishy-washy. I want “What is your opinion?” I want you to be confident in your opinion, I want you to share that with me. I can make an assessment on whether or not I agree with you or not, and if I don’t, it’s okay. But I’d much prefer you to just really spend that 20 minutes or whatever it is, trying to convince me that what you’re doing is what I should be doing. I like that kind of content. Even if I don’t agree with you, just the passion that you have this belief and you’re teaching it - I want that on my dev teams. I mean, I work on projects. I’m working with two engineers right now on something, and we are almost every day having engineering conversations, and I try to gauge how strong the rest of the team feels, compared to how strong I feel about something. And if I don’t feel that strong and Ed feels stronger, I’ll back off sometimes to say, “Let’s see how this plays out.” I mean, nothing’s written in stone anyway. But let’s see how it plays out. I kind of want that from my content. I want that person to be confident that – and it doesn’t mean you can’t change your mind. Trust me, a year from now, my beliefs in something could change, because someone’s convinced me otherwise, or I’ve learned otherwise. And let’s be clear about that.
I’ve got blog posts back from 2013. I am a completely different person from back then. So some of the things I was teaching and why I was teaching them back then, I also don’t necessarily believe 100% anymore. I’m not going to take the content down; it would be a tremendous amount of work to try to refactor that. I’m just not going to do it. But I think sometimes I see on Twitter that people are like, “Well, you didn’t say that last week” or “You didn’t say that a year ago.” Yeah, not only should our code get refactored over time, I think it’s okay for us to refactor over time.
Definitely. And with the upcoming of AI generating code for us, do you think it will make writing books easier, given that the starting point is code? Then you’ll have basically machine wrote you some code, maybe you can ask the other machine to write the story for that code? And, well, why don’t I make a book out of that?
You know, that’s not new. Back in the ‘90s I remember working at some shop where they wanted to bring UML tooling in. We were going to storyboard the entire project in UML, and the whole thing was going to be code-generated, and we weren’t going to have to write a single line of code again. I don’t know how many people have heard of UML.
I am not a person who is a fan of code generation. I feel like I’d rather be writing code than anything else. I’m also not a fan of data-driven development, in the sense that instead of writing the code, you write all of this data, and then the data kind of drives the code to a point where the code is so generic that if there’s a bug, you’re scratching your head about where to look. For me, I’m always about being able to maintain, manage and debugging your codebase. So code gen, historically, for me has not worked out. So I don’t think I’m the best person there, because I don’t think I would go down that path of – and I know, there’s like, you’re doing gRPC, and you’re going to generate your clients and your stubs, and I get all that that’s fine, that’s fair. But I mean, beyond that, I just not a fan; I just stay away from it. So maybe I’m probably not the best person for this question.
I went through the same thing with code generation as well, very much earlier in my career, where, you know, there was this 4GL code base, with a huge project that I was involved in; 200 developers, three countries, Singapore, Malaysia and (what was the other place?) India. So we had programmers in three different countries working on a huge project; it was a failed project, actually, so a big lesson learned. They used 4GL; that really didn’t work out too well. That was before the UML craze sort of turned up, and that didn’t work too well either.
So I think code generation, for me, didn’t really work too well. I think there’s a lot more of that. Nowadays, they call it different names, though. I think they call it no-code movement, or something like that. I’m a bit of a skeptic on this. But I think if we’re talking about machine learning, it’s a completely different thing that you’re talking about; it is not really generating code, actually. You’re basically generating a model, and it becomes a black box because it’s too complicated for you to try to unravel it. And basically, you’re sending in data and then it’s going to churn out probabilities.
So the paradigm actually changes completely from what you were doing previously, which is very deterministic, because at the end of the day, it’s very deterministic. You can actually do a test and your software can consistently come up with the same results, and that’s why you test it, because you want consistent results. But once you start putting in machine learning, the results are not going to be consistent, because you show different data and you work with the different results, and that will be affected, the probability and everything. So obviously, that is not going to be the same thing, because when you’re starting to write about that in a book, in a blog post, if you’re writing about that, then you’re really not writing about the model, you’re really writing about the algorithm and how the algorithm works.
Again, I will always fall back on the history of how all the models come about, what’s the thinking behind it, what’s your rationale, you would want to build the algorithm that creates the model this way, and so on and so forth. So that, I think, would be the way. But I’m actually not a data scientist, I’m not an AI engineer; I know enough to screw things up, but I think I would not be able to do anything in production. So I don’t have a lot more to talk about that.
But I think the approach I would have for writing anything about these kinds of things is really about explaining. So for me writing is about clearly explaining certain things; how it works, why it works and how to use it. So the cases will be the same, whichever thing that you bring up, whichever technology that you bring up.
I’m actually a big fan of science books. I grew up reading a lot of books about science, popular science. I read a lot of stories about how things are made, how they work. I’m a big fan of that, and that is the kind of tradition I come with when I write. I always wanted to explain things on how it works. So whether it is about programming or it is about software or it is about any kinds of technology, that’s how I would write it.
Yes, I agree. I mean, if we’re talking about machine learning and running data models, that to me is API work. Like, “I don’t want to write that code. I just want to hit an endpoint.” But if we’re talking about AI generating Go code for me - that’s where I’ve had problems.
Did you try GitHub’s Copilot?
With the VS Code Window coming up?
I did, I thought that was pretty wild; I guess VS Code has been setting themselves up for that. So yeah, it was pretty amazing to be able to just jump into an editor there and start looking at code. I think that was a fantastic idea, and the integration looks pretty good, too.
Yeah, so this is an example of a code generator. It comes in the form of a VS Code plugin. It’s created by GitHub based on the OpenAI Codex engine, but it’s actually an AI-driven code generator. So would one of those be creating content for us at some point?
I don’t know. I think that maybe if it’s going to be academic, and cold and dry documentation, really… I don’t know. I think there has to be a personality. When you’re writing a book with several people, if it’s not just yourself, one of the biggest challenges you have, and the challenges that the editor has, is trying to create a single voice in everything that’s being written. And the idea is that eventually everybody writes in the same voice, because you’ve been doing it enough and the editor has been kind of pushing you in that sense. But I don’t know, I think voice is important… So I guess if we can create that Turing machine, where we don’t know who we’re talking to, maybe it works. [laughter]
Yeah, I don’t quite agree with code generation, actually. I never really did, because I thought, why? Why would you want to generate code? What’s the point in generating code? Because code is a means to the end. Because at the end of the day, you want to have software. If you’re able to generate the software right away, then why do you want to create that intermediary? Why do you want to generate code? Code is something that human beings write in order to generate the software. But if the machine is able to generate software at the end of the day, then why do you want to use the machine to create an intermediary instead? So that’s really puzzling for me. It’s probably a tool to help programmers, but I don’t think that’s really the end goal. So for me, I would say, just get to the end of the story, which is really creating the models, the machine learning models to do this stuff, rather than do something in between.
You can write the code that generates the code, or you can write the code you need. [laughter]
Or use the code that somebody else wrote to generate the code that you need.
Yeah. But there’s no code. Because if you’re doing machine learning at a certain point, you are basically just training a model; you’re not really writing code anymore. So that, for me, is a slightly different paradigm. But I mean, I don’t quite agree with using machine learning to generate code because I think it’s a redundant process; I think there’s a something that’s not necessary. Why don’t you just get to the end of the game, which is creating the software? Because that’s what we’re all trying to do. We’re all, at the end of the day, trying to create software to do certain things for us, and programming is a means of an end. I mean, it’s that thing that we do, that we love to do, and there’s a lot of art in it, and there’s the things that we enjoy doing… But it is a process to get to the end, which is generating the software.
If you have the tools to be able to generate the software, then why don’t you just get to the end of it, instead of trying to muck around with it somewhere in between? And it’s not going to be satisfying for programmers, because – it’s weird for me. I don’t really know how to best explain it, but I thought maybe the best way to do is just to generate the end story.
I don’t think you will ever replace the programmer, because you always need somebody to try to build a software, create a software, and software is created to serve certain purposes. And the person who is able to describe what purpose it is, that’s the programmer who’s able to do it; whether then you code it up in a programming language like Go, or you give enough instructions for the software or another piece of software to generate the end result… It’s just a different tool.
I think that the programmer would not go away, but –
The language will change.
Yeah, the language is like, why do you want to get the machine language tools to generate something for you so that now you can go and compile it and generate code? That’s silly.
Now, let’s be fair for a second. I want to be fair, because I feel like sometimes – I’ve been doing this for 30 years. So there’s some baggage and bias. I think we both tried to do code generation at an early age. At the early part of my career, I tried it; it didn’t work. So I’m here saying to you, I failed. Now, there may be somebody 20-30 years younger than me going, “I know, Bill, but I can do it better.” I don’t want to discourage anybody from trying anything, if they think that we’re now at a point where it can work. Go for it; learn, succeed or fail on your own terms. But it will be interesting, when you’re 50, did you get to the same conclusion we did, where just code generation overall hasn’t worked for us?
To me, it’s really fallen down when I’ve had to maintain and debug the software, more than the actual generation of code. My whole focus is my ability to maintain and debug and manage a piece of code. So that’s where it’s broken down. But maybe you’ve got the magic bean, the pixie dust that I don’t have, and you can pull it off. So I don’t want to discourage it. I just want to be fair that, at least for me, I’m saying this because I tried; it didn’t work for me. So either you take that and say “Good, I’m not going to spend my time on that” or, “Bill, come on, you didn’t know what you were doing, and I’m going to try as well.” Go for it. I just want to be fair there.
Yeah. I will say that I’ve been asking that out of personal curiosity. I’ve been playing with actually not something that generates code, but explains code. So I will add the links to that to anybody who is curious about this; it’s called Stenography Dev. I will add that also at the end of the show notes.
And speaking of end, we have reached the end of the show, which means we are on time for our Unpopular Opinion. So I will play the tune for that while you get ready to share whatever your unpopular opinion is.
So our unpopular opinion can be anything related to Go code, tech or neither. Would any of you want to go first with your unpopular opinion?
So I’ve been, just to keep myself educated, trying to form some internal opinions about NFT’s and ownership over digital – let’s just say digital art right now, just to kind of zero in on. And I just, again, I think I’m old, and I have too much baggage or bias, but I just don’t feel like an NFT gives me the same sort of ownership as if I owned the physical painting that the artist physically painted on, and I had that. Like, unless I had maybe the code files that that artist use, like the Adobe files or something where I said I have it, but they could still give that to somebody else. The artist can give that canvas to somebody else, unless they painted it twice.
What if it’s digital art?
That’s what I’m saying. I love the idea of an NFT for digital artists. Like, don’t get me wrong, it’s interesting. If you’re a digital artist, how can you sell your stuff? I get it. I just don’t – here’s the scenario. I walk into your house and I see a painting on physical canvas. And I can ask you, “Is that the original?” And you could say, “Yes.” And I’d be like, “Wow, the artist actually physically touched that”, right? Or you could say, “No”, and I can say, “That’s cool. It’s a cool piece of art.”
But if you have like a digital frame on the wall, where you can put any pixels you want up there, and it was some art, I wouldn’t be asking you, “Do you own this?” I might say, “Do you have an NFT for that?” But like, I’m really struggling with this concept of this pure ownership and people spending hundreds of thousands of dollars for the digital art –
– with some sense that they have this real physical ownership of it. I don’t think Ethereum is going away anytime soon. I don’t know about all the other platforms that are out there… Because it’s scary; overnight, your NFT doesn’t exist anymore. Like, the painting does, unless you have a fire, obviously… But do you understand what I’m saying? So I am struggling with this idea that an NFT gives you real ownership over some digital artifact. I don’t know. I’m trying. I’m trying… But I’m struggling.
I have to ask, how do you feel about before the era of NFT, like, a decade ago about art that is photography? Like, I’m a photographer, and I’m selling my photographs as an art. How do you feel about that?
If the artist is handing me that print, which I’ve had before, then I feel the same way; and I have them maybe sign the back of it. Now I have real ownership, because the artists had a physical interaction with it. If they’re just sending me a digital copy of it, I have one of God knows how many. It’s not the same. It’s this idea of – so this is why I want the code. So if you did this painting and you gave me the code files for the tooling that you used, let’s just say Adobe again. Well, I know you wrote that code, and now I feel like I connected with you in some way, because I’m like, “Look, this is the code that they wrote. Like, they literally did this, nobody else did this.” Now maybe there’s some ownership there for me.
So basically, being part of the creation process is what you look for in art.
Having that physical connection with the person that produced it, for me, means ownership. So if I get a book from someone and they signed it, I know, they touched that book, I know they interacted with that physical book; it’s something special about that book beyond me just buying it on Amazon. And so that’s what I’m looking for. If there was a way of, with the NFT, having ownership of the code and knowing this is the code they used, I think it would be the same thing with a photographer. I want to know that you physically touched it and maybe you signed it. And maybe there’s a way of doing a digital signature. See, that would be interesting, now that we’re talking about it… Is there a way to stamp a digital signature that only that artist could have put on that image? Now it gets interesting to me, because anybody can download it and reproduce it, but not anybody can have that digital signature, unless it came from the artist. So now maybe that thing is worth $20,000 for me. I’m not saying the art isn’t worth $20,000. I mean, there’s some amazing creations that are happening. Like, that’s not the problem. The problem for me is how do I get that physical connection? How do I know that the artist was literally involved in giving me that electronic asset? That’s what I need. So I just don’t think the NFT is enough. That’s my unpopular opinion.
That’s fair. That’s a very up-to-date one, I have to say. Sau Sheong, how about you?
I have a pretty mundane – I’m not sure whether you can call it unpopular opinion. I think that there was a tendency for people – you know, when you have a hobby and you like doing stuff, people come to you and start talking about, “Hey, you know what? You could convert this into a business. You could actually make money. It can be a new side hustle” and stuff like that. I get a bit annoyed at that. I mean, one of the reasons why I’m annoyed is for the past year or so I picked up a new hobby, I picked up baking; so I like baking. And I don’t mean the sourdough type. I don’t like sourdough. Maybe that’s the unpopular opinion. I don’t like making sourdough, because, you know, I don’t like certain things about it, which I’ll not get into. I bake a lot of other different things; I bake tarts, I bake cakes and stuff like that. A lot of people come to me and say, “You know what? You should be opening a bakery.” “No, that’s not what I want to do.”
You want to leave your side hustle as a hobby. You don’t want it to be a side hustle at all.
This is my hobby.
It better not include sourdough anyway.
It would not include sourdough. I mean, people keep trying to give me their starters, like sourdough starter like no I don’t want that. I say no I don’t really like that. I like to do this stuff. And it’s the same thing with some of the stuff that I do, the code that I write as well. It’s totally a side hustle because sometimes I go into projects that I do because I like programming. And some of the things I write, it’s like, “Yeah, because I like writing.” Books don’t really earn much. In fact, they hardly earn me anything. But I like doing it, because I enjoy doing it. So I don’t want to turn that into a side hustle, because I have a day job, and I earn enough from my day job to feed me and my family, and that’s good enough for me. But my day job is not my entire life. I like to do some other things which are hobbies. I don’t need to turn those things into the money-making ventures.
So I just get a little bit annoyed when some people – I mean, they’re all very good-natured. They’re all trying to say, “You know, there’s other good stuff you could do….” But it’s sort of annoys me. It annoys me even more, because I can only smile… And that’s sort of like – I guess, that’s my unpopular opinion.
Now, that’s interesting. Those are two good, solid unpopular opinions, and we’ll definitely run those surveys and then we’ll see if your unpopular opinion is popular or unpopular. But yeah, we’ll see where that develops.
I guess this would be concluding the episode for today. Thank you very much for joining in your different hours of the day. We mentioned this before we started recording, but actually, Bill is based in Miami, I’m based in Berlin, and Sau Sheong song is based in Singapore, and we’re six hours away from each other. So Bill is six hours into the future, and Sau Sheong, relative to me, six hours already experienced this day, and then 12 hours away from each other. It’s crazy. It’s almost midnight for your, Sau Sheong. Right?
Yeah. And Bill, it’s almost noon, lunchtime for you.
Thank you both again so much for your time of the day. It was very interesting, and thank you for all the cool books that you wrote and all the content that you’re making for the community. We will be publishing this episode with all the notes, so you can find there all the books and all the additional interesting links that we were mentioning throughout the call. Yeah, see you all online. Thank you.
Cool. Thanks for having us.
Our transcripts are open source on GitHub. Improvements are welcome. 💚