090: Want financial advice? Here we talk about Go and how we're building businesses using Go
Hello, gophers. My name is Morten Vistisen.
Dominic:And I'm Dominic.
Morten:And you are listening to the go podcast. So how are doing, Dom?
Dominic:Very good. Very good. Or is life in Spain for you at the moment?
Morten:I'm melting. I'm absolutely melting. Yeah. It's almost
Dominic:like
Morten:being Scandinavian made you not be ready for 30 degrees all the time. Yeah. My wife can can my wife apparently is cold. So at night when it's like 25 degrees, she's just with her blanket. I'm like, can we can we please turn on the AC?
Morten:And she's like, no. I will freeze. So I'm just like this. A Key and Peele meme where I can't remember which one like, this comedic show where the guy is just sweating bullets, you know. Just Yeah.
Morten:I'm I'm enjoying my evening too. Wow. Yeah. No. But it's I mean, I'm complaining, but it's also it's also nice too.
Morten:To be fair, it's nice. Yeah. Yeah. Yeah.
Dominic:It it dropped under 10 degrees Celsius yesterday during the night in here.
Morten:Wow.
Dominic:Yeah. Yeah. We we yeah, there there's something in in Quebec. It's it's it's interesting because in in the West, in British Columbia, you know, Vancouver, the the the that parts are under heat, but but in the center, at least Quebec, well, it's it's pretty it's pretty cold this summer.
Morten:Yeah. Interesting. Yeah. So welcome to the weather podcast.
Dominic:Yeah. Yeah. What can we do? Well, we can we can talk about go. What's going on?
Dominic:What's going on in your life?
Morten:I have received some feedback on Reddit that was actually useful. I posted the PlugWid landing page to a subreddit. I can't remember which one, doesn't really matter, but I was like, Hey, please, what do you think? People were a little bit confused about what I'm solving, so I actually discussed a little bit with one of the people posting and I think I got a new headline that actually makes things a little bit more clear as to what I'm solving. And then I had a guy come in and tell me it was definitely an AI generated website.
Morten:It was clear in his mind or in my mind that it was AI generated. I was like, it's like, that's fine. It's not, but you know, whatever. It's cool. He was like, keep telling yourself that, bro.
Morten:And I was like, yeah, okay, fair enough. So I basically has been have been changing my approach a bit to how I do front end classes. I have adopted more of the design tokens from ChatCDN, adjusted the color theme a bit. So I guess I could see his point. It looked a little bit purplish, so that was probably where a lot of LLM vibes came from.
Morten:And since I now have to redo the entire page, I've also taken a chance to implement some of the features that I have been building for Enduro, which is to lean a lot heavily into what the DataStar guys call fatmorphing, which is basically send down the entire page on an update and then let DataStar take care of it with ideomorph, I think. So that is pretty much what I've been doing. I've been leaning a lot into Temple, the UI, whatever you want to call it, package has this feature called fragments. And I love them. They they are really, really nice because you just slap an ID on an on a on whatever you want to get updated right, and then you have, like, a a wrapping fragment, and I can just I can just render out the entire page in the back end so I don't need to do any fiddling about what should I send, what should it's just the same data every time and then grab the fragment, send that down, it gets updated, which is maybe a little bit wasteful, but it is very nice from like a DX standpoint.
Morten:So a lot of UI work testing out the dual features and playing around with getting some nice looking graphs on the dashboard as well. So a live updating graph with with the data staff is also is is quite cool.
Dominic:Nice.
Morten:Yeah. Nice.
Dominic:So do you do you do you do have this this new this new headline? Can you give us some, you know, I don't know, some some some peek at it?
Morten:Hey. The landing page is looking good. The dashboard is looking horrendous because it still uses all the old classes. So I'm I'm still in the process of of redoing it, but the the the new theme is live on the on the
Dominic:Okay. So so the the new copy as well and and and whatnot?
Morten:Yeah. Yeah. So that is live on deploycreate.com, but but the the dashboard still needs needs some work.
Dominic:I was talking about the H1. So what is the H1 at the moment in your website?
Morten:It's really bad that I actually forgot it right. But it's pass pass simplicity without the bill. It's kind of the
Dominic:h one. Okay.
Morten:It is the h one right now. Yeah. Yeah. And also, I think I talked about it some some episodes ago where I was like, I need to reframe it so I am not positioning myself as self hosting but more as a platform alternative. And I think H1 communicates that a bit clearer.
Morten:And then I have the subheader saying, like, we we connect to your cloud accounts, provision hardened servers, and deployment logs and monitoring. And then I I throw a little bit of shade around same simplicity as render at a fraction of the cost. So hopefully that makes stuff clearer. I added a nice graph to illustrate the difference in compute. I think that's also important to get to maybe I'll start to talk about that a bit more because when you do run your own servers, you get a huge price reduction in terms of compute, I think the example I have is like two VPUs at eight gigabytes of RAM is around $19 a month with Hedsner, And the comparable compute for that on the on the newer managed platforms like Fly and Railway and Arvendor, that is, like, between five and ten x in cost if you want the same lower compute.
Morten:Yeah. It is Really? Yeah. It's quite big. It's a little bit approximate, right, because they do include free usage and stuff like that.
Morten:But it is it is like, you get the free one, but you get, like, a quarter of a CPU, right? And then if you wanna actually have some RAM, you you you start to to pay for it. So hopefully, the new lending pace will communicate intent a little bit better. Yeah, and then I added some comparison articles like compared against Coolify and Camel and stuff like that. So, yeah, I'm excited to see if that moves the needle in Yeah.
Morten:In Zaspeak or or not.
Dominic:Well, the the message is important for sure. Yeah. Wow. I I will be coughing today. I don't know what's happening with me.
Dominic:So we are not AI people. So, you know, LLMs cannot cannot do that. Never.
Morten:No. It is real human voices.
Dominic:Yeah. For better or for worse. I have to this morning. That that's good. I mean, yeah, the messaging is always is always tough and, you know, it's it's something something that that will take time for sure.
Dominic:But as as, you know, as much as you will get more and more feedback, you know Yeah. It's always it's always good. I it's interesting that you're saying that because I I was also I I I need to do an over an overall of of the content of the of static back end homepage as well. So I I was surprised to know that you were using a full framework though for for the marketing website. Personally, I I I, you know, I just like to use static static site generator.
Dominic:I use Hugo for for a long long time now. So how how is it going for you to have a are you using that? Is is is that bringing anything to the table or, you know, it was just to to use the the thing that you were building at the same time? So which which is totally fine.
Morten:Yeah. Yeah. It it is. I I very much wanna approach it as as everything is one application, the the kind of, like, rail style approach. So this is also just anecdotal that is that is behind all of this to build, like
Dominic:Okay. Your your your dashboard at the moment is on the same domain, probably. Yeah. Okay. Okay.
Dominic:Okay. I got it. Okay. That makes sense.
Morten:Yeah. That's
Dominic:Three Ruby Ruby on Rails style then. Yeah.
Morten:Yeah. That's I mean, I could probably do I technically could just add React app and embed it and and and have have that work as well. Right? But I I believe tweeted out the other day, like the more I use DataStar, the more I love it. It's such a simple model mentally, think once you start to get it.
Morten:And I also after I really started to embrace like the fat morphing technique, it becomes so becomes so simple to build real time and modern feeling web applications. Yeah. Because right now, I just I I could technically do, a two way communication, but right now, I just I just pull the back end for updates, and then I update the graphs. I update I have, like, a server overview where you get some metrics. You get the routes that are registered in caddy and all of those kind of things.
Morten:You can pull service logs, and they can all happen, like, simultaneously. So for for example, right now, I just pull every four three or four seconds, I think it is. I just pull, like, the CPU and memory usage and then any routes that get registered. And then I separated the the logs that comes from, like, Kedi or from my operator or from Docker, SSH, whatever you want. It's a separate thing that can live update independently of the other page.
Morten:Right? So that thing is just it is so simple because it's just the same controller with a query param, And then you have a little toggle button that says, okay, now I want a live logs from whatever service you select or I want logs from the last twenty four hours or I want logs from this date to this date. And it all happens very incredibly simple compared to, I think, what you will have to do in in some SPA setup. So I'm very Yeah. Very happy with that.
Dominic:I I I was so so going to to to to do the route of HTMX, and and when I discovered Datastore, I was like because I was using HTMX and Alpine for a long time Yeah. Be before I I I tried the DataStore and the fact that it it brought the two because Alpine, it was was really helpful for me. Because when you think about that, you you you can do almost anything that a React application can do with with HTMX and Alpine, and that was that was great. I started to I started to use that. I think it was, like, early twenty twenty, something like that.
Dominic:Very, very early stage. And, I mean, that that was great. But when I when I saw Datastar and that that's why I I wanted Delaney to to come talk to to this podcast. It was like, wow. Okay.
Dominic:It's, you know, it's so tiny, and and it does all all of all of all of its doing. It's Yeah. It's it's crazy because you do have the paradigm on on the server, you know. It's it's really nice what you have on the server, but all the things that you can do as well on the page Yeah. It's it's just wow.
Dominic:It's just fantastic.
Morten:Yeah. I was I was doing the same before. I also discovered Datastar with, like, ACMX and Alpine, and I never really I don't think it's not that I'm saying that Alpine is confusing necessarily, but I think it does require a little bit more effort to really get into how you use it, at least for me. Whereas I think the data star Signal post, it just clicked right away.
Dominic:Oh, yeah. Yeah. Yeah.
Morten:And then, of course, I started to overuse signals all all over the place, which is exactly what what they will tell you not to do. Right? Delaney and Ben will say, like, calm down with the signals, you know? Yeah. Yeah.
Morten:And also what I'm doing now with the whole refresh is also just just have to have to back end pull it because I I have a, like, a rather not complex, but I have a a view of an environment. So like every application has a staging and a production environment. And when you click into that, there's a lot of different things you like. You have your secrets management, you have your deployment logs, you have the application logs, the health, like there's a lot of different things that needs to go to the page and I was using signals to kind of manage that from like There was like a tab bar where you can select what you want to see, which does make it a little bit difficult to add in, for example, if we want to link to a specific deployment from another point in the page, that gets a little bit trickier instead of just driving that state from the back end. But it is really nice to use.
Morten:I think it's very simple. They've done an amazing job, I think, on on test. And, also, I guess, you say keeping it so small is, what, 11 kilobytes or something. It's crazy. Yeah.
Dominic:I'm surprised, though, because whenever I see something post on on the /r/golang, the Reddit, it it's not recommended as often as htmx still. No. So I'm wondering I mean yeah. I I they they have some work to to do still to to, yeah, to position themselves against HTMX and Alpine because it's still it still seems to be the recommended way at the moment.
Morten:Yeah. It's intriguing. I think they are very like, whenever I do do stream and it's data style UI related, I do post it in the Discord, and they see they they're very welcoming and supportive of that. I think that's that's what they need. Also, it's really hard because you can't talk on their behalf, but I think they really love working on it, but maybe that part is not what they I don't know.
Morten:I don't know. It's hard to say, right? But, yeah, that is I think just because what is HDMIX, I think, is at, like, 45 44,000 stars and data star is around 5,000 right now. Yeah. And you can't really use it as a measurement of popularity, but you kinda can still.
Morten:Yeah, I think it's just a matter of time before it explodes a bit more. I think there was also Tietch, the guy who does a lot of neovim stuff. He's like one of the core maintainers of neovim. I think he also started to play around with it for OCaml or building a plug in or something. I think if if he and and the primogen starts to pick up data style, it's probably gonna see a big
Dominic:Yeah. Sure.
Morten:And then I also because maybe it's like is this, like, rediscovery of, like, having the server drive things? Because, like, rails properlize it with their with their version, right, with the turbo, right? So it's probably very common in the rails community, but I still think for like what the last ten years with all the single page application, I'm tempted to say propaganda. The whole state from the back end is probably a little bit of a maybe a foreign concept to people or it's not something maybe a lot of newer developers have not really thought about web application in that way. That is the what's it called?
Morten:Ethos or mythos or whatever of of DataStar. And and Yeah. They they Ben Ben did post in the Discord what people would like to see more of in terms of content. Like, is it more tutorials? Is it more full blown application examples?
Morten:Stuff like that. So I do think they are working on it and hopefully, that will drive more adoption to it because it's so nice that this is something if I ever were to, know, God forbid, write the JavaScript again, that would nothing stop me from just using DataStar. And all of the same mental models will will persist. It will be the same. It will just be a different language.
Morten:Right?
Dominic:Yeah. Totally. Totally. Yeah. Yeah.
Dominic:Yeah. So my my Microsoft wore on something when I when I started. I don't know if you if you heard about that, but the the old, the the classic not the classic ASP, but the first version of asp.net had a gigantesk view state on the page. And whenever you were doing anything with the page, you were posting some some kind of messages to the server, and it was there, but you were sending this gigantic, you know, blob of data each time. So let let let me let me rephrase that.
Dominic:So let's say let's say you have a button in a form. So you you you you know, you would have an event on your button that that was handled by the server. So in a sense, they were trying to do what what HTMX and Datastore kind of, you know, implemented correctly, if I can say that. But they they they were there, like, in in 2003 or something like that. So it's it's interesting to to see that, you know, that there's a place and time for for everything, it seems.
Dominic:Yeah. And and for a rare time, Microsoft was probably having a good idea by wanting to leave, you know, most of the, you know, most of the logic or, you know, in a sense, all of the logic in the server. Yeah. But but wow. What what a dirty implementation it was.
Morten:It was it was, like,
Dominic:very yeah. You were you were sending a multiple bytes, you know, a huge, huge, huge amount of data that that that were sent back to to each time that you were doing any kind of event. It was it was crazy.
Morten:Yeah. I mean, luckily, I haven't done too much asp.net. I I I I do see some YouTube videos on some once in a while saying that it's actually gotten really good.
Dominic:Well, the I'm not talking about the MVC flavor. So they they they build the MVC flavor at some point because rails was was getting a lot of traction, and now they integrated the MVC pattern. But before that, they they had this this, you know, asp.net and, you know, you were you were having controls on your page and you were having an attribute run at server. And you were you were directly get you know, having a function name there, and that function was declared in, you know, in your back end, if you will, as as a normal c sharp function. So the front ends was calling directly a server side function.
Dominic:So they completely ignored the re the request response, you know, cycle and whatnot all and that that is that is often what Microsoft do. It it's they try to make things, you know, simpler for developers, but they at the same time, they kind of well, at least at that time, they kind of remove a lot of things that, you know, programmers need to understand. You know, people need to understand what is the request response cycle and whatnot. You cannot you cannot just have a lot of abstraction and and try to try to make things simpler because at the end of the day, as soon as there is a problem that the framework isn't isn't going to to, you know, to solve or there is something bad, you know, programmers just just cannot do anything. So that was that was one of of the issue at the time.
Dominic:Yeah. And it's it's interesting that today we we still we still are, you know, basically at the same at the same spot where well, yeah, of course, it's important that the states stay in the server, but but we, you know, we were there, like, twin twenty twenty four years ago. It was it was just, you know, not really ready for that.
Morten:Yeah. Yeah. And then we we got the blessings of single page applications and that whole yeah. Yeah. I mean, now we've full circle.
Morten:It's starting to
Dominic:Yeah.
Morten:I don't know if it's starting to come back a little bit, but a little bit. Maybe some some some some sun is shining through the window with with the front end stuff, hopefully.
Dominic:Absolutely. Wow. Yeah. Front end. We we cannot live with and we cannot live without, I guess.
Morten:No. I mean, if you I think it's just if you choose tools you like to work in, it actually becomes
Dominic:Oh, yeah.
Morten:Enjoyable. I guess I'm enjoying building front ends again with with the with the setup I have. It's really nice. And it's also every sometimes I try to, like, push it a little bit. So since everything is go in the view layer for me, I could just pull data from the view file.
Morten:I shouldn't do it right, but it's it's it's fun that you have the the opportunity to do it. You know?
Dominic:You're not doing database call on your Vue. Right?
Morten:I was playing around with it just to see, like, hey. What what what would happen? Yeah. No. But most no.
Morten:No. It's everything is the MVC life cycle. But I mean, the effect that it's there and it's option, you know. If even though we shouldn't do it, it's just quite cool because it's just so familiarized with the tool and it's one language. It's kind of the promise of what a lot of node based application word, like everything is the same language.
Morten:And here it's simply everything is just Go. It's Go in the back end. It's Go in the front end. You write Go code everywhere. Some some JavaScript to have graphs and stuff work, but all of it is just Go, and it's it's such a nice and calm setup to work in.
Dominic:Oh, yeah. Yeah. I like that word. There there was a movement in in the the Bootstrap founder where I was, you know, starting a comp company. Mhmm.
Dominic:And I I posted something the other day. I don't know. It's it's maybe two months ago, but it's it's so not where we are going with with all all these LLMs and whatnot. And and, you know, there is so many aspect that we are going further and further from from the calmness. Know, peep people seems to there there will be a a lot of burnouts coming in in the the following years.
Dominic:Yeah. Sadly.
Morten:Yeah. There was the one of the the guys behind OpenCode, Adam Mhmm. Who who also talked a lot about he he got, like, a AI burnout, and I think he pulled the plug for, like, a month just to to get out of it. And he went on, I think, the Primogen's The Stand Up podcast and talked about how you could you could literally see it in his token usage where where the burnout came because it was just a slowly but steady increasing graph of token usage, You get this mental model that, okay, I can, so probably I should run these things all the time. And it's funny because I still see a lot like being a Rails, DHH is also very pro AI right now.
Morten:And I'm not saying that the tools are not useful or not good, but there's still this thing of it's so easy to click that magic button. And, okay, we do reviews, but do you really do reviews, especially if you can just output? I think there's a lot of, as you say, like, burnout coming, but also not calmness. And I think once you get burnt, because that's what happens to all of us. While you start working as a programmer and, you know, have all these grand ideas about refactoring or building everything at once, and then you take down production and you're like, okay, maybe we should take a little step back and do it in a, yeah, more calm way.
Dominic:Taking time to do things correctly, I think it's overrated at the moment.
Morten:But I also think it's taking taking time. Like, I I was tweeting a little bit about how the the the work is the is the work is the work that you have to do. Right? It's not the prompting. Like like, the sitting down and writing out things is also the work that you have to do, I think, for a lot of type of projects or problems to understand them, to internalize them, to to actually figure out what is this white path.
Morten:I still think the tools are good at, like, exploring and MVPs and looking at direction. Right? But doing the work is is is where the work is at. Right? It's not this high level middle manager feeling of, I'm just gonna create a grand castle in the sky, and then I'm gonna create a big big ass spec doc spec document and then give it to someone.
Morten:You know, like, there still has to be someone who who works with it to fully grasp it, to see to get the insights, you know. And I think you you lose that a lot with with the the LM workflows.
Dominic:Yeah. Oh, yeah. Totally. Yeah. That's that's interesting.
Dominic:Yeah. I I had some some results, so I don't if you recall, I implemented some some telemetry last week where I was going to for, you know, tracking the the long requests that are happening in static back end. Yeah. So so so far since I I started the project, I don't I don't really knew exactly, you know, how how much time a typical request takes and whatnot, you know. There were just no telemetry whatsoever.
Dominic:No statistic or call it what you want. So the way I did that is I'm I'm calling a or at least I'm publishing an events when a long request happens. So, obviously, I have this this middleware that is, you know, capturing the start time and the end time of of any request, and I put that at where I hard coded directly a one hundred and fifty millisecond, you know, just out of no reason in a you know, just just a and so the the the way it work with static back end is that, you know, you can publish event in your system, and you can have a server side function that reacts. You know, they they react to those events when or their the messages when they are posted. So this is a system, a system message.
Dominic:So, basically, it's it's the the platform that post that when, when it detects a slow slow request. For now, I'm just logging it in my in my function. So imagine I have a function that just have a you know, it's it's just like imagine function handle, and I have the body and whatnot. And I'm just I'm just using my log function there. So that basically, like, three lines of code.
Dominic:I look at that this morning, and there is actual there is act at this moment, fifty fifty, you know, I would I would call that, you know, slow request. I I just I just look at a couple and yeah. 500 no, 500. Yeah. Four four hundred and fifty millisecond at the moment, the the the the one I've looked, which is grabbing a a list of orders or maybe maybe to render the graph in in the dashboard and things like that.
Dominic:I I don't exactly know what is what is the query exactly, but I think there there is some metrics in dashboards and whatnot. And I think that's it. So four hundred millisecond is still you know, it's it's not that terrible, but it's not it's not good at all in my book. So I was pretty I was pretty happy to see that well, okay. First first of all first of all, the publishing system works great.
Dominic:You know? I can I can react to, to system events and whatnot in in a server side function, but, but, yeah, I have a lot of lot of digging to do? I think I think I will put my hat of database administrator this week, and we'll try to to understand why, you know, why it's so it's so long to run these queries at the moment.
Morten:So what are you using for did you say what you you are storing the metrics, or you were just examining the the log output?
Dominic:Oh, yeah. It just just sending the data at the moment. So I'm I'm just logging in my in my function, and I have already a mechanism to you know to capture the Everything that is logged in a function during the execution of a function is capturing in a in a table So so with my CLI, I can just do, you know, back end function info, the name of the function, and now I see the last execution of that function. So I see all all the slower requests in a sense.
Morten:Nice.
Dominic:So what I what I'm what I will probably do is is use use an LLM to just reformat this for me. So I will just output the the output of the of this function to the LLM and just ask the LLM, you know, can you can you give me a, you know, super simple list of all, you know, the queries quote unquote that that I need to check. And from there, I will I will just go to to Postgres and use use the explain and whatnot, and see if there is a lot of table scan and and and whatnot. You know, it's probably it's probably I I will need I will need some kind of index and whatnot. But but, yeah, this is where this is where I am.
Dominic:So this part for me is is very nice. So this is this was mainly the major piece of my of my career was working with data, you know, optim optimizing queries and whatnot. So this, yeah, this thing I find it very nice, very interesting work for me. It's nice to go especially if I if I would go from, you know, 450 to, I don't know, under 100. I I put one hundred and fifty millisecond just because I don't I don't know why, but hopefully, I would I would I would much prefer to have, you know, around 100 for for all of my queries.
Dominic:So at 400, it's it's it's not good in my my book.
Morten:But isn't this also around that range where it's not perceptible to the human eye?
Dominic:Is this something Probably. But but I I still I still need to I still need to lower lower down a lot because I don't have I don't have any data at the moment. So imagine if I were to have a lot of customers suddenly, that that would be a problem. So it's a you know, when you when you have a database and you still you are still under the mark of, I don't know, let's say 50,000 rows in the table. This this is this is mainly what I have what I have signed in my career so far.
Dominic:So the the first you know, the zero to 50 k is, you know, you you can you can have no index whatsoever and, you know, the query would just would just fall. At 50 k, if you if you start to to have very expensive queries that that will require the the engine to read a lot of rows just to just to just to output the the right, you know, rows in a sense. So let's say you have you have somewhere clauses and things like that. So you you need to you need you need to start thinking about that. But at, you know, at at 1,000,000 rows, this is where this is where it start to get to get a little bit more interesting.
Dominic:So this this four hundred millisecond queries at one one, you know, at at 1,000,000 rows would probably be around, you know, as much you know, probably twice or one and a half what it is. So probably one and one and a halfs again. It's it's it's way too long.
Morten:Yeah. I was also maybe think the thing is because at the one hundred and fifty millisecond mark sounds in my head like this is where I was just wondering maybe that was why you not maybe not constantly chose it, but I I think this is where if you get down to one fifty, that's why you can't you can't spot it with the human eye because it's so fast. I was just wondering if that was why you you may maybe on constantly chose that as the the benchmark. Right?
Dominic:Yeah. Absolutely. Yeah. Yeah. Exactly.
Dominic:But it it just feels I don't know. Because there there are so many queries that is going on at the same time as well. Yeah. I I I really want to have a a snappy a snappy web interface. And and don't forget that my UI is is in React.
Dominic:So I don't know about why, but it it already feels a little bit bloated and slow even without data. So a four hundred and and and fifty millisecond might might seems to be quick, but, you know, it it it needs you know, just imagine that. It needs to go from the Postgres server to my my back end as a server server API. And from there, it goes to, to the React front end. So there is, you know, there is some network latency added to that as well, which I have no control over.
Dominic:So the only thing that I do have control is the speed of the queries and Yeah. Yeah. Just just adding a one tiny index might, you know, might just do the trick. And, you know, I'm I'm it it will be it will be interesting because I'm using the the gsonb data field for the user defined field. So if you recall, my back end as a service isn't creating tables, you know, normal, columns for all all your data in your application.
Dominic:So it basically just having a couple of system fields like the account ID, the user ID that they created, and and things like that. The the primary key and whatnot. But all the fields that are coming from your application are inserted as JSON in a in a field. Mhmm. So that will be interesting because this is where this is where I will need to have some some indexes because I'm doing some some WER clauses that do do you know, you know, it it's doing somewhere some criteria verification from the JSON data.
Dominic:So that is, you know, that is a little bit slower, than normal field, I would say. It's it's not that that sensible. It's not very palpable, if I can say that. But I I still need to I still need to be careful. It's it's it's in the it's in the eye.
Dominic:It's already too high for the amount of data that I have, I found. Mhmm. Yeah. Yeah. But that was that that was interesting.
Dominic:That was interesting to see that, oh, wow. I already have some, you know, some slow queries in a sense.
Morten:Yeah. Grafana has a really nice UI for this where you like you simply if you use PTX, they have like an hotel tracer thingy you can add on to it and then you start to see like the waterfall graph, that's all you're curious. That's some really interesting metrics you can build out of this. It's really like you, once you start to actually visualize the whole like request flow, often get surprised right about what is actually taking taking a lot of time in your in your applications.
Dominic:Absolutely. But can you can you drill down to to see exactly what was the query? So so if if it if it's slow, so instead of just seeing some graph, are you seeing the, you know, the data that build the graph at some point?
Morten:You so the the way I have done it was to have, like, you have trace ID and you have span ID and then you can just associate, like, can pick the the span ID, and then you can see, like, all the all the trace. I can't remember. But then you you get down to see the the calls that is made to the database and in the order and how much time they take
Dominic:Nice.
Morten:Through, like, starting from a diff specific request. So I've used that sometimes, but I don't know if you can drill down and see the underlying data. You get you could add, like, attributes and stuff like that so you can actually pull out.
Dominic:No. But you're you're seeing the query, so that that was that was what I was I was after. Okay.
Morten:Oh, yeah. Yeah.
Dominic:Yeah. Yeah. It's interesting. Yeah. I I decided to roll my own quickly instead instead of implementing the, you know, the real OpenTelemetry what and whatnot because I don't know.
Dominic:It feels a little bit it it would add some weight at the moment.
Morten:Yeah. But I would I would love
Dominic:to have some dashboard and and things like that, of course. So that, you know, that could be something that I would I would I would need to to look. So so so far, the the plan is just to extract, you know, which which of the user defined tables are are slow. It's it's mainly the orders at the moment because this is where there is the the most the most data. But but, yeah, it was it was interesting.
Dominic:It was interesting to to finally finally have some I don't know. Some idea of how many how many milliseconds it it it's taking at the moment. Because, yeah, it it it's not it's not slow. I'm I'm I'm not feeling the UI as as being slow, but at the same time, I don't have scale at all at the moment. So it it it need to, you know I I need to keep an eye on that because it it it can it can be a a turn off at some point when when you're, you know, when when you are clicking a button and there's nothing that that is going on or at least you even if you have a a loading indicator and whatnot, this is not the the kind of application that I like to build.
Dominic:So
Morten:I used to work at a at a company in Berlin where at certain points of the day, the whole dashboard will just freeze. And there was no, like, real reason that we could find for it and we also didn't have OpenTelemetry data. We had Google, they were on GCP Cloud Run. And then we realized because we were migrating from a Symphony application to a Go API and then of course like a React front end that they have chosen a data type that would allocate I can't remember how many gigabytes of it was a lot of data it would allocate each time because it was the biggest field you could choose in Firescrew. That will just take down the entire thing.
Morten:And we spent a long time looking for it until it was like, damn. Okay. This is because like and it was just used to to to store, like, an an avatar URL or something like that. So it was completely unnecessary. Wow.
Morten:So this is where, like, if you had some proper telemetry, you could go in and, okay, like, it's it's this insert here that is actually that's actually an issue. Right? And and and there's also OpenTelemetry has gotten a lot more popular in the in the last couple of years than than I think what it used to be because we had just locks to go from. That was that was it. So we we had to go through the locks and try to correlate like, okay, what is like, this is happening at this time, what is happening?
Morten:And then one of the engineers figured out that, okay, it's because we're using this MySQL data type that allocates a lot of data to each field. Yeah. Fun times debugging without data. It has to go with wipes.
Dominic:I don't know. Yeah. For sure. For sure. You you need you need you need to have good good data.
Dominic:But but this this work is, at least for me, this this is interesting. Yeah. Find finding, you know, where where when something is happening. I was I was almost in the same situation. You know, I've inherited this, you know, this IT department when I was, like, 21 and things like that, and I I inherited a very dirty visual basic application.
Dominic:And one task that the people were doing almost, you know, 100 time per day, it was like, imagine imagine that you are checking a checkbox to to say, oh, you know, I've I've I've completed that thing. And it was taking, and I'm not joking, about ten seconds to you know, by the time that they are clicking with with with the mouse and and the checkbox to appear because it was doing a lot of things on you know, before before it was it was checked. And I I just commented one. I I, you know, I took one week to try to debug and find what what was going on. I just commented, one thing in in SQL Server.
Dominic:So back then, it was very popular to use stored procedure. Basically, you have a lot of logic in your database.
Morten:Yeah.
Dominic:So when it when whenever they were clicking that that checkbox, it was rebuilding the entire, you know, invoices for all all of their of their clients, if you will. So I just come into there to see. And I am you know, I'm 21. I I don't really know what I'm doing. So I come in that.
Dominic:I save the stored procedure, and boom. Everyone is is, you know, just happy with their life now. And I I just extracted that to a to a daily daily task that run. And I'm talking about that. You know, we are talking about two thousand two thousand one and whatnot.
Dominic:Yeah. So it it was it was so it was it was so nice to see the people. And and this is this is where I actually I I started to love doing software development, you know, just to make sure that it does make a difference in people's life. Yeah. That that to me was, oh, wow.
Dominic:This job, this thing is is fantastic. I I was like the hero of the week, the hero of the month. Yeah. It was yeah. It was a but but yeah.
Dominic:When when you don't have data to find out, it it it took it took me you know, I I I had to to trace the entire the entire thing. So what happened when they are clicking that? Oh, it's calling x, y, and zed, and things like that. So it was the old days. We we were not even having any kind of of logs back then.
Dominic:So it was just the code and what the user was telling you.
Morten:Yeah. Yeah. Yeah.
Dominic:And the the rule number one of any programmer is never trust the user.
Morten:Yeah. Yeah. Yeah. It's times have times have have changed. It's it's fun to look to always look back and see how how much it's it's it's, yeah, it's it's changed throughout
Dominic:the It's pretty comfortable these days, I I would say, to to do software engineering. Yeah. It was it was not like that.
Morten:Don't have to feel the the same level of pain. I used I also I used to work at a place where the previous programmer had put up on VPS and there was no metrics. Right? And then it will crash from time to time, and then I found out it was because they were just writing locks to a a file on the server, and then that would take up all of the server space. Wow.
Morten:Yeah. Yeah. Yeah. Old old war stories about how things used to be before you had proper insights into your applications.
Dominic:Yeah. We we we will have totally different type of problems that are that are coming, I'm sure. It would
Morten:Yeah.
Dominic:Yeah. It will be way different now.
Morten:Now the problem is when your LLM agent deletes your production database. Yeah. I don't know if you saw the guy. There was a guy who wrote about it like, he wrote about it on Twitter where he was like, I took I took all these precautions and it still deleted my entire production database. And I mean, okay, he did take a lot of precautions, but I
Dominic:was still like,
Morten:but, dude, you gave the LLM access.
Dominic:That's what I was going to say. Why it was having any kind of access whatsoever?
Morten:You can just give like, create, like, a read only user if you really like, that was what I if I really needed to debug a problem, I would give it a read only Yeah. Yeah. User and then you but
Dominic:Oh, it's way too long to do that, man. They they don't they don't have time. Then that that's, you know, returning to the calmness that we were talking. I don't know what is what it is like at the moment in in in companies and whatnot. And if if we have listeners, I'm I'm genuinely interested to hear about that.
Dominic:If you want if anyone wants to come talk about your nine to five days at at your company and and things like that, I'm I'm very very interested at the moment to to hear if, you know, did it change something and and is is it like you need to do like twenty twenty x what you what you were doing before? Yeah. Even though the LLMs are clearly not able to, you know, to do that. So
Morten:I had a talk with a guy who reached out to me. There was this post on Hacker News around if you are available for work, I'm starting to to be at a pace with Deploy Credit where I can start to take on client work again. Right? So he reached out and, like, let's have a talk. And and you could definitely like, for him, he was described himself as technical, but not developer developer.
Morten:I don't know if that makes sense. He could he had an honest like, he was not full time developer, but he he had developed something.
Dominic:Mhmm.
Morten:And he was very much everything is just agents. Right? Like so he was, I think, very much from the the expectation that, yeah, we just do agents. And he could also when we started to talk about what I would charge him, I think he fell down his chair because he he was just in a different place, completely different place, I think, from what he would expect something like this to cost in this day and age with LLMs. I think he was like, we are we are a factor bit, like, off off each other.
Morten:And I was like, what what do you like, I need to eat food. What did you expect? Just because there's LLMs, you know. So, yeah, it would be very interesting to hear people from that would do, like, corporate gigs and hear how how how it's changed and how they are approaching it because I read a lot, but I'm also aware that I'm in this funnel of tech Twitter and hacker news for all my technical related news. So everyone there is full on AI and 20 pull requests per day and stuff like that.
Morten:And I don't really think that is the reality a lot of people are seeing. I don't think that's how a lot of people work. I think it's true. You can do more. You can do things that you wouldn't attempt before because now you have this magic box that you can get examples from or they can explore it for you.
Morten:But, yeah.
Dominic:Yeah. I I have difficulties to believe that a software company would would would let people use LLMs like like we are hearing that companies are supposed to use that. I I I don't know if if that makes any sense what I'm saying, but that that that will cause so many problem in production. This is this yeah. I I I'm I'm genuinely very interested to to hear about or and and if if, you know, if for some reason the com the company did not even adapt to the LLM for some reason, that is also very interesting.
Dominic:Yeah. So there there has to be there has to be cases where, you know, the CTO, you know, put put their foot down and says, you know, no. No. No freaking way, man. This this thing, we we are not going to push that into our software engineer teams and whatnot.
Dominic:I mean, I I don't know what's going on. I'm I'm not I'm not on on the field, lately, and and yeah. I I I would I would like to to hear about that.
Morten:I would love to hear also what what is being done around domain knowledge because I I think I've alluded to that a couple of times on here, right, that when I was a little bit lettering in one a little bit while, I was losing touch with the domain knowledge. And again, my stance of like every production line of code I write by hand most like 90% or 95% is there's like some repetitive stuff that I might let them do. But but the whole process of working with the code and exploring the code and exploring the idea and the understanding, again, go back to the beginning of, like, the work is the work that you need to do to, in my point of view, to get the domain knowledge so you have a clear understanding of why we're doing something from a technical standpoint, but from a user standpoint. And I'm really skeptical that you gained that from prompting the agent and then doing pull request review. I have not done any pull request review where I was at the same level of understanding as the person who wrote the underlying code for that pull request.
Morten:I can look through it. I can work with it, but I will still need to sit down and do the same level of work as that person did for me to probably gain a similar understanding. And that's also why we saw a lot of pair programming getting adopted into companies where, like, okay, you're two people who work with this code. And then when you two feel comfortable with this code, it's ready for production, then we can merge it. Because there's two people that has, like, the main level understanding of this piece of code.
Morten:Just so so skeptical that you get that from LLMs. And if if you have to spend almost the same amount of time recreating it by looking through the pull request and and and to get that domain knowledge, what are we gaining? Are we gaining anything in understanding or time or efficiency? And especially now that they are hiking their prices. I don't know if you have been following along with released and Traffic released Fable and then the government, like the US government I've banned
Dominic:that. Wow.
Morten:And Sam Altman is out saying that now he is hearing from customers that price is a problem, and he's never heard that before. And it's like, what what, of course, is a problem. It's now you're you're charging the true cost of the product, right, which is an absurd amount on top of what we were used to with the subscription model where if you go when you go over to the API based billing that they was putting a lot of the customers, like corporate customers on API based billing, right, and the cost just exploded. Whereas before, you could justify you could justify, like, a couple of grands per per developer per year. That's that's fine compared to their salary.
Morten:But when you four or five or 10 x that amount, I don't know if that's realistic, but I I did hear, like, at least doubling, if not three or four timing, the the the price for one one person to use these tools.
Dominic:You're talking about the the subscriptions Or Yeah.
Morten:Yeah. So comparing to the subscription, they're going they're going away from the subscription. For example, with Fable, it's available if if Donald Trump allows people. It's available on the subscription until I think it's the twenty fourth or June 28, and then it's only available on the API. And I think that's the direction we are starting to see.
Morten:Really? Yeah. Yeah. Yeah.
Dominic:Okay. No. I'm not I'm not aware about that. Wow. This is crazy.
Morten:Yeah. And now they're, they are, like, pulling back a little bit. It's like, okay. We're gonna decrease prices again because they have this looming IPO, the liquidity went, and then you're probably just gonna see see see the true price of these things. Yeah.
Morten:And people keep talking about it, equating it to something like what Uber did back in the day where they was heavily subsidized the prices, and then you start to see the true price of taking an Uber, which was more expensive, but it was not the same order of magnitude. It's a completely different order of magnitude. And once you have like, it's like with the when you have a driver with a car, that thing lasts for a long time, and that is definitely not true for the GPUs. Like, these those things have a really short life cycle. I think it's, like, three, four years before NVIDIA outputs the new generation, which is, of course, what you want to be competitive, but then you also spend, like, a couple of billion of dollars building out a data center with the old I don't know.
Morten:I've yeah.
Dominic:Oh, yeah. Yeah. Yeah. Yeah. Yeah.
Dominic:There's a problem there for sure.
Morten:There's a problem there, and I I I also, I explore a lot of the the models that come out of China, which is very capable and also at at a completely different price where I think even if you go through the API pricing, it's reasonable. It's still expensive, but it's reasonable. Maybe that is where we're going to see it, or if the current path they are taking is only US and US nationals inside because it's inside of US. It's not if you're a US national outside of The US, they still would not give you access to Fable. Like, it was only in The US after the government lockdown because it was so dangerous.
Morten:It's just this crazy world where it's like a walled garden of these things. Is that gonna be and then you go back to the efficiency and the effectively measures like people don't even know how to measure the return on investment for these things. What I like, I think we're going to see I don't I'm still very skeptical that we will see the future envisioned by these big these big, big AI companies because I just I don't see I don't see the sign. And that is not me saying that the models are not valuable or they cannot help create good software. I definitely think they can, but the current setup, I I don't I buy it.
Morten:It's it smells, you know? It it there's something that smells.
Dominic:Yeah. But like you said, they they are going to to go public, I think, in two weeks, something like that, if I'm not mistaken.
Morten:I I think they like, SpaceX just went public and which made all the changes to the rules around being adopted onto the I forget the name of the index, but the index they are being adopted on changed the laws for SpaceX, and that is why OpenEye and Antropy also because they posted their initial, whatever it's called, petition to get public there. Right? And then all the index funds has to buy those stocks because they have to follow that index. And then, you get the liquidity event. Then they made the money, made a lot of pure millionaires, and then you have to start making money.
Morten:You can't really hide behind hype more at that point because the books are open. Right now, we don't really know if they're making money. They are not. They cannot be making money. I don't think they're making money.
Morten:Right? If you're public, But that is what you have to you have to show the capital expenditure. You have to show your revenue, and you have to show your net profit. And I don't think those numbers are gonna be looking very enticing.
Dominic:Yeah. Wow.
Morten:The weekly the weekly AI rant, so I'm I'm very excited to see what what happened. Yeah. With this thing.
Dominic:It's going it's going fast in in a wall, it seems. Wow. It's it will it will will hit hard.
Morten:Yeah. Has to hit
Dominic:hard at some point. It cannot continue like that. No. With all the money that is lost, I'm talking.
Morten:Yeah. There's this guy called Ed Citron who is very anti AI. He's also doing some digging and is refreshing to see someone who actually tries to have the discussion and pull out numbers and be like, can we see something actually measurable of what you are stating? Because a lot of them doesn't really don't really state anything like this.
Dominic:It's not like
Morten:they just come out and say things. It's not like and I think I mean, I don't know how right he is. Whatever, but he has a good point with when they don't really talk numbers. They don't really talk revenue. Mhmm.
Morten:And why wouldn't they if they had good revenue numbers? Like, it's always users. It's always what you see from non profitable start ups that will communicate growth through employees, through user growth, through users growth. And then you get to a point where, okay, we need to start showing revenue numbers before people actually think we are profitable company that is worth investing in and stick around and trusting in. Yeah.
Morten:Yeah. Maybe in two months, we go back to this podcast and I'm just completely wrong and they are hugely profitable. I don't know. I don't think so. But
Dominic:yeah. Yeah. Well, I mean, I mean, I haven't seen how SpaceX did in in their in their things. I I think they will get a lot of money when when they go public.
Morten:Yes. Elon is the first, quote unquote, first trillionaire right now because of that IPO, which is it's just crazy. It's just crazy because I do believe a lot in what SpaceX does, but the fact that they are now three companies combined into one is just strange that now they own xAI that bleeds, what is it, dollars 5,000,000,000 a month. And the profitable arm of the company is still like the satellite and Starlink and that whole thing. So getting what is a 1,750,000,000,000 value yeah.
Morten:I'm go I'm ranting now on the financial the go podcast, but but yeah. Yeah. Yeah. It's it's a weird time.
Dominic:So you did not bought any any stock of SpaceX, if I understood you?
Morten:I have not.
Dominic:Me either. A problem.
Morten:I mean, long term, I probably would. I I do believe in what they do with the space program, but but but the thing is so I used to study finance in uni. Right? And if you look at IPOs, it's always almost always a bad investment because it's all like, the I think the historical average is that they hike around and I might be completely wrong on the numbers here, might be misremembering, but something like 30% and then it drops in the next like one to three years. It always drops off down to a level that is much lower than the initial price offering.
Morten:So some companies does not do that right. They continue up, it's fine, but on average, like the IPOs, is not really a good time to invest in companies based on historical data. So yeah. Not financial advice, but I will probably wait a little bit with buying the the StPierre stock.
Dominic:Interesting. Yeah. Oh, well. Yeah. I think I think we are better to continue to write code to to ensure our our skills are are still sharp because
Morten:Yes. I don't I don't know. I don't
Dominic:know what's the future.
Morten:Yeah. Being good at things has has never gone out of style. You know? That's always been a a competitive advantage if you know if you know what you're talking about, and offloading that to someone else has never has never increased your skill whatsoever.
Dominic:Totally. Totally. Yeah. Alright. Yeah.
Dominic:I think I think that's a wrap.
Morten:I think that's a wrap. Yeah. Alright, man. Have a good week. See you next Alright.
Dominic:You too. Bye. Bye.
Creators and Guests
