🏕️ BIG questions: "Is excel immortal?" and "Is Go the right choice for my startup?" - podcast episode cover

🏕️ BIG questions: "Is excel immortal?" and "Is Go the right choice for my startup?"

Oct 18, 202425 minEp. 84
--:--
--:--
Listen in podcast apps:
Metacast
Spotify
Youtube
RSS

Episode description

Transcript

Jonathan HallJonathan Hall

Show is sponsored by you, our listener. Stick around till after the news to hear more about that. This is Cup of Go for October 18, 2024. Keep up to date with the important happenings in the Go community in about 15 minutes per week. I'm Jonathan Hall.

Shay NehmadShay Nehmad

And I'm Shay Nehmad.

Jonathan HallJonathan Hall

Hello, Shay.

Shay NehmadShay Nehmad

Hello. I am very much dreading the the date tomorrow.

Jonathan HallJonathan Hall

Why is that?

Shay NehmadShay Nehmad

It is my 30th birthday, and it's just too round of a date for me to not worry about bugs. Like, is it actually my 30th, or did we miscount a year because of a leap day? Then you start reading about leap seconds, time zones, the government, in Israel changed the, you know, the, like, daylight saving times, a couple of times over the last 30 years. I'm wondering if it is my 30th or is it just a misconception. So, yeah, I'm worried about dates because I'm a programmer.

And nothing else is scary about, growing up. Let's talk about conferences.

Jonathan HallJonathan Hall

Yeah. So today, we're gonna talk about a couple, meetups, some proposals and blog posts. We don't have a whole lot of, like, hard news, but we're gonna we're gonna still talk about what's happening in the Go community.

Shay NehmadShay Nehmad

Hard news like we usually We usually have the deep break. Politics, the economics of GoLandia. Exactly. No. No. That's not us. Let's nitpick about, Linter choices for for a little while.

Jonathan HallJonathan Hall

Let's do it. So, yeah. As you mentioned, con they're not really conferences, but but meetups. A couple that came onto my radar, if you're in Dubai and, who doesn't wanna be in Dubai? It's a beautiful city. The, the first apparently, ever go UAE meetup is happening on the 26th.

Shay NehmadShay Nehmad

Oh, cool.

Jonathan HallJonathan Hall

I'll have a link to that in the show notes.

Shay NehmadShay Nehmad

I can just imagine it happening on like, a 50 story golden building. You know what I mean?

Jonathan HallJonathan Hall

Yeah. Yeah. Send us pictures of the event. We wanna see, how how flashy the venue was.

Shay NehmadShay Nehmad

Emirates Tower. That sounds fancy

Jonathan HallJonathan Hall

for sure. Yeah.

Shay NehmadShay Nehmad

Well, I'm really down for the 1st meetup of a city. That's very, very cool. Guev and Rashid, let us know how it goes. And if you're going, let us know how it went.

Jonathan HallJonathan Hall

Yeah. Please.

Shay NehmadShay Nehmad

The topics, by the way, you said this is a meetup, but the topic list is long enough to, at least for me to say, conference. There are, like, 5 talks. Usually, for me, meetup is, like, talk, a little bit of pizza, talk, and then you're you're gone. Right? Mhmm. Like a 2 hour evening engagement?

Jonathan HallJonathan Hall

Usually, yeah.

Shay NehmadShay Nehmad

But this sounds like a serious thing. It is lightning talks, when you read into the agenda. Every single one is 15 minutes, which I think is a better bang for your buck. Like, most people are not good enough speakers to hold the conversation for over 15 minutes, which is why that's the limit for our news.

Jonathan HallJonathan Hall

And I have to say the 15 minute lightning talk. That's that's good if you're gonna do if you're gonna do just lightning talks at the meetup in Amsterdam, where I'm no longer a organizer. Lightning talks usually 5 minutes. So, yeah, 15 minutes is great for 5 talks. You're gonna get a lot of information for your time. Go go to the 1st meetup in Dubai.

Shay NehmadShay Nehmad

Cool. Cool. Cool.

Jonathan HallJonathan Hall

