
Hey, everyone. If you're coming from Dreams of Code to hear our interview, 1, there's a video version up on YouTube. Well, there will be soon once I finish editing. And 2, welcome. This is a show about Go news.
We usually have 2 parts. The first part is news, which is what we're coming up to right now, and the second part is an interview where we're gonna talk to this week specifically Elliott about just Go and what he does and just talking. Thanks for listening and we're welcoming you and we hope you enjoy the show. This show is supported by you. Wait around till the ad break to hear more.

This is Cup of Go for Friday, September 6, 2024. Keep up to date with the important happenings in the Go community in about 15 minutes per week. I'm Jonathan Hall.

And I'm Shayne Ahmad. We're back, baby.

Long time no see.

We're here. How was your, week off?

Busy as ever. How was yours?

I know you were super busy. How did you listen to the show? To your show? To the episode with, Jamie and myself.

Can I be honest? I haven't done it yet.

Well, you should. It's a good episode.

So I have an excuse. I I recently lost the charger for my earphones, my my Bluetooth earbuds, and I bought a replacement, but it doesn't work. It's an off brand piece of crap. So I don't have any way to listen right now, on the go. So I've been, thinking to myself as I as I walk places these days.

That's a dangerous, that's a dangerous idea. You wanna keep the content flowing. I listened to, Mariah and yours episode. I kept delaying it through the week. I ended up doing it on a on a Thursday, while riding my bike, and it was it was pretty good.
But then it auto played I don't know what Spotify thinks about our podcast. Maybe something is wrong with our tags, but it auto moved from our from your, like, fun 30 ish minute episode about or I don't know. Maybe it was an hour about Go and software development, like lighthearted conversation into a 4 and a half hour hardcore history with, Dan Carlin, whatever his name is, episode about the history of, Alexander the Great. Wow. I know. Maybe your episode is historic in a way.

Maybe. Maybe. It's good

to have you back, and it's good to be back. Thanks, you too. Let's do some news like, like, old times. Let's do it. If you are a Patreon member, we love you, and thanks a lot.
If you did it through iOS, Patreon introduced a new thing where Apple takes a 30% cut. So, that's going to be rolled over to you, like the Patreon subscriber. We think that sucks, And if you have subscribed through the Patreon app on iOS, then just unsubscribe and move to like, join as a member via just your web browser or some way where Apple doesn't take that 30% cut. We get exactly the same value. You get exactly the same value, and we just cut out

a middleman. Just Tim Cook gets fewer yachts.

Yeah. Exactly. We I just don't have places in my, in my dock anymore for all the yachts. Right?

Mhmm. Exactly.

So so, Tim Cook wanted to take some. Anyways, if you have subscribed to iOS, they're gonna increase the prices. We don't want you to suffer that, so take it, from your web browser. And if you have subscribed in general, we really appreciate it. It helps keep the show afloat just like all the Yaks we're

buying. Let's do some Go news. What is new in the Go world?

1231 has been released. I'm gonna now that 123 is not new anymore, it just a run of the mill version that gets run of the mill security fixes. This one is is kind of interesting. There are 3 security fixes which are same variant of vulnerability. Stack exhaustion, if you pass in really deeply nested structs, you can cause, denial of service.
2 places are not that interesting because it's source code. Like if you pass go build flags which are really big or structs which are really nested, then it's gonna crash with for like, for me, it makes sense. I'm wondering who wrote the code that actually discovered that, like, how how, bad your build, directives need to be. The the place where, we figure it does have more, like, the CVE score should be a bit higher is GOB as well, which I wasn't aware of. What is the Gob encoding slash Gob?
What is this format?

Yeah. It's a basically a Go custom binary encoding format. So if you're talking to another Go program or maybe you're storing your data on disk to be read back by the same program, you can use encoding gob instead of, say, JSON or YAML or whatever other, more interoperable format. So I don't think a lot of people use it, but some people certainly would, and I've used it occasionally.

Is it like Pickle? Does it store like the object? Yeah. Yeah. So just like Pickle, you shouldn't use it for external APIs in general.
But in this case, they found that if you pass a deeply nested gob object, then it can cause stack exhaustion as well. Meaning, if you have a server that has an API that gets, a GOB format as an input, you are exposing yourself to stack exhaustion until this version. Now if you update, you're not anymore, but I would still recommend, double taking a double take on that API and asking yourself, do you really want the gob encoding format in that API? It's, artistic and esoteric, at the very least.

Let's talk about proposals. We have how many do we have this week? I just just want to talk about, but, it's a cool one. This one's really cool for two reasons. First, it's the the only change to the encoding JSON package I've seen in a very long time.
They're they're adding a new tag called omit 0. We're all familiar with omit empty, which will skip the encoding of, of something that is empty. Right? Like an empty pointer. Omit 0 goes a step farther and lets you emit 0 values, which is great for certain things where you maybe otherwise wouldn't want to use a pointer, but maybe you were using a pointer to accommodate the old behavior.
So I think this is cool. What might might be even cooler is I think that this is a sign that the new JSON encoder v 2 library is getting closer to acceptance. I mean, it's not it's not an official proposal yet, but I think that d s net has been involved in in this proposal. He's heavily involved, of course, in writing the, the new, encoder. I think that the fact that we're starting to make some changes to the old one is a sign that we know where the new one is coming to fruition, and we're starting to sort of backboard some of those proposals.

It's very cumbersome to use pointers to indicate presence. And another way to, like this is basically saying, like, optional. Right? Like, this doesn't have to be in the output and not forcing you to use pointers just to indicate presence. I think it's a good idea because pointers don't indicate presence.
It's at least for me. They they're just like a thing I need to use sometimes and get in the way and sort of clutter my code. It's very rarely that I care about passing a thing as a point or as a thing. And modifying my struct just to make JSON encoding do a thing, very uncomfortable. This just makes it more comfortable.
I like it. I'm wondering if there are any, like, bugs or edge cases of people adding, like, omit 0 by default and not thinking about how it would break their API responses or things like that. If you have, like, a scheme on open API, now all the open API generators need to worry about omit 0 as well and that's not defined in open API. Like, I don't know.

