Go Time – Episode #317

Your ultimate guide to mastering Go

featuring Samantha Coyle

All Episodes

Angelica is joined by Samantha Coyle to talk about her newly published textbook: Go Programming - From Beginner to Professional. This book serves as a go-to guide to master Go for real-world software dev success covering fundamentals to advanced topics.

Featuring

Sponsors

Ladder Life Insurance100% digital — no doctors, no needles, no paperwork. Don’t put it off until the very last minute to get term coverage life insurance through Ladder. Find out if you’re instantly approved. They’re rated A and A plus. Life insurance costs more as you age, now’s the time to cross it off your list.

SpeakeasyProduction-ready, Enterprise-resilient, best-in-class SDKs crafted in minutes. Speakeasy takes care of the entire SDK workflow to save you significant time, delivering SDKs to your customers in minutes with just a few clicks! Create your first SDK for free!

Fly.ioThe home of Changelog.com — Deploy your apps and databases close to your users. In minutes you can run your Ruby, Go, Node, Deno, Python, or Elixir app (and databases!) all over the world. No ops required. Learn more at fly.io/changelog and check out the speedrun in their docs.

Notes & Links

📝 Edit Notes

Chapters

1 00:00 It's Go Time! 00:40
2 00:40 Sponsor: Ladder Life Insurance 01:55
3 02:35 Samantha Coyle 👀 04:49
4 07:25 Ready to write 05:25
5 12:50 Baseline knowledge 02:04
6 14:54 Book takeaways 07:15
7 22:10 Favorite part 03:50
8 26:00 Sponsor: Speakeasy 04:53
9 30:53 Keeping it relevant 06:53
10 37:46 Writing process 06:53
11 44:39 Book feedback 03:51
12 48:30 What's next? 03:49
13 52:19 Advice for female Gophers 03:01
14 55:20 Where to get the book 01:11
15 56:31 Unpopular Opinions! 00:23
16 56:54 Samantha's unpop 04:18
17 1:01:12 Outro 01:35

Transcript

📝 Edit Transcript

Changelog

Play the audio to listen along while you enjoy the transcript. 🎧

Hello, and welcome to Go Time. Today I have the absolute pleasure of being joined by Samantha Coyle, who’s going to be talking about her newly-published textbook called “Go Programming - From Beginner to Professional. Learn everything you need to build modern software using Go.” This book serves as a go-to guy to master Go for real-world software dev success, covering fundamentals, to advanced topics. And I’m told this is the first time she’s going to be talking about her book, so we have the Go Time exclusive. So I’m very excited about that.

To introduce Sam, for those of you who may not know her - and if you don’t, you absolutely should, because she is a brilliant human being and software engineer… She is a software engineer at Diagrid , specializing in Go for cloud-native developer tooling, abstracting away application development challenges. She is very committed to open source. She contributes to a number of projects, Dapper, Testcontainers, AI Connect for Scientific Data, and many other projects. She has a rich history in retail computer vision solutions, and successfully stabilizing industrial edge use cases with testing, and diverse deployments, with biopharma data pipelines…

Her expertise expands to many different areas. She’s CKAD certified, and she’s now published this wonderful textbook, so she is a published author at this point, which we’re going to be hearing more about in this episode.

And Samantha is part of a Gopher family. She goes to GopherCon, and the whole family is there. She has her brother, and then she has her identical twin sister, Cassie. She’s also a seasoned speaker, so she’s talked at GopherCon many times, at various other conferences… And the main thing that I really love about Sam is she’s super-passionate about empowering early career and diverse professionals, and she actually does it. She goes out into the wild, she empowers people, she takes her time to make sure newbies in the community are heard, or supported… And I feel this book is just another step in her empowering that new generation, and the older generation of Gophers to be their best gopher. So hello, Samantha. How are you? I’m so happy to have you.

Hi! Thanks for having me. I’m super-excited to be here. It’s my second Go Time podcast, so I’m “Yay…!” And then also to be sharing on my book, I’m even more “Yay!!” Yeah, I’m really, really proud of it, and super-excited to be here, and share this with everyone. Yeah, it’s my first time sharing it out, so I’m nervous, and excited, and overwhelmed with happiness. It’s a nice mix of emotions. So yeah, thanks for having me.

Of course. Very excited to dive in. So let’s start with just an intro to you, how this even came to be, how did this book idea, this writing a book concept come into your life.

[00:05:48.00] Yeah, so how did this door open for me… That’s a really good question, because I don’t know; I wouldn’t have ever imagined this until recently. In recent years I have developed a love for conferences, and GopherCon’s very high on my list. I think it was 2022, I presented mainstage GopherCon on - I think it was called “A journey through integration testing with Go, and what can go wrong.” And it was a hit, and I really enjoyed sharing those learnings. And somehow Packt Publishing found out about me, and they reached out, and they said “Hey, we’re looking for authors. Would you be interested?” And I said yes. Because at the time I had recently moved home, and I was kind of being a bit more of a hermit due to some family stuff going on… And so I wasn’t going out, I wasn’t dating, I wasn’t doing a whole lot besides pursuing my technical growth and professional self. And so when this door opened, I just kind of dove right in and I said yes.