And, we also have another meetup, coming up in Leipzig, Germany. This is the one I would I would have loved to attended. I I have a friend in Leipzig. I've been there a few times. I've I've missed their one of their meetups by, I think, a day.

The last time I was there, and made me sad. But October 29, if you're in a part of Germany, check out their, their meetup there. They have one talk a little more, 2 talks, 1 about test coverage and go and what about deterministic currency and go and go tests. So it's all about testing in Leipzig.

Shay NehmadShay Nehmad

Yeah. I think it's, very, very cool to the package that they're gonna talk about. Like, test coverage, I don't know. To me, it always feels like just a chore. Mhmm.

Just get the thing working in CI and get the artifacts lined up. And then if you have a third party, like, I forgot what's called, Code Climate or one of the other 100 SaaS apps that wanna eat that and put it on dashboard. And then you gotta start arguing about whether coverage is correct for your project Mhmm. Blah blah blah. Is it a metric at all?

Should you worry about it? Blah blah blah blah. The new thing I learned, like, from reading this, the LiveSeq, top tracks is Time Stone. Looks like a pretty cool, library aimed at eliminating flaky unit tests, which yes, please. Anybody who's working on that is an angel in my book. It's about, like, deterministic unit tests for, concurrent Go code when you're testing. This is pretty cool.

Jonathan HallJonathan Hall

Cool.

Shay NehmadShay Nehmad

I guess, if you haven't run into it, you'd be like, why?

Jonathan HallJonathan Hall

Mhmm.

Shay NehmadShay Nehmad

But if you have, run into flaky tests that relate to threads and things like that Oh, yeah. Like, go routines Yeah. You'd love to hear about it. And it's actually super non like, it's a super new thing, last week. Looks like, released for the talk kind of thing.

Jonathan HallJonathan Hall

Oh, that's cool. Honestly.

Shay NehmadShay Nehmad

Yeah. Yeah. But I'm down. I've started. Keep working on it. We love these sorts of things. Yep.

Jonathan HallJonathan Hall

Awesome. That's all I have for our conferences and meetups for now. If you if you're listening and you know of one coming up, let us know so we can include it in the show. Let's move on to, a proposal.

Shay NehmadShay Nehmad

There are no proposal minutes from the last 2 weeks, which is totally fine. Summarizing meetings is annoying. We totally get it. There is one, proposal who that we wanted to mention that's in its final comment period and I think it's relevant for people to comment if it affects them. What do you think about HTTP codes? I think they're a great invention.

Jonathan HallJonathan Hall

They're a blunt instrument but they're they're good. Yeah.

Shay NehmadShay Nehmad

They're just, like, very pragmatic enough. Right? 200 means everything okay. 300 means you gotta look for it somewhere else. 400, it's your fault. 500, it's my fault. Like, very easy. What are 100? 100. Like, onexx.

Jonathan HallJonathan Hall

Yeah. Those are those are for continuation, aren't they? They're not commonly used, but

Shay NehmadShay Nehmad

They're they're very much not commonly used to the point where I almost don't remember them, by heart. I do try to make a point of remembering HUP codes by heart just because they forced me to learn it by heart in the army. Mhmm. But other than that, there's literally no reason to remember the 100 ones. It's interim responses.

So informational things like I'm switching protocols or I'm processing if you're developing, the web dev, like, a video thing. No responses ready yet. Early hints, some kind of weird, things. But apparently, you can send, an arbitrary number of them according to HTTP. In Go's client, that arbitrary number is not infinite, it's 5.

Can you guess why it's 5? No. Alright. They can't either. It's just arbitrary in the code and literally above that number it says, arbitrary bound and number of information responses, which just makes sense whatever.

And if you're talking about, like, resumable uploads, for example, which is the background for the opening of this proposal by Marius, from Germany. He's like in the IETF working on resumable uploads where I guess, you know, the server can sort of inform the client about the upload progress and send a lot of a 100 just to let you know, oh, continue continue continue. It's it's still progressing. And then once you get to the limit of 5, you get an error and you can't even read, like, the final thing. Like, you can't get to the 200 at the end, which of which you can send only 1 in HTTP.

