🍯🍎 It's Rosh Hashana! (Replay) John Arundel's advice for those who aren't enjoying Go so much - podcast episode cover

🍯🍎 It's Rosh Hashana! (Replay) John Arundel's advice for those who aren't enjoying Go so much

Sep 30, 202433 minEp. 82
--:--
--:--
Listen in podcast apps:
Metacast
Spotify
Youtube
RSS

Episode description

No episode this week, as Shay's celebrating Rosh Hashana and John's moving countries. So enjoy this replay of our interview with John Arundel from episode 21 of the show!

★ Support this podcast on Patreon ★

Transcript

Shay NehmadShay Nehmad

Good morning, everyone. This is Shay with a quick, midweek update. So don't worry, nothing critical happened in the Go world, but this week it's Rosh Hashanah. Happy New Year everybody, and we'll probably take this week's episode off. So to not leave you hanging, here's a re release of, an old interview we already did. Hope you enjoy it.

Jonathan HallJonathan Hall

Hey, Shay. I'm trying to write the the show notes for this episode, but I can't find the password. Do you have the password for the website?

Shay NehmadShay Nehmad

Try a.

Jonathan HallJonathan Hall

Okay.

Shay NehmadShay Nehmad

Try No.

Jonathan HallJonathan Hall

That didn't work. B. B. No. I don't think it's long enough.

Shay NehmadShay Nehmad

Try c.

Jonathan HallJonathan Hall

C. No.

Shay NehmadShay Nehmad

If only someone here on the call was an expert in fuzzing. Oh, hi, John.

John Arundel

Hello. I I'm not an expert in fuzzing, but maybe I can help you find one.

Jonathan HallJonathan Hall

I think you're more of an expert than shy, so that's probably all we need to be.

John Arundel

And then I've written a fuzz test. So Oh. Yeah. So I

Jonathan HallJonathan Hall

make the

John Arundel

best decision.

Jonathan HallJonathan Hall

That's 100% more than I've written. An infinite percent more than I've written. So, John, tell us who you are and a little bit about what you do.

John Arundel

I'm John Arendel. I'm a a writer of books, including Go books. And I also teach Go. I also write Go programs. But I don't get paid for that.

Shay NehmadShay Nehmad

Oh. If you remember, a few shows ago, you mentioned and recommended John's articles about fast testing, which you're writing right now. Right? You have, like, 2 out of, 4, if I remember correctly.

John Arundel

Yeah. You were more than kind about the articles, which was really just,

Shay NehmadShay Nehmad

you know,

John Arundel

one of these things where you think this is a super neat feature of Go that not many people seem to know about. I must tell the world. Mhmm.

Shay NehmadShay Nehmad

And we're already at 3 out of 4, and I'm really, really excited about number 4. The first one was random testing, and then fuzz test, and then writing a Go fast target, and finally, it's about finding bugs.

John Arundel

Well, don't build it up too much. It's not that exciting. It is it's slightly exciting.

Shay NehmadShay Nehmad

It's worth reading. It's worth reading. I don't wanna outlive it too much. So if you're a long time listener, you maybe remember we mentioned, these articles, and here we have the writer. So welcome, John.

John Arundel

Thank you. That's so kind. And I don't want to, you know, make too much of it. I didn't invent fuzzing or implement it in Go or anything like that. But I found out about it and I feel I have a mission to tell the world about neat stuff.

Jonathan HallJonathan Hall

That's cool. I'm curious. You said that you teach Go. Do you do that online or in person or self paced courses? How do you teach Go?

John Arundel

Yeah. Private lessons online, and I also have a course.

Jonathan HallJonathan Hall

Okay.

Shay NehmadShay Nehmad

Do you work with companies? Let's say I wanna take my r and d group and, you know, let's say move them from Python to Go.

John Arundel

Yeah. Absolutely. I'd be all over that.

Shay NehmadShay Nehmad

Nice. I wanted to ask you about the name of your site. So, obviously, if you wanna read, John's articles or check out his books or any of these kind of things, reach out to him. I think your main site is bitfieldconsulting.com. Right?

John Arundel

That's the one.

Shay NehmadShay Nehmad

That's a really good name. Like, it sticks in my head, but what's the story behind it? Bitfield Consulting. So the consulting part is easy.

John Arundel