And I was looking back through my emails and when I signed the author contract, and it was, I believe, in January 2023 that I signed up for it. So it’s been about a year and two, three months in the making to get to this point, where we have a published book, physical copy that I can feel with my hands.

It’s very exciting, I’m ready to get my signed copy… But before we dive a little bit deeper into the book and the specifics, I really want to ask a little bit more about kind of your background, your expertise… Because I feel like there are two maybe potential gopher listeners here, people who may be have written books before, and are looking to kind of hear from a fellow author.

Secondarily, which is really what this question is for, is people who are in the Go community or in other tech communities and maybe have thought about writing a book, but maybe the thing that’s stopping them is like “Oh, do I have enough years experience? Do I need to have written before? Do I need to have done talks?” So I think it’d be really interesting to hear a little bit about your background, your expertise, and maybe a little bit about when you felt you were ready, or did you even think you were ready, and you’re like “Oh, I might as well give it a go”?

Okay. Okay, so some background context on me… I’m a software engineer at Diagrid … I’ve been at Diagrid for about a year now, where we’re working on developer tooling to help developers run high-scale, modern web applications… And yeah, I’ve gotten a lot of really great experience. In my current role right now, especially working with some really great open source technologies, like Dapper, and test containers, and a few others… And really grown a lot in this role in particular.

But I do have some really great and fun experiences with Go in my past, before where I’m at now, which is like a 30-person startup that I work at with my sister… Which is really fun and cool. So it’s like half of the children in my family are at a 30-person startup; pretty unique and fun. So there’s that.

And everything that I do in my day to day where I’m at now is with Go. Some open source, which is really cool… And I’m working on some really key features of our product that we’ll be launching into public preview here soon. So I’m really excited about that. And yeah, so some of my focus areas right now are our managed services when it comes to state store and Pub/Sub. So I’m excited to keep sharing my knowledge and learnings in the future on that as well, as it pertains to Go, and all of these really exciting distributed system concepts.

[00:09:49.01] My past, specifically, I’ve done a lot of cool things, from big companies like Intel, to other small startups where I was like the 13th or 14th hire, I think… And I’ve done a variety of tasks. You mentioned that I’ve done some computer vision stuff in the past… So at Intel, I was in the Internet of Things group, and that became the Health and Life Sciences Group, so it kind of lends towards what the projects were designed for. So a smart city solution working to improve city safety, leveraging Go. So I did some really cool stuff on that project, as well as a project that was recently open-sourced, that AI Connect project you mentioned earlier. And that one was for healthcare cellular images and running those images through a pipeline processing solution… Ultimately – so you know, so you could get diagnosis and treatment potentially based on the result. So a really inspiring project, and really fun to work with. And I specifically helped with stabilizing the deployment, because we were at the edge, a diverse deployment scenario. So considerations on that front, leveraging Go.

Also some interesting ones like internationalization with Go. So there’s like a Go i18n package that was fun to work with, and tracing and monitoring there. So fun stuff at Intel, and also a startup that I worked at before, where - that was a lot of refactoring, and updating code to make it nice and clean, and enable us to gain insights into our solution, and how does this look deploying our Go microservices to cyberphysical testbeds.

So I very much lean towards stability, and good practices, and testing… And so I am hoping that’s conveyed in the book… And definitely a lot of additions and stuff containing my background and things that I think Go developers should learn as they’re working towards proficiency in Go, and becoming successful with the language. So hopefully that translates well…

So that’s my context and my background. I got to a point where when Packt reached out, it’s like “Yeah, what makes you qualified to be an author?” And I don’t think there’s a clear-cut answer to that, Angelica… I don’t know if you have the answer, but I don’t…

No, I definitely do not have the answer.

Yeah… So you asked me “How did you know?” And it’s kind of down to intuition, gut feeling. I felt as though I knew enough, I’ve been in the industry long enough, and I have a lot of opinions that I wanted to share out with beginner gophers and people who want to become successful in real world Go development. And so I loved sprinkling some of those juicy bits throughout the book.

That completely makes sense. And you kind of mentioned hoping to have the book help new gophers… But is there any pre-knowledge needed for someone to really get the most out of the book? I.e. what’s the leveling in terms of coming to the book, reading it and getting the most out of it? Is it like a baseline understanding of computer sciences required? Prior language understanding, Go-specific understanding? I would really like to understand, people who are maybe thinking “Is this book right for me?” What kind of readers?

Yeah, so for that, there’s no knowledge of Go required. I would say there’s definitely – you would want to at least understand some aspects of computer science, to know like “I have data, and I need to do stuff with this data. And I need control flow.” So if you have a basic, very, very basic understanding of computer science, then this is a great resource if you’re wanting to learn Go.