And there's a response here which sounds very authoritative. And the first time I read it, I was like, oh, this is too authoritative. Someone's like, this is a bug in the Go client. That sounds very like someone who who knows what they're talking about. Right?

Jonathan HallJonathan Hall

It sounds like a a Reddit troll.

Shay NehmadShay Nehmad

So so, actually, it is Roy Fiddly Right. Who, like, is the person behind the Apache license and Apache H CPD. It's like

Jonathan HallJonathan Hall

principal author of the HTTP stack, inventor of rest.

Shay NehmadShay Nehmad

Yeah. Yeah. So it is a bug in the Go client. And there's a bunch of the discussion here about, how to fix it, in the future, What other HTTP clients, libraries are doing. Because if you do like infinite, you're suddenly opening yourself up to slow loris attacks where someone can send you very slow, very continuous drip of 100 and DDoS your server with just a bunch of, 100 Mhmm.

Or your client or whatever. It's like, why do it to the client side? Like, what's going on? It's a very interesting discussion. It's, gonna be accepted.

And I think if you have 100 HTTP usage, like, if you ever use this code in a Go code, you should probably read this because I can't assume this is gonna be a non breaking change by the end. And anybody contributing a real use case to these sorts of discussions is very relevant. Mhmm. But overall, looks like just a bug, based on the HTTP spec. Who could have guessed?

Jonathan HallJonathan Hall

With with comments from Russ Cox like, do you have a concrete proposal for a new API here? You you know this isn't just a quick fix. There's there's a lot of thought going into it. And it like you said, it's probably a breaking change.

Shay NehmadShay Nehmad

By the way, if any security researchers are listening, it's not just if you're a user of this, like very niche, HTTP code, and part of the spec. Also, if you're looking to make a name for yourself and find some vulnerabilities, there are, like, 5 here. I'm not even there are 5. Just, for sure. 1 for each arbitrary number.

Jonathan HallJonathan Hall

There's an arbitrary number of 5, but, yeah, there's 5.

Shay NehmadShay Nehmad

Yeah. I'm I'm just sure that there's more, like, vulnerabilities in the implementation here. Getting HTTP spec right on the first try and on the second try is very, very difficult. So just an interesting proposal if you're into networking or HP and things like that, check it out. Other than that, we just have some community things going on. Right?

Jonathan HallJonathan Hall

We do. This could be a big topic. It came up on my Reddit radar, which was working this week for the first time in months. And I I don't know. It's it's more a discussion topic.

It's not that that the there was anything particularly revealing in the discussion, but the topic, the title is is go the right choice for my startup. And, I have some opinions on this. I'm curious though, before I reveal my my hand, what do you think? The criteria that the author presents are that the startup doesn't have any technical any heavy technical requirements right now. It's mostly a credit application.

And then, he talks about how Go is simple. It's nice at avoiding dependencies. I guess the talking about the rich standard library and maybe a static compiling. When then says that doing a CRUD in Go is kind of repetitive and boring. Would it be better to do use a language with sort of dynamic typing that makes that easier or maybe it's Harrison?

Shay NehmadShay Nehmad

That has that has more problems. So it's not that it's boring to develop these boring lines of code. Well, I I don't think I need to voice my opinion. I was the VPRA in the dev of a startup, and we used Go. Mhmm. Like, the the proof is in the pudding. And it's still, like, as far as I know, it's still going, strong. But language is just a tool. Right? We used Go for the back end where like, microservice back end where it made sense.

And we used Python for, like, AI stuff and and machine learning, things and data analysis where it made sense. And we used, React JavaScript for the front end to start and then TypeScript. The main decision point for my CDO and and me at each point was picking something that's reasonable. It doesn't have to be great. It just doesn't have to have any glaring, like, problems, like unsupported for example, when we just started, we talked about Rust as a viable option, but it was just when the Mozilla team cut the funding by half and they had, I think, that, licensing issue, and it just seems like the leadership I'm talking about, like, 2021, early 2021.