Yeah. I I used to be a consultant for a while, and I I wanted a name that was something consulting, you know, to get that across. And I could have used my name, but that's kind of boring. So thought it'd be nice if it was a computery word, but also kinda sounds like a name. Right? It could be mister Bitfield.

Jonathan HallJonathan Hall

Oh, man.

John Arundel

You never know. I mean, that would be a neat name if you're a IT consultant.

Shay NehmadShay Nehmad

Mister it sounds sort of like a James Bond, mister Bitfield.

John Arundel

Yeah. Tragically, I found out somebody else had the same idea before me and they got the bitfield.com domain. So shame about that. But I'm sure their services are equally good.

Shay NehmadShay Nehmad

One thing I wanted to ask before we dive deep into, you know, how you teach Go and what experiences you've had there is one more thing about the site. You have a ton of really, really, cool icons. Who's doing the the art?

John Arundel

Oh, it's, there's a really nice repo of Go for Clip art by an article, Marie Lettr, I think is the name. You you'll find that if you Google for Go for clip art or something like that. It's really, really high res PNG images and SVGs. So I see a few people using those in the community, but I'm really keen on them, and they make me look great. You know, I I had no input whatsoever into the design of those images, but they're beautiful.

Jonathan HallJonathan Hall

Oh, there's even a Star Trek one. That fits the theme of my, my clip art.

John Arundel

I like that. Yeah. And it does sorry. It it does sort of fit, you know, the idea that I'd like to put across that sort of, you know, some of this material that I'm writing about is a little bit dry maybe, but we can try and make it fun. I mean, I think that's that's the best way to learn, isn't it? We learn the easiest when stuff is interesting and fun.

Shay NehmadShay Nehmad

I wanna, you know, start leading you down a a track of questions about what's it like teaching Go. But let's start really at the top. Let's say I wanna learn, Go. Most people come to you, I assume, are not complete juniors. Right? Most people you work with already have experience in software development. Right?

John Arundel

Oh, I think it's a mix. I mean, some people have lots of experience in other languages maybe, but just not in Go. Some people have lots of experience in Go, but they still feel like there's more to learn. Sure we all feel like that. And other people just have no experience of any kind of programming at all, but think it's fun and want to try it. So that's great. I like those people the best.

Shay NehmadShay Nehmad

We've talked a lot about whether Go should be the first language someone learns or always the second language. And we've had various opinions on it. We've had, Matt from, boot. Dev, who's also teaching Go, but doing it really in an online course with like game y sort of thing, hold the opinion that Go shouldn't be the first language, I think. And we've had some people on our Slack, I think it's one of the first conversations we had, who were like, Go is such a good language.

It's very simple. It's very easy to read. It should be people's first language so they don't learn bad habits that they need to unlearn when they go into Go. And I'm really curious about your opinion on this, sort of idea.

John Arundel

That's such a great question. I think I like the implied idea in the question that whether or not it's the first language you learn, Go should not be the last language. There is a lot of value in knowing more than one language. Right? I mean, that's valuable in itself no matter what that set of languages is.

Shay NehmadShay Nehmad

Mhmm.

John Arundel

Although, you know, I think I've given this advice sometimes to people who say, you know, what are the 10 languages that I should learn? They say, well, it's it's nice to have some experience, some exposure to lots of different popular languages. But it's also worth diving deep, I think, into 1 really deeply, isn't it? Or or 2 if you can, but most of us are busy people, so it's hard enough just to do a deep dive into 1. Mhmm.

But it's it's only when you get to know some language really well you sort of break through into being able to do good stuff with it. I think so anyway.

Shay NehmadShay Nehmad

It's also very circumferential. Right? Like, if you have a friend that's your gateway into programming and that friend knows, I don't know, Python really well or PHP really well. It doesn't matter what language you wanna learn. You should probably learn this language because, you know, the friend, I don't know, your roommate or whatever, they can help you.

John Arundel

Yeah. Exactly. And I think it's also about what kind of mind you have, isn't it? You know, some languages are better suited to certain minds than others. I know people who are highly intelligent, but just for whatever reason, Go doesn't seem to suit them, doesn't think the way they do, you know. Mhmm. So they're not productive with it. So that's fine. They they should use the language that they like.

Shay NehmadShay Nehmad

Yeah. Go definitely has, needs to click before you start, really working with it.

John Arundel

