Stay up to date with the Go community in about 15 minutes per week
This show is supported by you, our listener. Stick around till after the news to learn some more about that. Unless you've already listened to us before, then you won't learn anything because we've said it a thousand times.
Shay Nehmad:But the we will say cool things about the potential meetups. So it's so worth listening.
Jonathan Hall:This is Cup of Go for Friday, 03/21/2025. Keep up to date with the important happenings in the Go community in about fifteen minutes or twenty minutes or so per week. I'm Jonathan Hall.
Shay Nehmad:And I'm Shay Nehmad.
Jonathan Hall:Shay, how are you settling into the new life in a new country?
Shay Nehmad:The table at the Airbnb has a thing that doesn't allow me to connect the microphone stand because it's just a tiny teeny tiny the frame is like a teeny tiny bit too wide, so I'm still recording with the earphones even though I'm looking at the table in front of me right now and it has my like unwrapped sound card and everything disconnected, but I'm missing this like one centimeter of of like the clamp to connect everything. So I'm recording with the AirPods. Sums up my experience, I think, so
Jonathan Hall:far. Okay.
Shay Nehmad:Fair enough. Close, but no cigar. Yeah. Probably in a month, I'll get a lot more settled in, looking for places right now, etcetera, etcetera. How are you settling into your new place?
Jonathan Hall:Yeah. We're at week number two, I think, at the new house. Finally have furniture in most of the house. I haven't set up my office yet. Really, I'm still on a flimsy plastic table on my laptop, but I'm getting there.
Jonathan Hall:I need to set up the home network and run things like that first.
Shay Nehmad:Well, if you have problems with this IPv6 zones, like, the while setting up that new network, I could recommend our last episode. So we have a lot of things to talk about in this show. Jonathan, how about you take us on the road with something we already discussed in the past, the stats package. So some mathy math.
Jonathan Hall:Yes. Yes. So we this proposal that we talked about three or four episodes ago has been accepted. The proposal is to add a new xexpstats package. So this isn't the standard library.
Jonathan Hall:It's sort of the the adjacent center library, the experimental center library. We're gonna add a number of functions to this package for general statistical purposes. So this is going be functions like mean, median, standard deviation. And when we talked about this on the show before, one comment we got on the Cup of Go Slack channel, when I do a mean calculation and a standard deviation calculation of some of these, I want them together. So having to do them as two separate functions as the original proposal sort of implies is maybe counterproductive because you don't want to have to loop over those values twice.
Jonathan Hall:You'll be happy to know that the final accepted proposal has a mean and standard deviation function that returns both while iterating over it only once.
Shay Nehmad:Oh, nice.
Jonathan Hall:Yeah. So keep in mind, this is still experimental. So it's not gonna be part of the official center library yet. Although typically these packages sort of meant to to come into the standard library in the future. So it may make it the standard library in a year
Shay Nehmad:or two. And once it grows into the standard library, or even if it doesn't, do you expect like existing projects? I mean, you know, developers are needed to run standard deviation. What have they done so far? Sounds like they've been sitting around and waiting for this proposal.
Jonathan Hall:Yeah. So they've just been not writing any code that needs means or standard deviations, obviously. Because it was impossible. No. They were just implementing this themselves.
Jonathan Hall:So this is just You
Shay Nehmad:you would implement it yourself? I would grab, like, GoMath package.
Jonathan Hall:Or or you could do that too.
Shay Nehmad:Like a third third party.
Jonathan Hall:Yeah. The thing is that this does it with generics, although it's if you're used to go generics, this will make sense. It uses the tilde float 64 type rather than any numerical type. So it only works on values that are at the core float 60 four's. But that's still an improvement because if you have some custom type that's built on float64, you'd have to write your own version of this function every time or do some conversion before you can call it.
Jonathan Hall:So this will be a slight improvement in that regard.
Shay Nehmad:I'm wondering who like, this seems relevant for web projects that aren't like math focused, but do need a tiny bit of that for, I don't know, caching or just displaying like a super simple dashboard. Because I can't imagine someone who like heavily uses, I don't know, GoNum, right? Like the the pure Go with some assembly math package that has floats and graphs and integrate and complex numbers and linear algebra and all that and being like, oh, all I used out of this huge package was just the mean function. It might be the case. Like I I'm I might be misreading the situation, but to me this feels like either you decide, okay, Go is a math language and let's put, you know, Mode and Kendall and Hellsinger math whatevers and deal with matrixes as a native type or not do it at all.
Shay Nehmad:So I guess the the reasoning behind it is there's a lot of usages for very normal mean and variance instead of deviation, and very little usage to all that, you know, extra math y stuff.
Jonathan Hall:I don't know that this is saying there's no usage or little usage for the other stuff, but I I think my my take on this is more that this is a starting point to see if we like it, if it serves a useful purpose, and then we can expand from there if it does.
Shay Nehmad:I think more math in the standard library is useful as workload like, native workloads that do, like, heavy math stuff are are more needed.
Jonathan Hall:You know, there's more AI and machine learning and things like that. Mhmm.
Shay Nehmad:Like, having people write papers in Go instead of Python would be better for everyone, especially the the poor undergrads trying to install Python on their university machines and crying.
Jonathan Hall:Oh, so sorry for you those guys.
Shay Nehmad:Yeah. I have a friend who like a mathematician friend, he's like researching super advanced stuff and he calls calls me. He's still in Israel time, so we have, like, a twenty four hour, you know, loop back until we can talk about this stuff. But he, sends me a message. I can't figure this out.
Shay Nehmad:Why am I, why am I wailing on these servers? I can't install Python. It's the wrong version. It can't find the packages. What's going on?
Jonathan Hall:You know what would solve that? If they would just rewrite Python in Go.
Shay Nehmad:Oh, rewriting in Go. That's a good idea according to that's a good segue. According to Andres Heisenberg, from Microsoft. If I'm not mistaken, the Python guy, the Python BDFL is also at Microsoft right now.
Jonathan Hall:He's just having a party. Don't know.
Shay Nehmad:Yeah. I I know he was there for a while. They're having a party of language designers. So the TypeScript programming language, question mark, I'm not even sure it's a programming language, it's just a type system bolted onto UI, like, driver framework for browsers, which for some reason the world decided should be the number one language. It's a if you don't do TypeScript, it's just a type system bolted onto JavaScript with a lot of features.
Shay Nehmad:And it's become very very common to the point where I think if you start a new JavaScript project, unless you have a very specific need, you'll probably start it in TypeScript as well. All the major frameworks support it, etcetera, etcetera, both for back end and front end. As projects written in these languages have grown, for example, Versus Code itself, which is a project by Microsoft, the TypeScript compiler, now compiler is a loaded term here, but I think they have decided on compiler and not transpiler just because of how many things it does. The TypeScript compiler has gotten pretty slow because it was written in TypeScript compared to native languages which compilers tend to be written in. As projects have grown and grown, these code bases sort of gotten out of control in the amount of time it takes them to compile, and some customers have told Microsoft that they they like run into basically, they run into limitations, memory limitations or runtime limitations, where the Versus Code code base, which is a million and a half lines of code, takes a minute and a half to compile, like seventy seven seconds.
Shay Nehmad:That's pretty bad. That's like a lot of time. Mhmm. The Go team are in the midst. They haven't finished it yet, but they already have a repo that's that's working and people can can use it.
Shay Nehmad:That's called TypeScript seven, which is TypeScript in Go. It's very much under active development, but you can try to build it and and use it and even run the so the TypeScript compiler has two interesting parts, the compiler and the language server. Right? The thing where if you open your your editor, gives you the language server protocol, which gives you all the features that you want as a developer, like go to definition and go to declaration and hover gives you like type, extra type information. All these features in your editor are powered by a thing called the LSP, the language server provider, or protocol, sorry, language server server protocol.
Shay Nehmad:So they have an implementation of that working and it's working very fast, but they don't have full feature parity yet. I think they're aiming towards middle of this year to get to a full feature parity. Other things they want is to get the memory footprint down because they haven't looked at that at all. The big title is that it's 10 times faster. Compiling Versus Code with the new TypeScript compiler that's written in Go takes seven seconds instead of seventy seven seconds, which is, yeah yeah, much much better.
Shay Nehmad:You know, in their mind, obviously, they're also looking forward, and Andres has lined up like the thing things like giving AIs who are generating TypeScript code immediate feedback on whether their code is actually type safe. Because I'm working with TypeScript. When you work with Go and LLMs, you almost never get things that don't, like, stupidly don't compile. Because there aren't a lot of patterns in the language where you could take incompatible types and, like, jam them, next to one another in the training set. I I've had the experience
Jonathan Hall:of I I certainly have a Copilot telling me to use variable names that don't exist occasionally or or or field names that don't exist. But but it's not a problem because my editor notices immediately and I can fix it.
Shay Nehmad:So a, you notice it immediately, but also I think the the feedback is is very is very fast, like you said. So your editor noticed immediately, you noticed it immediately. In TypeSuit it's a little more insidious. Can take my editor like two seconds to figure it out. But they're looking even like more forward than that and saying, if I have such a fast language server, maybe I can get the language server feedback directly into the LLM and like once it generates some code, immediately give it the feedback and if it doesn't add up, like you don't have to go through the loop of you, Jonathan, looking at the problem and then saying, Now, obviously they could do it just for Go development, but I think the main market is Python and TypeScript for them.
Shay Nehmad:So now the TypeScript is much faster. Know, you could give it directly to the LLM as well. You know, it's aligning with the general Microsoft vibe of AI everything. I don't know if you've used the, you know, the new Copilot, which is Office, but you literally have AIs on every single button. Yeah.
Shay Nehmad:It's something's going on there. But anyway, they're working on this compiler. It the editor is much faster. The server is much faster. This impacts developer experience for a very large share of developers, so I think it is a relatively big deal.
Shay Nehmad:And, yeah, TypeScript six is in JavaScript, and TypeScript seven is native.
Jonathan Hall:Yes. I wanted to ask about that. Isn't isn't the current version five point something?
Shay Nehmad:Yeah. So they're gonna release, six, which is going to be compatible with seven in terms of features because when you port all the things to go, something some behaviors will change, like deprecation. So if you don't wanna move forward at all, you can stay with TypeScript five, and the 5.9 is coming soon, and that's gonna be a JavaScript based codebase. Then they're gonna release version six, which is going to include some breaking changes and deprecations to align with the native codebase, with the Go codebase. So if you upgrade to six, upgrading to seven will be very easy.
Shay Nehmad:If you stay with five, upgrading to seven will be very hard. For sure, once seven is out and stable, you'll want to upgrade to seven because it's 10 times faster.
Jonathan Hall:So six will come out sooner than seven, but is expected to be equivalent or or what?
Shay Nehmad:Yeah. Behavior equivalent. It's just gonna be written in the JavaScript and not in TypeScript. And not in Go. Sorry.
Jonathan Hall:So, like, if if if this were Go where the language is defined by a spec, then six and seven would be the same version number?
Shay Nehmad:Exactly. Okay. The community response, or I guess the general this has been pretty big news, like, all the normal content creators like Fireshape and everybody's been talking about it. One of the big question was, why go? And immediately, once you open, for example, the I I opened their Discord, which I don't tend to do a lot.
Shay Nehmad:Mhmm. And, know, one of the question is, why was Go chosen over functional languages like Elixir or Haskell? There's a big post called why Go? Like, there's a huge discussion with tons of comments and replies, which was eventually locked and people you know, some comments are like, oh, was learning Rust, oops, I guess I should learn Go. Like, people are drawing really the wrong conclusions from this discussion.
Shay Nehmad:I think Go is a is what they're saying is there are multiple criterias for what we needed and currency support was one of them because, you know, they they wanted to parts that were, you know, you could paralyze, they wanted to paralyze. But the most important part, they want to keep everything as compatible as possible. And because Go is a very simple language and very similar to TypeScript, it's not like extremely different, like, I don't know, Clojure, right, or like Lisp based. It it looks same ish, which is, by the way, while a lot of people can start with JavaScript or Python, then rather easily move to Go, it doesn't require any fundamental rethinking. It has a garbage collector, right?
Shay Nehmad:You don't have to worry about memory allocation. So porting a huge code base is a lot easier to from TypeScript to Go than, say, from TypeScript to Rust. I think that's the main claim they they've had. I I wonder, and you probably have an opinion about this because you get into fights with, other people on LinkedIn all the time. Why is this such a touchy topic for so many people?
Shay Nehmad:Like, why aren't people just happy that it's 10 times faster and they're like, no, but why didn't you use language x? Like, why didn't you use Elixir? Why didn't you reduce Rust?
Jonathan Hall:Well, I I could speculate. I I think people get attached to language. So I mean, just flip it around a little bit. Suppose they had chosen say Rust, the Go community have taken that as a slight? Probably.
Jonathan Hall:Will they care in a year? I doubt It's kind of like anytime anybody says, hey, I like X. If you're on team X, then you feel good. And if you're on team Y, feel like, but why don't you like Y? Point is, at the end of the day, we're trying to be productive and run businesses.
Jonathan Hall:And so I just recently learned that Pandoc, have ever used Pandoc before?
Shay Nehmad:Yeah, of course.
Jonathan Hall:You know what language it's written in?
Shay Nehmad:No. What would you guess? Python.
Jonathan Hall:Python? No. I I would have guessed C or C plus plus because I've been using it for years.
Shay Nehmad:Oh, it's forever. Actually, it's pretty old. Yeah. Yeah. Yeah.
Shay Nehmad:Now that I think about it.
Jonathan Hall:Yeah. It's old, right? It's written in Haskell.
Shay Nehmad:Oh, cool.
Jonathan Hall:Yeah. That's cool. I mean, like, I I don't know Haskell. I don't I don't care. But like, wouldn't, I would have assumed it was something else.
Jonathan Hall:And I don't care what language it's in because I use it and it works. And I think it's going be the same thing with TypeScript in a year or two. Nobody's going to remember that they chose Go over Rust, over Elixir, over whatever. It says, it works fine. It's written in Go just like Docker is.
Jonathan Hall:Nobody cares that Docker isn't written in Rust or whatever. I mean, is there a matter of fighting about it in public? Because it works. Nobody really cares. It's a silly thing.
Jonathan Hall:Take it slightly per some people take it slightly personally when when you prefer x over y, but it doesn't really matter.
Shay Nehmad:Yeah. There is a video by the I think it's called fellow engineer or distinguished engineer. I don't know, the title that means engineer that's better than you at Microsoft. Ambraves. Where he goes into slightly more detail about why Go and what are the benefits, and also shows some demos.
Shay Nehmad:I think if this is if you work in TypeScript like in production like I do, you're just like sitting around and waiting for this to get released, the moment it's gonna get released you're gonna be very happy, that's it. If you're more involved, like you, for example, maintain some TypeScript libraries or maintain some compilers or just wanna get involved, this is like the time to get involved in this project because it's not yet feature complete, so there are still features to develop. And I assumed that there was a ton of bugs and a ton of optimizations that people could like put in. And I've seen seen a lot of people on Twitter like, hey, I contributed this like tiny change request that improved the TypeScript compiler performance by seven times because it finds like this specific part of the type checking, whatever. But I think right now it's very ripe for like low hanging fruits of improvements and and also just features that are to be developed.
Shay Nehmad:And it's not like an open source project by some guy. It's, like, supported by Microsoft. I'm pretty sure it is going to happen, and they they are going to see it through. So I'm I'm just very hyped about this project. Like, the impact on developer experience is gonna be great.
Shay Nehmad:Obviously, people are going to use JavaScript and TypeScript instead of, native languages for their projects, and it makes a lot of sense to do it in a lot of business contexts. So making the experience better there, I think it's better for for everyone other than the fact that it might allow companies to, you know, continue to maintain their TypeScript back end slightly longer once their products have, like, become successful instead of investing resources into actually making them native and then actually making them fat. Small price to pay.
Jonathan Hall:This won't affect runtime speed, right? Only compilation speed.
Shay Nehmad:Yeah. The you know what? It's I I wanna be careful. They want it to be equivalent. I think that they are going to there are going to be some breaking changes.
Shay Nehmad:So it's going to compile to, like, you know, slightly different code. There might be an impact on runtime performance that's unintended or, you know, if they found some slight improvements like they do in between compilers, but nothing like major. Because end of the day, it's still JavaScript running on the, you know, v eight engine. Like, it's not there's not gonna be huge difference in performance. However, I think once the compiler is in Go, it it might be easier to look at other parts of that are slow, including the runtime itself and maybe improving those.
Shay Nehmad:But the JavaScript runtime is so, like, difficult and and convoluted and has a lot. It it's not optimized for, like, performance in the same way that you and I are thinking about it, of, like, oh, I wonder how many rows this DP could ingest foreshadowing foreshadowing. So I I don't expect this to impact runtime performance too much, definitely not negatively. Maybe, you know, just because a lot of people are pouring through the code that comes out, and many of these people might be new to, you know, to this concept because they're coming from Go and not from JavaScript. They might come up with interesting idea.
Shay Nehmad:You know what I mean? But this shouldn't impact Runtime performance. It should be the same. Yeah. And it's it should come out this year.
Shay Nehmad:So go get involved. Awesome.
Jonathan Hall:So I don't know, Shai, if you saw this story that's been getting lots of attention on Reddit as 1,200 stars or likes or or upvotes, whatever they're called on Reddit.
Shay Nehmad:Yeah. I've seen it on r3dd1t. That's the site you're talking about. Right? Well, if people if people wanna see it later, they can find it on cupmirogo.dev, which is our site.
Shay Nehmad:Right. I got an email saying that's our site. That's our site. Right?
Jonathan Hall:It must be. So the whole the whole thing is, we talked about this actually a a few episodes ago, in episode 98, which incidentally was the episode before episode 100 due to an off by one error on our part.
Shay Nehmad:We're we're gonna we're gonna call that one as you know what? I think we might have missed one episode and then we rebroadcasted another one. So if you count, like, the pre tax episodes, then it's a hundred, but post tax it's 99.
Jonathan Hall:Yeah. Okay. That's a stretch, but we'll take it because we need to fix this off by one error. Anyway, the point is typo spotting, splice chain attacks, fun stuff. So there's been a whole slew of packages reported where people, nefarious actors have been trying to typosquat them, trying to make their fork of a project look legitimate, and then adding nasty code that runs bash scripts and stuff like that when you run it.
Shay Nehmad:Yeah. Just to clarify,
Jonathan Hall:not the code that runs bash not all code that run runs bash scripts is nefarious. It's fine to call OA system. Are you sure about that?
Shay Nehmad:Well, you know, I don't love it, but sometimes you need to do it. The problem is they're downloading like a a ransomware that encrypts all your files under documents, which is less nice.
Jonathan Hall:So, yeah. I don't know. It's a moral of story here. I guess be careful about your your imports. Verify when you pull in a new package that it's the one you want and not a fake copy.
Shay Nehmad:So how would you verify verify when you open a new Git when you open a GitHub page? What are you looking for to see that it's not a fake one?
Jonathan Hall:Well, I I typically look for things like this isn't specifically to vet fake forks, but I look for a number of stars, how many issues there are, how recently the issues have been, you know, are they getting responded to, things like that. But that's that's more just for like, is this a quality thing that's being updated and maintained?
Shay Nehmad:So so the craziest thing about this malicious fork from from Ariga is that they copied the GitHub project and then faked stars. Yeah. Like, they created a few accounts weeks ago and then filled it with stars. And now the repo is down, by the way, so good job everybody who reported it. So you can't really take a look at it.
Shay Nehmad:Seems like it's been happening. The same users have been doing it for other projects too, which is very concerning. It seems like it's not just a very specific attack. I don't know, like, number of stars is is is easily gameable. You can just create bot accounts and create stars.
Shay Nehmad:So it's sort of I don't know. It's like buying really good honey. You gotta know the beekeeper. Otherwise, they might just put syrup in your thing. You know what I mean?
Shay Nehmad:Like, I don't know. I know the Ariga guys because they came to get give a talk there from Tel Aviv. I met them in person. So if I would import something from Atlas and I wouldn't see Ariga in the URL, then like something might pop off in my brain. But I don't know, like, literally gotta just make sure that you're looking at the original fork.
Shay Nehmad:And GitHub certainly doesn't make it easy to understand if you're looking at the original fork or something or not.
Jonathan Hall:Yeah. Well, and then if you don't know the company and you're just like, I need a thing that does does x y z, and now here, here's four options. How do you choose one? And how do you make sure that the one you choose is legitimate and not not malicious? I I don't know the answer, honestly.
Shay Nehmad:So there are a few good answers. Right? One of them is set up Dependabot or Snyk or, like, any other
Jonathan Hall:Sure.
Shay Nehmad:Like, security thing that scans your vulnerabilities. But that comes with its own set of problems. A, you trust them to find it, and b, they they if you use I don't know. I haven't done it in Go in a while, but doing it for front end projects, could tear your hair out. Even you could tear out your hair.
Shay Nehmad:Jonathan, which I know it's very difficult. But you get so many yeah. You you would grow it out just to tear it out because you get so many false positives just spend all your day chasing.
Jonathan Hall:You know, I am I'm doing some front end work the last few weeks, and NPM is constantly telling me about vulnerabilities with no fixes available. Like, what what do I do with that?
Shay Nehmad:Mhmm. So the reason it's selling you is because they're if you are representing someone who has contractual obligation to look at these things and maybe mitigate them in a different way, you know, you could remove the library entirely or just look at the specific code and see if it's reachable or not. Right?
Jonathan Hall:Yeah. Right.
Shay Nehmad:Like, it might point you to a vulnerability in a function that you're not calling. So you could say, oops, I looked at it, but it's fine. Anyway, it's very Sisyphean to to worry about this stuff. And these attackers sure aren't making it easier. But it it was an interesting type of squatting attack we just saw.
Jonathan Hall:Yes.
Shay Nehmad:And and I assume they're not I assume they're only gonna get more sophisticated. But good on the Auriga guys for not just fixing their Hypo Squadding thing, but actually doing the investigation and looking at the X-ray users.
Jonathan Hall:That was cool. Yeah. Yeah. That was cool.
Shay Nehmad:One last thing on our docket for today is also a shout out for a past episode. I don't know which one that is, but the episode where we interviewed Matt Topol.
Jonathan Hall:Matt, welcome to the show. Would you tell us a little bit about who you are and what you do for Arrow, and then we'll talk about the project. Great to be here. As mentioned, Matt Topol. Currently work for Voltron Data, and my primarily just work on the Apache Arrow libraries in general.
Jonathan Hall:It's my day to day job now.
Speaker 3:I joined Voltron Data last year in part because I
Shay Nehmad:So, yeah, this was episode four a long time ago, which is probably why I didn't remember the episode number. But I guess he's the real Capago alumni at this point, if it's been with us for for a couple of years. So there's this really, if you're into data engineering and you're like the person at your company who's in charge of, oh, so the RocksDB has to go into Avro has to go into Kafka, but the Kafka is multi topic, so we have to invent a new lie a new way of logging blah blah blah. If you know what I just said, you know who you are. There's a really, fun blog post on the, Aero Apache, blog list by Luis Alaine.
Shay Nehmad:I I hope I'm saying that right. I don't actually know what these letters mean. Why are why are they why are there two dots above the I? What does that mean? No idea.
Shay Nehmad:Like, whom not? So there's a blog post about how the author have had this, like, very convoluted data pipeline with you mentioned, Jonathan, that you you, like, see these words and you just glaze over all the data engineering terms.
Jonathan Hall:I feel like my my mother watching Star Trek, you know.
Shay Nehmad:She does not, like, fully getting it. Yeah. That's fair. There are just so many words and and protocols and names, but things like Avro, Parquet, Kafka, Arrow, it it gets a bit overwhelming. Overall, the blog post is about how the author wrote a library, which is aptly named Quackfka, like quacking in Kafka.
Jonathan Hall:Quackfka. Okay.
Shay Nehmad:Yeah. It's a it's a really good name, which allows you to stream things from Kafka into DuckDB using generics, using protobuf, which auto generates, an arrow schema. And the reason you'd want an arrow schema is because arrow is commoner and not row based, is better for analytics. I wouldn't suggest actually reading the article if you're into it because I enjoyed it very much, but I have a sense that if the sentence I just said bored you, you're not gonna enjoy listening to me trying to explain it. The underlying thing is they used Go to do it and it's faster.
Shay Nehmad:So, you know, what TypeScript learned, also they learned.
Jonathan Hall:So I read the article and I I was entertained by it, I didn't understand most of it. I was entertained because it's so full of memes and jokes. Like, it it felt a little bit like reading the script of a stand up routine
Shay Nehmad:Yeah.
Jonathan Hall:About a topic that I've never you know, you know, watching, you know, I don't know, My Big Fat Greek Wedding as a non Greek and not having any idea what the Greek culture references are, but still thinking it's funny. For sure.
Shay Nehmad:I overall, they try to insert thing into a DB for analytics. And for analytics, you wanna do Kulminar, which is Arrow. And because of all the Go implementation and Matt's Topol's specific contributions on suggesting to use the ADBC, which is, you know, one of the things he's been working on as part of the maintainers of Go, you know, the Go and Arrow. It's just an API that allows you to insert tons of data into the DB really fast, which was the bottleneck for this blog poster. Like, they wanted to shove as many rows into the DB they could.
Shay Nehmad:And it it solved, like, other interesting data engineering problems, like the small rows problem, etcetera etcetera. So if it sounds interesting, we recommend you read it. We're not gonna go into it much more. Both of us are not super experts on data engineering. So You
Jonathan Hall:know, every time you say data engineering, I think of Nguyen Tsung.
Shay Nehmad:You think of what?
Jonathan Hall:He's the guy who invented data in Star Trek. If you have to explain the joke, it's not funny.
Shay Nehmad:Oh, no. I don't I I'm not a Star Trek. I'm not a Trekkie. I'm just like your mom, I guess. Cool.
Shay Nehmad:Let's move on to a quick ad break. Welcome to our ad break. Let's do it quick this time. If you want to support the show, there's a really easy way to do it, you can give us money. We use Patreon for that.
Shay Nehmad:One important note, if you use Apple, don't use Apple for Patreon because the Apple takes a cut, just use the web version. I don't think I think I went over our entire list and I haven't seen anyone doing that right now, so good on everybody. But if this is your week where you're like, oh, Jonathan and Shy and all their hijinks, I have to contribute $8 a month so they can continue editing their show. Trust me, you want us to continue editing the show because the amount of bad takes left on the editing room floor is pretty big and you want us to keep hosting the episode so you can download them, etcetera etcetera, you can pay us $8 per month using Patreon and we'd really appreciate it. Thank you to all our beautiful current Patreoners, Patreoners, patrons for doing that.
Jonathan Hall:Yeah. Patrons. There's the word.
Shay Nehmad:Yeah. If you wanna reach us, for example, find the Patreon link or our Swag Store link. You can go to cupogo.dev. Recently, there have been some shipping issues if you've been impacted by those. Moshe, I'm talking about you, don't worry, we're on it.
Shay Nehmad:We're trying to figure it out. You can go to cupogo.dev. If you wanna talk to us, you can go to cup o go on the Gopher Slack, or you can email us at news at cupogo. Dev. That is news at cupogo.
Shay Nehmad:Dev. Another way to support the show which we really appreciate is for you to leave a review on Spotify or Apple Podcasts or, Pocket Casts or just wherever you listen to this podcast right now, to sort of help us climb the charts. The numbers have been very good to us recently. I think people like the show. They might have listened to, you know, the episode with, Lane and been like, oh, they these guys actually know what they're talking about.
Shay Nehmad:And now that I'm back on, maybe the the the number is gonna go down again. But, people like the show. They seem to like the show. They seem to enjoy it. We've recently crossed 640 subscribers, which is a weird number because what do podcast subscribers even mean?
Jonathan Hall:640 ought to be enough for anyone though.
Shay Nehmad:So we really appreciate all of all of y'all for listening, and if you can share the show with a friend or a colleague or rate us on whatever podcasting thing you're you're listening to, we'd really appreciate it. One final thing for this ad break is that we are planning, to do some, to meet you in the in the meet space as opposed to the virtual space. So you had in mind KubeCon.
Jonathan Hall:Right? Yeah. So it turns out this year, KubeCon will be in Atlanta, which is just down the street from where I'm now living. So if you're coming to KubeCon and want to meet up, I don't know if I'm going go to the conference, haven't decided yet. Depends on what's happening in my life at that time, but I'll certainly be in the area.
Jonathan Hall:So we could certainly meet up in the evening sometime during KubeCon and share some beers or coffees or whatever. So if you're coming to KubeCon, give give me a shout out. It's November. There's still plenty of time to make those plans. More immediately, it sounds like you might be meeting some of our, lovely listeners.
Shay Nehmad:Yeah. So there's a group called San Francisco and the Gopher Slack. And since I told people, about the fact that I moved to, the Bay Area, Andy and Akshay have narrowed it down to the twenty eighth, '20 eighth of May. So I need to check if I have something there. Apparently, if not, we'll we'll do a meetup, probably in at my office, like a Go meetup.
Shay Nehmad:So we'll start arranging it. We will we might use Eventbrite. We might just do a normal thing. But if you're in the Bay Area and you wanna meet up with me and Andy and Akshay and some other gophers, hopefully hopefully, it sounds like the three of us, we could do it. Last time we did a a live meetup, it was in Amsterdam, and you couldn't make it, Jonathan, which was very unfortunate.
Jonathan Hall:It was very strange too, but yes.
Shay Nehmad:But we did a live episode, live episode recording, so we could definitely do that again because that was a lot of fun. But probably we'll do a more conservative, just like meet up, a couple of talks, maybe one of the talks will be the live episode. So, yeah, mark it down in your calendars tentatively and join the San Francisco, channel on the Go For Snack, if that's relevant. And reach out, like, if there'll be a lot of people, maybe you could even find a sponsor and do the proper meet up thing.
Jonathan Hall:Since you mentioned that, I I actually looked and there's actually an Atlanta channel on the same Slack. So I'm now a member of that. I wasn't before.
Shay Nehmad:That's good. Reach out to your Go communities. You know what? If there's one action items, you know, f the Patreon, f the Swag store, go join your local Gopher group. If there isn't a meetup on the calendar, start one.
Shay Nehmad:You can do it you can do it the the Jonathan and Shy meetup. Alright. That's enough for the ad break.
Jonathan Hall:Yes. Let's move on to a quick lightning round, and then we'll wrap up the show.
Shay Nehmad:Lightning round. My first thing for the lightning round. How are your A
Jonathan Hall:little bit tired.
Shay Nehmad:Right? How would you feel about me removing support for them?
Jonathan Hall:I'm not sure how I feel about that. Let me go I don't know. I can't think of anything clever to say that.
Shay Nehmad:Maybe well, maybe if you just put him out the window, then we'll remove support for Windows slash R.
Jonathan Hall:That's just about as lame as what I thought I'd do.
Shay Nehmad:So I I wasn't even aware that Windows can run on ARM. Although, that does make sense because, like, you know, every combination of every architecture, every operating system, someone has to run. There are a lot of people on this planet. Windows doesn't support a thirty two thirty two bit ARM anymore, as Microsoft has noted. Very Microsoft heavy episode, this, this one.
Jonathan Hall:Mhmm.
Shay Nehmad:And, you know, they maintain the person who maintains the GoWindows port is saying the the ARM port is really really difficult to maintain and they propose to totally remove it. There have been some people in the in the comments very nicely, like, saying, hey, I do use it and I would love keeping it alive, but the Go's team was like, hey, you're a very niche community. You keep it alive yourselves. Good luck. We're not doing it anymore.
Jonathan Hall:So I have two quick things I wanna talk about. They're actually closely related projects. The first one is one I've been using for several years, and I recently became the co maintainer of it. The original maintainer moved on to bigger and better things. So it's a package originally developed by Datadog, but now maintained by me and a guy in Japan, I think.
Jonathan Hall:It's called Go TXTB, Go TXTB. What it does is it lets you, if you're running tests against a database, MySQL, Postgres, SQLite, probably any database really. It starts a transaction, runs your tests and then rolls back the transaction. So any writes you do during the test or deletes or whatever aren't persistent. Of course, that does preclude running tests that use transactions or make multiple connections, etcetera, etcetera.
Jonathan Hall:There are some limitations, but for many, many unit tests, it can be a nice way to make your tests faster. So check that out. And then the related project, I'm gonna just talk about at the same time here before I let you talk.
Shay Nehmad:And just because we're on the typo squatting episode, I really wanna point out that when you say Datadog, notice the small break there, it's a hyphen. It's not actually Datadog, the analytics company, it's Datadog, which seems to be different. We're speculatively thinking it's related because it seems related, but it's not the official Datadog org on GitHub, is without a dash. Exactly. So take that into consideration.
Shay Nehmad:I don't know how much malicious code you've introduced since you've become co maintainer.
Jonathan Hall:You'll and and you won't know. I'm gonna keep that Yeah. Well well
Shay Nehmad:My code is obfuscated on the best days.
Jonathan Hall:The other project I wanna mention is actually quite related and one I actually use more often. It solves a similar problem. It's called pgtestdb. This is under github.com/pgtestdb. It solves the exact same problem, but in a more robust way if you're using Postgres.
Jonathan Hall:So what it does is it runs all your migration scripts, then it creates a new database from your Postgres database. Postgres has this nice capability to like cloned databases, which is almost instantaneous, this is popping on the right thing. And then run your test against that. This is better than transactions for a number of reasons. One, you can make multiple connections to the same database without, which you can't do with transactions and it's faster and it lets you do full support for transactions.
Jonathan Hall:So if you have a test that needs to run a transaction, maybe commit it, run another transaction, etcetera, etcetera, you can do all that with this. And then it just throws that database away when your tests exit. So two packages I want to mention there to help make your database tests more self contained. And I think that's all I have for today's talking round.
Shay Nehmad:Very, very cool. I basically had to reimplement this for my current stack because I guess languages that are not in Go can't have fast things. But I'm just looking at this long English. I wish I could use it. Well, seriously, it's pretty powerful, man.
Shay Nehmad:Alright. That's all we have for you this week. Lots of things left in the backlog for next week. Again, if you can connect us to anybody on the TypeScript migration project that's actually working on it from Microsoft, if you know anyone, we would really appreciate it. We would wanna interview them.
Shay Nehmad:Also, you have any interesting interviewees in general, we're both super swamped right now, which is why we can't schedule interviews. But if someone maybe in The US time zone, that will be even better, wants to come on the show, we'd really appreciate it. This episode came out a bit late, and we're moving our normal recording times to Friday as well. So I think in general, the episodes are gonna come out like during the weekend or maybe even start of the week from starting from now. Yeah, I think that's it.
Shay Nehmad:Program exited. Goodbye. Program exited. Goodbye.