Just seems like Rust leadership was all over the map and and very unfocused and very weird. Hard to build a startup based on that. Right? Mhmm. So there's a first phase of filtering out languages which you can't pick. Right? Because, for example, if nobody in your area knows that language, you shouldn't pick it even if it's great. If it's way way too new, you probably shouldn't pick it. Right? Unless, there's specific value for your team to use that, you you should probably not pick it.

And the rest of decisions are fine. And in a start ups situation, the most important thing is, for in my opinion, pick something that you know. Right? You're gonna be in a room. There's gonna be, like, 8 people there.

If one of them doesn't know the language, it's gonna be difficult. Right. And go, you know, use static typing, use dynamic typing. It's not gonna be the reason your startup, fails or succeeds. Once you scale up in number of developers or if you're just a person who cares about code quality and things like that, you're probably gonna be frustrated working with, languages that suck.

That's sort of, there's some objective things that you can point at. If installing dependencies is very slow or compiling is very slow and then Go, it's fast, then that's just better period. The I mean, there are some languages which are better than others, features and things like that, But that's less important to me than do you, feel comfortable writing Go? In, way back when in Reco, both the CTO and I knew Go, and we're like, sure. Let's go.

Like, that's that's good enough. Hindsight, it was great. Like, we were very happy to use it. There is a specific thing about the CRUD application that annoys me though. No matter what language I'm using, I don't wanna be writing CRUD. I want it to auto generate it.

Jonathan HallJonathan Hall

Yes. And that's gonna that was gonna be my main point is if this is really just a CRUD app, you can probably find a SaaS that will do it for you. Put your point, put something in your database schema and do a little bit of configuration and you're gonna have something that does 90% of what you need if it truly is just crud. And there's something that will even make user facing interfaces to do that. I don't have names on the top of my head, but I've seen some.

So if that's really all it is and all it ever will be, don't use a language at all. You some no code solution.

Shay NehmadShay Nehmad

So I'm not I'm not sure I'm I'm that far ahead. Mhmm. I like, you could use code because it's it might be easier. It's less vendor locked in things like that, but you still 95% of the code can be auto generated. And let's, like, remember when you're using a language like TypeScript or Go, 99% of the code real code, quote unquote, right, machine code is auto generated anyway.

Yeah. Like, you're not actually writing anything that's running on the Mhmm. CPU or anything like that. So it's there's not a lot of difference, you know, for example, defining your API schema, which you're gonna do no matter what, or your database schema, which you're gonna do no matter what. And just pointing o API gen and like SQL c at it.

And then like taking 5% of the code which is main and connecting like the the queries thing to the API server thing, and you're done. Right? And this is super easy as well. This is the Go example. I'm sure you can do it in TypeScript and Python.

Like, I know it's possible to do in Python as well. The thing is, this is for sure something that you would wanna do regardless, even in a start up setting. Right? Like, use the correct language to talk about things. If you're talking about API, use open API. If you're writing code, write some code. I don't know if I would go as far as no code because pretty quickly you run up into some limitations. Right?

Jonathan HallJonathan Hall

I agree. So that's why I was saying, like, if you're never gonna do more than CRUD, then I would consider that. If you expect your application to grow to the point where you are doing something more complex, then it probably is worth building the code whether it's auto generated or or otherwise, you're doing in a language that you customize. And at that point, I pretty much agree with everything you said about which languages to choose or which ones to rule out and like the language isn't the biggest, it's not the biggest decision. Whether you use Ruby or PHP or Python or Go or Java or whatever.

It really doesn't matter that much. Use what you're comfortable with or what you can hire for if you're not gonna be the one building it yourself.

Shay NehmadShay Nehmad

So the the poster on Reddit was like, I'm a solo dev. When you're a solo developer, at least for me, using, Go does have a outsized benefit. Because when you're in a team, I think mistakes are a bit harder to go through the filter. Right? Someone reviews your code.