Yeah. I think that's right. And you can correct me on this, but I sort of get the impression from people I talk to and certainly from myself that most people's first glimpse of Go, their opinion is probably not that favorite, especially if they're used to other languages. Like, when I when I first saw it, it looked always wanna look at some code, don't you, rather than read the publicity stuff. And I looked at the code, and I thought, oh, that's ugly.

Don't like that. Yeah. Which is weird because I like c, an old school c programmer from the old days, and it it really does look a lot like c. And I think that was my problem with it. In the in the meantime, you know, it had affairs with Ruby and Python and other beautiful languages. Something absolutely gorgeous about Ruby, perhaps you'll agree if you've used it in that. You can sort of shape it to be whatever language you want.

Jonathan HallJonathan Hall

I haven't used Ruby extensively, so no, I don't know that.

John Arundel

Well, whatever way of writing programs appeals to you, you know, object oriented, imperative, modular, whatever, you can do that in Ruby, you know. It's so protein, you can kinda do anything with it. Go is definitely not like that, right? We can all agree.

Jonathan HallJonathan Hall

It's very opinionated. That's right.

John Arundel

Yeah. That's but the thing is it has all the right opinions.

Shay NehmadShay Nehmad

I think that when you first look at Go, it really depends what's your entry point. If you're looking at Go from a curious perspective, you just wanna learn something cool, I think it's not as attractive as other options today. Like when you start learning Go, a lot of Go people are about fundamentals. You don't have to import a ton of libraries. The all the standard tutorials are not about frameworks and libraries, and, you know, getting huge projects off the ground with tons of, files and decisions already made for you.

It's all about the language is very lean. It's very simple. If, you know, if you want to sort or you get the maximum or minimum of a slice, write it yourself. Here's the for keyword, right? And only now we're adding the sort into the standard library.

By comparison, if you're starting to learn, I know, Astro or React or like any of these, super heavy Next, like, or Nuxt or any of these super heavy JavaScript frameworks right now and the CSS you do with Bootstrap or Tailwind or any of these frameworks, etcetera, etcetera, it feels like you're getting a lot done and you're learning a lot really fast. But I think that, I don't know, 2 months in, it reverses. So if you're entering to Go is your company's writing Go or you're doing a Go course, I think these people tend to stick and like Go a lot more. Whereas people who start with React and Nux and all these frameworks end up stuck with them or even not liking them very much but still having to do them and them remaining popular. It's one of the reasons they'll continue doing it.

John Arundel

Very true. Very true. And I've actually had this experience, you know, training a group of corporate developers. You know, the message from the boss is, company switching to Go. Can you please help train our devs? Certainly. No problem. So I was sort of introducing myself to the group. I would go around and ask people who they are. I say, you know, why are you interested in learning Go?

And the answer was, I'm not. It turned out none of them wanted to learn Go at all. They all thought it was awful and Mhmm. Didn't enjoy the prospect at all. But it it was like, I'll be fired. So I suppose, you know.

Shay NehmadShay Nehmad

Why do you wanna learn Go? I like eating.

John Arundel

Yeah. I was kind of thinking to myself, boy, tough room. Yeah. But there it is. But whether it should be the first language that you learn, to get back to your question, I I'm not sure.

I mean, Jonathan can maybe weigh in on this as well because he produced some fantastic content introducing Go to beginners. And it's a tough language to teach. Right? I mean, there's there's some really brain bustingly puzzling things about it. I mean, sometimes I ask new students, what are the things that you feel least confident about in Go? And you know exactly what they're gonna say. Right? Sort of

Jonathan HallJonathan Hall

I can imagine. Yeah.

John Arundel

Pointers is gonna come up.

Jonathan HallJonathan Hall

Mhmm.

John Arundel

Certainly concurrency. And even things like structs and methods and so forth can, like these are fundamental, but if they're not present in the language that you come from, if you're if you're not used to programming, it's it's really hard. Right? It's tough to put yourself in the mindset of someone who doesn't know that stuff, But that's exactly what teaching is, I suppose. Mhmm.

Jonathan HallJonathan Hall

I'm curious, John. How did you get introduced into Go, and how long ago was that? What was that story like?

John Arundel

Oh, that's a good one. I think, you know, I've been programming basically forever, but a lot longer than many of your listeners have been alive, I'm sure. And

Shay NehmadShay Nehmad

And some of the interviewers as well. Yeah.

John Arundel

