Stay up to date with the Go community in about 15 minutes per week
The show is supported by you, our listener. Stick around to left for the news to hear a tiny, tiny bit more about that. This is Cup o' Go for Friday, 05/01/2026. Keep up to date with the important happenings in the Go community in about twenty minutes per week, maybe ten today. I don't know.
Jonathan Hall:I'm Jonathan Hall.
Shay Nehmad:I'm Shay Nehmad.
Jonathan Hall:Happy May Day.
Shay Nehmad:Yeah. International Workers Day. Uh-huh. Fight the power. Seize the means of compilation,
Jonathan Hall:etcetera. Let's talk about some Go news.
Shay Nehmad:Yeah. We have a very interesting interview coming up for y'all with Tomasz about, like, the nature of vibe coding and his new cool open source project and whatever. We actually just finished recording it, like, few minutes ago, and I just wanna wholeheartedly recommend you stick around for that. But we do have some goonies to get through.
Jonathan Hall:It is critical that you stick around.
Shay Nehmad:It is critical that you stick around.
Jonathan Hall:First up, have you ever heard of Kin OpenAPI, Shay?
Shay Nehmad:I have, just as an alternative to the correct OpenAPI library, lib OpenAPI. Why? Why are you asking?
Jonathan Hall:Because they support OpenAPI 3.1 now.
Shay Nehmad:Oh, you know who else supports OpenAPI 3.1 now?
Jonathan Hall:Python?
Shay Nehmad:Ugh. Alright. Explain. Please explain.
Jonathan Hall:So OpenAPI 3.1 is, of course, an improvement over OpenAPI three. I don't know the technical details. I know the last time I tried to use OpenAPI, I wasn't able to use 3.1 because the Go tools I wanted to use didn't support it yet, but now it does, or at least Kin OpenAPI does. But as you've already alluded to, that's not the only option in the Go community for OpenAPI. Why would we consider others?
Shay Nehmad:I guess the reason is because OpenAPI is not part of the standard library. So, you know, alternatives can arise, which is good, I guess, in competition and whatever. Although parsing OpenAPI files is such a big such it's so much work. I sort of hate seeing so many people do the same work. But, you know, there are differences in implementation and, like, design and whatever.
Shay Nehmad:I guess that's, that's the reason. You know, it's not standard library, so there can be alternatives. Right?
Jonathan Hall:So which which is the correct one in your view?
Shay Nehmad:I don't I don't mind saying it. We had both people from both, camps on the on the show.
Jonathan Hall:Yes. We had.
Shay Nehmad:We had, Quobix of Princess Beef, who's the main developer behind Lib OpenAPI.
Tomasz Tomcyk:Hello, everyone. My name is Quobix, and I'm the founder of a company called Princess Beef Heavy Industries or p b three three f for short. It's actually it's shorter when you say it, you know, versus typing out.
Shay Nehmad:And, of course, we had, Jamie Tanna who's working on is a long term friend of the show. He came on a few times during the live episode as well. That was pretty dope. And he is working on, among, like, many things, OpenAPI cogen, which uses Kin OpenAPI. I'm a senior software engineer at Elastic.
Shay Nehmad:I work in our engineering productivity team, and I have been involved in GoSoft for about two and a bit years. When I joined Deliveroo, I joined into a team working on Go. And since then, I've just, like, fallen in love with the language, don't want to use anything else. So, you know, we I welcome all in this house, but I am particularly partial to Lib OpenAPI and the Princess Beef suite of tools. They're like daily drivers for me, and they just work really well.
Shay Nehmad:So I don't know. And they're very recently they have, like, a lot of releases, like, working on this all the time. Dave is is just yesterday released, you know, a small version. To me, that that's a good indicator of health. Although, you know, Kin is also obviously actively developed.
Shay Nehmad:They're both sort of actively developed. I guess you can pick your poison. Kin is slightly more popular. I don't know if that's a good metric or not. Cool.
Shay Nehmad:Well, what else? There's a new git release.
Jonathan Hall:Is git written in Go now? Why are we talking about git?
Shay Nehmad:So we're talking about git for a few reasons, but I assume you use it. Like you type the git command every now
Jonathan Hall:and That's true. Do now that I think about it, I do use git occasionally.
Shay Nehmad:This new release has, just a couple of new keywords that I found interesting. There's git history reword, if you just want to edit the commit message, which is nice. Git history split, if you wanna split a commit, which is nice. Config based hooks. So I don't know if you use Preak commit hooks a lot.
Shay Nehmad:I know I do in every single project. Now it's like sort of built into Git, although I'm gonna give it a couple of versions to settle before I move, because I've used Recommend, like, for years and years and years.
Jonathan Hall:Mhmm.
Shay Nehmad:The reason we're talking about it is because there's, of course, the Go Git project. And I was interested, oh, with all these new features, how is Go Git, like, keeping up? Because, you know, Git is such a big project, how do you maintain it? And I was very interested to see the direction that Go Git was taking. So let me ask you first.
Shay Nehmad:Do you know, like, of Go Git?
Jonathan Hall:I do. I'm using it in a project.
Shay Nehmad:What are you using it for?
Jonathan Hall:To interact with Git without Thank you. Shouting out to the to the you know, without invoking shell commands. So I use it to to clone and to to create commits and to push and stuff like that.
Shay Nehmad:It is interesting to see the direction this project is going. So other than the latest release, which was like a couple of weeks ago, they're working on a big v six release. And when I looked at, like, the plans for that release, I was very surprised at the amount of work that went into it until I looked into the developers behind it. Have you heard of Entire? Entire.io?
Shay Nehmad:So it's the GitHub CEO, former CEO, is doing like an agentic development thing. They have 60,000,000 seed round for, I don't know. I actually tried using it and didn't work like when they just came out with it. Maybe now it's better. But it's like view the entire history of all your agentic flows, whatever.
Shay Nehmad:And it heavily, heavily, heavily relies on Git just in terms of implementation. Seems like they sort of hired the Go Git maintainer full time or something like that. And the v six release, which includes a ton of reliability fixes, some cleanups, making sure that the git features are actually added, like git reset and, you know, auto CRLF and linked work tree and all these, features that are very uniquely positioned and partial clones, all these features that are very uniquely positioned to help entire .io are going into this v six release, which is really, really cool. Like, I'm I'm it may sound like I'm worried about something, but I'm not. It's still a community open source project, but now there's a strong commercial user behind it, which is prioritizing work that is very, very relevant.
Shay Nehmad:So I I thought that was very, very cool and sort of a shift in a in a relatively big Go project. Like, I've used GoGet a few times in in the past. Like, a lot of people know this library. And if you ever do, like, development tooling, internal or otherwise, this might impact you as well. And honestly, mostly positively, so very cool.
Shay Nehmad:The v six, version is gonna be breaking though, so it it might take, it it might be painful to upgrade, but I don't know how breaking it can be maybe if you just use, like, very edge case y project sort of features.
Jonathan Hall:Alright. Pause here, Filippo. I don't see my name on anything else here. We didn't get very far down this list. What else do you wanna do here?
Jonathan Hall:Should I talk about
Shay Nehmad:something else? Or I think this tweet from, Mitchell Hashimoto about, like, doing Go and how positive is it for vibe coding is actually super relevant to our interview that's coming up.
Jonathan Hall:Next up, we have a proposal. It's not a big foundation shaking one, but it's kind of cool. And then I think we'll jump into our interview probably. But the proposal is to it's just been accepted. Add a new analyzer called Atomic to the GoAnalysis package and tool.
Jonathan Hall:I don't know if you've ever done this, Shay. Have you have you ever used Atomic dot addint32?
Shay Nehmad:I did. Yeah. I literally did. I don't remember when, but I remember, like, using these functions. Like, when you develop, you know, when you develop, like, safe not race safe in the California sense that you're not allowed to talk about race, race safe in the in the threads sense, you know, you like a counter that doesn't have a mutex or something like that.
Jonathan Hall:Right.
Shay Nehmad:What's the problem? What's the problem with my with my function?
Jonathan Hall:Well, there's nothing per se wrong with it. But, yeah, you're exactly right. So if you need to, say, increment or or otherwise modify an integer atomically, you know, you can do this without using a mutex. The the thing is that as of Go 1.19, which is now, you know, almost a 100 years old, we have a a newer version. There's the atomic dot int 32, which just gives you slightly better ergonomics Yeah.
Jonathan Hall:For the same thing. So the proposal is basically just to sort of update this stuff for you in line. And it's not just a single ad. It does a number of things related to atomic numbers and strings, and, you know, there's a fair a fair number of these, I think, that are being updated. Kinda cool.
Jonathan Hall:It'll sort of give you a cleaner, more modern code, essentially for free.
Shay Nehmad:And there's a few a few analyzers here. There's atomic types, which you've mentioned, plus build, strings cut, STD iterators, embed lit, I don't even know what that one is, but there there is a few, like, checks that, existed already, in, you know, GoVet, and now they are becoming, like, Go modernized commands.
Jonathan Hall:Exactly. So this isn't this
Shay Nehmad:isn't new functionality. Gonna make old Go code better, you know, by default.
Jonathan Hall:Right? Right. So this isn't per se new functionality. It's just exposing it in a new way. So when you run Go is it Go modernize?
Jonathan Hall:Is that the name of the tool? It will update these things for you.
Shay Nehmad:So I think this Go Modernize, by way, came in at such a perfect time because my thinking was, oh, this is just on, like, old code. Eventually, all this code will be modernized as whatever, but snake eating his own tail Oroboros style. I think models have a like, have a tendency to generate old looking code because they were trained on, like, old looking code. And I can really imagine how a model will generate, like, var x int 32 instead of using var x atomic dot int 32. Right?
Shay Nehmad:So I don't know. This does change code, but I would add it right next to Go format, like Go Modernize.
Jonathan Hall:Makes it easier for you to vibe code in confidence. Right?
Shay Nehmad:That's which is very important as we're about to find out in this, interview that's coming up. Let's do a quick ad break and jump directly to that. Welcome to our Ad Break, taking a brief intermission before our interview starts. Thank you very much to our supporters on Patreon for directly supporting the show. We really, really appreciate y'all.
Shay Nehmad:If you wanna join, you can find the link to joining our Patreon, seeing all past episodes, searching their content, which is something I do more and more recently, finding all the app links, including Apple Music, Pocket Cast, Overcast, Spotify, Apple Podcast, YouTube, and more, and even buying stuff from our Schwag store, which includes our, Go Sucks socks, the third anniversary Cup Go sticker, Range Rover Brewster recursive Cup o' Go sticker, the new cap, which I'm using as my daily driver hat, which is nice, and the Cup o' Go mug, of course. I am ashamed to admit that the Cup o' Go shirts have been with me long enough that they have now been delegated to pajamas. I strictly wear them as pajamas because they're a bit too old, but the logo still holds up. So you can find all of that at cupgo.dev, that is cupo'go.dev, including links to our Slack channel and our email and all of that. Last week in passing, I mentioned that we have passed over 200,000.
Shay Nehmad:Am I saying that correctly?
Jonathan Hall:Thank you.
Shay Nehmad:200,000 downloads?
Jonathan Hall:We as of right now, 207,040.
Shay Nehmad:That is crazy. Well done, Jonathan. Congratulations.
Jonathan Hall:Yeah. Thanks a bit about myself too. This
Shay Nehmad:is the moment where the listeners discover I'm actually just a sock puppet that you've been holding on your hand this entire time.
Jonathan Hall:Some of our listeners have met you in person, so I don't know how well that, that's gonna hold up, that claim.
Shay Nehmad:I don't know. That's a crazy number to me. I really obviously, podcast, you've mentioned this a few times, that podcast analytics are kind of elusive. Yes, indeed. But I just from even the in person impact I've felt in San Francisco since moving here and the amount of people that like know the podcast and whatever, I know that there are like real listeners in the world, and that is really, really cool.
Shay Nehmad:We really appreciate all of you listening. Just another milestone.
Jonathan Hall:I wanna ask you a question, Shay. Can you guess when was the last time we had an episode that had fewer than 1,000 downloads?
Shay Nehmad:Wow. I don't know. I really don't know. An episode that had fewer than a thousand downloads. Yes.
Shay Nehmad:Maybe, like, 2025
Tomasz Tomcyk:ish? Farther back.
Shay Nehmad:No way.
Jonathan Hall:12/06/2024 was the last episode that had fewer than a thousand downloads.
Shay Nehmad:Alright. I guess that episode really sucks. Oh my god. That's a lot of time.
Jonathan Hall:Pretty amazing.
Shay Nehmad:That's a big responsibility, man. A thousand people listening to every every word we're saying here.
Jonathan Hall:And our most popular episode was the Go 1.261, the the really long one. That one had over 2,000 downloads.
Shay Nehmad:Yeah. That makes sense. I think not even non, like, normal well, I don't wanna say non normal. That sounds bad. I mean, like, the
Jonathan Hall:Regular, not regular listeners.
Shay Nehmad:Yeah. Not that people are subscribed to the show, but just they wanna learn about that specific version, I think. Also, it's really well named. It's like very clickbaity, 240% better working our clickbait muscles. So we just wanted to, you know sometimes it's cool to nerd out about the stats, and we want to do that.
Shay Nehmad:Thank you all very much for listening and all your attention. You wanted to mention a meetup that's coming up.
Jonathan Hall:Yes. One last thing I wanna mention before the interview, May 11, I will be speaking at the Atlanta builder night, little meetup here in Atlanta. If you're around, it's not gonna be Go specifically, although I'll talk about Go a little bit. Basically, mainly talking about how I use agents for coding on a daily basis, so which is quite relevant to what we're talking about on this interview. So if you're in the Atlanta area, I'd love to shake your hand on May 11.
Jonathan Hall:Very cool. Very cool. I wouldn't be able to
Shay Nehmad:make it because I will not be in the Atlanta area at
Jonathan Hall:that time. Oh, sad. Yeah. If I could, I would.
Shay Nehmad:Alright. We are coming up on the interview. It was structured kind of weirdly, so I just wanna give like thirty seconds of context before we start. I started using Tomasz's tool called CRIT, which is why you want this the jokes about CRIT.
Jonathan Hall:Critical distinction to make there. Yes. Yes.
Shay Nehmad:Yeah. And in just in one sentence, it's a tool that lets you review agent plans and code. So if you're working with agents, it's like a local tool, and it's written in Go. I think that's enough context for you to get started, and it's really good, which you'll hear me say again and again over the interview. I really like I like I like it when I find the new local tool and it's actually good.
Shay Nehmad:So, enjoy the interview, and I guess, we'll talk to you all next week. Hey, John. Did you see this blog post from OpenAI about where the goblins came from? No. They have all these critters stepping into models.
Shay Nehmad:You know, they I don't know why, but the model is just spawning critters everywhere, like goblins and gremlins and all that stuff.
Jonathan Hall:Okay.
Shay Nehmad:If only they had a critter or a crit related ability to review their stuff.
Jonathan Hall:That was a bad one.
Tomasz Tomcyk:Oh, hi, Tomasz. Hi. Thanks for having me.
Jonathan Hall:I think that was a critically bad joke.
Shay Nehmad:Critically bad intro? Yeah.
Jonathan Hall:Hi. Hi, Tomasz. Welcome. Thanks for joining us.
Tomasz Tomcyk:Thank you. Yeah. Hi. Nice to meet you both.
Shay Nehmad:Nice to meet you too. How about you introduce yourself to our listeners?
Tomasz Tomcyk:Sure. Yeah. My my name is Tomasz Tomczuk. I'm a software engineer, staff engineer at Vetspire where I've been for the past six years now. And, as of maybe December, I'd probably label myself as a Vibe coder a little bit, when it comes to my side projects anyway.
Tomasz Tomcyk:I still write some code by hand for for my actual day job. But, yeah, all my side projects are now Claude offered, I would say.
Shay Nehmad:Claude powered.
Jonathan Hall:So you said vibe coding. I I think we should talk about that first just to be so everybody's listening knows what you're talking about because there's so many definitions of vibe coding out there. What do you mean by vibe coding?
Tomasz Tomcyk:Yeah. I I think it's definitely a spectrum, and I'm not on the side of it where I don't look at any of the code. I don't care what what happened, and I'm just shipping continuously. Right? I I think there's there's layers to it.
Tomasz Tomcyk:If you just trust your agents to to do everything for you, you are gonna get slop. Right? I I hope what I ship in my side projects is a little bit better than slop. There's probably most definitely ways to improve it, but, know, the the thing about Vibe coding, you can ship useful things with it. But I think the way to accomplish that is by continuously reviewing what's going on.
Tomasz Tomcyk:Obviously, that's where where my product comes in, and I'll talk a little bit about that a little bit. Yeah. You you cannot trust the agents to to do anything. You have to continuously check. So in terms of my process, I try to have specialized agents that do the work that I ask them to do with multiple steps of review, both human, that's me Mhmm.
Tomasz Tomcyk:As well as other agents. Ideally, you'd weave in some multiple models, different tooling, At the moment, I'm kinda getting far enough getting good results with just Claude wearing different hats. Claude is a Go expert. Claude is a front end expert. Claude as a dev evangelist.
Tomasz Tomcyk:So the the first thing when when I started the the product, CRIT, was I asked Claude to make a prompt for an expert Go developer because Claude recommended I use Go for my product, and I don't actually know Go. I've never written a line of Go. So one of the first things was spending time iterating on what a prompt for that agent could look like. And I fed it well, I asked Claude to find the best community project in Go, find the best practices from each one, establish a baseline of what good looks like, and that should be the guidelines that this agent works in. And I've done the same for other aspects of of the languages or other languages that I work in.
Tomasz Tomcyk:I work in Elixir. That's my day job. Obviously, there's front end components to both my day job and and CRIT. So I have a dedicated agent for each specialty, each language, framework, etcetera. So yeah.
Tomasz Tomcyk:So going back to the idea of vibe coding, I I do let Claude loose with fairly high level prompts. But then at the moment, I get a plan for something, you know, that's something that I want to review, I want to eyeball it. I might not know Go, but I know what kinda good looks like in in programming in general. Mhmm. And so so, yeah, I I use CRIT, doc food in it for reviewing any plans and then leave granular feedback, iterate until it looks good.
Tomasz Tomcyk:And then once I'm happy with the plan,
Shay Nehmad:I hit approve, and Claude executes it. That goes for more layers of reviews. So So you say reviews, you mean you review the product. Right? Because you said you don't write Go.
Shay Nehmad:But CRIT, the product that brought us here on this conversation together, is written in Go, which is why I reached out to you in the first place because like, oh my god, such a cool Go project. It's so useful. By the way, spread like wildfire in my team. This Like, week, nobody knew about it. The end of this week, everybody's using it.
Tomasz Tomcyk:Amazing.
Shay Nehmad:Or at least, know, installed it and ran the thing once. But you say review, you mean review the outcome, like use the product Yeah. To make sure that it works or something, not actually review code? Or do you do you read the code and try to understand what it means even though you don't really know the syntax just because you're experienced enough to, like, be able to read any language?
Tomasz Tomcyk:Yeah. So I I'm definitely not experienced enough to know what good Go looks like, but the to kinda step through the workflow again, so most features, even small, medium features, start with a plan. Right? So so I ask expert Go agent to write a plan for implementing a particular feature in CRIT. That is that produces a markdown file, which I then launch in CRIT, and I eyeball it.
Tomasz Tomcyk:I might not give specific feedback on whatever standard library it's using or the syntax it's using and so on, but I kind of know what good looks like in programming in general, and there's enough generic stuff that I can comment on so I can correct it. Or ask it to do some more in-depth research on, Hey, I feel like we have something like this implemented in our code base already, you know, even if I can't point to it exactly. And that's enough to let Clotkin discover that. And because of those multiple iterations on the plan, it just produces a more solid plan. Right?
Tomasz Tomcyk:And then that becomes a prompt for a next fresh agent to implement it. We do it on a work tree. And then, again, before any of the codes hits me, I ask after the implementation, hey, go back to another fresh agent with Go expertise or front end expertise or whatever the feature calls for and have another review. It always catches things. Just having one round of things with these agents will not produce anything of high quality.
Tomasz Tomcyk:So then once that feature passes all the internal clouds, audits, and reviews, that's when I check it out. Right? So so I launch it, and it's it's super easy to automate a lot of this stuff as well. So I have end to end playwright tests on all of it or or most of it, as well as Makefile scripts that will launch CRIT in specific modes, simulating different Git repos, different markdown files, different states of of the review, and it literally gives me six, eight links of, hey. Eyeball this version of CRIT in all of these modes.
Tomasz Tomcyk:So that's when, you know, again, that human review layer is essential for producing something of high higher or high ish quality. And again, at the end of the the day, the code isn't gonna be as good as what you guys or your audience would have written probably in in Go. Right? And even after all these checks, it's not gonna be the best. I do as much in terms of guardrails around it as possible.
Tomasz Tomcyk:So all the linting, all the formatting. I saw Go has Go report card, and I was like, love it. Let let's let's get it in there. So anything that, you can automate in terms of the linting checks and so on will will be beneficial.
Shay Nehmad:It's worth noting that you have an a plus on your report.
Tomasz Tomcyk:Yes. 6% code coverage. I don't know how unusual this is for your, code bases. It didn't feel that hard for Claude to achieve that. But, yeah, a plus feels good.
Tomasz Tomcyk:Great. I'll I'll take anything that is automated and objective. Right? If we we have similar tracks and and, kinda libraries around, code style and so on in Elixir. So, yeah, the if if your language has something like that, then it's better for agents to work with.
Tomasz Tomcyk:Then at the end of all of that, we have a feature that I've tested both with as much automation as possible as as well as my own human eyeballs and and clicking around, and then I ship it. Right? But the problem with Vibe coding is you ship that, then you ship another feature and another feature that might overlap in some areas of the code. And then because of the the your prompts were quite specific, hey. Just implement this feature.
Tomasz Tomcyk:Implement this other feature. It doesn't really think about what does the architecture look like as a whole. So my way of combating this and combating the slope that would be produced as a result of these continuous iterations is every six or or a dozen or so PRs, depending on the size of them, I do an audit. Look at all the things that we've done since the last audit and look at them holistically. Right?
Tomasz Tomcyk:So again, this goes back to those expert agents. So Claude puts on his Go hat and looks at all of the Go written in that batch. Then it sees opportunities for refactoring abstraction or you know, any tests, that should be needed now that we've got these features maybe interacting and so on.
Shay Nehmad:This might be a a stupid question, but how much did CRIT like, maybe we should talk about what CRIT does for, like, a second before we continue talking about how to build Fair.
Tomasz Tomcyk:We Jonathan, have you
Shay Nehmad:had chance to to use it yet or no?
Jonathan Hall:No. I just looked at the web page.
Shay Nehmad:So I actually used it. This is how, Thomas and I got in contact. You posted it, I think, in RANS or somewhere? Yeah. In, like, AI coding, channels around the web.
Shay Nehmad:And I was like, oh my god. This looks really cool. I installed it, and it's been my number one way to interact with longer plans, you know, bigger features, sort of introducing new infrastructure to my project. Infrastructure, not like cloud infrastructure. Infrastructure, like a big module that I actually need to think about.
Shay Nehmad:Let me describe what it does from my for my usage, and then maybe you can fix you can correct me. Sure. But I think it would be interesting to get a user's perspective. So, you know, Jonathan, how you use plan mode in in, like, cloud or whatever codex?
Jonathan Hall:Yep. Yep.
Shay Nehmad:And then it finishes the plan. And then what do you do? You like need to scroll up in your terminal and then write comments and you write them down, I don't know, somewhere. And there are like maybe five comments you wanted to fix. And you're like, okay, number one, in section whatever where you do this and then you type it in the terminal, then you accidentally press enter and then it's like, oh, damn, another context window wasted or whatever.
Shay Nehmad:So this is like a web interface you open up for the p for the plan, and then you can comment on it like GitHub comment style. And you click, I'm done. You're like, comment. Don't do it like this. Review the agent's MD.
Shay Nehmad:You should actually do it like that. Never use these type of things. Don't do this. Do that. You can give like role level comments on the on the plan in a very GitHub y sort of way.
Shay Nehmad:Not GitHub y in the sense that it's down all the time, but GitHub y in the sense that it's like the web interface for code review with comments. And then you're you're like done. And I don't know about you, but at least in my company, even we still do human code reviews on PRs because we deal with like highly regulated data and whatever. So I wanna review my code before I put it out. And then you can do it with CRIT as well.
Shay Nehmad:Like, you're done reviewing the plan, you press review, the agent fixes all the things, you fix all the comments, you're like, looks good, start coding. The claw does its thing, codes, codes, When it's done, you can run create again, and this time it's like a PR review. You review the code itself to make sure that it lined up with the plan you wanted, and you can put comments on the code itself. For me, the plan review has been the most useful. At some point, I just like am fed up with all these interfaces and just open up my editor and edit code manually, like it's 2021.
Shay Nehmad:But yeah, it's been like super transformative for my plan workflow because I was kind of frustrated with planning my work with agents because it felt like a lot of clunky work in terminal, but this has been like a UX unlock for me. Is there any features that I missed or a big idea, Tomas, that is, like, exist in creating, like, I can't believe you didn't click this button or whatever?
Tomasz Tomcyk:There is, but thank you for this very thorough explanation. Honestly, I might I might try and adopt that into my elevator pitch. Yeah. You've done a great job describing it. Yeah.
Tomasz Tomcyk:You can put
Shay Nehmad:it like, you know, how when there's books at the back of the book, it's like, it's completely transformed my life. You
Tomasz Tomcyk:can you can take it. Testimonials.
Shay Nehmad:Here's I I It's recorded. It's completely transformed my development workflow. Shay Nehmad, some asshole with a microphone.
Tomasz Tomcyk:I do have testimonials on the website. I will include you as seen on Cup o' Go. But, yeah, I I think you you covered, like, 95% of it. It it's I started it off as a tool for providing feedback for the markdown files because, yeah, the experience of the Internet and the terminal scrolling up and down, you want to be granular. So you copy paste bits, and then it's just very painful process.
Tomasz Tomcyk:So, yeah, I I wanted that GitHub style interface. And, yeah, then, naturally, the next thing was, okay. Well, can I do it for code as well without going to GitHub? And then having Claude look at my GitHub pull request and so on. That felt clunky.
Tomasz Tomcyk:So with Claude, it was fairly easy to adopt the interface to displaying diffs. So that that was the natural extension of it. There there are more things, let's say, maybe, like, more advanced use cases or or features that you haven't mentioned. One that I really like a lot is sharing. So you have your plan locally, but a lot of teams haven't figured out, do we submit plans as a PR to get feedback from others in the team?
Tomasz Tomcyk:I know of teams who use Google Docs, copy pasting markdown into it, to be able to leave those granular comments on a specific line. Right? Unless you, you know, have a PR, it's hard. But PR feels like a heavy process for just reviewing some markdown. Mhmm.
Tomasz Tomcyk:You can copy paste it into a gist on on GitHub, but that doesn't allow you to leave granular comments. So yeah. So with with CRIT, you you can share your local markdown files or whatever files you put into CRIT, which then goes to CRITMD, gives you a public anonymous link, share it with a team, anyone from your team can comment. And then the prompt from the web version of it, you paste back to your local agent and say, hey. Fetch the comments, the feedback.
Tomasz Tomcyk:Let's act on it. Let's iterate. So that that was one of the first things that I did with, like, a hosted version of CRIT because I I wanted some feedback on my plans from my team, but I didn't wanna quite put it in GitHub. Mhmm. And then kinda side effect of that that I didn't realize at the time, I don't know if you use Claude or whatever agent you're using on, on mobile, but I often, kind of start the plan on my desktop, go out, finish planning something, from my mobile phone, and then I can't review it until I'm back because I'm not gonna review that markdown file on on my phone.
Tomasz Tomcyk:But you can use CRIT to say to Cloud, hey. Share it with CRIT, which gives you a link, and then you open the responsive version of CRIT MD, and that makes it a little bit easier to actually read the text and leave comments and so on. Do you find yourself using,
Shay Nehmad:like, the phone thing? I've tried to you know how Claude has remote control? I was like, man, I'm gonna go to the gym and code at the same time. And turns out, I can't I don't know. Maybe I'm just too old, but I can't like text and do something else at the same So I can't text my wife and work out, and I can't text Claude and work out.
Shay Nehmad:I can't do these things at the same time.
Tomasz Tomcyk:I yeah. I I find myself finishing conversations. I still haven't figured out a good way of starting new conversations because it feels like, yeah, that that it doesn't quite have that feature, I think. I think dispatch is meant for it, but it uses the Cloud's desktop app, I believe. But frequently, I I have a a lot of follow ups on my conversations with Cloud from my phone while at the gym, while going to pick up my kids from school or whatever and just unblocking it.
Tomasz Tomcyk:So I I leave my Mac, put it, twenty four seven now just to be able to finish those conversations and unblock it. I do run with, dangerously skip permissions on on Claude so it doesn't get stopped as much on on permissions. But if there is a decision point it is stuck on, then, yeah, continue through the mobile interface. Cool.
Jonathan Hall:How long has CRIT been public? Since February. Okay.
Tomasz Tomcyk:Mid February is when when I started started open source straight away, started sharing it quick quickly. Yeah. I I had really good response from day one. It's something that I use every day. Right?
Tomasz Tomcyk:It's it's kinda nice that it's a product that I can dog food not only for building CRIT itself, which I do, but also all my day jobs. So even though it is a side project that I'm mostly looking at in the weekends and evenings, it is something that I interact with every day, multiple times a day. And I think if you are a heavy agent user, you will find yourself making a lot of plans and multitasking plans. Right? And and if yeah.
Tomasz Tomcyk:The the feedback I had from the users is has has been very, very kind, very, very overwhelming in terms of the the positive response. And I I think it makes it easier to produce better work because previously, when when I was faced with those huge markdown files, I'd probably just say it looks good to me a bit sooner than than I should have in reality. And then you end up wasting more time when it comes to the code if I've you are looking at the
Jonathan Hall:certainly experienced that, where I'm like, yeah, this looks okay, and I approve it, and then it does something. And I was like, why in the world did you do that? Doesn't make any sense.
Shay Nehmad:Who the hell approved Is it
Jonathan Hall:plan? Like, no. Okay.
Tomasz Tomcyk:Just did what the plan said, boss. Yeah. Absolutely. But, yeah, I'll that's the thing. Like, I I would miss a lot of things when looking at markdown in a terminal without the formatting and so on.
Tomasz Tomcyk:It Yeah. It sounds maybe silly, but if if you use something like superpowers, I don't know if you guys have used them. Mhmm. It's it's essentially more skills about, like, write writing detailed plans and couple other features. I use it heavily for writing plans, but it likes to be very very verbose and writing code in those plans as well, which is great, but, yeah, much harder to review in in the terminal.
Tomasz Tomcyk:Yeah.
Shay Nehmad:And in the, you know, interest of trying to to understand the flow, started in February. And like you said, you're an Elixir developer, which admittedly, both Jonathan and I don't know. I think it's pretty I I don't know if it's considered, like, very niche, but I've never seen it at, the top, you know, like Python, JavaScript, and Elixir. It's, like, relatively niche. How do you start up, open source project and just decide to go with Go?
Shay Nehmad:Was it I needed a single local binary? I just wanted to experiment with Go because it seems cool. I wanted to get on the podcast. Like, what was the justification behind picking because my thinking was when I use agent, and maybe I'm wrong, but when I use agents, I'm like, oh, I wanna only use stuff that I know really, really, really well. So if the agent goes off the rails, I know how to fix it.
Shay Nehmad:So I'm like the backup expert. But maybe I'm thinking about this incorrectly.
Tomasz Tomcyk:No. I think that you you're absolutely right. I'm I'm only here because
Shay Nehmad:How clout of you to say.
Tomasz Tomcyk:Yeah. I think if I could have used Elixir, I would have. But for for one thing, I asked Claude, you know, does this app exist? It said no. That was enough for me to proceed.
Tomasz Tomcyk:Okay. How do we build it? And it recommended Go, for for reasons I'll I'll get into in a second. If I felt confident about delivering this in Elixir, I would have preferred that for the reasons you mentioned. Right?
Tomasz Tomcyk:I I can I'm confident in go sorry. I'm confident in Elixir. I I can course correct agents. So but but the thing about Elixir, it's not that it's niche language. I don't think that that is the the reason not to use it.
Tomasz Tomcyk:But it's not quite the right fit, I don't think. In terms of bundling Elixir applications to to use as a single binary, it's not really officially supported. There is a community package, called Burrito, which is a great name for a package, that that allows you to ship a binary out of your Elixir application. But, yeah, it it's not quite the first class citizen, I would say, in in our community, and it would ship a much bigger binary. So which I which I think is kinda things that start spelling to developers.
Tomasz Tomcyk:Right? If if I'm installing something that should be lightweight, but suddenly it's a couple 100 megabytes package that I'm downloading from Brew, then that would be a red flag. Right? But my the audience for for this tool is developers, and they're gonna be very crit critic looking at this for with with a very, critical eye. So, yeah, I think that's that's where Go's strengths kinda shine, because it it it has that first class citizen support for single binary, build.
Tomasz Tomcyk:The standard library in in Go has covered, like, 95% of what I need for this product, which yeah. I actually asked Claude, hey. If if we were to rewrite this in in Elixir, what what would be the cost in terms of, like, third party packages and so on? And, yeah, there's there's a lot more that I would need to bring in, which is not necessarily a bad thing, but it just felt like we'd be stepping away from this lean, simple tool, lightweight tool that I aspired for for this to become. And I think Go is also because of the the kind of strengths we we talked about earlier with, like, linting and all the tooling supports, you know, built in formatter, all all that stuff, which, Elixir also has a lot of those.
Tomasz Tomcyk:But Go was, like, the next best choice or and ultimately, better choice in terms of the fit for that lightweight single binary that I hoped to achieve. And at the end of the day, if I'm gonna be producing something with agents, I'm not gonna be reviewing every single line of code even if it is Elixir. Yeah. If if Claude is more comfortable in Go for for this purpose, that's fine by me. We we can ride with it, and, I've put enough guardrails around the the project to prevent slop and prevent issues.
Tomasz Tomcyk:And then in the end so I I don't know if you've seen the the web server component of of CRIT, the hosted service, CRITMD, is written in Elixir because, you know, that's where you're gonna be sharing something to an external service. Mhmm. And that is something where, you know, people might share sensitive plans or or or files, whatever. There there's authorization in play, security, all all that stuff. That is where, okay.
Tomasz Tomcyk:I I can pull that off with Elixir just fine in addition to having, like, a multiplayer components, having multiple people commenting on the same review at the same time, I think that's Elixir's strengths. Right? So that that real time processing. We we have a web framework called called Phoenix with Live View literally built for real time applications on on WebSockets. And, yeah, that that's something that just felt like a better choice.
Tomasz Tomcyk:And also, I feel more comfortable having that in Elixir where there is security aspects behind it. It's not just a local tool at this point. Sorry. I was rambling a lot there.
Jonathan Hall:Just pulled up the Go dot mod for CRIT, and it it has three external dependencies, direct ones. Yep. And one is golang.org/x/term, which is almost standard library anyway. The other two look like they're related to QR codes. Is that Yeah.
Tomasz Tomcyk:And I it's probably just so nice to have because, yeah, when you when you share a review with the CRITMD service, I print in the terminal and on the web browser, depending where you share from, a QR code so you can scan it on your phone and take it on the go.
Jonathan Hall:Yeah. Makes makes sense.
Shay Nehmad:Yeah. And, you
Tomasz Tomcyk:know, the the
Shay Nehmad:the QR library, I think it's, also I mean, it's quasi standard. Right? Isn't it Russ's library?
Jonathan Hall:Or am I
Shay Nehmad:you know what mean?
Jonathan Hall:I think Russ is the one. It is Russ Cox's library. So that's that's almost standard library also.
Shay Nehmad:It's as standard library as it gets.
Jonathan Hall:But was the lead of the Go team at at Google for a long time.
Tomasz Tomcyk:So Oh, right. Yeah. Well, I'm glad my my development team made good choices. Looking
Shay Nehmad:forward, do you think because, you know, obviously, if you like you said, if I open up this project right now and I'm a Go developer, there are things that jump out to me, you know, at the very least, all the files are in the main library, main is kind of big, it's like, I don't know, 3,000 lines or whatever. You know, it has all this code for just a tiny example. You know, I would when I'm developing CLIs, always wanna use a CLI library to keep my help string in check. In this case, it's just written somewhere in this in this 3,000 lines. Am I, like, out of touch that I'm I'm saying, oh, Tomas, I'm worried about the maintainability of this project.
Shay Nehmad:Like, is this just not true anymore? Is is do you think this project will be, like, long term maintainable, or do you see, you know, if it succeeds really widely and a lot of people use it and whatever, okay, now it's time to actually write it. Or is this the actual, like, code? Do you know what I mean? Sometimes I vibe code stuff and then I'm like, oh, well, it's okay that I don't really agree with how the code is structured or 100% of the decisions because this is just a draft.
Shay Nehmad:Like, when I'll develop it, air quotes, for real, then I'll, like, you know, I'll do an architecture or whatever. Am I am I, missing the the plot here? Do you think this is the, like, final version?
Tomasz Tomcyk:I think it's I'd probably say, you know, it's it's 80% final in terms of it's what I would like to think good enough for the purpose. I think in terms of maintainability by humans, it's a risk. I mean, if if you took cloth away from me today, I I would not be able to maintain this. Right? Hopefully, no one's gonna take cloth away from me.
Tomasz Tomcyk:The models
Shay Nehmad:like cold dead hands.
Tomasz Tomcyk:Yeah. Hopefully, the models will continue to get better. I mean, just the improvements we've seen in in the last four four or five months have have been tremendous with OPUS 4.6 and OpenAI's equivalent GPT 5.4 or whatever. So I think it's gonna get better. You know, the the stuff that I have there now absolutely could could be improved.
Tomasz Tomcyk:Hopefully, it doesn't cause massive issues for for the end user. Because when when I think about the production apps I was involved in during my career, a lot of them had similar sort of maintainability issues as as the codes produced with AI today. Right? If anything, I think AI is smarter about a lot of things. And it does produce some slop here and there.
Tomasz Tomcyk:I'm hoping that the continuous refactors and audits that I mentioned will eventually call out, hey, this file is getting too big or function's getting too complicated and so on. So I'm not too stressed about it until I see GitHub issues from your listeners telling me how bad it all is. So, yeah, we shall see.
Jonathan Hall:So I just, for for the heck of it, pulled up plans.go.
Tomasz Tomcyk:Oh, no. Oh, no. Oh,
Shay Nehmad:it's starting. It's a roast.
Tomasz Tomcyk:No. No. I'm Here's the roast part of Hear the me out.
Jonathan Hall:Hear me out. I'm looking at latest plans version and I can see, like, what it wrote is not terrible. It could be improved, but I don't think it matters. Like like, it uses s scan f to convert a numb a string to a number. Like, it could use str con for something, know, probably be a little bit more efficient, a little more clear what it's doing.
Jonathan Hall:It's doing some unnecessary error checking. It and it checks prefixes and suffixes twice, and it doesn't need to. These are the kinds of things I wouldn't expect an elixir dev to to to see. Right? No.
Jonathan Hall:So these aren't these aren't big deals. It's just like it's probably 30% longer than it needs to be, and it's not the most CPU efficient for something that doesn't matter anyway. This a tight loop where efficiency matters. So if this is the only example I'm looking at, and it will be for at least for the sake of the show.
Tomasz Tomcyk:Thank you.
Jonathan Hall:I I this is this is exactly what I would sort of expect from Claude. It works. It's not tight. It's not necessarily perfectly idiomatic, but it it's functional. And and, I I mean, not this would be relevant for this particular function, but there aren't any, like, gaping security holes or anything like that either.
Shay Nehmad:So it it gets Jonathan's seal of approval is what you're saying? I'll say as a user, it's a kick ass product. Like, know that we wanna nerd out we wanna nerd about out about, like, how it's built and the code, and is it maintainable, and why did you pick Go, and another, blah blah blah. But it's a cool product, and I assume a lot of people who listen to this use, like, Claude and or another coding agent with, like, the plan mode. You should try it out.
Shay Nehmad:I just say it because I'm about to say in the same breath, I do wonder if, you know, you say the models are getting better. I I do wonder and you don't have to share, like, a specific person. I'm just trying to understand. How much did this project, like, cost? Obviously, your time is very expensive, but let's put that aside.
Shay Nehmad:I'm trying to understand, like, is this, like, in a billion gajillion tokens, or was this, like, you know, just one
Tomasz Tomcyk:That's a good question. I don't have metrics on on the token usage. I'm on the, $200 subscription for for Claude. So
Shay Nehmad:And that was enough.
Tomasz Tomcyk:That that that's enough for my day job and side projects. Mhmm. So, yeah, I I stopped looking at my token usage when when I got upgraded to that subscription tier, and haven't looked back. So, yeah, good enough for in terms of token usage. I will plug maybe a there's a, Cloud plugin context mode, which I'm happy to link later, that, apparently caches a lot of the calls that Cloud makes, which saves a lot of the token usage, something that I adopted from the earlier tiers of Claude.
Tomasz Tomcyk:So I'm not 100 sure I I would need it, but it's been saving tokens for sure.
Shay Nehmad:So what I'm hearing is it's not create like, you need a a billion tokens, you know, gas towns, whatever, to be able to build, this sort of project. Like, once a
Tomasz Tomcyk:few should be enough. And if anything, I'm being maybe overly wasteful with some of my token usage because could probably get especially if you know Go, you probably don't need all of these layers of reviews that I mentioned. Hey, Spawn a plan. Okay. Review the plan independently.
Tomasz Tomcyk:Okay. Then then implement the plan. Okay. Then review against the implementation the implementation against the plan that we set out to do and then do whatever other checks. Right?
Tomasz Tomcyk:So if if you are very comfortable with the language, you can probably save some tokens by by doing that. If you have tokens to spare, I think that will just save you, some time anyway. And then for a lot of the things, especially on the UX and UI front end side of things for for CRIT, I've adopted, like, a design exploration skill. If I want to add a a feature and I'm not quite sure what it should look like, I have a reusable skill that launches five, six different agents implementing the same feature on, like, a just a mock mocked HTML CSS file to show me what that feature could look like from the perspective of different companies and the PIX companies depending on the feature. So a lot of the inspiration for DUI is GitHub, that's a natural one.
Tomasz Tomcyk:But we we compare against, like, iteration from you're a senior designer at Linear, you're a senior designer at Notion or or whatever. And I get, like, five, six different mock ups of the these companies' senior designers researching their style language, their their design language, and giving me this this stand alone example of what this feature could look like if it was designed by those companies. And then I pick up the pick out the best elements from from each and, you know, say, Claude implement, you know, a little bit of a, column a, a little bit of column b. Mhmm. And that's how most of my recent design work on on CRIT has has been implemented for that kind of exploration and stealing and inspiration from from these agents based on these companies.
Tomasz Tomcyk:But, yeah, you you don't have to do that to make a successful product or or usable product. You know, in terms of features, the the same thing works the same way for for all these variations. But, yeah, I I like to experiment. Like to be picky. I I still would like to think that the human layer of review is important for making something stand out, because everyone's making products now.
Tomasz Tomcyk:Right? It it's much harder to to stand out with just having a product that needs to be a a pleasant product to use. And I'd like to think that good taste matters, still in terms of that UX UI layer. So, hopefully, that's something that I provide, and that that's again stepping away from that vibe coding approach where you just let clods rip on everything and don't look at what's it even produced. It's definitely not what I would advise.
Tomasz Tomcyk:Mhmm. Interesting.
Jonathan Hall:So normally we ask our guests a question about Go. I'm going to change it a little bit since you are admittedly not a Go developer. And then it's just like, what are your impressions of working with Go for this project? What have you seen that you like? What have you seen that you don't like?
Tomasz Tomcyk:I mean, we we talked about this briefly, but the standard library covering just about everything I've needed so far besides QR code generation,
Jonathan Hall:which is a open a fee a proposal to add QRs to standard library.
Tomasz Tomcyk:Yeah. I was I was actually thinking about this before I came onto the show. You know, what what's my perspective on on the language as a outsider, and how does it compare to Elixir? And I think there there's a lot that is similar in terms of developer experience is prioritized in this part of the the language core. You know?
Tomasz Tomcyk:Like, it might sound simple, but even, like, the formatter and all the linting tooling around it, I think that makes a huge difference in terms of coming into a project in a given language and knowing having that low surprise factor. That's what Elixir has. That's what Go has. You know? But then you look at JavaScript projects, and it's not quite the same.
Tomasz Tomcyk:I think I've I've got interest in, and and I it's probably not a big deal to to you guys, but looking at GitHub's repo for Go, the amount of issues you have open compared to to Elixir, we in Elixir, right now, we have 17 issues and seven pull requests, which you might think, oh, it's a new language. It has no interest. No no one's working on it, which would be a little bit unfair. But, that's because I think Joseph Vovshin who who spearheads the elixir development considers it largely implemented, done. It's usable.
Tomasz Tomcyk:And we have a little bit more in terms of, okay, that belongs to a third party library scope rather than standard library, which is why maybe there's that difference where you have a lot of proposals for what should be included in the standard library, which is fascinating. So, yeah, that's, I guess, something that stood out as a difference in in approach. But, yeah, I I think Go makes it easy to produce high quality applications even if they are a bit sloppy. And I think it makes the some of the hard things easy, similar to to Elixir, you know, with, like, the Go routines, that that concurrency support. So, yeah, I've
Shay Nehmad:I've seen go on my testimonials. Premier Elixir developer. Go makes it easy to create sloppy, application. Well No.
Jonathan Hall:I'm just
Tomasz Tomcyk:saying you can create create sloppy applications in in any language. But I think, something like is, I'd I'd say, no no no shots fired at at JavaScript developers. But I think the likelihood of slob created in JavaScript is gonna be higher than in in Go and Elixir. Just
Jonathan Hall:yeah. Yeah. Yeah. No comment.
Shay Nehmad:It's very it's very interesting to see the difference between the languages. I think Erlang is, you know, because Elixir is running on Erlang VM, it's, like, theoretical and completed, and the standard library is just smaller. I don't think it's a, like, weaker or better language. That's not an interesting, comparison. I do think the scope of what the language and standard library do for you, like you said, is way smaller.
Shay Nehmad:And also, like the compiler aspect of it where Go, you know, with some of the issues for Go are like, why doesn't this compile on my microwave from 1965? You know what mean? Which is not really a problem for these, like, more dynamic languages. But I will say, there is a lot of community in Go. There are a ton of events.
Shay Nehmad:There's a lot of issues. There's lot of whatever.
Tomasz Tomcyk:Yeah.
Shay Nehmad:And we now officially welcome you as a honorary gofer, even though you're just a vibe coder.
Tomasz Tomcyk:I feel like a fraud, but thank you. No.
Shay Nehmad:You passed the test. You passed the test.
Jonathan Hall:I have to say one thing one thing I like about Elixir over Go is is the name. It's easier to Google. Go is a a cute name, there's all sorts of puns, but it's so hard to Google for it.
Tomasz Tomcyk:Yeah. You do have, like, better branding, I think, with the the Go for it, the mascots and and stuff like that.
Shay Nehmad:Yeah. The mascot's pretty good.
Tomasz Tomcyk:We we have, like, a a a liquid drop as a logo. It's a bit abstract.
Jonathan Hall:Yeah. Yeah.
Tomasz Tomcyk:But but, I mean, yeah, the the the language terminology, we've we've got alchemy. We've got labs and stuff.
Shay Nehmad:But there is something there is something very satisfying when you wanna do stuff in Go. You just type Go in the command line. Always, like it gives me a lot of motivation. Go run. I'm like,
Jonathan Hall:yes. Sorry. Yes, I think
Tomasz Tomcyk:that that's a you you you know, you you joke, but I think that sense of joy is an important part of what language sticks for you.
Shay Nehmad:I wonder if for agents, when you do go run, it causes them to be, like, very, you know, action oriented. And when you do, like, elixir alchemize, it gets them more, like, heady and D and D style. You know what
Jonathan Hall:I mean? Yeah.
Shay Nehmad:Going back to Grammins for the beginning of the interview.
Tomasz Tomcyk:Elixir was, I think, one of the highest rated in terms of, loved languages on the Stack Overflow surveys. And I think Oh,
Shay Nehmad:we love those. We keep reviewing them every year, and every year we're like, well, these surveys are totally meaningless, but also let's talk about them for thirty five minutes.
Tomasz Tomcyk:Yeah. It's good content, isn't it? Yeah.
Shay Nehmad:Yeah. Where can people find CRIT and you online if they're interested after everything we heard, and they wanna try it out from themselves, which I, again, wholeheartedly recommend if you're using agentic workflows for
Tomasz Tomcyk:the call.
Shay Nehmad:Thank you.
Tomasz Tomcyk:So CRIT's available at crit.md.
Shay Nehmad:Great domain. What is md? Is it like Moldova?
Tomasz Tomcyk:Yes. I I didn't even know md was was a domain name you you could purchase until I saw another product around markdown, Usernet. The the first domain I went with, was crit.live or that live aspect of, multiplayer commenting. But, yeah, that's, deprecated now already two months later. Yeah.
Tomasz Tomcyk:Crit.md. My personal blog that I rarely post on is thomastomczyk.com, and, I'm on Twitter.
Shay Nehmad:Don't worry, guys. We're gonna have the link in the in the description. You're not gonna have to spell Thomas Domchick yourself.
Tomasz Tomcyk:Yeah. I'm on Twitter under the same name, but I don't really post that much. So, yeah. Well, if you're gonna check something out, I'd love it for you for
Jonathan Hall:it to be crit.md. Awesome. Thanks so much for coming on and sharing this with us. I'm gonna be checking it out after the show. More than I already have.
Jonathan Hall:I won't be looking at the code this time. I'll be actually trying to use it.
Shay Nehmad:Please look at
Tomasz Tomcyk:the code. I I welcome issues. I welcome pull requests. Someone
Shay Nehmad:should repeat them. Someone Please look at the code. Someone should.
Tomasz Tomcyk:Yes. Please help. Send help. But, yeah, thanks for having me. I appreciate
Shay Nehmad:the time. Awesome. Thanks for coming on.