Yeah. I don't know. Well, you'll you'll still need to care about pointers or something to use pointers if you care about the distinction between an actual zero value and an omitted value. So for example, if you have an integer that could be legitimately set to 0 and you wanted you want to distinguish between a literal 0 and lack of presence, then you still have to fall back to that pointer hack, at least for now. But this is a big step in the right direction, I think.

Like, what you're saying is if I have number of visits and I number of visits can be 0 but also can be not there. Right? Mhmm. Then I still need a pointer because I can't use them at 0 because 0 is a valid value in this case. Right.

It's a really common problem when you're trying to do partial updates. So you wanna send you you wanted to update only the fields that you provide. So let's say you're updating user record, you have name and password and address and phone number, whatever, and you only wanna change the name, so you wanna send just the name and leave the other fields blank, emit 0 won't help solve that problem.

Yeah. I see what you mean. All in all, with all the caveats and all the weirdness, I think it is a good proposal, and I'm happy it got accepted. It's not breaking though. Like, why do I need to wait to v 2? This is just a new tag.

No. I don't I don't think I I sorry if I was if I, made that impression. It's not that you have to wait for v 2. I just think that this is an example of something that v 2 has helped to inform. Oh, I see. And I think that I take that as a sign that v 2 is getting closer to an official proposal.

Very cool. Very cool. So a new proposal, and it's already been accepted. So if you wanna visit the cl and sort of add tests and add your thoughts, to make this a better implementation, now's a good time. Let's talk a little bit about some things that happened in the in the community and the blog posts and the new releases and all that. We just did the one proposal this week.

Troy, what's your favorite scripting language? Oh. Oh. Is it Elvish yet?

It's not Elvish yet. My favorite scripting language, can I be super controversial?

Okay.

Is it Python? When you say favorite, if you mean most immediately productive, it's shell. Right? Because it's all over the place, and I know it by heart already and has a lot of tools, especially if it's on a machine where you have brew and you can, like, install jq, and now you can work with JSON, etcetera, etcetera. The most robust scripting language, is Go.
But my favorite scripting language is Windows PowerShell. What? I just feel so smart, like, writing up some PowerShell scripts. I do some Windows work, when I do reserve duty in the army, and I just feel so clever. There are so many clever little commandants, and so it's so uncomfortable, and it's so hard to test things, and it looks so bad. It just feels more rewarding to be able to write a script in PowerShell.

I think you might be a secret kernel developer.

I don't know. I haven't tried it yet. I'm only 29, so it's before my time. Okay. Well, What's yours?

Well, okay. Cool. PowerShell.

What's yours? What's your name?

I'm not a shell bash, probably. Mhmm. It has a lot of things I hate about it, but it's still the most productive. I still haven't tried Elvish. By the way, for those who don't know what we're talking about, the link in the show notes to a previous episode where we interviewed the creator of Elvish, which is a shell written in Go. So, check that out in the show notes if you're interested. This is Capa Go for March 22nd 2024. So, John, did you check

out my new tattoo?

I love it. Yeah.

Do you know where it's from?

I don't. What does it look like? It kinda looks like something from Lord of the Rings, maybe.

So I wish, there was someone here who spoke Elvis who could help you with it. Oh, hi, Chi.

Hi. The reason I brought it up is there's a new release of a repo called script. Script is a go library for doing the kinds of tasks that shell scripts are good at reading files, executing sub processes, counting lines, etcetera, etcetera. This is, from John Arondell, who we've had on the show before also.

This is Cup of Go for June 23, 2023.

Hey, Sean. 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?

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

Hello. I I'm not an expert in fuzzing, but maybe I can help you find 1. And version 0.23.0 was just released. So this version adds a few new features. It adds with env, it adds encoding and decoding at base 64, and it adds a wait, or or it changes wait to return an error.

So super, like, practical things, I think. Yeah. Definitely. For example, with env, you know, if you wanna do a few gh commands, I've done a lot of work with GitHub, recently at work in scripting. Not to my liking. It's just that, apparently, GitHub is an alpha product, and they just sold it like an enterprise solution you can rely on. But anyways, rant. Insert rant here. I don't wanna whatever. But I had to script a lot with, GitHub recently.
And for testing on different developers' machines, you can take their token, put it with nv, and then you can work, like, from a different user just from their machine, which is very common. Like, you export instead of exporting an environment variable just for that specific bash line, you you set it and then you unset it afterwards. Like, once the command exits it, it unsets. So a super useful thing I would do in, bash all the time, now we can do in Go. Awesome.
Yeah. So if you're if you're writing scripts and you're tired of PowerShell, maybe check out, John's, John Arundel's, script repo. I was really excited to see it. I've never used it before, but but I do tend to write some Go scripts at work. I I I have to give it a shot. I have a

project in mind where I'm it might supply some things. I'm gonna give it a shot too. Cool. This week, there's also a new blog post from the Go team. There's actually 2.
We're only talking about one today. The next one, we'll save for next week. Telemetry and Go 1.23 and beyond. We've talked about this on the show many times, so we're not gonna go into a lot of details. The main thing I wanna call out from this blog post, which, of course, you are going to read, like in the show notes, the main thing I wanna pull out or shout out is a chart they have that shows the number of or the percentage of Versus Code users who are opting in.
They're up to about 1800 weekly participants now. And it's just this cool little chart where it's it's like at 0, and then you could see some people who are, I guess, using pre release versions of the Versus Code plug in or something for a couple weeks. And then it jumps, and then it lags for and then it jumps again when the official release happened, I guess. It's cool chart. Tldr go 123 now lets you opt into telemetry.
You should do that unless you're behind a corporate firewall or something or your policies prevent you from doing that, but it really helps the Go team out to know what features to prioritize.