[00:13:47.04] If you’re a newcomer to the language, then this is also a really great resource, as well as for industry professionals who are like “Go sounds really cool, and has great community, and a lot of great aspects to the language. I’m intrigued.” Then it’s a great resource. It goes all the way from foundational knowledge, the basics, to advanced topics, and it has a lot of exercises interweaved throughout, where I’m like “Here’s a concept. Let’s look at what this looks like in code that you walk through, step by step. And then what does that look to expand upon through activities? So totally tailored towards newcomers. And I really think that it hits home for me, because it’s like, I want to continue sharing my technical expertise with people, and bring others up, and uplift them with me… And so yeah, I feel like this was just somehow naturally the next progression in my journey on that.

For sure, for sure. That’s awesome. So let’s talk a little bit about the specifics of what you cover in the book. I’m wondering what are you hoping readers will get out of it when they’ve read this book, what is the takeaways, or takeaway that you want them to have having gone through the book.

So a very high-level summary of like a key takeaway is I want people to feel confident in their Go abilities to write real-world Go applications. That’s a key, key takeaway, no matter their background. So that’s like the key takeaway, and that’s grounded in all of the 21 chapters in my book. And I was actually looking, because I couldn’t remember how many pages there were, but there are 650 pages of goodness, I think, in here… Or hopefully. Hopefully, readers agree. But it totally goes through the flow of “I want to learn Go. What does this mean? Let’s start with the basics.” And as I mentioned earlier, it’s like, okay, well, the basics are I have data. What do I do with this data, and how does this look like working with it in code? How can I define variables and assign values to that? How can I, now that I have data, work with the control flow of that data through my program? Like for loops, if conditionals, switch statements. I mean, I don’t know exactly all of the chapters as they progress, but it’s very much basics like that. “I have data. What do I do with it?” to “I’m working on building out a bigger program, maybe. I’m developing Go modules and packages. How do I consume those and write well-written code, that others can read and understand and iterate on? And so that’s where we talk about functions, and designing good quality code, and templating things out in modules and packages, as I mentioned, and even interfaces, and generics. So those were added as well.

So getting out how can we now that we’re writing good quality code look at reducing our footprint? Writing clean code, and thinking about “Hey, I have some duplication here. Let’s clean it up.” Let me see, I should probably refer to this to see what are some of the next things. Oh, my goodness… So you keep iterating. Then we have maybe a project that we’re working on, and it’s like, okay, maybe if I’m trying to connect to a database, or connect to other services and I have an error, how do I handle that? Should I panic? Should I not? How do I define an error?

So then we’re starting to think about how can I be mindful of writing quality software for the real world. And I can keep going. It’s like, from here we keep iterating on the idea of error handling. Oh, and talking about types… Oh, debugging. Right? Writing applications… If you have an issue, it’s like, what are some tactics in Go you can leverage to debug? What are some information pieces that you should add in debug logs, and different helpful methods for that? Then we talk about some advanced topics, like time, command line utilities… I feel like CLIs are very, very popular with Go, and there’s been some really great features coming out with respect to TUIs. Have you ever heard of a TUI?

[00:18:29.05] No, I’ve not. Can you please tell me? Tell me more.

Well, I guess I shouldn’t say TUI. It’s kind like I’m starting with an acronym, and it’s not always the greatest to start with an acronym… But it’s a terminal UI. And so I also thought, okay, well, what are some relevant pieces that I should include in these chapters as we’re progressing? And a terminal UI is really nifty, and you can add basically what it is, a terminal UI. So I touch on that in the code… And it’s actually something like we’ve worked on at my company. So really relevant stuff.

As we’re going through the book, file systems, interacting with, and… I mentioned databases… I mean, honestly, a lot of this is practical to the stuff that I do daily. As I mentioned, I’m focused on our managed state store, and so what does it look to create databases and tables, and writing queries, and interacting with those external resources? All very relevant stuff, touched on. And - well, web servers and clients, and concurrency testing… I don’t know, there’s a lot of good stuff in here, and you keep iterating, and it keeps getting to more advanced topics, and things that are real-world relevant, very much like what a professional gopher would do.

For sure. And is it written in a way that you would want someone to start at the beginning, and kind of in the way you described it, kind of go along? Or is it something where if I, for example, am like “Oh, I’m really struggling with concurrency today. Let me look and see where the concurrency chapter is.” Is it both a read cover to cover, but also a dip-in for specific instances where you’re interested to try and learn more?

100%. So that’s one of the great things about this book, is it’s very much a comprehensive, cover-to-cover, you can read it, and I feel like you’ll feel very confident in your capabilities as a gopher. And it is also something that yeah, if you’re struggling with concurrency, and you want to gain some of the insights on, or what are some of the latest additions to the language, how can I gain insights on - yeah, concurrency…

