072: The tools we're using as Go SWE
Hello there. You're listening to Go Podcast. I'm Demick St Pierre.
Morten:And I am Morten. And today,
Dominic:we will have a an episode on tooling, maybe a little bit of libraries and whatnot. But before we jump in, don't forget that you can join the Slack channel on the Gophers community, the Slack community if you are there. So the channel is Go Podcast in one word. We are there. We are not really talking much, but, yeah, maybe maybe one day.
Dominic:I don't I don't even know what to talk about on this channel, to be frank. That that that that's one issue.
Morten:Yeah. Yeah. I don't know. I mean, there's a lot of people discussing the releases, it seems like, or maybe they're just emoting it. I don't know.
Dominic:Oh, yeah. That that's good that you say that before because I I was going to forget. Last week, I for I forgot to say that I was invited to the Cup of Go podcast. So because they they this is their their format. Basically, they have they asked the this this pre pre interview, you know, moment where they are talking about what's going on, you know.
Dominic:Is there any any I don't have the word now, but is is there anything to check the conferences and, you know, the suggestion on on GitHub? How do you call those? The the the anyways, the the thing that people suggest to add on on the Go compiler or whatnot or the language itself. So so they are they are talking about that. So the this is kind of different.
Dominic:This is it's it's pretty it's pretty good. I'm not a huge listener of podcast myself, which is strange. But since I'm not driving and I don't have, you know, that kind of time to listen because I I I personally, obviously, cannot really listen to podcast when I'm working due to my screen reader. I I only have one one brain to understand someone that that is talking to me. But but yeah.
Dominic:So, basically, I don't really have a huge time to listen to podcast. Do you do you listen to to any podcast?
Morten:I I love podcast, but I think there's not that many anymore. I used to love to go time listen to go time a lot. That was one of my favorites. Now it's mainly I do listen to mostly technical with Aaron Francis and Ian Landsman, I think it is. Yeah.
Morten:I try to find, like, where we have, like, a little bit of business, a little bit of tech. Nice. Yeah. Yeah. But because yeah.
Morten:I also try to tune in for this the stand up, which is the primogen and TJs and Andrew Moratori. No. Not Andrew. I forgot. I really butchered his name there.
Morten:He's not Casey. Right. Casey. Casey. Thank you.
Morten:Casey. I don't know why that was Andrew in my head. Yeah. I listened to a little bit. But I I I it I don't know.
Morten:I I I I also I have I have this working hypothesis that that they have too many product managers at Spotify, and that's why I and they will find anything I wanna listen to because they're always adding new stuff, and I can't navigate. And then I just end up with, like, the ones I can remember, and that's what I listen to. Yeah. Yeah.
Dominic:Totally. I I sometimes listen to developer voices by Chris Jenkins. I I find I I really like the the the pace and the kind of interview that that he's doing there. The the one that you that you just mentioned with with with Casey. I I I discovered Casey a long time ago with and made hero, I think it was called.
Dominic:He made he made a series on on YouTube where he was kind of building this this game from scratch with an engine and whatnot. So
Morten:Ah, cool. Yeah. Yeah. It's always a fun dynamic because it it has they are all really smart engineers, you could tell. Right?
Morten:But it's it's always like Casey just going down this deep technical rabbit hole.
Dominic:Oh, Casey is a beast.
Morten:Yeah. Totally. And then everyone else trying to get a few jokes in there. Yeah. It's a it's a fun it's a fun mixture of technical entertainment.
Morten:Yeah. Sure. But yeah.
Dominic:So yeah. Yeah. I yeah. So the so that yeah. I I was also listening a little bit to JoeTime a couple of of times here and there.
Dominic:I I know that there there there there has been some kind of replacement. I I don't even know exactly what it is or what's the name. But yeah, if you you know, we are kind of friend with the with the Copa the Cup of Go, you know, Jonathan and and Shy and whatnot. So I mean so so it was nice from them to to invite me there. Unfortunately, I sound like crap because they are using Riverside and for some reason, it did not pick my mic.
Dominic:Mean, I I was I was talking to my mic, but it was my camera mic that that that picked the the sounds. It it sounds like really, really not not good. But anyways
Morten:That's a hard thing to fix in post.
Dominic:Totally. Totally. Can you can you take my other audio input, please?
Morten:Yeah. Yeah. Yeah. No. Yeah.
Morten:Go ahead. No. No. I was just thinking about because I I also remember Go the Go pod GoTime. They did talk about a new they will continue the podcast somewhere else because the the the podcast who owned GoTime was slimming down.
Morten:But I also I never found it. I looked for it multiple times, but I never found the new one. I'm not even sure if it's if it's still there.
Dominic:Yeah. I'm not I'm not sure as well. I I don't don't really follow. I I heard a couple of things, but but, yeah, the the name is evading me completely at the moment, and I feel like I'm I will I heard something like the the oaths was a little bit I don't know. I it might might be a little bit political, a little bit depressing sometimes.
Dominic:I don't even know. I I that this is just something I I read very very quickly on Reddit one day. I I don't I don't recall exactly. No. So because yeah, I I was I was very happy sometimes people were were you know talking about Gil podcast on on Reddit, and I was like wow this this is this is cool.
Dominic:This is cool. It's very hard to measure exactly how much people know the shows and things like that. But yeah. So that that that was that was really nice of Cup of Go. They they talk about Go podcast a couple of times in in another episode as well.
Dominic:I did I did this episode on on punmen actually, which will bring us to the main topic of today. I mean, you know, the tools that we are using, maybe the maybe some libraries that that we like. If we start with some tool and I I won't go into too much detail. For me, pun punman is is a just this great replacement for Docker. I don't know if you if you use Docker at all in your day to day development.
Morten:I use Docker a lot for deployments.
Dominic:Okay.
Morten:But not for for day to day development. I have I have worked in places where we tried to do it. It's one of the these things where the idea is the promise is very nice, but I it just always worked out to be very much slower than just running them directly, I think.
Dominic:But but wait. Wait. Wait. Wait. Wait.
Dominic:So wait. Wait. Wait. Wait. This this would be interesting.
Dominic:This would be nice. Okay. So what if you need, I don't know, Valky or Redis and Postgres and and a lot of a lot of crap that you don't want to install on your on your machine. How do you do that?
Morten:I install them. Firstly, I I install them. Oh, no. Oh, no. I know.
Morten:I know. But I have also created a lot of these huge Docker Compose files to provide Docker no. Sorry. Developer tooling to Teams. So I'm not unfamiliar with doing it.
Morten:I just I don't know. I I like I like knowing where it's installed. I like managing. I like yeah. I I I mean, now I'm mostly on Linux.
Morten:I know, but mostly I am only on Linux. But I used to also do a lot of development on on on Docker, so maybe that was why I remember it being slower than just installing it directly.
Dominic:Yeah. Interesting. Oh, yeah. No. I'm I'm on the other side of the table.
Dominic:That that's that that's great. I think I think if we if we are not always agreeing on on things, it will it will be better. You know, for for me, it's it's all about it's strange that you say that it's it's it slows you or something. For me, it's it's really quicker. I I can load a specific version if I have let let's take my open source project static back end.
Dominic:So I have this Mongo driver well, not a driver, but let's say a an interface to to talk with Mongo, and I I can I can talk to to POS GUIRS? I don't I don't want those to be installed on my machine all the time, and I want to run the tests often when I do some changes in in some different environment that I don't want to maintain myself. That to me is the beauty of now Panman if I if I can say that because I I changed from Docker to Panman. Panman is nice because it it did not requires you to have anything to do with being root or or requiring, you know, privileges and whatnot. It's all in your user land, if you will.
Dominic:So to me, that that brings a lot of of nice niceties.
Morten:Yeah. I I mean, I definitely I definitely see see the value. I also maybe maybe I'm it's because we had so many moving components that I felt like the developer experience running everything in a containerized environment felt slower than just doing it directly. And also, I had to do a lot of trade off when you do this in a team with people on multiple different systems. Yeah.
Morten:I don't see and it's not that I don't see the value. I just maybe I I came to a point where I'm like, just install it.
Dominic:Yeah. But now now you you don't you have some issues that one or two people in the team have some issues because they have some weird configuration and things like that? So to me, that brings some kind of, you know, calm and tranquility to a chaotic way of you know, it it was like that when when I started. When I started, the the dependencies was and maybe I I was traumatized by that time, and that's why I I would have a hard time returning there to me. Returning there meaning that each developers will will install the tool on the on their system and they will configure them and whatnot.
Dominic:So to me, having having that part just being handled in a configuration file and everyone have the same thing, and especially, you know, these days with with, you know, companies going crazy with web sir not web services, but microservices and whatnot. I mean, I don't want to install, like, 15 or run 15, you know, small services on my machine just to just to test something. I just want to, you know, docker compose up and and thank you very much. They are running now?
Morten:Yeah. I mean also, if we are talking about microservice environment and everything is dockerized, yeah, I mean, that's probably that's also where we lean towards you have to mimic the production environment as much as possible. So if you are running your applications in Docker, then I think it makes sense. I just for for, like, database dependencies or, like, Redis or those kind of things, I typically prefer to to just install them myself. And it may be us a little bit of a hot take opinion that I think that is something that that people should should be be familiar with or aware aware of how to do.
Morten:Because most of the time, when I have had to set up these huge dockerized environments was because people didn't necessarily know knew how to do it. So, yeah, totally, if you have a bunch of microservices, everything containerized, I I I totally buy the premise. I just prefer my dependencies to be Interesting.
Dominic:Yeah. It's interesting because for for me, it's all the rivers. On production, I use none none of the containers. Never. It's it's bare metal.
Dominic:I don't use, you know, platform as a service anymore as well. I just just like to to take a droplet on on DigitalOcean or whatnot and and install install what I need there.
Morten:Yeah. I'm also mean, I think I mentioned last time I'm building building the SaaS product around infrastructure, where I'm also building one of the one of deployment option is through binary deploys and systemd, which is nice. It definitely simplifies things a lot. I just think you can do some more interesting things with if you adopt a docker. So now from a from a product perspective, I have to manage the ports that things are running on.
Morten:I don't really need to worry too much about that if people are using Docker. I also I I haven't looked too deeply into it, but I'm pretty sure I can do proper zero time deployments on binaries. I would not, like, not on a single server. Right? I will need to have multiple servers, but maybe I am I'm I'm speaking a little bit too too too speaking without having looked too deeply into it.
Morten:I'm not I'm not sure if you can do that. Does that make sense?
Dominic:Like, I'm I am trying to understand exactly. So what what are we talking here? So let's say let's say I'm I'm a customer of your SaaS. So your product is going to help me deploy my application. Is that right?
Morten:Yeah. Yeah. So managing managing servers and managing applications. But if we we if you adopt the containerization without it having necessarily to be my product, but in any other product, and you just wanna do it on a on a bare bones VPS, doing serial downtime deployments does become a bit easier because you can if you use something like traffic, you can Yeah. You can you can start routing traffic over to a new container without and without killing it first.
Morten:Right? So you can verify that it's running, and then once it's running, kill the old container and and and and then divide old traffic to the new one. I'm not I haven't found a good way of doing that with binary deployments and systemd yet. I mainly just I mainly just kill it.
Dominic:Yeah. That that's what I'm doing. I don't I don't have the I don't have the volume. So let's say I'm deploy I I try to deploy. I'm I'm not deploying like a crazy per you know, I at each fifteen minutes like a lot of people are doing these days.
Dominic:It's Yeah. But but, yeah, for me, it's like, you know what? I'm starting a Sunday morning, but then, yeah, maybe the application will be down for, like, three seconds, the time that system d is restarting. Thank you very much. That that that's all fine.
Morten:Yeah. Yeah. You know,
Dominic:my my 100 my 100 paid customer won't even be there at that time. So what you know? I I I'm lucky to to have, you know I I don't tend to to pass too much problem on those things because I know that with the scale that I'm having, usually with the SaaS that I'm building, well, you know what? It's not it's not really a problem No. For now.
Morten:No. I just it was also well, like, that that's one of the like, I'd like the option because
Dominic:Yeah. But you you are building something to to to manage an infrastructure and whatnot. So, you know, your problem are are different. You know, you you might you might need to, in fact, really ensure that you are handling this problem for sure.
Morten:Maybe. Yeah. But it's
Dominic:just Because that is something that you are selling.
Morten:Yeah. Yeah. True. It's just also it's that is how I've deployed my applications my own applications for many years, just dockerizing it, like, containerizing it, scored by it, and deploying it through either KADI or or Yeah. Traffic.
Morten:I love KADI a lot more than than I love traffic. It's impressive product, but I feel like it's so confusing.
Dominic:Is traffic built in Go as well? I don't
Morten:think Yeah.
Dominic:Free call.
Morten:Yeah. Yeah. Yeah. Yeah. It is.
Morten:That's impressive product, and I think they have taken a very interesting approach to open software, open source software where they they they try to do some offerings as completely open source and then have paid solutions. So that's also some financial backing around the product, which is which is nice. It's it can't just be I feel like it can be quite a beast to figure out to do yeah.
Dominic:Yeah. Sure. Yeah. I I I have a tenant well, I'm still I'm still using NGINX myself. So for for the those listeners, maybe maybe you're you don't know exactly what traffic is or caddy, but probably probably so.
Dominic:I would say there there's a couple of of project in the Go ecosystem that that just are are known by default, you know. Fine is one of them, and and and Wells, and Caddy probably as well, I would I would guess. Yeah. For for me, one one feature I really really really like of Caddy was something like, and I'm not sure I I am going to explain that correctly, but let's say I I wanted to have my customer to to have their own domain and whatnot. So there were a way in KADI to say, you know what?
Dominic:You are going to accept any kind of incoming traffic. And if you don't have an SSL search, you know, generated for for that domain, do a call to this API endpoint, my server API endpoint, and I will return you a list of allowed domains. And now you, you know, you will be able to to generate this SSL I I I was like blown away about this feature. I was like, this is crazy. This is so nice.
Morten:Wow. Yeah. Sounds cool.
Dominic:Oh, yeah. Totally. Because, you know, other than that, I was going to do, you know what? Okay. I I know that KADI has this API, and I know that I can add a domain and whatnot.
Dominic:But but now it's it's completely just reversing, you know. Just give us an endpoint that returns the domains that are allowed to to call your application or at least to, yeah, to load your app your your application, and we will, you know, we will end all that. Of course, for the first request, there is a delay, you know. Mhmm. Because now you're requesting an HTTPS that does not exist.
Dominic:It needs to fetch your API. Your API needs to respond quickly. They need to provide or do all all the let's encrypt, you know, magic there. And if everything is fine, after a couple of seconds, maybe ten, I don't know, fifteen, whatever, thirty maximum thirty seconds, you you you still have you still have the response, which is crazy. It's it's just crazy.
Dominic:Yeah. I like I like KADI a lot.
Morten:I was I was actually not aware of that feature. That sounds very nice.
Dominic:Yeah. I was not as well. So so yeah.
Morten:I mainly use, like, the API to register domains. Yeah. So you don't really you don't even have to you don't have to change the config file. You just use the the local host API that's running on the server to register the domains, and then you can just do a backup of that list. And if everything goes down, you can just make it we ingest that list of domains.
Dominic:Yeah. Totally. Totally. But but, yeah, I I was I was too lazy to implement the API and whatnot. But I they they probably have the the Go library.
Dominic:But I when I found this this feature, said, oh, you know what? Yeah. I will just create an endpoint myself and and please please do the registration.
Morten:Yeah. Nice.
Dominic:It was nice. So yeah. So that's a that's a nice tool. So do you have any any tools other other than than what we just said? You know, the reverse proxy is kind of a bare bone tooling in in most software engineer, you know, tool belt when you are building a web server for sure.
Dominic:Yeah. You know, do you have do you have anything else in your day to day that you that is not a library, but but still still a tool? Could could be built with in Go? Maybe not. So
Morten:Do I have like, I I have some of some some of the tooling I use a lot for my framework, which, is is is just that's just binaries that you download down to your local machine. I use one what is it called, actually? Because I have I have in the in the framework, you just write Enduro app console, and you get, like, an SQL interface. It's called u u s q l. Something something like that, I think it's called.
Morten:That's really nice. Yeah. I'm pretty sure it's called u s q l. That's a nice tool because it's just a yeah. USQL.
Morten:It's just a universal command line interface for SQL databases. Okay. So I don't necessarily, like, have to jump into to IE. SQL or or the MySQL
Dominic:Yeah. Exactly. Yeah. Yeah. Yeah.
Morten:Yeah. Another one I'm starting to play around with is is called DB lab. That's also quite nice. It gives you more of a TUI. Is it TUI the terminal terminal user interface?
Morten:Right? Way of interacting with your with your database databases. So you stay in the terminal as much as possible. I like that's I mean, that's what I I like to do. It's everything nice to have everything there.
Morten:So those two, I I used a lot.
Dominic:And what what is what is the two e gives you? So I I guess you have some, like, list of tables that you can navigate with your arrow arrow keys and whatnot. I mean, is is that is that what we are talking about?
Morten:Yeah. Yeah. So so the the USQL one is literally just SQL in the terminal. And, I mean, that's that's pure SQL, what is in there, whereas DB Lab approaches the same thing, but but with a little bit more visual formatting and setup. So so it's it's mainly development right now.
Morten:I if I have to do anything on production, I jump into d b Beaver where I can set up safeguards so that I don't destroy anything. Yeah. So it it's it's just very bare bones for SQL, for USQL, and then maybe a little bit more prettier looking interface in DBLAB to interact with the with the database. Nice.
Dominic:Yeah. And what about what about the Postgres, you know, the comment when you say when you say something like backslash, I don't know, d, for example, or whatever. Is it handling that as well in in in this tool?
Morten:In in SQL? USQL, yes. USQL, mean, it's it's feels like a thin wrapper around PSQL, but for all databases. So, yeah, you can list tables, you can list relations, you can check out schemas, you can you can do whatever you could in in in PSQL.
Dominic:But have they have they done something like, you know what? We will standardize. This is how you list the schema in all the databases. I don't think still Or need to because I I I I don't think that MySQL have this backslash d or whatever. It's been ages since I have touched MySQL, actually.
Dominic:So I I don't think exactly recall, but I think it's not it's not like that.
Morten:I've it's to my knowledge, at least, have not. They they have implemented the protocol, so whenever I do I just, like, slash d t, I see all the tables in the connected database, which follows the Postgres PSQL syntax. Okay. That that would be that would
Dominic:be sick if if they would have done that or or if they would have kept one format and and now you're in on MySQL. Let's say let's say a Postgres person that is used and now is a now forced to go to to MySQL, and now you you do Backstack d t or Backstack d or whatever, and you, you know, you have you have the result that you were expecting from the Postgres command in MySQL.
Morten:Yeah. That was sick. Nice. I I mean, I it's also trying to use I need to test it more with SQLite, and I've never done a lot of my SQL. I have never used my SQL a lot, so I don't know.
Morten:But, yeah, it it it is it that is not fair to call it a thin wrap up because it is a larger project. Right? But Yeah. I think that's a good mental model to have that you you have one tool to access all your different databases. I think that's quite nice.
Dominic:Yeah. Yeah. Especially for people that that are are jumping jumping around. Speaking of SQLite, this this this is this is incredible. This this is a piece of software that is amendable, if I can say that.
Dominic:It's it's kind of very, very impressive what what they have done, to be to be honest. Well, I was I was playing around the other day with with some, CSV files and whatnot. This this thing is just easy to I don't know, to eat the data and and and just let you let you run the queries that you need. I mean, it it's it's so nice. It's yeah.
Dominic:I'm a little bit impressed with with what they have done.
Morten:Yeah. It's an amazing it's an amazing tool. What what do you use for interacting with the database?
Dominic:Well, I I use the tool itself, so SQLite or or PSQL. Yeah. Directly. I'm coming from an old dot net background, and in back in my days, I was using Microsoft SQL Server actually, and that there's no there's there there was no command line interface at that time. And I, you know, fast forward ten or fifteen years later, at some point, I I had to to replay with with Microsoft SQL Server and and they have, you know, they have, they have came up a little bit.
Dominic:First of all, you you can install, Microsoft SQL on on Linux and whatnot, and they have this, you know, this quote unquote CLI that you can use. I'm saying quote unquote because it's, you know, it's Microsoft. I don't know I don't know how they do that to always have how can I put that without off offending too many people? It seems that they have so many difficulties understanding what developers are are wanting, or maybe that I'm so off with the enterprise these days or the, you know, the business developer. I I don't know what to call that, you know, people that are still using, you know, Microsoft tooling.
Dominic:Mhmm. Maybe they like that, but maybe they they are just not even using it. But I I remember it was it was it was not as pleasant as, you know, SQLite or P SQL, this the CLI the CLI command. But at least they they have done something. But at first, there was none, and you you needed to to go to this this management studio.
Dominic:So it yeah. It was it was kind of it was kind of huge. I mean, it it it but it was it was working very very well. To be to be honest, Microsoft SQL to me, I I only have good good what is the word?
Morten:Experiences? Yeah.
Dominic:Yeah. Yeah. Yeah. Some something like that, you know. Good memories.
Dominic:Let's say that.
Morten:Okay.
Dominic:But but yeah. For for for now, it's all it's all on the command line using using the the building tools. But but strangely enough, I'm I'm not, you know, I'm not that much into into databases anymore like I used to do because I I I used to to be working in financial companies and whatnot. So I was doing a lot of SQL back back in my days. Yeah.
Dominic:A little bit less less these days.
Morten:Yeah. I mean, if you if you buy into the to the Microsoft stack, I'm sure they have a a lot of nice tooling, but you also you you need to. So
Dominic:there there's a weight that that comes with with this and now the versioning and all that.
Morten:Yeah.
Dominic:So so yeah. For for me, it was it was Microsoft all the way until until, like, ten years in my career at some point. It's, you know, strange strange. I I started with with Linux in in 1998. I was running Linux full time without that was my OS.
Dominic:I was running I installed Debian back then in it was it came with 13 hard disk, the floppy disk back back then. Yeah. It was it was crazy. But suffice to say that, yeah, it's it's it's a different world completely. Microsoft.
Dominic:Yeah.
Morten:Yeah. I I mean, it's in Denmark, it's it's almost only Microsoft. Like, that's the only thing we know for some reason. I think Microsoft saw a country of 5,000,000 people, and we're like, they they need some Microsoft. So all developments, at least enterprise level development in Denmark, is is is Microsoft, and also a lot of the startups that comes is Microsoft simply for the fact that that's what people have used.
Morten:But I have
Dominic:never That's that's interesting.
Morten:I don't like I don't like Microsoft. So I've I've never really worked with it. It's always been Mac and Linux for the last many years now. So I'm not really familiar with the tooling, but my first job was delivering Microsoft based products. C was the language of choice, Microsoft databases.
Morten:Yeah. Yeah.
Dominic:It's a different world completely, to be honest.
Morten:But also, they're like, for to them, that was the only world. Right? That was that was what they because there was there was no need to go outside of it when you're in that ecosystem because it's so huge. And it also seems like it's a very good ecosystem if if if you accept that that is what you do. I mean, if you just if that is what you wanna be, and then it should be a really good, yeah, ecosystem to to operate in.
Morten:That's basically a tool for everything you need and a a probably a solved solution, a solved problem.
Dominic:Yeah. Yeah. Yeah. Until it does not work. But, yeah, I've I've yeah.
Dominic:The the first the first twelve, thirteen years of my career was was on on Microsoft. And you you say you say then, Mark, but it's it's kind of mostly that, you know. It's it's either Java or or dot net these days, even even these days. No. I'm not talking about the startup.
Dominic:I'm talking about, you know, good old normal nine to five jobs. Yeah. It's mostly that everywhere. It's probably but I'm I'm very surprised to hear that even the startups were were also also adapting .net. Maybe it's due to like like you were saying, you know, everyone was doing that.
Dominic:So maybe that that was that was the pool of talent that they they had. So it was it was potentially very difficult to find any software engineer that wanted to do anything else, maybe Rails or or whatever.
Morten:Yeah. It it it definitely does exist, but I I mean, I've been been a little bit around in different like, startup hubs. In Berlin, you also see a lot of different stuff where it was I did not hear or see a lot of startups in Berlin, for example, using using c sharp. There was a lot of PHP, and there was a lot of Rails, and there was a lot of also a lot of Go, actually, funnily enough. Das, Rails, and Node, and PHP in in the Danish startup scene, but it was just you if you do look at it, is more I think the more than you expect, but I also don't know what the what measure I'm using to what I should expect.
Morten:Right? But it's it's yeah. It is definitely probably leaning towards that because people use it in the job before they they started Yeah. Doing their own startup. Right?
Morten:And then
Dominic:Yeah. And the the the first rules of of building any SaaS is you use the, you know, use the stack that you are familiar with.
Morten:Yeah. Yeah.
Dominic:Sure. Yeah. Speak speaking of Germany, they yeah. There there has to be there has to be a lot of go there because they when I look at the stat of this podcast, they they are they are, like, number three or four. I don't recall exactly in terms of country.
Dominic:So so hello to hello to our friends in in Germany.
Morten:Yeah. Yeah. That's true. Yeah. I I mean, when I have done consulting, it's it's often German companies and country companies from The Netherlands.
Morten:I feel a little bit from The UK. It's probably here in Europe where you see a lot of concentrations in gold. Yeah. Yeah. There there's a there's a
Dominic:great I think Monzo is is in The UK, which which it's it's a bank that they they have built on on top of Go. Everything everything is Go there.
Morten:Yeah. Yeah. They had a developer. I think what's the name? Katz?
Morten:Something like that. Kaizen? Also, doesn't matter. She but it was one of the developers who did a lot of talks on actually how to structure Golang applications. So I used to consume a lot of her videos and and content when I started out in Go.
Morten:Nice. Yeah. But she was working at at Monso as well. So yeah.
Dominic:But I I I worked with someone. I I I worked briefly at LoadInPack, which which are behind k six. I don't know if you know k six, the the tool to do load balancing?
Morten:No. I thought
Dominic:Okay. There there was someone there that that left to to go to Manzo at some point. So maybe maybe maybe that's the same person. I don't know. But yeah.
Dominic:I mean, to be to be to be frank, Manzo Manzo seems to be nice. Yeah. Speaking of nice tools, so do do you do you have tried anything charm related? I I don't know if it's charm or charm bracelet. I I don't I don't know what to call them.
Dominic:I personally use I I don't I don't recall the word. I don't recall the name of the tool, but basically, it's it's a it's a tool that you can point at some code file and it does a screenshot of that thing that apparently seems to be nice to post on social network and whatnot.
Morten:I think I've heard about it.
Dominic:Yeah. Before that, I was using one called Carbon, you know, carbon dot s h or something like that. Yeah. But theirs is completely CLI based. So you are on the on the CLI, you you call the tool, which I don't know what it is.
Dominic:But but, yeah, it's it's really nice. I I I I like I'm I'm not a huge two e fan myself because the the those those application tends to not be accessible. So but when they are doing, you know, real CLI tool, they tend they they are usually very good, I
Morten:think. Yeah. I mainly used they did one actually, it's quite funny if you have followed the if you're aware of the drama that happens with OpenCode and how they started out, because what what is now Crush used to be OpenCode.
Dominic:No. I'm I'm I I no. I'm not No. The word. I I know I know that OpenCode was using Charm or something, the Elm based way of building 2E.
Dominic:Right?
Morten:Yeah. Yeah. So so the guy who founded or started what was what is now Crush was doing it purely in Go. Yeah. Yeah.
Morten:And then people behind OpenCode now, one of them had worked, I believe, with the guy who started what is now Crush, and then they jumped in and started developing this thing with him. One of the things that really got them hooked was that they had LSP integration into the coding agents, which Nice. Yeah. No one was doing it at that time, and now both, like, Codex and Clawd and whatever is doing that as well. So you get more diagnostic information into the agent as well.
Morten:But he was kind of I think he was one of the first ones to do it. And then I think they got approached by Crush oh, no. What is the name of Charm Charm, the company behind it. Right? And they wanted to buy it.
Morten:And the two guys behind OpenCode, now they didn't wanna they didn't wanna sell, but the guy who started wanted to sell. So that created the splits. So now OpenCode is a is a separate, like, thing where they're developing that under, I believe it's called Anomaly, the company that Dex is a part of.
Dominic:Okay. But it's still called called OpenCode.
Morten:Yeah. It's still called OpenCode. Okay.
Dominic:Yeah. I was wondering why. Because I I remember I I tried OpenCode at some point, and I I found two entities that seemed very different.
Morten:Yeah. Oh. Yeah. Yeah. Yeah.
Morten:That that was where the big drama came from because
Dominic:That is interesting.
Morten:I think I don't know if it was Dex himself or the company he is a part owner of that bought the domain name, OpenCode, or owned the naming or something
Dominic:Okay.
Morten:Which they applied to the repository that is now what has turned into Crush. And they didn't change the name, so there was a Yeah.
Dominic:Okay. Okay.
Morten:Got it. You know, SEO and distribution, whatever. So there was a long battle to figure out, change the name and everything. So they did change the name, but it seems like you can still land on Crush if you're looking for OpenCode. Right.
Morten:But that that's a yeah.
Dominic:Yeah. That that is do do you use OpenCode, actually?
Morten:Yeah. I've used it for, like, a couple of weeks. I didn't I used Crush. I I just tried them out, but it's but, like, I mainly try to stay on the the ones provided from from OpenAI and and Anthropic, simply because they seem to be more efficient with the tokens.
Dominic:Yeah. Yeah. And and and am I wrong in saying I I have seen something that Anthropic did or prevented from their usage that might be affecting OpenCode. I I don't I don't really know exactly, but
Morten:Yeah. Yeah. Yeah. So but I just also it's it's like it depends on how you look at the problem because what what OpenCode had done was they had reverse engineered how to get the access token that you get once you like, when you authenticate through ClawCode. So they have reverse engineered that process so you can use your subscription plan through OpenCode, through Oh.
Morten:Anthropic. And then they they killed that.
Dominic:Yeah.
Morten:And it created a huge uproar in the in the space. Or maybe probably only on Twitter. Right? It created a big uproar. And then they circled back, and OpenAI was quick to say like, Hey, we wanna work with OpenCode, so you can use our plans through OpenCode.
Morten:And then, of course, and for a big day, they circled back and was like, Okay, now you can use it as well. But it was more like this was never actually allowed, but they enforce it until I think like months after OpenCore started doing it. Yeah. I I think I really like Crush. I think Crush is a nice interface.
Morten:Also, the fact that it's built with Go makes it something I'm really familiar with. OpenCode has jumped over to some part of it is written in SIC, and then some of it is done in TypeScript as well. I'm probably not too deep into the stack choices. But, yeah, they they did the split away from Go and over to to more web based stack, and then the the core engine, I believe, is is written in six. So it is completely different projects now.
Morten:Yeah. But again, they kind of do the same thing, you know, LSP integration, nice economics around planning model, planning mode and writing code mode and all of those things. Nice. And then, of course, you can integrate with whatever model you want to use. Whereas with the the quote, unquote official ones from Anthropic and OpenEye are just their models.
Morten:Right? Yeah. So it's nice, but I I was running out of tokens so fast with OpenCode that I was like, nope. I'm gonna go back. I kind of have this this idea that I don't I don't wanna have the big plans because I don't wanna sit eight hours a day only only being, like
Dominic:Totally. So is that so wait. Wait. Wait. So you have the you have the small plan, like, 25 20 I I don't know.
Dominic:$20 Anthropic?
Morten:Yeah. Yeah. Okay. So I have the $20 plan on Anthropic and OpenAI, and that is just enough. Not always enough, but So it's really funny because if you see people when they start to accept that AI encoding is a thing, I think they go through the same processes of, This is insane.
Morten:And then, Okay, we need to reevaluate our workflows a little bit. And then, I think they end up at a middle point because I saw 37signals DSH and those guys, they have released a doc of their approach to agentic coding.
Dominic:Mhmm.
Morten:Which I was following a lot of what I also have experienced, but also what I've seen other people experience, like, you know, use it with without guardrails, let it run, and then adjust. Because there's also people saying, like, I sit and accept everything, and to me, that doesn't make sense because then I could then I would rather write it myself. I don't see what's the point in saying yes, yes, no, yes, no.
Dominic:Right? What can go wrong?
Morten:Yeah. I mean, use use use Git and version it. But I try now to be more of a because it has seen more code than I will see in my entire life. So, bouncing ideas off it just to see it from a different angle, I think that's very good. Doing boring tasks like, hey, take this file and migrate it into this.
Morten:Or grab this code from this repository and apply it to the same style that I have in my repository, something like that. I think that's where it's very good at, and that's also what I think you should do. So I am still the person in charge of the architecture and what's happening. Sometimes, if I do complicated stuff, it ends up with, I'm like, look at this. I'm like, what are you doing?
Morten:Like, this is not what we should be doing, right? Yeah, yeah, yeah. So that's, yeah. I think the small plans is good to force yourself into a middle point, so you're still writing code, you're still Yeah. Reviewing a Yeah.
Dominic:A lot a lot of what what what is getting output. Because let's face it, and I I've I've been using I would say I I don't know what to call myself anymore, but but, yeah, I I I think I can I can say that I have played with with Claude enough? Yeah. And sometimes it's good, sometimes it's it's not good. But but it it all boils down to what are you what are you asking or how are you presenting what the what, you know, what it needs to do.
Dominic:I tend to write a lot of PRDs myself these days now Mhmm. When I when I have something in my mind. And you know you know what? That that is very interesting. I I used it this this weekend in a a way that I haven't used that so far.
Dominic:So in in the hope of of trying to find more adoption for my open source project, I said, can you review what I've done in my marketing website for my open source project? Yeah. And I I, you know, I gave a lot of context, you know. I I ideally, I tried that and blah blah blah, you know, people were not really having they were having difficulties getting onboard and whatnot. Can you can you try to pinpoint?
Dominic:And I want honest review here and other we know, I it was a long prompt, but wow. No emotion from that thing. The the I was roasted. I was it it was, you know, quote unquote brutal, but Yeah. In a sense, good.
Dominic:Yeah. And, things, you know, things like, you know what? You are saying that it's supposed to be easy, and now you are on on your getting started page, and and now you need to crack up Docker and install x and y and do x. This is not easy. I I was you know what?
Dominic:This is true. Yeah. So so yeah. I mean yeah. It's it's it's pretty it's pretty pretty interesting.
Dominic:So that that's a tool speaking of tool that we are using, that's a tool that I I find myself using a little bit more these days for exactly exactly what you said. Task that I know I I would not want to do Mhmm. Because it's it's just just not worth it. I'm I'm not letting it write any Go code yet though. No.
Dominic:You know, Go for me is is I I don't know. I don't really like what what what it outputs at the moment for me. But but yeah. Again, for when I when I need to do any kind of front end development, any kind of React application, or any any kind of front end that I still need to do these days, I I don't want to write that anymore. It's I have been there.
Dominic:I've done that. Yeah. It's good. I don't I don't need to learn anything in in that space. I I don't like that anymore to do that, especially as a blind person, first of all.
Dominic:Second of all, well, I I have done too much of of front end work in my life. I'm I'm all good, but I still need to review what what it what it's doing.
Morten:Yeah. But also, I think I think it depends on, like, what is your goal and how do you how do you treat these these these because it it is just a tool. And if it's if it is to write code faster, I think I think then you have to accept that it's gonna be it's gonna be slob. Like, I don't see a way to use these tools to write code a lot faster and not accept a certain degree of it being bad code. And some some people are fine with it, and I think probably you're fine with that if you have not gotten a call late at night with things being broken.
Morten:Yeah. That's also I think everyone is trying to fumble around, trying to figure out how to use these kind of tools. And you also saw that Microsoft has appointed a new role to be AI overseer or whatever they called it, to be like a quality quality in charge person so that the AI adventures don't break everything. So, yeah, I I I maybe some people, they just would rather have the the text interface. But if you spend all your time prompting it, I still think you can write good software if you look at it.
Morten:But then then I think the argument of it being faster goes completely out the window. Then no. No. That I don't believe you're sitting and writing English to it and looking at what it outputs. That has cannot be that much faster than writing yourself.
Morten:So then it's just a question of how do you like to work, and if that makes you create more work than you would if you had to write everything yourself, fine. But I think we are starting to see more and more people realizing that just because I, like, just because I can generate images with MLR does not make me an artist. Right? There's still something like emotion and taste and things that go into this process of building things that you still need. So, yeah.
Morten:Yeah, I'm going off an tangent here about using AI, but I think I think it's it's a good tool if you just start to use it as a tool instead of this thing that can that can just one shot
Dominic:Oh, yeah. Totally.
Morten:Everything. Right?
Dominic:Yeah. Absolutely. And and also, I mean, using the plan mode, I, you know, I I I do that a lot. I don't I cannot see myself letting letting one prompt being having enough value for me to be to be written. It it does not have enough context, it seems, or I I don't know.
Dominic:It's for yeah. It's it's it's not a very good experience for me at the moment. No. It's it's yeah. It's it's it's not fifty fifty, but let's say it's it's thirty five sixty five in in favor of, you know, 65 being most often than not, it it will write code that I'm not very proud to to have in my in my project.
Dominic:For for Go. I'm talking about Go here. Right? Yeah. But also The types the TypeScript is is strangely enough, I I believe that this thing is is writing as much good TypeScript as I would because I don't want to write TypeScript, if that makes sense.
Dominic:So
Morten:Yeah. So I
Dominic:I I look at the code that it it writes, and I say, well, you know what? It's you know, I don't know. And this this seems this seems good. But when I look at at other, you know, at more back end code, I'm like, maybe not.
Morten:Yeah. Yeah. But that's also like I I tend to use it a lot for so I have a lot of models in my code bases, right, where this is like, you you write some some SQL, you generate it with SQL t, and then you write a wrapper around it. If that is just a pure wrapper, create, find, whatever, the model starts that very well in Go. But then I also had, again, going back to the infrastructure thing I'm building where you need to select how you want to deploy and from a provider you wanted to deploy and you wanted to you have to select if you have like something connected of like an, I don't know, S3 bucket, R2 bucket, whatever it might be.
Morten:And that code, it just completely I don't know what it did. Right? But it was not anything I would like to maintain. So so that's these things with, hey, I need to pull out these things the database, and I need to show these things, and we need to be able to create these things. That is stuff it has seen so many examples of where it's like, I might as well have it do that and then just almost just blindly trust that it will do it.
Morten:Of course, look look it look it over, but again, let it just run until it's done and then see, Okay, does this look correct? It does. And then all the more heavy stuff, then you do that yourself. And then I would argue you have saved time because before, I would have to write all the boilerplate myself and then solve the problem. But if I try to make it do all the boilerplate so I can solve the problem, then I I there's definitely a gain in efficiency.
Dominic:Yeah. Oh, yeah. No. No. Yeah.
Dominic:Exactly. You you like you said, it's a tool. It's a tool. We need we need to to learn how to use it properly and and also, there there's a little bit of preference. Myself, I like I I just like to write Go.
Dominic:I I don't even if it's going to write it faster than me, I I don't care. I want to do it. So that that that's also an another I don't want to to give that away because that to me brings me, you know, this is what I like to do. And I'm I'm I'm I'm doing I'm doing this because I like it. So I don't want to to just, you know there there was this this Simpsons episode at some point where Omar is is working at home.
Dominic:He just he's just, you know, replying yes yes yes yes all of that. I mean, it's we we we cannot we cannot become that. No. This is not what it is to be a software engineer. And and even like like you were saying, I mean, we are still in control of architecture and infrastructure and whatnot.
Dominic:But yeah. I mean, exactly. Exactly. We we we still need to keep some kind of control here and there for sure because, I mean, it's it's crazy otherwise.
Morten:Yeah. It's also like it's funny, like, mentioned Simpsons, it's it's so easy to build the Homer car with these tools, you know? Yeah. The one where he just builds everything. You know?
Morten:Nice. So so that's also when you like especially if you look at the the CEO from Y Combinator where he's like, I am averaging 10,000 lines of code a day. And everyone that has worked in software, they're like, dude, that is not that is not like, you're talking too much to Elon Musk if you think that's a valid metric on how to Yeah. See if your project and, like, you're productive or not. So also, these tools being so new and many people probably only really discovered how good they are back in November, December, it's probably easy to fall into this, I think, this this line of looking like, okay, now we can just produce everything.
Morten:But, like, that has been true forever. It's like we can Oh, yeah. So just because I can code this, I did not write Dropbox or Netflix. Right? I have been coding, like, okay, they are probably a little bit before I started coding.
Morten:Right? But there's there's been product coming up that I could have coded, but I didn't. So a new tool does not change the fact that I could have done it faster. Maybe. Again, it's a big maybe.
Morten:Yeah. So Yeah. Totally. Yeah. Yeah.
Morten:Yeah. I I think it's it's it's just because it's it's every it's everywhere, and you can come, like, bombarded with it every day that software is dead. And and now we just need to write English. And I'm like, I I don't I don't know. I don't know if that's true yet.
Morten:Let's let's see some actual products being built using this, you know? And we actually have, and that product was one example of where the guy just used AI, and then he ended up leaking, was it, millions of women's driver's license to the Internet? Don't know you heard that story where he there was, like, a site where you could you could rape guys you have been on a Oh, date yeah.
Dominic:I think I heard that.
Morten:Yeah. Okay.
Dominic:It was built with AI?
Morten:Yeah. He used AI, and and he just he just went in because you had to verify, right? So he was like, Hey, give me your driver's license, and and the people just uploaded the driver's license. It it was the classic one where they just did, like, a public S3 bucket, or maybe it was not public, but it was it was not secure because he just Yeah. Had Yeah.
Morten:Yeah. An LLM do this. And maybe at one point, they get good enough that they have to they can cost direct this infer this, right? But if you take, like, a small like, what is it? A thousand paper cuts?
Morten:You have to know all these things to to do it.
Dominic:Yeah. I I think that that is why they say that, you know, senior developers, people that that have been out there and and know these things, when when we are prompting or when we are asking that in in a plan model or whatever, we will say those things. We will say, you know, ensure that the blog that you are going to upload will be secure and blah blah blah, you know? Yeah. Or at least we should know that and we should say that.
Dominic:So Yeah. So okay. So let's let's let's jump into the the, you know, one last thing. So, you know, we we all agree that Go is excellent at building tools or CLI and whatnot. So is there any tool that that you would like to have yourself that you haven't built yet and you, you know, you you would like to to have that?
Dominic:And I will I will start because that I'm trying to build this this email client of mine, the CLI email client. So I'm not talking about the TUI. I'm talking about imagine a a tool that I can I can write, I don't know, like mail or whatever, and that would list the last 15 mail in my inbox? And I can send email, I can read email, but it's it's it's always returning to to my my command line prompt. So it it's a CLI.
Dominic:It's not it's not an app that that would that I would stay in. And and and the UI is extremely, like, you know, text based to the depth. Like, it's it's just like, it could be using the the type the typewriter of Go, for example, just just to split things and have kind of a table table layout. And that that would be it. So that that is something that I have in my the back of my head since a long time.
Dominic:I started a a an open source project way, way, way back. And now that that I I'm, you know, starting to discover what Cloud could do because I don't want to write that. I don't want to write it, but I want to have it. So that might be something that that that that I could I could see myself using Claude at some point to write for me and
Morten:yeah. Nice. Yeah. Yeah. That would be nice.
Morten:I think having something to work nice that works really really well with emails locally is is always a little bit like, I'm using something called MailPit right now, but of course, that's a you that's a running application. You need to access for the browser, and that could also be nice, right?
Dominic:Is this application capable of connecting to IMAP for example? So it's getting the email via IMAP then you are sending email via SMTP? Yeah. Okay.
Morten:I'm not sure about the IMAP, but it's sending through SMTP.
Dominic:Okay. So so you are able to to read your email. It's it's it's more friendly than, let's say, the the Gmail email console, for example.
Morten:Yeah. You just get like a it's a but it's also more fully fledged. It's a web app where you get inbox kind of thing, and you see the email, and it does some
Dominic:Okay.
Morten:Some scoring, which can also be nice at times, but also just having it in the inbox in your terminal coming out was probably also be very
Dominic:Oh, yeah. Yeah. Yeah. Yeah. For for me, it's it's terminal all the way.
Dominic:So I Yeah. Because the you know, just searching, just I I mean, it it's it's way, way, way, way faster for me at
Morten:least. Cool. I think one tool I would like to do would be something about video and transcriptions to make that workflow easier. So I do stream a little bit on Twitch and the process of taking that stream, generating transcripts, making them work in a modern environment where you have all the the spoken words pop up with different colors and words, that would probably be very nice. Nice.
Dominic:Because you are posting that to YouTube. Is that is that the reason?
Morten:Yeah. So post it to post it to YouTube or post it to TikTok and and try and and drive a little bit of people to the to the to the stream. And, actually, there is another gopher. He he goes on the dreams of code. I don't know if you've seen his channel or anything, but he does a lot of go as well.
Morten:And I think he actually built it with Rust. So he he has done a done a product that I'm forgetting the name of right now where you, yeah, it it does does some auto cutting for you, so you get all of the the silence out, and then it generates the transcripts and and and gives it to you. That that is one I've been been thinking of of building. Another one I played with was to go, like, full AI and build something that I could just have my mic ready to speak to to to to do the prompts. Just the, like and then auto transcribe it and then chuck it into whatever coding agents.
Morten:I know there's a guy who who does who does he actually does analytics for podcasts. He's called Podscan. Okay. Arvid Arvid Karl. He he I think that's how he does everything.
Morten:Like, he he just talks to the microphone, and then he dictates, have it transcribed, and then chuck it into to to one of his agents, and then it does all the work, I think. Yeah. But that's probably more like a combination with generating the the transcript. It could be fun to see how that would that would work. Yeah.
Morten:Sure. Sure.
Dominic:Yeah. I guess with the whisper model, the open source.
Morten:Yeah. Yeah. Yeah. Yeah. Something like, yeah, in the whisper whisper space.
Morten:Nice. Cool.
Dominic:Alright, Morten. So I think I think that's the episode. Yeah. Cool. Nice.
Dominic:So I yeah. Let's let's talk next week.
Morten:Let's talk next week, man.
Dominic:Alright. Bye.
Morten:Bye bye.
Creators and Guests
