
🌉 Live from SF w/ Josh Bleecher Snyder: Divide and Slog, Sponsored by Antithesis and Ardan Labs
About this episode
Sponsored by Antithesis and Ardan Labs!
This episode was recorded live in Antithesis's offices in San Francisco, as part of the GoSF meetups inÂ
- math/big: add Int.Divide method with rounding modes
- Delete BZR support
- Building slogbox
- Lightning Round:
Check out past episodes, swag store, and Patreon link in cupogo.dev!
★ Support this podcast on Patreon ★Get every episode summarized
Each time Cup o' Go publishes, we email you a written briefing from the transcript — the topics, who appeared, and any specific claims, with the ad reads skipped.
Email me new episodesFree for 3 shows. No card needed.
Hosts & guests
Transcript ready
402 searchable segments. Every word is indexed and playable.
Full transcript
Cup o' Go — 🌉 Live from SF w/ Josh Bleecher Snyder: Divide and Slog, Sponsored by Antithesis and Ardan Labs. Machine-transcribed; use the interactive transcript above to jump the player to any line.
This show is supported by you. Stick around till the ad break to hear more about that. This is Kapa Go for March 26th, 2026. Keep out to date with the important happenings in the Go community in about 20 minutes per week. I'm Shaina Khmad. I am Josh Bleakersniter. And we are live here at the beautiful and thesesis offices. We will hear more from beautiful sponsors in the ad break pretty soon. Wait a minute, you're not Jonathan. But I am bald. Long, long, long time listeners of the show may remember Josh from his appearance on the August 11th episode, 2023, where we interviewed you for the first time. That's the first time I met you. My name is Josh Bleakersniter. I have spent an inordinate amount of my life hacking on the Go compiler tool chain runtime and being generally involved in the project.
I started using Go around Go12, started contributing actively around Go14 and sort of retired a couple of cycles ago. Since then, I have moved to the Bay Area where you are also located and now we're here in the same meat space, which is really cool. It's very exciting and also it must have been really painful if you still remember the date. I'm sorry. No, I just looked it up and also in my nightmares. So we have a few two proposals to dig into and then one short block post to not dig into too much. In the live episode, this is part of the GoSF meetup and it's getting late. People are glazed over. So we're going to try and do it kind of fast. You wanted to share a proposal about math. More precisely, math big. It is probably not something that any of the listeners will actually need to use, but it's exciting. So math big is for doing things with very large integers, very large floats, etc., cryptography, etc.,
and the proposal is to add a new int.divide. So if you're dividing large integers and in particular, you're doing, you want to do a remainder and divisor. Sounds obvious. Now there's this question, which is, well, for the remainder, do I want the low remainder, like the floor or the high remainder, like the ceiling? Effectively, I want a rounding mode. So let's talk about rounding modes for just a second. We all learn how to round, right? 4.5 becomes 5, 4.4999 becomes 4. But there's multiple different rounding modes. How comes there are multiple rounding modes? Sounds to me like you just defined it. If it's closer to the higher number, you go to the higher number. If it's closer to the lower number, you go to the lower number. What do you mean there are modes? Well, you need a tiebreaker. If it's exactly at 4.5, you could either go to 4 or to 5. Right, oh shit, right, he says. So there are some mic. There are some options. When there's a tiebreaker, you could go up towards positive infinity.
You could go down towards negative infinity or you could do my favorite, which is you could round towards the nearest even number. And the reason you might want that is because it won't mess up any of your statistical distributions. So why stop at 1? Int.divide gives you all of the rounding modes to choose from. And, Philippa, we can cut this out for you guys too long. But I'm going to tell you a really short story about a bug that I filed very early in go days that I was very proud of. There was a bug in the arm assembly of profiling. And it was triggered by doing divisions. And I sent a bug. It was like, here's how you do lots of divides. You do a giant Int.divide. And so I took the continued fraction of pi. And I took a really, really big one. And I read Int.divide, big divided by small. And it came out with three, obviously. And that's the definition of pi. Because it's an integer divide. But it triggered the bug beautifully. Okay, I better get off camera. No camera. This is just a microphone. So this is a proposal.
It's accepted. It's going to be in 127. Or is it like still up for discussion? Sounds like just a math thing. Is there any discussion on the API? Do you know what's the state? Yes. So I believe it has been accepted. The API coming out of the proposal process looks nothing like the API going in. Which is a sign the proposal process is doing its job right. Because after a bunch of refinement, we have a much richer and more powerful and more interesting API. Cool. So hopefully we'll see it in 127. But since it's not out yet, jump on the proposal, which is going to be in the show notes. The show notes can be found on our beautiful website. Capago.dev. This is an audio show. So this doesn't carry. But I'm actually pointing at a huge screen in front of all the people right now. So yeah. Another proposal made it to the meeting minutes. I just want to point it out because it's very esoteric. And I like these sorts of things. Who here uses or uses Git? Okay. Keep your hand up if you also used SVN. I'm sort of aging myself, TFS.
Also, just email patches. All right. All right. We did the new cool kids uses Jiu-Jitsu. And finally, Bazaar. Oh. Really? I work there. Oh, you know what? That's fair. It's Simon Law, friend of the show. And lurker in the channel, I assume. But you don't post a ton. So apparently there's another version control system called Bazaar. Which is kind of a band and where nobody's touched it since many years. There's actually an issue about dropping support for Bazaar and GoCMD, which is unanimously accepted by everyone. It was like, oh, yeah, that thing. We can delete it. I actually didn't even know about it. I learned it from the issue. And there is one really tiny detail that I liked, where you can look at the proposal and they justify it with numbers. So Roscagos here into the numbers get 30 millions. And then Bazaar, 46.
And SVN, which is my personal favorite, because that's the first version control system I learned. One. Very, very, very sad. And then in the upcoming, in the comment right next to it, to answer the obvious, this is a, I'm quoting a Russ, to answer the obvious questions that everyone will ask. The lone subversion fetch is SVN.reusedsvn.com, slash set, SVN. It's like giving the URL of who pulled it from SVN. So yeah, 127 is going to drop Bazaar support. If this is a breaking change for you, it's a U problem. Any comments about that? How are you preparing for this deprecation? I'm upgrading the fossil. Fair, fair, fair. So yeah, the link is in the show notes. This is actually not, I don't, it's not accepted yet. It is the final likely accept stage. So you know, it's like this American wedding scene where it's like speak now or forever hold your peace. This is actually your moment to save it if it's actually important for you. One final thing we wanted to briefly mention,
like a few minutes, is a blog post that I found very, very interesting. It's about slog box. We have s-log, which is relatively new. So what is s-log? Short for structured logging or also slog, which is what logging is. And we also have the flight recorder, which is actually super pretty new. It's from 125. The flight recorder, it's a runtime, like a standard library, runtime slash a trace thing. It's like a black box of an airplane. It stores like the last bad things that happened. So if the program crashes, you have the flight recorder, which is a super genius idea. And I really love that they introduced it into their language. It's super pragmatic. And you keep just the recent stuff that happened in memory. And then when the process crashes or your server dies or whatever you have that buffer, if you stored it somewhere that's persistent, you can look at the black box flight logs and realize what happened before the plane crashed. Lots of YouTube videos about actual black box recordings,
which are super harrowing and I don't commit for anybody. But just looking at a few logs is probably fine. And why are we talking about slog box and flight recorder? What is this blog post proposing by Alex Rios? So flight recorder gives you a bunch of automated tracing from inside the runtime, which is useful to know what's been happening, what function calls etc. But sometimes you want more curated sort of user detailed things. Like I put these log or my agent, put these logs in here for a reason, it tells me the useful things. I would really like to have that as well, not just the internal traces. Yeah, so this blog post goes into how Alex built this recorder interface, basically similar concept to the flight recorder for your own important user logs, in case your process crashes, goes really deep into how to implement it correctly, including things like ring buffers, which is a cool thing, like whenever you can bring up a cool algorithms and data structures outside of a job interview that's always fun,
storing log records instead of strings, because it's structured logging, also details about when are you resolving values, because when you were recording something in a box, you wanted to be immutable, so you don't want to wait until you try to read it, because then it's too late, so make sure you don't store pointers or unresolved values or things like that. Lots of details. You had some issues with this blog post though, so I'll just say in the concept level, I love this idea, but under the hood you had some corals? Yeah, first of all, if you can't keep up with all of your logs, you're writing too many logs, so why are we only saving the last N? Also, you really, once your system goes down, you might not have the opportunity to get your logs anymore. Similar failure mode to the black box recorder, but I learned this from somebody who ran an ISP and they were like, look, when something goes wrong, the customer is going to walk up and unplug their modem within the next 30 seconds. You have 30 seconds to get your logs off. Go quick. And then in the details, they sort of dismissed using channels for communication
on the grounds that requires a coordination between the channels. They seem to have missed that you can use buffered channels where you can drop things off and then keep going very quickly, and instead they recommend a read-write new text. So this is my PSA. I say it to everyone who will listen. Sync.RW new text is extremely rarely the right answer. It is way more expensive than a sync. new text, so you should usually just start with that. And if you really are so worried about read contention, you should probably be using atomic.pointer with a separate mutex and using copy on right. And so the use case for sync.RW new text is extremely narrow and I don't think this hits it. So there's lots of neat things to learn from this, but please don't take away to use read-write new text. Cool. And always like when I bring up these blog poses in the show, I dive into the blog itself, because people writing on the internet using their actual typing and sharing code is such a treasured thing. And yeah, this is a really cool blog. It's all about go. There's a deep dive into the green tea garbage collector
if you're into that. Just like five ways to look at a go-rty and it's just a very cool, cool blog, including all of this person's social links. Again, of course, the links can be found in the show notes. And I think it's time for a quick ad break and call our beautiful sponsors to this week. Like I mentioned at the top of the show, this show is supported by you. If you'd like to support the show, the best way to do it is to financially support us to Patreon. This week we have two beautiful new patrons, Corbin Staben. Thank you for subscribing. And another one was going to come to the mic right now to tell us about this week's sponsor. This is a live episode. This was all too similar to the previous one. Listeners is going to think it's edited, but it's not. It was real. So this week is sponsored.
We're hosted in this beautiful space and we'll hear more about that in just a second. If you want to reach us, find the Patreon link, the store link where you can find Shwag or the Slack channel where you can talk to other listeners. You can find everything at kappa.dev. That is kappa.dev. Other than supporting the show financially, the best way to support the show is just to share it with other people. So the people here in this room, you're like, oh, I listened to this podcast. Here's this link. We don't pay to advertise and we don't plan to do it ever. So the only way we spread the show is from like word of mouth. So your support means a lot to us. We actually did some deep dive into the stats recently and our show is doing really, really well. We haven't done anything different. So I don't know what's happening, but we really appreciate it. And without further ado, our sponsor. We're super happy to have a cup of go at Antithesis this week. We make a platform for ensuring that your code works correctly, even in situations that you did not anticipate.
We do that by actually running your whole multi-container system in a special virtual machine, injecting realistic faults, and then actively looking for bugs. And then making every bug we find perfectly replayable. So if you're using agents to build mission critical software, check us out at antithesis.com. I'll say, in addition, that actually has been a really good partner in the GoSF meetup scene and has been really good at helping us organize this and generally a really cool guy. I didn't have my own and start up going on right now. I would really consider this offer. And I have to say, that's a flight recorder. Other than that, we also want to thank Ardaan Labs who have sponsored this week's sort of meeting. They don't know. They're also recording the episode. They're just getting a shout out for free. But they have refilled in the GoSF meetup. They're ultimate go bundle. And I have a lot of friends in Ardaan, Bill Candy, which was on the show. Mickey and a lot of other people.
They are a really good bunch. So thanks Ardaan for helping with the sponsorship, with the sponsorship as well. Time for the Lightning round. Lightning round. The Lightning round is just a short part where we give you a bunch of links, try to spend just a few seconds on them for the things that we wanted to make into the backlog but just didn't have time. So my thing is, JetBrains, if you use GoLand, they have a link to a survey. I have a few people that still code in IDEs, like it's 20, 25 in my office. And they use JetBrains. I don't. I actually moved to Zed if I'm not using them. But I think the GoLand team, like the JetBrains team, they're actually a really good bunch and they're doing a lot of good work, especially in the go space. So if you are a JetBrains user, go check out that surveilling. This is not sponsored or anything. I just sort of appreciate dev tools and whatever.
So it's surveys.gerzmain.com slash something. You're going to find it in the assurance. What's your item? My item is 2E.Studio. It's been the year of the Linux laptop, by which I mean 2Es. And they're delightful. And also, we have great tools in the GoEcosystem for building them and also still has a lot of work to build them. So if you wanted to tinker around and have a Figma-style experience, try making a 2E graphically, 2E.Studio. As you hooked up. And they actually allowed to export code, like Go Bubblety code, which is pretty cool. Actually, in this meetup, we saw just a second ago, a really cool 2E happening with Brian's shared with us. I wouldn't be able to build it, but maybe I'll be able to Figma at least in 2E.Studio. And that's the show. Thanks, Josh, for co-hosting with me this week. Thanks, Shy, for letting me near the microphone again. And that's it. Program Exited. Goodbye. Thank you. Thank you.
More episodes
More from Cup o' Go

Go releases and events from EMEA and around the world
Cup o' Go

Everything You Always Wanted to Know About Go 1.27 But Were Afraid to Ask
Cup o' Go

AI-pilled Go - Live from San Francisco with James Heller, and interviewing with...
Cup o' Go

A string of new releases, plus an interview with the creators of Gaal
Cup o' Go