And it’s comprehensive from cover to cover, I would say, to becoming more of a professional gopher, but it’s also comprehensive, I would say, with regard to chapter content. So say we’re talking about the concurrency chapter. It’s like “Okay, well, what is it goroutine? How do I communicate between goroutines? How do I synchronize data access, and make sure I’m being mindful of race conditions? And what’s the race flag that I can use to check if I’m being unsafe?”, stuff like that. So it very much is comprehensive, also in terms of each chapter, with examples… And obviously, it’s kind of hard, because my book is 650 pages. It’s a lot. And I don’t want to go overboard… It’s like, I actually had to cut chapters and chapter sections. So it’s also kind of, from an author perspective, you have to be mindful of what are some of the latest changes to the language that I should include in this book… And there were changes that were made for this book specifically because of that. But then also, I think it’s like what are things that are changing in relevancy, or based on my own experience, what are the things that I think are missing? So if there were tweaks based on that as well.

[00:22:10.06] So it feels like there’s a lot of content in the book… What is your favorite part of the book, if you had to pick one? Or two. I’ll give you two.

Okay, okay. Thank you. So in terms of the content and picking a favorite section… I mean, there’s parts that I like. Some of the examples I had a lot of fun with… I’d put my name and be like “Hello, Sam”, or I’d throw some really fun examples in there, like “What is the largest stocked item on a farm?” and stuff like that. So there’s a lot of fun all throughout. But then my favorite chapter, I’d have to say, is one of the – I think it actually might be the last chapter. It’s called “Go in the cloud”, and I think it’s very, very relevant, and I think it’s one of those chapters that when you think about writing real-world software, and running Go code, wherever - like in production, or wherever - you want monitoring insights, you want to understand what’s going on with your application. And you want to make sure that it’s well written.

And so this last chapter of “Go in the cloud”, it touches on, well, how can I containerize my application? So it’s taking you also up to speed, I think, just in general, for a software engineer. Like, how do I containerize my code? What does that look like? How can I instrument my application using some really awesome open source tools out there, that really enable you to gain insights into your running application? And so it’s like, okay, well, what are the different aspects that Prometheus gives me for monitoring? And that’s like histograms, gauges, counters that you can add.

I have an example in the code where every time you hit an endpoint, it adds a counter, and it’s like “Counter incremented.” It’s giving you that foundational knowledge to gain insights into your application. And I touch on things tracing, and - yeah, running your application with an orchestrator, like Kubernetes. So it’s very, very relevant stuff, and I think I had the most fun writing that chapter.

So that’s favorite chapter. I have another favorite part of the book, and this is much more of a personal note… So yeah, I don’t know, I guess I’ve put some of my personal business out there… But one of the things that I really wanted to do with my book was take advantage of a dedication section… And I don’t know, I feel like not a lot of people write a textbook. And I was really proud of writing a technical textbook… And so I dedicated this to my mom. So I don’t know, I touched on that in the dedication. She’s a big part of why I am the way I am today, and who I am today, and who instilled a lot of hard work… I mean, it’s your typical – like, you’re influenced so heavily by your parents, but I got to dedicate this to my mom. So yeah, really nice.

That’s amazing. That’s awesome. That’s such a special thing to be able to do, for sure.

Yes. Yeah, I know… I was really nervous for getting that part right, and it’s like, that was one paragraph of a 650-page book… So yeah.

Yeah, but understandable… Because you know, that is the personal, and the rest is more on the technical side.

Yeah. So that was my special part of this book.

Yeah, for sure. I’m excited to read it.

Break: [00:25:54.25]

So one question, turning back to the technical, that I had as I was thinking through the textbook, just the concept of writing a technical textbook in general, is – with many languages, but especially with Go, it’s open source, we’re continually seeing upgrades, improvements, we have a whole team at Google who’s working on it, as well as external maintainers and contributors… How do you make sure, slash how did you think about keeping the content relevant so that it wasn’t going to be kind of out of date within a month, two months, a year etc, given the continual changes that we’re seeing in the Go language?

Right, yeah. That’s a really great question, and I think a consideration anyone should have when putting any content out there, be it a blog, or a book… And it’s something that not only me as a personal published author - which is still fun to say, and I still get goosebumps…

As you should…

[laughs] Thanks… But it’s even something that the Go team has to keep in mind, too. The tour of Go, and Go by example… They have to keep that up to date, too. So I think when it comes to making sure you keep up to date with the language, it’s like, everyone has to do it. It’s like a natural progression, which is really nice. But then yeah, it’s hard of like “How do I make sure what I’m putting out there is relevant, is current, and will stay that way for x amount of time?” And I don’t know how you even define X amount of time.

Yeah, [unintelligible 00:32:35.28] I mean, you were writing for - what, a year and a half? I think I remember right… And there have been a number of changes even in that time. You alluded to this, but did you kind of have to re-edit sections that then changed, used new releases?