When Go was announced, I looked at it, thought that looks ugly, and it's from Google, so no thanks. Yeah. And, you know, that's that's my usual hot take on most new languages. It's probably equally bad, you know, clearly that was a wrong take. And I'm sure I'm wrong about lots of other things, but it it hasn't come back to bite me, so but I was working as a consultant with a company who switched to Go, a few years ago.

And they were and I was thinking to myself, you know, with one eye on the business, sort of thinking, well, if they're all doing go and I don't know anything about go, I'm not gonna be relevant. So they might think, why are we still paying this guy? You know, what's he for? So I thought I better learn something, you know, get get myself a book and read over the weekend. And consultants are always good at mugging stuff up quickly so they can sound authoritative about it.

Jonathan HallJonathan Hall

Right. Right.

John Arundel

And, I never stop. Okay.

Shay NehmadShay Nehmad

So that

John Arundel

you know, and I had a really tough time. I don't know whether you did when you first tried to write co programs, but I think most people find it.

Jonathan HallJonathan Hall

I certainly had a hard time with certain aspects of it for sure. Yeah. I mean, I came from Pearl primarily. And so, you know, the idea of I was using the empty interface everywhere because I didn't know how to think in the right terms, you know, in Go Go Away. Because in Perl, everything's a manageable type. It's just a thing.

John Arundel

I want dynamic typing. Yeah. Let's just make everything empty interface. That'll make my programs much clearer.

Jonathan HallJonathan Hall

Yeah. I'm glad I don't do that anymore, but that was one of the first mistakes. And then trying to to wrap my head around the idea of, composition instead of inheritance took a while. And and I see that all the time. Anybody who's learned classical object oriented programming, regardless of the language, they have that problem with Go all the time.

John Arundel

Yeah. For sure.

Shay NehmadShay Nehmad

I came in from the other side. I started working with Go as a team leader. And in the army, you know, you're talking about consultants needing to sound authoritative. Imagine getting a a team of 10 developers that you you're commanding. You haven't used Go before. You haven't written a web server before and now you're commanding the team.

John Arundel

Right.

Shay NehmadShay Nehmad

That was rough. I was, like, trying to understand, what I was reading and making decisions. Luckily, the team itself, they were super gracious about it and they taught me everything I needed to know really fast. So my experience with Go was of an initial embarrassment. I came from a, like, CC plus plus background.

So Struct, I I read that Struct, I was, oh, okay, I'm home. But then I'm like, where's the implements and where's the templating and where are all my features? I need my language to be smarter than me. Why is the language so simple? What are we wasting our time on if we're not trying to figure out the preprocessing macros and templating?

John Arundel

Yeah.

Shay NehmadShay Nehmad

And I figured that it's just like writing code, like business logic and then making value and stuff like that.

John Arundel

Exactly. I mean, I think maybe it's a big advantage in some sense if you're not sort of a computer science professor and you know all about the theory of programming language design and so forth. Because if you did, you'd you'd be upset with Go thinking, where is everything? Right? That's all the good stuff we've been writing papers about for the last 30 years. They seem to have left it out. Maybe they just didn't read the literature. Yeah.

Shay NehmadShay Nehmad

I highly doubt they didn't. They did read it

John Arundel

and they didn't like it. So they said, we're not having that.

Jonathan HallJonathan Hall

So you you said that you used to be a consultant. I guess that's in the past now. Is teaching and writing about Go your full time job at this point? Yeah.

John Arundel

Well, I think I found that the most the part of the consulting that I always enjoyed most I mean, I'm the kind of guy who likes to fix problems. I'm sure. We all are. That's how we got into this. And I found the most enjoyable part of the consulting was sort of teaching people how to fix stuff themselves.

I mean, I can parachute in and fix your survey, you know, but the more interesting thing for me is how do I make it so they don't need to call me back the next time it crashes. Maybe not a great maybe explains why I wasn't a huge success as a consultant because I never got any repeat business. I taught everybody how to fix their own problems and build a self healing system, and they never needed me. But that's fine. And I found, yeah, the fun bit for me is teaching people about neat stuff and seeing them get it, and the light bulb go on, and they get excited.

And they're like, wow, I can do a load of cool stuff. I love that. So I decided I'm just gonna do that. Cool.

Jonathan HallJonathan Hall

And I guess it's working well for you. So that nice to have a success story.

John Arundel