Definitely turn it on. Right? If you're if you haven't turned on the telemetry thing already. You know, beneath the chart, it says promoting helps reach more users. I'm super happy to use our platform to promote the Go team telemetry.
We've we've gone into so much detail about it, and I've read all the CLs. I'm a 100% comfortable. It's only a net good. Like, it's only a net positive, and I can't wait for them to introduce it to more tools. I've engaged in discussions about, like, in the proposals, like, GitHub thingy, about adding it to Delve as well, which is not a Go tool.
Right? It's not an official Go team tool. Mhmm. And just a very positive project all in all. I think it helps the language become less of a project and more of a a product, if that makes sense.

Like, it will really help

them focus on the right things Yeah. I think. Exactly. So go turn it on if you haven't already. I definitely have. Last thing we wanna mention is, sort of a different thing for us. It's a blog post about Go, but it's in Hebrew. So it's by Ran Barzyk. If you are, Israeli or speak Hebrew, you may have heard or even if not, you may have heard the name. He's been in tech, forever, and he's doing, like, tech journalism, for a few newspapers in Israel.
He has a site called internetisrael.com.com and not dotc0.il. That's interesting. Anyway, interesting, Internet Israel has a blog post in Hebrew about programming, and he has some books about it. This is a preview, to next week's, GopherCon, Israel, GopherCon, which is this Monday, and I have a ticket. Really excited about running Go on Raspberry Pis. Do do you do, like, IoT stuff ever?

I installed Linux on a Raspberry Pi once at work many years ago for a a dashboard, a display, a graphical dashboard. That's the only time I've used a Raspberry Pi.

I I always look at this stuff, and whenever I see a blockbuster, I was like, yes. I'll do it. I I'm pretty sure I'll like, I won't do it now because we're in the middle of a show, but I have on my shelf behind me here. I got a Raspberry Pi 0 at 2017 from Microsoft at, like, a at, like, a conference. And it's been sitting there, like, waiting to be, side projected forever and ever.
But I've I'm I never got to it. I really want to. And now if I want to, Ran here shows how to, like, get it all, working. How to start working with the Raspberry Pi, how to connect with SSH, how to install Go. By the way, his blog post is 1.23.0.
What commands you need to run, and what exports you need to add to your profile, and how do you check it, and how it work, how to do hello world and etcetera etcetera etcetera and how to connect to, and it starts getting, specific to Raspberry Pi when he shows how to connect to GPIO. And it's a really good library, at least looks like it from the blog post. And, you know, it ends up with, you can see the LED blink success, which is pretty cool. If you really want to get started with, Go and IoT, you have a Raspberry Pi, and you're, like, a maker person, and you speak Hebrew, this is literally the most perfect, blog post. Super short, straight to the point, lots of code, and lots of, like, screenshots as well.
This is gonna be a preview for the talk next week as well, so I'm I'm excited. I'm happy I I read it, and I'll let you know next week, once I come back from GopherCon, if the talk was actually good. Awesome. So that's all the news, we have for you this week. Our backlog to the backlog, the lightning round, has a few more items to discuss.
But before we do that, we just wanted to let you know that, once we're done with that, we have a very interesting interview today with Dreams of Code. Elliot from Dreams of Code, the YouTube channel, with all the beautiful cinematic shots and the ergonomic keyboards and all the cool Go code. So definitely definitely stick around for that. We do wanna mention a few small things we didn't have time for, so it's time for the lightning round. Lightning.
Lightning round. First up on lightning round, do you remember river we talked about a few times on the show? If not, it's, reliable background jobs, in Go that sort of relies on Postgres as a back end. So if you just wanna it might be akin to Celery if you're coming from the Python world. You define jobs and works and, you know, you can insert the jobs.
It has a lot of features you need. Cron jobs, periodic jobs, queues, error handling, you can cancel jobs, you can subscribe, you can snooze, blah blah blah. They released a few new things recently, including a web UI which is beautiful, like just straight up looks really good and fully functional driver for, database SQL. So if you wanna combine river with your existing, DB and ORM, for example, you use BUN up trace or GORM, like gorm, you can just do that now because they have a fully functional driver that accepts the standard library database SQL. Another win for things being in the standard library and just following the idiom of using the standard library.
So a cool release if you're a Reaver user, and if you're not, maybe it's enough to push you

over the edge. Speaking of databases, big news on Reddit yesterday. There's a new database written purely on Go called area, SQL. One letter off from Maria, I guess. It looks like it's just a a hobby project right now. I don't know if anybody's using it in production. It's an alpha release right now, but it's getting a lot of attention. It looks pretty cool. Nice complex, system. If you're ever wanting to build your own database in Go, you can look at this for some inspiration.
Area SQL link to Reddit and to the project in the show notes.

A lot of, like, people encouraging it on Reddit, which is maybe even more news than the DV itself. Finally,

Well, there's nice people on Reddit too.

The yeah. More at 11. Finally, open top view. If you remember, HashiCorp had a thing called Terraform and then they closed the license it. We actually talk about, all these open source licensing wars with Elliott later on in the interview but in HashiCorp's case, they closed source it and then, a few people including Ohad from n 0 which we had on the show forked it and they called it OpenTofu.
Open ToFu has been doing a lot, has been getting a lot of features including an API and a web interface. So, you know, very interesting changes and, you know, you can install it and you can take a look at the registry. It just I think having a UI for the, registry takes it to the next level because if you're using OpenTofu, you don't have to consult the documentation sources anymore. You can just use the UI, which is interesting. So Open ToFu gets a user interface and an API.
If you wanna do some, work with their API, they have a spec as well, which is interesting. We don't do, like, DevOps conferences updates, but the maintainers plan to discuss this at open tofu day which is in the CNCF KubeCon, in Salt Lake City, November 12th. So if you're gonna be there, talk to them. Very very cool. Thanks a lot for listening.

That wraps up the news. Stick around for our interview with Elliott. Thanks for listening. If you're new here, our interview with Elliot starts in just a moment. That's probably what you're here for if you're new. Stick around just a couple more minutes. A big shout out to last week and the week before our cohost so that Shy and I could each take a break. Thanks to Mariah and Jamie. You can always reach out to us if you'd like to. Cupago.dev is our website.
We also have a fairly active, community on, the Go for Slack in hashtag cup dash o dash go. Join us there. Share your news items or just chat about go and and upcoming things in the community. And as always, share this with a friend, with a colleague, with a with a fellow student, or leave a review or rating on iTunes or Spotify or wherever you happen to be listening right now. We appreciate it.