In terms of that question, I think Go version 1.22 came out near the end of me updating this… And I left it as 1.21. It’s kind of like when you’re going through writing a textbook, and in this case it’s actually a second edition. So it is something that I did have to go through each chapter, and say “What needs to be added? What needs to be removed? What is now irrelevant?” And - I mean, there’s different cases of that throughout the book, such as new chapters being added on generics… And then it’s like “Well, okay, how do I think about what a newcomer would think of this new topic?” And it’s like, generics are gonna keep changing as we iterate with new Go versions… So considerations on that front.

Even in the concurrency chapter, I added sections on a sync condition… So it’s making sure that Goroutines, if a condition occurs, you can signal that occurrence, or a change in shared data… So stuff like that was added, and you looked through “Okay, what are some of the changes in the different Go releases?” And you’re like “Okay, this is missing.”

And then even some things in the book like go to statements… Which - I think go to statements have been out for quite a while… I mean, it’s hard to keep up with like “This came out with Go whatever version.” It’s hard, even in my brain, to keep track of it all… But it’s stuff like that that’s been existing. I was like “Okay, I think go to statements should be touched on.” But then stuff like that, and even in the concurrency section, and in some of the other sections, it’s like “Well, even though this is new, use with caution. Just because we have this shiny, new toy doesn’t mean we have to use the shiny, new toy, and overcomplicate something just to use generics, or overcomplicate something to have each function in a file.” No. It’s always finding a good balance. So I touch on that all throughout the book, concepts as well.

Got it. And do you prescribe or suggest ways of using some of the concepts that you’re outlining? Or is it more instructional, and these are the many ways you can use it? I ask that just because I know, talking to a number of gophers on certain technologies, or certain packages etc. people like to use them, even like write their code different ways… So I’m wondering how much you’ve prescribed, suggested, versus laying out the different options, as someone who – I’m sure you have your own views on what the right way to do things is, or the right way to use certain things are.

[00:35:52.21] Right. So in terms of that question, I would say for me it was important to say “This is one way you can do it”, but there’s packages out there that will help if you want to do it a different way. So one example of that that comes to mind is like middleware for HTTP servers. So I know there’s the Alice package out there, that will help you chain your middleware… So I’m pretty sure I touched on stuff like that, but did show it like manually typed out how you can do it, just so that way… You know, throughout all of the examples, I tried to think about “How can this be as clear as possible?”

I think sometimes it’s important to not, I guess, use the shiny, new toys, and sometimes to put it down to the basics… So I think I tried to touch on alternative methods, and alternative packages, and stuff like that… But in some other aspects, it’s like - for the databases chapter, and writing queries and connecting to a database… I think I use the pq… I think it’s pq, or pg… I don’t know, I’d have to really look at it. But I did use one package, when now I use another. So that’s also another consideration. Yes, I prescribed one package, but I think touching on that there are other packages to do the same thing is really valuable to touch on for readers… Because they don’t know. You don’t know what you don’t know. So I think it’s nice to touch on stuff like that… And even something for me, thinking about keeping this relevant, and thinking about like “Would I do another edition?” Maybe I would, in the future, change that package out and use a different one if it’s more relevant and current. So it’s a balance, for sure.

So I’d love to talk a little bit about the process of writing the book. How did you do it? How did you think about it? How did you decide what to change, what to keep? I know you said that this is a second edition, so I’m interested in how – did you talk to the author of the first edition, it was a collaboration there? Were you given complete creative freedom to edit whatever from the first edition made sense? And really just interested on how it came together, both logistically and also just how you mentally got there.

Okay… There’s a lot in that question, so I’ll start with some, and you tell me what I forget… Okay, so in terms of the writing process, I think I kind of went into it with no expectations. It’s like, yes, there’s an author contract, and you sign it, and you kind of know some going in… But I feel like it’s very much one of those things where you learn as you go. And I don’t think I fully understood everything involved with it going into it, if I’m being honest.

One of the first things that will happen is you have an outline, and if someone does have an idea for a new book, and who knows, I might have an idea for the future, right? …then I would go to them and be like “Hey, here’s my outline. Here’s why I think we need this book, the gaps that it solves…” Considerations that were even in mind for this book, and this edition.

So there’s an outline with all of the activities and exercises, like hands-on coding stuff, thought through, at a high level. And so for me, there was like a pre-existing outline, and I made updates, and I had full creative power as I saw fit, within reason. I couldn’t be like “I want to add 20 new chapters on top.” That’s not how it worked. Because too, I’m like restricted, because we want to make sure that readers are engaged, and it’s not overwhelming. And so there’s kind of a sweet spot. And I don’t know what the that sweet spot is when it comes to page count, and all of that… But 650 pages was good with my publisher, so I guess that’s within reason.