Someone is, like, add a test that you wouldn't can tell you, like, add a test or or this is wrong, and you wouldn't do it because you're on your own. Even if you're super disciplined in the really good dev, there's a big difference between the work of individuals and teams, I think. With the work of individuals being more high risk, high reward, there's a big chance it's never gonna get shipped or it's gonna be very bad or very, very good. Whereas the more people you add to the team, I'd like you know, this is a very big generalization. But to me, it feels like the more people you add to the team, the more sort of mediocre everything becomes.

Yeah. Right? Because everybody's good at anything else. You have more processes. You have more reviews. Things like that. When you're a solo developer, riding with, like, PHP on the server shipping, things like that Mhmm. Is a very good move fast and break things approach. Yeah. I think many solo developers choose that route.

And then you don't need CI, you don't need CD, you're just shipping from your laptop and whatever, you're good. And then it's a 100% about comfort. For me, Go would be super comfortable there, more than TypeScript. I I know it's more. I think the linter covers more. Like, I'm just used to it at this point. But if you're a solo developer, your personal, like, skill level at a specific language is very, very relevant, at least in my opinion.

Jonathan HallJonathan Hall

So I have a question for the audience if you wanna come talk about it on the, the Caprica Slack channel. When would you absolutely not use Go in your startup? What what circumstances would would make that, make Go a no go for you if you're if you're doing a startup? Or maybe it maybe that's been your situation. Come talk about it on the Slack channel.

Shay NehmadShay Nehmad

The the speed of iteration, again, is is the most important part, I think. There are some actually good insights here in, threads. Like, people suggesting specific tools and dealing with JSON correctly. There is one post here that I really, really liked, which is you spend way too much energy, like, analyzing which platform, which language, like, what's gonna be difficult, what's gonna be correct, does it have enterprise problems, is it does it have a great community? Someone posted that Golang isn't always great at getting getting them into an inspired zone because it's a bit mechanical and repetitive.

This is not a a language feature that we can point at, right, and say, oh, Go is more mechanical than Python. For me, it's the other way around. But I think it's a good mindset to keep, like, what inspires you to write really good code. I know that dealing with databases should be done with SQL, but for me, writing SQL is very, like, mechanical, like the person said. I'm, like, immediately back to 2012 when I learned SQL for the first time, my mind just closes off on, like, trying to write the quickest, SQL query I can and jump out.

I'm I'm, like, 0 creative.

Jonathan HallJonathan Hall

Interesting. Alright.

Shay NehmadShay Nehmad

So I don't know. That's interesting. It ends up being a just a dump startup after all that discussion. It's Uber for cats. Woo hoo. And Uber is in Go. So hey.

Jonathan HallJonathan Hall

It's not entirely Go, is it? I know they use Go.

Shay NehmadShay Nehmad

But

Jonathan HallJonathan Hall

they I know they use Go. Yeah. Alright. Well, we, had some good discussions. Let's, round out the episode with a lightning round, with some new projects to talk about.

Shay NehmadShay Nehmad

Lightning round. First up, do you know the loop var bug? If you don't remember it, that's great because it doesn't exist in Go anymore, and you don't have to worry about it. But, yep. There's a linter called copy loop var which was there and is you can still get it from, GoVet or Golangci lint and a member of our show, well, member of our show, member of our channel, at this point they're basically a co host with the amount of content they're writing in the, in the channel, Peter Aronoff submitted an issue about the copy loop var thing.

We didn't wanna get into the weeds. It's a very interesting feature versus bug situation. You might think it's a feature, someone else might think it's a bug. So there's a discussion there with some differing opinions, whether it's an overreach of the linter or not. If you care about this stuff at all, the link is in the show notes.

Jonathan HallJonathan Hall

Alright, I want to talk about a tool I use and I've actually submitted a pull request for. It's called PSQL wire. We talked about databases earlier in the show. PSQL wire is a library written in go that speaks the Postgres wire protocol. Most of it. So if you need to either speak to a Postgres, server directly without going through LibQ or something like that, or you want to implement your own, Postgres speaking server, you can go. This is the library for you. Check it out.

Shay NehmadShay Nehmad

You didn't end up using it though. Right?