It's not a Itunes anymore. It's Apple Podcasts. I should, change the copy. Anyways, thanks a lot. Yeah. If you if you rate it whatever, even if you write it on a bridge somewhere, we're happy to, to have you here and thanks a lot. The best way to support the show is directly financially via, Patreon, where we've gotten, more support, recently. We wanna shout out our new, patrons who joined last week. So Michael Hagerty and Code Stank.

Code? Thanks a lot. Is that Code?

I I didn't check the name or the other. Code Stank. Thanks a lot Code Stank. Oh, there we go. Or codistank. I don't know. Thanks a lot for becoming members, of the Capagoe oh, that's funny. It says became a member of Capagofer. That's weird. Thanks for becoming Capagofurs.
We really appreciate it. This show is a hobby. We do it for fun to learn. If you, want to support us, that's the best way just because it's sort of a expensive hobby. It takes up a lot of time and we pay for editing, etcetera, etcetera. If you want to, support us for anything. In other ways, you can also buy, merch. Recently, we had an issue with the cups. We really hope that it's all sorted out now. We have a new provider for the mugs, the beautiful, Brewster, mugs.
I double checked it. It should be fine. So if you're having any issues, ordering, just reach out. But you can find the new, mugs, which should be totally similar, but more color options, on the store as well. Alright.

Yeah. Let's talk to Elliot.

That's it. Let's get to the interview. I wanna talk to Elliot. Jonathan? Yeah? Is that you? It is. Am I dreaming? You might be. I might be dreaming of code. If anybody could help me decipher it, maybe. Oh, hi, Elliott.
Hey.

We're we're here. We're we're video. This is new for us. Very exciting.

Yeah.

And it's all because of Elliot.
Everyone looks great.

Thank you. Elliot, how about you tell our listeners, who you are if they don't know already?
Sure. My name is Elliot. I run the Dreams of Code YouTube channel on YouTube, which creates video content about software development. I actually run 2 channels. I also run another one, which is a little bit more focused on Linux, self hosting, and open source, but Dreams of Code is my biggest one.

And for, good reason. If, listeners of Capoca haven't, I don't know, subscribed yet or watched, Elliott's stuff yet, the reason we're talking is I just watch your stuff. And I was like, hey, you released a Go video about doing a little spinner on the terminal. And I was, like, I do a Go thing, maybe we can talk. But if you're into super fancy keyboards, sort of relaxing, British guy, ASMR sounding kind of thing, and really cool projects and things like that.
We're gonna start by putting the the, you know, the plug at the beginning. Stop the show right now. Go subscribe to Elliot's channel and come back. But welcome to the show, man.
Smash the like button.

Yeah. And subscribe and press the bell to get the notification. Like, I'm I'm making fun of it, but this like, we do want people to subscribe to the show, and we do want people to do all these good metrics. So I'm gonna start with my, first sort of question. Why Go in the content making space versus more popular languages? I mean, Go is popular, but it's not the most popular.
That's very true. That's very true. It's for me, it's kind of a, I guess, a language of love. That sounds very cheesy, but it's it's a language that I absolutely love to use. Go for me is I come from like a CC plus plus background.
So using Go feels very close to using something like c. Obviously Rob Pike and the creators of Go have done a exceptional job to model the standard library over model the standard library like glibc, But they've also taken a lot of consideration into the language as well for both good and bad. There's some things that are missing I think from the language especially with modern language design. But most of the goals of Go have been to combat the complexity with languages such as c plus plus and Java as well and all these other modern languages. So for me I think if you've watched my content I do very minimal video edit Well, my video editing can sometimes be very polished but a lot of my style is very minimal.
It's something I really like. I work in a terminal with most of my coding anyway, so most of the way I work is very minimal. I try to not fall into the trap of complexity which is very difficult to do in software development and I feel like Go is an extension of that simplicity or minimalism.

John, you obviously do, I think, market yourself as a strictly Go guy as well. Right? Like you have a thing called Boldly Go and

Yeah. I wouldn't say strictly Go, but definitely that's the focus, the priority. Yeah.

Do you think it brings, y'all, like, the sorts of audience you'd like to interact with? Or is it the other way around? You take people who are maybe not familiar with all the benefits and all this, maybe, Elliot, you say this philosophy of minimalism, in software development, and you're you're converting them. Is it like you picking the audience you want or is is random audience coming to you and and, like, converting?
That's such a great question. I think I think so YouTube is such an interesting place because I think actually the YouTube is very representative of software development, but obviously YouTube is algorithmic based so there has to be a lot of hype that kinda goes into things. So languages that feed into that hype often do very well and Go doesn't always. That being said some of my my favourite video that I've ever done was actually looking at Go using was actually looking at how to use the standard library of Go for advanced HTTP routing. It was following the 1.22 release once they added in, you know, advanced, method based routing with Go.

It's funny to call that advanced.
Advanced. Yeah.

Yeah. Advanced for 1993.
Yeah. Yeah. Well, I I can't remember if that was actually in the, in the release notes but, yeah. Advanced routing in Go. That was kind of the title of the video.
A lot of people really really enjoyed that video because I think it answered a core question that I got from my 1 22 overview which was, how can I use the standard library now for routing a go? Which which is something I felt was missing for a long time. You had frameworks such as Guerrilla, which I absolutely loved Guerrilla, Chi. Then you had kind of the more complex ones I feel like echo, djinn, all these other ones that had a lot of nice boilerplate. And I think because it had gone on for so long where you had to use these frameworks in order to actually do what Go was kind of always would which was a core property of Go which was HTTP web servers.
It kind of I I've really detracted from the original questions, I do apologize. But it kind of detract it kind of, that video kind of resonated with a lot of people of like, you can use the standard library now for all of these advanced features such as subrouting, middleware, all these things that you were relying on a third party framework. That video continues to do really really well and it's one of my most popular ones and it's one that I absolutely love as well. And for me that kind of it kind of hits both audiences. It hits an audience that is learning Go and wants to just take that philosophy of like use the standard library as much as possible and it also speaks to an audience that already uses Go but wants to use the standard library more and wants to know how to do some of these more advanced things that come from the minds of the creators of Go and how you should be able to use the standard library as much as possible.
So just to to answer the question in a long winded way, I think the content appeals to kind of both. I try to focus my content on general software engineering, at least like back end software engineers mostly. But at the same time, I also wanna appeal to developers that like to use Go as well.