[00:40:11.23] But yeah, you have an outline, you make changes, or you fill in the outline as you see fit, it’s agreed upon… You work on a schedule, and with that schedule, you talk about like “Hey, I’m presenting at GopherCon this month, and I’m going to be on vacation that month.” So they kind of know “Okay, Angelica might be busier this month.” Or – you know, you keep in mind, we’re also humans, and we do stuff outside of work, and sleep, and eat, and all of those other things that come with just being human… So the publishers do understand that, which is really nice. But then they also to stick to a schedule.

So one of the things that I learned was I don’t – like, it’s really hard to keep with a schedule, if I’m being honest. It sounds easy, and it sounds nice to the publishers to get 15 pages done a day, or X amount of work accomplished each day. But some days are hard, and I’m tired, and I don’t want to do the book. And then other days are easy, and I knock out a whole chapter. So there’s a bit of fluctuation, I will say.

And then you write your chapter outlines in Google Docs. So it’s kind of – it’s hard, because it’s like… I mean, we code in a terminal or in an IDE, and then when it comes to translating that code over into a Google Doc, sometimes it capitalizes things, or it adjusts the indentation, so you have to go through and fix stylistic things like that… Which are, honestly, not the funnest, which makes sense.

Weird. I love to correct indentation. [laughs]

I know, I know. So yeah, that was kind of frustrating, if I’m being honest, but a natural part of it. We’ve to put it into Google Docs, with our words, and the context, and the content, and then that goes to a reviewer. So you have multiple technical reviewers, usually, per textbook… And so shout-out to mine. I had two awesome reviewers, by the name of Stan [unintelligible 00:42:18.05] I’m sorry if I mispronounce… But yeah, could not have done it without them, like, giving me feedback. So it’s like, write the chapter, get feedback from them, adjust in account for feedback… Maybe it’s like make something clear, adjust an example.

And all throughout, it’s kind of like you have an editor who’s like “This should be adjusted”, or “This style should be changed.” And then you fix all of that, and it goes to someone else who will do a final runthrough of the Word doc… And then it goes to PDF, and you have to review all of the PDFs… And then it goes into – well, honestly, I had to review all that, make final tweaks, and email them like “PDF page one needs this tweaked.” So it’s like, I’m not perfect… So you go through and keep iterating, and you try to do the best you can… And then it gets printed, and you get mailed a copy…

And I actually got to send – well, so I got two copies, and my boyfriend’s dad wanted one, which I thought was really sweet… And so I gave him my second copy, because he’s like “I’m gonna read it. So can I have one?” So yeah, then you have like really special moments that… I’m like “Yes… Thanks for the support…”

That’s awesome. So have you read it since you got the final print? Because for me - I’m gonna be honest - if I spent all those hours and sleepless nights editing, I would not know whether I wanted to read it or not just in case there were some issues, some grammatical error or something.

[00:44:05.00] Mm-hm… So honestly, I still go back and forth. I will read it eventually, and like read it through end to end… Because I think it’s important, even for me writing it, to then read it, so I can see “Okay, maybe I would have changed this.” And I think that’s important to do for the next edition, in X amount of time, when I think there should be enough changes to mean that we should have another edition to keep it relevant.

So “have not read yet, but will read at some point.”

Yes. Yes.

So as you’re thinking about, like, the book is now in the real world… What kind of feedback, what kind of input have you got more broadly? I know it’s just come out from the community, but I’m just interested to hear, Is it what you expected? Is it kind of early days and you’re kind of waiting for feedback?

So we’re still early days. If I’m being honest, I think I waited a whole month before I publicized, like, “I wrote a book…!” I don’t know why it took me a month to be like “Okay, I need to share this.” And I think part of that was I was tired, and overwhelmed… And you know, more stuff personally going on when I finished this book. I just moved, and bought a house… So there is a lot going on for me, and I was just very, very overwhelmed, if I’m being honest.

So I’m at the point where I feel like things have simmered a little bit, and I’m ready for the world, and ready for the feedback. So I’m actively looking at like “Okay, well, I need to get this out there, and share it with people, so they know about it.” And so far, I’ve gotten some really great reviews on Amazon, which - I was really excited. I never really thought about it, but I got to create an Amazon Author Page, with a bio, and everything… So it’s really official, and – yeah, it sunk in more. Because yeah, like you said, it was definitely long days, where we sit at a desk - or we can stand - and work, staring at a screen all day… And so then after work, I would do the same, working on the book. So it was a lot. And I feel really proud of accomplishing this, and putting in the hard work, because I think hard work does pay off… And I was really quiet the whole time working on this. I don’t really think many people knew throughout, but I think it’s one of those moments where it’s like, you lay low, work hard, and do good work, and then when you’re ready, you share it with the world. And I feel like I’m at that point where I’m ready, and I’m sharing it with the world… And I’m getting awesome feedback, that’s really encouraging, and I really appreciate all of it. And then I’m also getting feedback where people are like “Hey, this is lowercase when it should be uppercased”, and other… I don’t know, it’s like, I still need to look at some of the other feedback I’ve received, making sure I’m giving attention to what readers are thinking, and thinking about “Okay, well, how can I make this better, say, for the future?”