Yeah. I still really enjoy it. It's so much fun. You know? I I realized after a while, there's only so much you know, there's only one of me. I can't sort of can't teach everybody. So if I want to reach more people, I'd better write a book. So that's why I did that.

Jonathan HallJonathan Hall

And now you have many of them.

Shay NehmadShay Nehmad

Yeah. You did that 7 times. Yeah.

John Arundel

But this it it actually works really well because as you know when you've tried to teach go to people or help them solve problems, you sort of need to find the right way of phrasing something, don't you? Like, with each individual person, there's some kind of idea or form of words that just helps them get it. You probably won't find that straight away. You might need to try a few different ways. I mean, I've tried a zillion ways of explaining pointers, and I still think I can explain it very well.

But I'm getting I'm still, you know, working with students helps me refine that stuff. And I I see what works and what doesn't work and figure out the right order to introduce these concepts, like, you know, what do you need to understand before you go into the next thing and so on. On. And then Yep. You know, that that can go in the books.

So in the books, it just looks as though I got it right first time and, like, here's the logical way to understand Go. But and also the process of doing that, you know how it is if you ever write and publish something. You don't wanna look like an idiot. So you do your research. You read up on this stuff.

You check out the facts. And I learn a ton of stuff Of course. Doing that. Back when I was a consultant, I wanted to learn about puppets, you know. So the way to do this is I'll write a book on puppets, and then I'll have to learn something, won't I? And it worked with Go as well.

Jonathan HallJonathan Hall

That's one of the reasons we started this podcast is to help each of us individually keep up to date with what's happening at Go. So forces us to learn about the Go news so that we can tell the audience what the Go news is. Yeah.

Shay NehmadShay Nehmad

And we've had, another author on the show, Adelina Simeon. She she wrote the TDD book.

John Arundel

Yeah. That was wonderful.

Shay NehmadShay Nehmad

And and she said exactly the same. She like, she was like, I started, writing it. I learned so much about testing, so much more than I thought, I I was able to share. So it's definitely the best way to learn is to teach. That's really cool.

I think you you really highlight that, that programming is fun. That was exactly my next thing. I I wanted to ask you, you mentioned in a few places, prominent places, that you think programming is fun and people should have fun. Well, I I totally agree with you. Many times, especially, you know, working corporate or or big organizations or stuff like that, that's not the focus point.

Like if you would ask 50 vprnds right now especially, you know, not when the interest is 0%, but, when the economy look what it looks like, what do they care about in their, employees right now, I think they would say velocity, quality, and I think they would get to, you know, them showering before them having fun.

John Arundel

Yeah. That's a good point. Yeah. It's a I'm

Shay NehmadShay Nehmad

wondering why it's so highlighted for you.

John Arundel

Well, I know it sounds like one of these motherhood and apple pie things. Like, who doesn't think programming is fun? But as you say, VPs don't. And and, unfortunately, a lot of working programmers that

Jonathan HallJonathan Hall

I meet

John Arundel

don't feel it's fun. That's partly because perhaps when I was a little kid, you know, I would play with computers and write programs in basic and things like that and just never stopped doing that, really. So it started as fun for me and, thankfully, has never stopped me. But there's a lot of people, I think they just see it as, you know, it's a it's a decent career, well paid, right sort of set of skills to learn, isn't it? And they they go into it, but perhaps to be careful what I say, perhaps they spend their whole life sort of programming TypeScript frameworks and things.

And there's there's not a whole lot of fun for them, so they just think, ah, this profession kind of sucks. You know? I think that's such a shame. And, also, I've noticed the students I have who make the quickest progress and become the best software developers are the ones who are having fun. The more fun they're having, the better programs they're writing, and the more programs they write, so the better they get at it. I mean, if something's not fun, you're not gonna do it.

Jonathan HallJonathan Hall

Fair point.

John Arundel

So that's why I Totally. That's why I sort of play that up in a sort of, hey, you want to remind people, hey, you know, yeah, we it's nice to get a check, but, you know, we're basically doing this because it's enjoyable. If we didn't enjoy it, that would be a real shame because you're gonna spend your life doing this stuff. So if it's not fun, I'd like and the the other the other reason to say it is, you know, perhaps some people are thinking, John must be dumb because, you know, it's not always fun programming. What if you've got some really awful bug or have some horrendous code base with no tests and you have to fix something?

What about that, John? How are you gonna make that fun? You know, let's see what you got. My answer to that is sort of, well, you make a good point, imaginary interlocutor. But but my question would be, how do we get into that situation in the 1st place?