I I think I can really imagine someone watching your, videos. Not necessarily even, on Go, but the HTTP one is is a good example in my opinion. And And I'll take another one. You have, I think, a video about, like, setting up, terminal, like, a TMUX or Vim or, like, setting up all these, again, advanced for 1993 editors, that we're rediscovering are good again. I'm firmly in your camp, by the way, Lovetux.
So I can really imagine someone being super frustrated working in, like not to shame any specific editor. Just, you know, I don't know. They're stuck with Visual Studio 2012 because they're working on legacy.netprojects, etcetera etcetera. Then they come home all, like, frustrated from working on their super, outdated, bloated, you know, tons of GUI and toolbars and buttons and and features ID just coming watching your video, like, setting up to mugs. It's all very clean.
It's all very minimalist and sort of being, like, yes, this is what I need coming back to their company and sort of moving that change. Really, imagine someone trying to do h htp, you know, with a super bloated framework. It's really difficult to move stuff around. Maybe even if it if the company is big enough, like, an internal framework for htp. Because, of course, in this company, we would like to do it this way than just watching the oh, there's a new Go release with the, 122, and you can just do it with the standard library and just hacking a a POC in a day and sort of starting this change.
I'm wondering how many people who watched like, you you wouldn't be able to know this, but how many people who watched the 122 thing already knew, like, knew about it because they read it about it somewhere else? Or are you their, like, main, source of news? Some people told me that about the podcast. Like, I don't I just listen to it and then I don't need to follow the Go blog anymore. And I'm like, no, you do need to read that stuff. John and I are not real journalists.
Yeah. I think that's that's a really good point as well. And that's something I think a lot of people do rely on on YouTube to get their news especially about software development changes. And as you say, I'm not a journalist either and I definitely make mistakes. So I always try to encourage people to go to the original source and I'll try to link them in the video as well.
But yeah, at the end of the day I'm more of an entertainer than I am a journalist and I wanna present news that I find interesting and that I wanna entertain people by sharing it in a way that's a story, but I'm definitely not a journalist. I'm always gonna get things wrong and I'm always gonna be corrected in the comments which is one thing I actually love about my community. They're very quick to correct me but do so in a very tasteful way that they want to have a discourse or a discussion as well which I think is actually fantastic about. I I love that with my community. It's one of my favorite things about live streaming as well because I get to interact with people directly.
But yeah, I think for some people I am absolutely their kind of news source for some things. I don't do too much news so when I do I can be. But sometimes I also help to teach people, as you mentioned with Tmux. I I try to focus more on here's how I use these tools. Here's how I use this language. Hopefully, that teaches people that they can use it in those ways as well.

You recently did the news ish video. I think your most recent as at the time of this, recording, that is most recent video is about the Elastic open source, license change. So that that felt totally out of my field Yep. Because I was like, oh, he's the terminal and and go and and chill guy and suddenly, like, no business. This is how Elastic is regretting, you know, their license change.
But, like, it was interesting to see, you know, discovering interesting things and not, like, limiting yourself to a specific, I guess, formulaic form of a video or I guess content.
Yeah. Yeah. Yeah. Yeah. I that that video for me, I kind of that was I think about a week ago today and I was I was reading the hot slash programming believe it or not and it popped up.
And for me, I don't I don't know a lot of people I think felt very betrayed by Redis' license change recently, no less than the actual contributors must have felt as well. And so for me the issue of kind of these companies moving towards closed source models that have been built on the back of open source, that always kind of struck a little bit of a nerve for me. I'm a huge proponent of open source software. I will always prefer to use an open source products compared to the closed source one even if it's not as good. So when you see companies that you've kind of really appreciated for having that open source model move away for for whatever reason, some of them may be legitimate, some of them may be not so legitimate, It kind of stings a little bit and it's been a bit of a worrying trend over the last few years and I think Elastic, they want to be first.
I think MongoDB were one of the first companies to do it. Elastic did do it recently, shortly after MongoDB and then most recently Redis did that and I think that one really stung quite a lot for a lot of people.

Oh,

and and don't forget HashiCorp.
HashiCorp. HashiCorp was a big one as well. So I think when the news kind of changed that Elastic was going back to open source I think that was some really great news. Obviously, with the YouTube algorithm positivity doesn't always go very well so you kind of have to put in a bit of a a twist into the story as well. But ultimately from that video, from my perspective, I thought it was really really good great news.
I don't wanna see anything bad come to Elastic. I'm just very very happy that they've decided to go back to open source again.

You said positivity doesn't track well with YouTube as in like if your video would have been titled, elastic doing the last mistake, you won't believe how much, of open source contributors got, you know, effed by this, license. It would, like, make more numbers, more people would watch it you think?
It's it's such an interesting interesting paradigm of social media, but controversy always does better than positivity and I try to always focus my content on positivity rather than controversy which is a bit of a tough line to kind of walk. I've definitely done some more controversial videos in my in the past and they always do really well but they don't make me feel very good. So I try to keep it more towards like here's what you can learn, here's something I've learned recently. Anything that kind of lifts up the community or at least like makes me feel like I'm lifting up the community is something I would always prefer to do when it comes to videos. But they're not always the most popular videos out there.

That is unfortunate but makes sense.

One of one of my most popular videos is 10 things I hate about Go. I I think it really, emphasizes the point you're making.
Yeah. I think there's a there must be in in my I'm always trying to find a way to improve and I feel like there must be a way to have kind of the feeling that there's controversy, but ultimately it's a positive message at the end of it.