So there are little things like that that have come up, but so far, so good, and I’m really excited and hoping that people continue to like it and enjoy reading it, and gain awareness on it. Because I think that’s one of the other things… It’s like, you don’t know what you don’t know, and people might not even know this book exists. So if it’s a tool that could be useful, and people like reading, then - well, hopefully they can find out about it.

Well, they’re gonna know about it now… They’re gonna know about it now, on this episode, so… And I actually just did – I did a little skim of the Amazon reviews, and two things popped out to me. One, five star reviews all around, and two, I love the fact that I saw your wonderful twin sister Cassie wrote a lovely little review as well. I thought that was lovely.

[00:48:12.02] Yeah, she was like “I’m gonna get it, and support you, and I’ll leave you some feedback.” So I’m like “Thank you…”

Very thoughtful feedback. I love it. If it was my sister, I probably would have just been “Well done!” [laughter] Whereas she wrote a very long, wonderful review. Okay, awesome. So you have this book out there, you’re kind of starting to put it out there in the world, get some feedback… You mentioned thinking through third edition, next steps… So in your mind, what is next in terms of both the book, thinking through future writings, further engage with the community? And also just for you, as a gopher who is now a published author, in the Go space? What are you thinking in terms of your technical future and your future as a technical writer?

Hmm. Okay… So in terms of the book, it’s kind of like what you were saying earlier, like, how do you make sure you keep up, and keep the relevancy with respect to the language progressing, and just, I think what it means to be a software in the real world; like, how do I make sure that the content in this book also hits home there?

So I definitely think in the future there will be a third edition, and now I know what to expect, 100%. So that’s fine. I’m cool doing that in the future. And I don’t know when that would be. I suppose a few more iterations of the language would have to come out… And it’s also one of those things that - it’s like, I got to put my touch on this second edition, and I think even in another edition, I can make it that much better, or that much more of my own. So that’s also really exciting prospects for me to keep in mind and consider. So yeah, I think there will be another edition in the future to keep up with the language, and keep up with the relevancy of what the book covers. So there’s that.

And I do think that I will look at what are other author materials that can come from little ol’ me… So I’ll be excited to kind of see where I’m at even in just five years. I do think it would be fun… You know, I think it would be fun to do other authorship stuff… And I have some ideas; I’ll keep those on the down low.

And in terms of me personally, I’m excited for a little break from writing. I’m still working on what are professional avenues to keep growing technically… So I have some of those pinpointed down in some specific to Go, so excited to see where it goes, and share that with everyone as it comes.

Awesome. So as we kind of conclude chit-chatting about the book, is there anything that you want to highlight, that you want to say? I want to make sure that there’s nothing that you would want to highlight that goes unsaid to do with the book.

I would say that I hope that people really enjoy reading it, and I hope that you can see my personal marks on it, and that it can make people successful gophers, to where they can feel successful writing real world Go programming, or real world Go code.

So I would say that about the book specifically, and overall, I would say you never know what doors will open. And I think that’s a big thing here… I’m always constantly thinking about how can I keep growing, and be grateful for where I’m at, and grateful for the things that are ahead of me, that I can keep growing into… And this book happened to just come out of nowhere. Because I presented at GopherCon, this door opened. So we should always see what’s behind each door, and you never know what other doors will be opened up because of that.

[00:52:18.23] So I have a final question, which is not necessarily to do with the book, but I think is one that I personally have, and I think it would be interesting to hear you speak a little bit on… As someone who - and I know you’re gonna be like “Oh, no…” A someone who is now, I think, a very prominent female figure in the Go community, and who – you’ve talked many times at GopherCon, as we’ve said, you contribute a lot to meetups, and the community more broadly, and now you’re a published author, and you’ve been on Go Time two times, and hopefully more… What advice, guidance, what kind of knowledge would you give to other female gophers specifically in the community, who maybe are struggling, or feeling that very deep-rooted impostor syndrome around “Oh, am I good enough? How do I progress? How do I get better at advocating for my skills, and making sure that I’m not being pigeon-holed into “Oh, you’re kind of technical, but not really”, and really feeling confidence and being like “No, I am a technical woman in this field, and I’m amazing”, like you are?

Well, thank you… You know, I think it’s something that everyone secretly struggles with… And I don’t know if everyone shares that, but even for me before this - I mean, I literally wrote a textbook, and I’m nervous for a podcast. I think it’s natural to have those considerations. And I think for me, I’ve always wanted to be a role model. So I like to volunteer at my old university, and abroad on different things, and give my time towards things that will inspire others, and make them see the art of the possible… Because I think that’s the thing. It’s like, some people don’t know what’s possible unless they see it for themselves… And so I’m hoping that I can continue to be a role model on that front… And that’s why I do help to run the Women Who Go meetups. And I work with awesome people like you to do the same at GopherCon, and other events, specific to the Go community, but also in the more broader software engineering field.