Jonathan HallJonathan Hall

I didn't end up using it the way I was intending to but I have another project I will be using it for.

Shay NehmadShay Nehmad

Mentioning talking to databases, let's talk to the most immortal database of all, Excel. If you are a person with a computer, you probably know what Excel is, and if you're listening to the show, you probably know Go. So you can probably do 1+1 and figure out what ExcelICE is about but it's not gonna work because we forgot to put the equal sign before. So it's just writing 1+1 in the cell now. How annoying is that?

So there's excel eyes. It's a thing that lets you talk to, Excel spreadsheets in Go. 3 days ago, they released, a new version 2.v2.9.0 with a lot of features. Wow. Yeah. I was like surprised. A lot of bug fixes. It just looks very active with like 20, contributors for this specific version. I don't know. Maybe even more.

Maybe like 30. So it looks very active, has a lot of, functions and things you can do with, Excel. It also a breaking change. So if you're using it, you should probably figure out something about conditional formatting. So anyway, really cool.

I like, Excel. I think it's a it's a such a good tool. People often forget how many features and how many capabilities it has but it is pretty amazing. At the same breath, I wanna mention a really good, blog post I read that's called is Excel immortal? Not related to Go, just talking about Excel and sort of comparing it to a SaaS startup that does something, all these data analytics, Power BI and Tableau and blah blah blah blah blah blah.

And it starts with a very like fun question. Out of these 12 things, which one will no longer exist in 2075? It's like Chad GPT, Twitter, Facebook, Instagram, TikTok, Google search, iPhones, JPMorgan Chase, Notion, NFL, the American democracy, Tesla, the United States Dollar, Living Creatures of Any Kind.

Jonathan HallJonathan Hall

American Democracy? That one's easy. That doesn't even exist in 2024.

Shay NehmadShay Nehmad

And Microsoft Excel. So I don't know. It it's a very good, article. I suggest you read it just because it's interesting. Cool. And that does it for our show today. Stick around for a quick ad break. Like John mentioned at the beginning of the show, this show is supported by you. If you wanna support us in the most direct way, please subscribe to our Patreon as a member and give us $8 a month. This is a pretty expensive hobby.

We both, like, take about an hour, an hour and a half to do an episode. And that's after we've perfected it for, like, 2 years. And, we pay for editing. Hey, Filippo. Say hi to everyone.

You don't really have to say hi to everyone. Maybe you can put a funny sound effect here so people actually know you edit the episode. Or you can like like, I stopped my voice to sound stupid. That'll be fine. So supporting us that way, to help cover for the editing and, and, hosting fees, etcetera, is really nice. If you wanna talk to us, find the links to the Patreon, maybe the swag store, you can, grab a hoodie or a shirt or the you know, like, the amazing cup. Cupago.dev.

Jonathan HallJonathan Hall

The new cup with the black interior. Right?

Shay NehmadShay Nehmad

Yeah. That looks good. I don't have that one.

Jonathan HallJonathan Hall

It looks I don't know. Yeah. I wouldn't need to get one.

Shay NehmadShay Nehmad

Yep. Looks dope. Actually, for you, shipping is gonna be really cheap as well. But it doesn't matter because when you buy off our shop, shipping is included. Woo hoo. Well, woo hoo. I don't know. We decided that at the beginning because I didn't wanna mess with shipping and then some orders we lose money on it, like anyway, whatever. Whatever. Get the cups.

It's fine. All the links are there. We always say, like, this is how you spell us in the gopher slack and this is how you email us. All the links are capago.dev. Just find them there. You're technical.

Jonathan HallJonathan Hall

There you go.

Shay NehmadShay Nehmad

You're fine. Gonna do fine. Other than that, please leave a review on Spotify or Apple Podcasts or wherever you listen to your podcast. That would be greatly appreciated. We don't advertise to push this show, promote it in any way. It's just word-of-mouth. So any reviews you leave or if you send a link to a friend or a coworker, that would be great. That does it for us this week, and we'll see you all next week. Right?

Jonathan HallJonathan Hall

Program exited. Goodbye.

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