Well, so I mean, so last November I did a no effort November, you know, I I made like 15 videos in a month. You know, each day, I just threw together in an afternoon. And the ones that did the best were the ones sort of things like you're doing it wrong or, you know, something like this in the title. And, of course, then then the the positive message, if you will, is is here's the right way to do it. So, you know, you know, that maybe that's an angle you could you could try is is, the right way is this.
The wrong way is the thing you're doing. Talk about the wrong thing in the title.
Yeah. I like that a lot.

Maybe negativity in November.

To get back to one of the questions that Shai asked, I wanted to to bring up the conversation I had a couple weeks ago with, Mariah. I don't remember if we put this on the show or not, but, she does Twitch streaming about Go. And, we did record part of our conversation. It was just a random conversation we we put on the show. And I can't remember this is after or before we hit stop.
But I, I asked her about what kinds of things she does, on her on her Twitch. You know, is it just coding? And she says that some of the most popular stuff she does I'm pretty sure this part made her into the into the show was, beginner focused stuff because, I I suppose, because there's a lot of, beginners out there. Or or maybe it's not so much because there's a lot of beginners, but because the beginners are the ones who are looking for this sort of content. But I I think that touches on the the question of, like, are you are you trying to attract a particular audience, or are you you know, does the audience just sort of come naturally?
And I I think, Mariah and I agreed that we both do it because we like doing it. Mhmm. And the audience comes if they come. And, you know, she streams she said she streams to typically 6 to 8 people, at a time. Pretty small, you know, as Twitch streamings streamers go, I guess it's fairly small.
And that's better than my, streaming, efforts usually. I usually have 2 or 3. But, you know, at least in our cases, we we we agreed that it's it's code I would be writing anyway. Why not turn on the camera and let somebody benefit potentially? And maybe they watch the replay.
Maybe they aren't there for the life thing, but they're there for the replay. So it's it's not either of us are looking for the audience per se. It's that, we're doing what we do. And if somebody wants to watch, that's great. And if they can benefit from it, that's great.
I'm curious how much of that you do, or or are you are you doing the the quote YouTube thing and you're, like, you're thinking of what does the audience want, what title am I gonna do, what thumbnail, all that sort of stuff that all the creators tell you to do. Where do you fall or or does it depend?
Yeah. That's that's such a good question. It's such a balancing act of kind of I wanna just create content that I wanna create and at the end of the day I'll put it out. If if people like it that's great. If people don't like it doesn't matter.
For me, I'm actually I'm more on the other side of it. So I try to think mostly about the audience, what the audience wants to see and I will tailor my content to that. It's obviously what I wanna create as well. I don't wanna be a slave to the algorithm or a slave to the audience of what I wanna create. I still have an idea of what's what it is I would like to create videos on but I always think about it of what value am I gonna give to the person watching this.
So if somebody, you know, if thousands of people wanna commit time to sitting and watching my video I feel like I have to reward their choice to click on my thumbnail, to read my title and be engaged and I need to deliver on that promise of what I'm presenting to the user. So a lot of that thought does go into kind of the audience experience. Like, I want people to really enjoy and understand the video all the way through. Sometimes I do well on that and sometimes I absolutely miss, but that's part of the whole learning experience.

Right. But, yeah,
the the audience value is always number 1, in my in my opinion.

Okay. So you would consider your, channel sort of more educational than just, like, entertainment period?
I would say so. I think it's definitely in between maybe the 2. It's not purely educational in the fact that I will go in deep into a topic and kind of explain it through and through. I still kind of keep it high paced and reasonably engaging so that people can sit and get a bit of a information dump but not too much of like we're really gonna go into the weeds of what we're talking about today. It's more of very yeah.
It's it's kind of fast paced educational but at the same time entertainment is still very paramount and I will take something out if I feel like I'm explaining it too long or I'm not getting to the point quick enough. I also have a really bad habit of I record the entire video and then I'll go back through it and record it again but saying things differently in in a more concise and elegant manner. So I do like multiple passes on my video which takes a lot of time but I really find that that comes out to be where I'm saying what I want to say in the shortest amount of words or the fewest amount of words. Mhmm.

I many people told me that, they listen to the our show. There are probably some people who are listening right now, in double time. So I'm I'm always, like, half considering how fast should I talk, how, whatever. Maybe we should do that as well. We should just record the show one take super fast on double time, then listen to it on double time and rerecord it in real time. I can imagine doing the show twice though. That's that's

gonna be that's gonna be a bit difficult. A lot of work.
It it yeah. It definitely is.

Well, if you if we do both of them double time, it's the same amount of work.
That's true.

Here we go.

I wanted to ask a couple of questions about your channel. I'm just looking at the details that YouTube shares. It looks like you started the channel in 2019. Is that about right?
So I kind of started it in 2019. I think I started the YouTube channel with the intention of doing videos in 2019, and then I didn't really muster the courage until 2023.

Yeah. I know that feeling. I did the same. So 2023, you you started more seriously, and now you're up to a 133,000 subscribers. I I probably started early 2023, late 2022, and I'm up to almost 5,000 subscribers. Although this year, I've I've really been taking a break, preparing for this move. What have you done to promote your your channel? Or or is it just the algorithm feeding you subscribers?
It is just the algorithm. Just the algorithm. So really, I kind of spent a long time trying to figure out what the algorithm wants. And I'm a huge this has always been something I thought as a negative for myself but I'm a huge content consumer. I love movies.
I love TV shows. Loved YouTube as well. I considered at one point getting a tattoo saying do more watch less just to remind myself to not watch content as much as what I do. But I've always enjoyed that as a medium of like entertainment and education. Mhmm.
So I think that had driven a lot of kind of what I wanted to do or or or like how I wanted to kind of approach YouTube. And I spent a lot of time researching kind of what do people want to click? Why do I want to click on a video? Why do I want to watch a video? And I actually never really watched coding content.
I still really don't watch coding content. I create it but I don't watch it. I think the most technical adjacent I ever got to was more like home labs and and kind of self hosting and things like that which I'm really interested in. Mhmm. But when it came to actual coding, the reason I got inspired to do coding videos was because I was kind of burnt out from work.
I'd entered into a more manager managerial position and it was so it was less of a technical role. I felt like a lot of my creativity was had gone and being kind of that middle management layer and not an IC anymore is a very big culture shock to kind of how you work. So I needed kind of a creative outlet and I picked up woodworking of all things. I think also when software developers are burnt out they will always reach for kind of these more physical hobbies. You often hear developers want to go build a log cabin in the woods and live in there or become a farm or anything like that.
For me it was woodworking. So I picked up woodworking and I started watching YouTube videos as you do to kind of learn the hobby and take from it. And it was very project focused, so these fantastic creators doing woodworking would, you know, go through and show how they created a project and that to me was kind of interesting and I thought what if I applied that to writing code? It would get me back into writing code again. I could feel, like my creativity or my creative itch was being scratched.
So I basically was inspired by woodworkers to go and create coding content. Awesome.