Right? Like, why why are we in this very no fun situation? Is it because we don't have tests or whatever? That's quite common, isn't it? And often the reason we don't have tests is we don't really have a very clear idea of what this program is supposed to do. Mhmm. That's more common than people might think, isn't it?

Shay NehmadShay Nehmad

Or that the original, developers didn't have fun when they started. I think a a big part of having fun when programming is is enjoying your profession. Like feeling smart, solving problems, being proud of what you build. And it's something that gets lost when you use frameworks and work in a super large company and have deadlines and you develop software that's shipped immediately and not in a box with your name on it. But if you mess up, you just ship another thing tomorrow in a SaaS model and, you know, everybody's used to getting bugs all the time.

John Arundel

Yeah. That's so true. I mean, we're all all working with constraints, aren't we? But the the thing is so so the thing, if if you come in with the attitude, like, this is I'm doing a fun creative thing, this is enjoyable, and I'm good at it, you can have fun within those constraints.

Jonathan HallJonathan Hall

You know, you

John Arundel

can still do a good job even if you feel you're being rushed or pressured or stressed or whatever. You can just say, well, let's push back on that for a moment and just say, given the time, scope, etcetera that I have, what's the best job I can do?

Jonathan HallJonathan Hall

So, John, we've talked about beginning with Go. We talked about making Go fun, programming fun in general. What advice would you have to somebody who's maybe thinking about going this route? I mean, our listeners probably are trying Go, but some of them might not be enjoying it or they're struggling with it. What advice would you have for these people? How can they maybe get over that hump?

John Arundel

Oh, nice question. I think I'll tell them the same thing that I suggest to my students, which is the way best way to learn is by writing some programs. The best way to do that is have some program that you want or are interested in. Maybe it's some subject area that you think is cool, like cryptography or networking or databases or whatever, but you you can think of something that you could write in that space. Just try to do it.

But, ideally, if it's some real program that you actually need in your daily life, maybe your personal life, work life, or whatever, this is the joy of computing, isn't it? That you can build programs to do things instead of you doing them. So if you can find something like that, that really helps because then it's not an exercise. You know, it's like if you're a musician, you know, it's like it's not not like practicing scales all day long. So you also need to play music.

In fact, that's the best way.

Jonathan HallJonathan Hall

Nice. Good advice.

Shay NehmadShay Nehmad

Yeah. There are many interesting side projects that, people can take. I know that Jonathan and I often recommend, doing things that all 3 of us are doing on this, call, which is content creation, writing a blog. We really, really, really encourage you. If you if you listen to the other John's advice right now and you're wondering, what should I do?

I don't have any project immediately in mind. Grab a notebook. Think about it for a second. And if you can't come up with anything, just start writing blog posts about the libraries you've learned, follow-up on some links, talk to some people, and share the content with us.

John Arundel

Yeah. That's such great advice. And also, you know, please don't wait until you feel like you're an expert in the subject before you're allowed to blog about it. I certainly have not. And if I Yeah. If I ever become an expert, I'll let you know. But please please learn in public because that is actually the most valuable kind of content for people who are learning. Just see what puzzles other people and how they solved it. Right?

Shay NehmadShay Nehmad

Yeah. I think our listeners don't know, but probably Filippo knows. Filippo, our editor, knows it very well where we we'll have, like, a new library coming out or a new version of Go. And we manage these news in, like, we have a Trello board where we manage all the things and we assign that this one's, this news item Jonathan is doing, this news item I am doing. And usually it's the other way around.

Like if Jonathan brought something to the table that he knows about, then I'll have to present it because we the whole point of the show is us learning. Right? And sharing our learning with the community. And, you know, everything that Filippo has to edit out that's not like something is happening or we're, we're sneezing or something. It's like, okay, so this new version of the library came out and, oh, wait, I have no idea what it is. Give me a second.

Jonathan HallJonathan Hall

It's a lot

John Arundel

of effort. Yep.

Shay NehmadShay Nehmad

Yeah. So we added these parts out.

John Arundel

It's reassuring, and I've also found when pairing with my students that usually they drive, you know, and I'll sort of keep it from the sidelines. But it's it's nice for me to drive sometimes because they see me making a ton of mistakes, You know, I I forget things in the standard library or or get compile errors or make typos and things. And I think they see that and feel a bit more relaxed because they're like, hey, that guy knows what he's doing and he's making mistakes. I'm operating at the same level as he is. That's terrific.