If I think about some of my idols, a lot of them are men. And that’s totally fine. But I also think in my future I would want someone to be like “Wow, if Sam can do it, I can, too.” And it’s like “Well, then how can I bring others up with me?” And so things like writing a book and sharing your expertise - it’s really empowering. And it makes me feel good to share that back, but then also, I think… Yeah, just people seeing like “If she can do it, I can, too.”

Awesome. Well, that concludes this portion of the episode, chit-chatting about your awesome book… Just to finish out and make sure that everyone knows, the book is on Amazon, that is where you can find it. Is there any other places that you would recommend people go? Or is Amazon the kind of go-to place?

I think it’s the go-to place. And I think there’s the Kindle version, and the physical copy, which I would be more than willing to sign…

You better – are you gonna be at GopherCon this year?

Yeah, I will be there. I will be super-excited to see everyone there this year.

Awesome. So that means that you have a couple of weeks… I think it’s like five weeks, I want to say, till GopherCon… To buy the book, and then bring it and get Sam to sign it. And I will be doing that, and I will expect a very long message, please.

[00:56:07.00] Sounds good, thank you. [laughs]

Awesome. So pick up the book, check it out, leave all those wonderful Amazon reviews… If you don’t like the book, then I don’t know what to say to you… Because it’s great. And if you feel the need to write a review, please add five stars.

Awesome! We are going to now transition into my favorite part of the episode, even though this was very fun… Unpopular opinions.

Jingle: [00:56:31.23]

So, Sam, what is your unpopular opinion?

So I always like to make these light… And also, I tend to go more good with my unpopular opinions… But mine is that toilet paper should always roll over, not under. I’m a very – I don’t know, I think that could be unpopular, but I’m a firm believer that it should always roll over.

So what do you mean, just so we’re clear? The toilet paper should lie on top of the roll, and be pulled from the top, not the bottom.

Okay. Okay. Why? [laughter] Is there science behind this, or is it just a preference? Because I it being rolled – rolling over the top [unintelligible 00:57:35.14] because you can fold it into a little triangle, and make it look really neat, like in a hotel… But I don’t know whether you have a more scientific reasoning.

I think – so, I mean, some people don’t care. And then some people are firm believers it should go under. For me, it’s like… I think there was some post about it where the manufacturer images for how to get toilet paper shows it rolling over. So to me, it is the more correct way of retrieving your toilet paper.

I think that’s – I’m actually quite intrigued by that one, because I feel like it’s non-controversial, but it’s intriguing in that I am wondering how many people will disagree and agree… Or question, “Do I agree or disagree?” I’ve never really thought about this before.

Yeah, I feel like it’s a classic one… Kinda like “Should pineapple be on pizza? Yes or no?” Ultimately, it boils down to personal preference… But some people have very strong opinions.

Well, I think pineapple on pizza is a controversy. I do not think that is a personal preference. I think that’s an “You have tastebuds or you don’t.”

Yeah. Yeah, I would agree. I am not the biggest fan of it, but it’s kind of like a classic one, where toilet paper is a little different. A little different.

Fair enough. Okay, well, we’ll see what the gopher community says about your toilet paper preferences. I think we should just call it that, the tweet… “Sam Coyle’s toilet paper preferences.”

Not a bad headline.

And then we’ll link up – okay, so that was your unpopular opinion. Do you have any other unpopular opinions, or that’s the main one?

That was my –

You don’t have to.

Yeah, I stick with my safe ones until I get more creative.

Okay. Okay. I’m gonna ask you a question that might prompt you to have an unpopular opinion… What was your least favorite part of the book? What is the chapter that if people don’t have time, they can skip?

Least favorite… I don’t think I have a – I mean I have a chapter that was the most fun for me to write, but I don’t know if I had one that’s like “I didn’t like writing this.” I don’t think I have a least favorite chapter, because I think they’re all good in terms of what I want people to get out of the book. I don’t know if I can say that… Can I –

I guess maybe most challenging to write then. We’ll change it. The chapter that you had to revise, and spend the most time on, because it was the most challenging in your mind to get right.

I would say maybe the generics one, or the concurrency one. I would say that from the perspective of both had – I mean, one I totally added. And the other had a bunch of updates. So I think it’s like finding a sweet spot of not writing too much where the chapter is really, really, really long, but also covering all of the things that I thought should be covered. I think finding that balance was really tough for me. And then making it to where it was easy to digest.

That makes sense. That brings us to the conclusion of our episode together, regrettably… But please, come back on Go Time for version three in a year or two, given the pace of Go changing… It was an absolute pleasure, and I hope you have a wonderful rest of your day and you enjoy the rest of your period of not writing before you start writing again.

Thank you. Thank you. Lovely chat with you, as always, Angelica. Thanks for having me.

My pleasure!

Changelog

Our transcripts are open source on GitHub. Improvements are welcome. 💚

Player art
  0:00 / 0:00