That's so cool. I think number 1, at least more cons most consistent channel I've been watching is also about, like, sort of, like, a physical creative person. It's someone, called the inheritance machining. I've been following them for the last, like, two and a half years. Someone doing, like, metallurgy.
I don't know how how it, like, precision engineering with manual machines like leads and things like that. I know nothing about well, two and a half years later, I could probably operate a lathe and just lose, like, 2 fingers and not all of them. But the that issue you're talking about of, like, oh, I work at my thing. Maybe I like it, maybe I'm burned out, but I won't watch people doing it on YouTube or something like that is is so interesting because I do find myself, like attracted to watching people doing stuff and listening to news about programming. But I've tried a few times to watch, like, programming streams or people trying to solve c t f's or even listen to other, coding podcasts.
Right? There's there's a ton of good stuff out there. A good chance to shout out Go Time or sort of like big sister podcast. And, you know, when I was trying to get into Rust, so Rust Station Station and just, like, whatever, it's sort of it's difficult. I don't it's difficult to consume content about the thing you do all day.
But taking inspiration from other just subjects and saying, like, I liked watching this woodworking video. I'm gonna I I now understand the vibe of your videos because it's like it's I have a project I wanna get to. Here are the steps in the way. It's gonna be very calming. You know, you gotta worry about your fingers and woodworking is from saws.
In your videos, it's about not using the most ergonomic keyboard ever. Right? But I can see the parallels. Yep. That's really cool, really, how the sausage gets made kind of thing.
Yeah. I I I actually that does bring on a really good point. So, like, a lot of my inspiration for my videos comes from, like, outside of the technical niche pretty much exclusively. So with the with the you mentioned the, the video where I was building that spinner and I had kind of those I I don't want to call them cinematic but they were attempting to be cinematic shots of like top down shots of the keyboards things like that. That all came from watching a lot of cinematic vloggers.
There's a whole niche on YouTube of of these new age vloggers that are doing very cinematic stuff. So beyond what Casey Neistat was doing which was like the daily vlog and Casey had a lot of cinematic elements to it, but now creators like Life of RZA, Matthew Encina these are these creators are doing like very very cinematic shots in their vlogs and that to me was just so inspiring and then kind of scratched my creative itch of like how do I do cinematic shots with code? Because that's a very very difficult problem to show. It's it's not very real life when it comes to coding. It's usually on a screen and we're engaging with computers.
So that challenge in itself, 1 to be inspired and to figure out how to do it and then 2 how to kind of use film and visual metaphors to explain code as well. I think that's something I'm I'm really, really interested in.

I love that. Yeah. That's

cool. There's a guy, I I have to look up the channel. He's developing a game called Astortion, and he's sort of one of these I think there are, like, 5 or 6 people I follow on YouTube that do game development, videos or game development content. There's like Jim TK and there's a guy called Randy, which is sort of unhinged, and this person developing distortion. It's really interesting to see when you do it.
And, Jonathan, you mentioned why not turn on the camera. Right? Like, if I'm already gonna develop it. So the reason is is, in my opinion, is it's sort of quantum. If you do turn on the camera, right, people watching you, maybe watching your stream or or watching the content responding might affect what you do.
Elliot, you are doing YouTube full time now. Right? You're not doing content about corporate problems or like real problems. You're doing, at this point, content as your job. I think it affects it.
All these dev YouTubers, for example, this guy doing distortion, their financial interest at this point is to draw out the project and the game development as long as possible, which is a 100% opposite from if they didn't have the camera on. So I I think there's sort of an a weird incentive there. You don't work on, like, long form projects, so it doesn't exist there. But in in all the game development thing, I see people, like, drawing out the projects and going on side tangents and developing their own shaders blah blah blah instead of just shipping stuff, which is interesting. The reason I mentioned the distortion guy, by the way, is because when I saw the cinematic video and all the editing and all the cool stuff, I was reminded of his thing where he wanted to do explanation for code stuff in his videos.
So he developed a whole open source JavaScript based animation library just to explain stuff. And then that became the most popular thing on his channel. So, you know, these things sort of feed into each other. So I I you should really dig more into how to make the videos more cool and more cinematic. You might end up, I don't know, implementing open source Linux, auto AI, cinematic editor, or something like that. I don't know. It could spin into cool stuff.
Yeah. I I actually agree. I think that's one of the I think that actually touches on something that I think is really important when it comes to software development in that I'm I'm somebody who's always loved to build side projects, but I've always struggled with what side project to build. Ever since doing content creation, I now have an unlimited amount of side projects I could work on. I now have to kind of prioritize which coding projects I wanna work to improve kind of my own content creation.
Mhmm. And that to me is something that kind of was always missing when it came to determining what projects I wanted to build. I needed kind of that additional hobby beyond writing code in order to understand what problems I needed to solve. And when it comes to writing just code as a hobby, which is something I had for probably a decade, I was writing code was all I really cared about. I didn't really have a greater exposure to other problems in order for me to have inspiration for side projects.
It was kind of a unless the side projects were coding focused obviously. Mhmm.