Jonathan HallJonathan Hall

Yeah. Exactly. Yeah.

Shay NehmadShay Nehmad

We all have only 24 hours and, you know, 10 10, fingers to click on the keyboard. All programmers. We we have the same constraints. Great. So coming to a close here, we usually have 2 questions that we ask every interviewee and we would love to pick your brains about it as well. Let's say gun to your head, you have to remove a feature from Go. What would it be?

John Arundel

Yeah. This is a nice one. I I carefully listened to all your previous episodes, so I wouldn't say anything that somebody else said. But Nice. I actually think I could probably dispense with quite a few things in Go. You you've probably seen it. Matt Ryan did a great talk on I think it was things I never use in Go. On YouTube. You can find it. And among those were at least 4 of the keywords and a few other things.

And the thing is, Jonathan, when you're writing your excellent roundup of Go books, you talked about my friend John Bodner's excellent book, Learning Go. That is really terrific. In fact, I'm furious about it because it's the book I really wanted to write and he did it. So, but nonetheless and you said one thing he does is he covers everything. You know, it is comprehensive.

If it's in Go, it's in that. And I I haven't done that with my books, and that's on purpose. Because I found if you try to teach people everything, they just don't take it in. Right? It's too much. So I politely don't mention things which, in fact, they won't really need to know about. Complex number types built into Go. You know, did you ever use these? I didn't. I mean, if you're a physicist, you probably do.

Shay NehmadShay Nehmad

Yep. Yep. Never.

John Arundel

But, I mean, need needless to say, I don't use Go to. There's not

Jonathan HallJonathan Hall

Mhmm.

John Arundel

Not much call for that. There are 1 or 2, times if you read the standard library code and the Go runtime code and the compiler, which I definitely recommend. I mean, this this is a fun recreation, as long as no one's gonna quiz you on it, you know. You just read it for enjoyment. You sometimes see Go to use, and then also the stuff and figure out, like, obviously, they know what they're doing.

So is there a good reason for this? Oh, I guess there is, you know, because it's all good to break out of this loop, 3 nested loops or something like this. But, you know, we we probably shouldn't have Go to just in case someone uses it. Yeah. And I think something that causes no end of pain and confusion, at least for my students, is, the colon equals short declaration form.

Right? You know, this even the Go designers themselves, I think, have said that was probably a mistake, but it just seemed like a good idea at the time. Because, you know, it can introduce shadowing and you can get this weird effect if you're assigning 2 variables like something and error. Maybe one of those is already defined but the other one isn't.

Shay NehmadShay Nehmad

Yeah. I always thought about the the Walrus operator as more of a branding move than a computer science move. It's like the first thing you need to do usually in programming, you know, tutorials, it's hello world. Right? And then you put the hello in a in a variable and you print that, and then you're like, oh, Go has the waters operators. Okay. That's how this language is different.

John Arundel

Yeah. I mean, I absolutely love it because I would be super annoyed to have to write fast and such equals every time. You know? That's no fun.

Shay NehmadShay Nehmad

Mhmm.

John Arundel

But at the same time, it it just this happens a lot, doesn't it? That something that seems like a really nice free extra bonus feature just introduces confusion because now there's 2 ways to do it. People say, well, should I use colon equals, or should I use var or whatever? And now you have to know about that. And the other thing is anytime you get some really weird, really horrible bug in your Go program, it's probably either due to a channel, right, or a or a deadlock or it's some something to do with the Walrus operator having shadowed some other variable inside the loop or something.

Shay NehmadShay Nehmad

Yep. When you defer a thing and you up you declared it in one way. We we covered something recently. I think it was time since. You shouldn't defer the time since things.

John Arundel

Right.

Shay NehmadShay Nehmad

It's, I think that the fact that, you get these bugs in Go is maybe more of a achievement of the language than a Yeah. I mean a drop because you wouldn't even get to these bugs so fast in, in, languages in in other languages, at least in my experience.

John Arundel

Oh, definitely. I mean, you can make too much of this, can't you? You can say, oh, there's a there's a construct in Go that allows you to write bad programs. Shock horror. You know, thank goodness no other languages have those.

Shay NehmadShay Nehmad