Where do you see the channel going in the next, I don't know, 3 to 6 months? You you said you're doing full time now. What what are your plans? What kind of videos can I look forward to? Or or do you play it more by ear?
Yeah. That's a great question. I definitely play it by ear. I kind of will respond to trends and kind of what does well, what doesn't do well. The one thing I definitely will be doing, I mean I'm working now with a video editor which has freed me up a lot of time.
Yeah. So I'm gonna hopefully focus more on doing cinematic shots. I'm actually building tooling around working with video editors because I think that's a very challenging thing to do. Get your creative vision down so that a video editor can take your raw content and turn it into your vision. Mhmm.
I kind of built a huge system using Notion to kind of make that work and it's done really well. So I wanna kind of product size that and build it into software to make that a little bit easier. That's one thing I'm working on.

I love the shade being thrown on Notion. The fact that it's not software.
Yeah. I mean Notion's really really great. It does have a lot of benefits. I prefer Obsidian but Obsidian can't do everything that Notion can. But it's you do kind of it feels very hacky whenever you build a system in Notion.
Like, it's it's kind of duct taped and super glued together and, you know, anytime you need to expand it, that's when writing code and building those things yourself. Like, I'd love to but one of the things I really wanna have is a Google Drive or an s 3 bucket but with a nice UI that I can actually label footage with sections in my transcripts so that my editor can just go, oh, here's this line, this section in the transcript. I know that this footage relates to it. So and that's something that's actually a challenge when doing coding content because most video editors don't know how to code. So trying to explain what's the important part that they have to see is really really difficult to do.
At some point it becomes more effort than the actual code or the actual editing itself. So you have to try to make it a system that's really really simple to do so. So that's something I'm that I'm building but it's definitely more of a a selfish personal project. What I'm actually kind of trying to build with my time is to work on kind of more Golang courses. So I wanna be able to have different courses that I can kind of offer to offer for sale that are mainly gonna focus around building different types of applications in Go.

How much time do you spend on this, in a given week? Is it is it 40 hours? Or do you have the work from home self employment schedule? Everybody does and you're drinking mai tais half the week.
Yeah. It's, it's definitely on the top end. Recently, it's not been. Now now that I've got a video editor, I have a lot more free time. Before it was basically 12 hours a day 12 hour days, 6 days a week, as kind of you do anytime you're getting something started.
There's Yeah. Also that self employed fear of, like, if I'm enjoying myself, I'm not earning money, so I need to be doing things that help me earn money. Getting out of that mindset has been really helpful helpful for me and that did help by hiring somebody. So now I'm trying to keep it down to, like, a 40 hour week. It's probably more a 40 to 48 to 60 hour week still. So

Okay.
Slightly better life work life balance. But, yeah, I think whenever you go self employed for something that you're very passionate about, it's gonna consume more time than a typical 9 to 5 would.

Absolutely.

Yeah. You mentioned your editor, like, doesn't know how to code. Someone recently meant this is not a question to you. You can just chill. Are you're, like, listening attentively. But this is a question to Filippo, our editor. Filippo, are you like, do you know Go at this point? You can maybe edit in a yes or a no.

Yes. A little bit.

But you like, we've had our editor edit our show for, like, how long now? A year and and and change? If you're editing, like, Go news on a weekly basis, you gotta know something about it at the at the very like, I I I imagine if you can find, I don't know, a comp sci, student who's also into video editing, you might have you might have a more, like, a win win arrangement. But then you won't have to build that side project. And then what what videos are you gonna do? Only to

interview Filippo on the show.
That's true. That's true. Yeah. I think that's that's actually what a lot of, I think, a lot of, content creators in YouTube do. They do tend to find more comp sci interested individuals. But for me, I really wanted somebody more interested in cinema rather than the computer science. And I thought I can maybe teach them to code or yeah. I mean, I'd love to know what your editors learn at this stage.

I think we need to have Filippo on an interview at some point and ask him about that. It'll be a great chance to ask him the question I'm about to ask you, Elliot, which is the question we ask all of our guests. When you were learning Go, what was the most surprising or challenging thing for you?
I think the most surprising or challenging thing for me when learning Go was this is gonna be a bit of a controversial statement it was understanding the true power of the implicit conformance of inherit of interfaces. Okay. Yeah. So it's one of my favorite features of Go as well and it's probably one of the most understated features. I've I've actually when I talk to people in comments, they actually call it as a negative that you don't explicitly set a type as conforming to an interface.
For me, I think it's so powerful because it enables decoupling when used in the way that it's intended. But initially, I came from it from other languages where you explicitly mark it as being conforming. So that probably leads on to the larger challenge that I had with Go which was breaking a lot of habits from other languages. I think it's probably the most common common thing that a beginner to Go has to understand is that the way it's done in Go is not necessarily the way it's done anywhere else. And then there's a common one as well learning all these amazing constructs for dealing with concurrency and learning to not use them.

Good answer. Well, Elliot, would you tell everybody where they can find you? Of course, we'll have links in the show notes, but, you've already mentioned the channel name, but do it one more time. How can they find your channel and and any other content you have?
Awesome. Yeah. Yeah. You can find me on youtube.com@dreamsofcode. That is my handle. It's all one word, lowercase. That will have links to all my videos and any of the other channels that I also run on there which is only one at this stage. Also, you can go to dreams of code dot io if you wanna sign up to a mailing list to get some information but I don't really keep on top of that. But, yeah, that will have any information of new projects or ventures that I'm working on. Awesome.

And it looks like you're selling merch too. I am. Awesome.

Oh, really?

What merch? Notebooks and stickers. And even the coffee mug, of course. Cheat sheets.

That's cool. That's cool. I like that. Co pilot free.

Yeah. Do you wanna do a closing, Shai? Or

No. I just wanna say, thanks a lot, Elliot. It's been great. Keep up the the Go content. I really it is really refreshing to see someone doing coding content in my favorite language in the thing I'm doing and doing it so, like, thoughtfully and, like you said, worrying about how it looks and how it sounds and how it's built.
And it's just very obvious that, a lot of care and a lot of expertise is going into your videos, and I just love to see that, man. Keep it up. Thanks for coming on the show and telling, you know, the listeners about it.
Thank you for having me. It's been an absolute pleasure.

Alright. Cheers.