Yeah. So you pretty much, covered the entire field for the rest of our interviews because you said everything in every single book, should stay. And other than these, tons of features, so all our next interviews, all they have to do is either agree or disagree

John Arundel

with you.

Shay NehmadShay Nehmad

But here's a more open ended one. If you could, copy feature from a different language, and put it into Go, what would the feature library, I don't know, community thing, whatever, what would that be?

John Arundel

Yeah. That's a great question. You know, I I definitely think there's scope for multiple languages as we started out by saying, isn't there? Because some languages, the philosophy is let's put everything in and then people can just use the bits they like, c plus plus, other languages, or a small group of languages, but Go is one of them, isn't it? The designers evidently felt, let's take away everything we can until there's just enough left to be able to write useful programs.

And if you need other constructs, you can build them in the language. So Lisp is the ultimate version of that, isn't it? It's basically nothing except brackets and, eval and apply. But Go is clearly, like, you know, they explicitly said they started with c and took out the bad bits, didn't they? I think that's that's great, and I love that philosophy.

And I actually think it carries over into our programs as well. It's that Go, the language, is sort of sitting there looking at you saying, I'm really minimalist. Shouldn't your programs be the same? You know, stop building so much and over abstracting and all of this kind of thing. So I I love the fact that Go hasn't felt the need to include, you know, every neat idea from every other language.

They stole a load of excellent ideas from other great languages, but they stole just the right ones with very good taste. All you can ask for. So I genuinely don't think there's anything that I would want to add to Go. I think I'm in the minority here. In fact, I'm sure I am.

But every time the survey comes around and they said, what bugs are you the most that it's missing from Go? And I'm just like, I can't think of anything. You know, it's I I seem to be able to get by with Go as it is just fine and even generics. You know, it's kinda like, oh, sounds neat, but never felt the lack of it. But now they're here. Hey, let's use them to build neat stuff.

Jonathan HallJonathan Hall

Yeah. Good answer. Nothing. Nice answer. Cool. Well, John, it has been a pleasure having you on. I read your book, several months ago. It's nice to finally meet you. So thanks for coming on. Thanks for sharing your wisdom with our listeners. How can people, just one last time, how can people reach out to you if they're interested in, in getting in contact?

John Arundel

Just go to bitfield.bitfieldconsulting.com, and you'll find me.

Jonathan HallJonathan Hall

Perfect.

John Arundel

Thank you so much for having me.

Jonathan HallJonathan Hall

Thank you.

John Arundel

Thanks a lot. See you

Jonathan HallJonathan Hall

all next time. A big thanks to John for coming on the show.

Shay NehmadShay Nehmad

Thanks, John.

Jonathan HallJonathan Hall

I first became aware of John when I was reviewing books for GoBeginners. I had scoured Amazon, and his books weren't there. And the reason is because they're self published. So one of my readers or or watchers, I published on YouTube and, on my blog pointed me to his book. So I checked out his books and they were great. And and especially if you're beginner to programming in general, his book for Love

John Arundel

A Go is a is

Jonathan HallJonathan Hall

a great book, and he's a fun guy to talk to, very knowledgeable, and has some some great insights to share with us. So thanks, John, for coming on, and thanks for everything you're doing for the Go community in general, and just the programming community even in a larger sense. So really appreciate that. Thanks for taking the time to talk to us today.

Shay NehmadShay Nehmad

Yeah. We need more friendly people like John in the in the industry. I really recommend checking out

Jonathan HallJonathan Hall

his,

Shay NehmadShay Nehmad

Twitter, his LinkedIn and whatever and specifically, you know, drop into bitfieldconsulting.com, grab an article and read it, they're all good. And I'm sitting on the edge of my seat here. Well, actually that's a lie. Jonathan knows that I have a standing desk so I'm standing. But but I'm standing on the on the tip of some of my toes here, waiting for his final, fuzzing vlog.

3 are already out, so if you haven't got on the high train yet, go read them. And if you, like Jonathan, haven't written a fuzz test yet, go or go write one, and then, you can join us for the final article which is coming soon.

Jonathan HallJonathan Hall

Very good.

Shay NehmadShay Nehmad

Thanks a lot, John.

Jonathan HallJonathan Hall

Talk to you all next week. Have a great week.

Shay NehmadShay Nehmad

Bye.

Transcript source: Provided by creator in RSS feed: download file
For the best experience, listen in Metacast app for iOS or Android
Open in Metacast