085: Morten received an ~acquisition offer, Dominic got his 1st paying customer
Hey, gophers. You are listening to go podcast. My name is Morten.
Dominic:And I'm Dominic StPierre. So
Morten:this week, we actually have a listener email, which is quite cool. I had a a guy write me about our last episode on local LLMs, which he was also keen on exploring, so that was was really cool to to see that we're actually reaching something and talking about stuff that resonates. So, yeah, I think we should maybe start out touching a little bit on on that.
Dominic:Yeah. Yeah. Pretty Yeah. Pretty pretty cool. Pretty cool.
Dominic:So thank you. Don't don't hesitate to contact us at all. There might not be a some easy ways other than, you know, there's always the Slack channel. But if you are not on the Gopher Slack we are there by the way, channel go podcast. So it's in one word.
Dominic:So that's one way, but but, yeah, you know, our email could be could be something, potentially.
Morten:Yeah. Happy to talk about local LLMs. I'm really interested in that topic right now. So you can like, you can always reach me at Morten@mbvlabs.com or the Slack channel if you want. Happy to share a setup.
Morten:I'm also trying to get an article done and a video done on this, but there's always a million things to do. So in the in the meantime, yeah, feel free to to reach out and yeah. If you have any questions.
Dominic:Yeah. I can be reached at demonicstanpierre@gmail.com. So it's in one word my last name. So s d dash p I StPierre. Not the yeah.
Dominic:Exactly. So there, that that could be that could be that. And now those email will be cut by the the transcription, and we will we will receive a lot of new interesting email, which is sarcastic.
Morten:I'm getting a lot of like, I I so my my domain for Deploy Credit, I have tried to put out as many places as possible to get some to to increase my domain rating, ranking, whatever the eyes called. Right? So I'm getting a lot of weird emails right now. A lot of people a lot of VC apparently wants to buy this this product, which is just Damn. What do you talk what are you talking about?
Morten:But but I was I was so skeptical that I talked to to another mate of mine who has done a lot of startups, and he was like, yeah. Yeah. Try and text them back because I couldn't find any information on them. Yeah. And he was like, text them out.
Morten:So I texted them back like, hey. Can you share? And they're like, no. No. We can't share.
Morten:Like, okay. Why would you wanna buy this zero user product that's not even launched yet? It doesn't make any sense at all. And then it seemed like it was just some, I don't know, email collection thingy because they always they use the same email for some reason, which is weird. They use, like, my the mvistisen@whatever.com.
Morten:All of them. And they start they sound same kind of names and yeah. So I get a lot of that. And then I also get quite a few people from Japan who wants to either, a, work through me, so literally use my name but complete the work and share their money with me, or b, they have a team and they want to
Dominic:Yeah. Offer services. Yeah.
Morten:Yeah. Yeah. Yeah. It's a strange world.
Dominic:Yeah. You should you should reply to the VC. Alright. Yeah. I can I can sell you?
Dominic:Give me €1,000,000, and and we are done.
Morten:Yeah. I kinda feel like it has to be dollars. I don't know why. Oh, yeah. I I know we I know we use use euros here, and it was worth more money, but there's something about SaaS and dollar amount.
Dominic:Yes. Totally. Totally. I I was just saying that because you're in Europe and
Morten:but
Dominic:whatever whatever makes you happy, man. 1,000,000 and oh, yeah. I I think I could I could I could probably send you that way if you if you want it that bad.
Morten:Yeah. Alright, man. So what you've been up to this week?
Dominic:It was it was pretty interesting. So with my with my SaaS that I'm building, we are onboarding the fur well, what what will be the first paying customer. So so far, there there's there's a, you know, there's basically three account that are testing the platform. So I offered them a different level of, you know, free usage, if you will. You know, a couple of the one of one of them is for three months, another will be probably lifetime because it's it's someone that we know and whatnot.
Dominic:Long story short, this week is going to be the launch of the first real, you know, real paying customer from from the external of our network. So someone that came, you know, from outside totally. And interesting enough, it it will be a high volume customer right right right away. So I had a lot of lot of things to do this week, to be frank, because it's not, you know, it's it's not like I'm not confident or anything. And we we we will come back probably to that next week because they basically sell books, and they are launching a book.
Dominic:So basically, I'm not even sure. I I well, I I I don't want to to to talk too much, but let's say let's say they they they currently are selling via a small library, and the library isn't able to sustain the the volume now. So they need to to move online. So it's a physical book. It's not an ebook.
Dominic:Right? So we will see. That that that will be interesting. So this this week, it was all about, you know, tightening the, you know, quote unquote boring taxes calculation, the shipping fee calculation for the store module. So just as a reminder, I'm building a platform that allow people to create app and an app as zero module at first, and people just enable modules.
Dominic:What what are what are the module that we are handling? Well, a lot of things, you know. The c r the CRM is at the is at the center and that one is free. And from there, you can have a website builder. You can have a, you know, a proposal module invoicing.
Dominic:In that case, this this will be a, you know, the store module. There's an online courses, which, know, I'm very very close myself to move to my platform for my, you know, all my stuff, my courses, and whatnot.
Morten:And I
Dominic:yeah, that's pretty exciting. There's there's an email marketing module. Anyways, there there's even a phone a phone IVR. So basically, it's an app that lets you run your small business. So we are targeting solopreneur and very small businesses.
Dominic:So they can, you know, they can do what they need to do to to run their business in a sense. So I I don't even know it's not clear exactly the messaging. The messaging part in the SaaS is always hard to to determine and whatnot, but so far, it's great. So for me yeah. For me, this week it was that and I I called I called the the fulfillment company a 1993 old Montreal based company, and it was interesting.
Dominic:No API, you know, because they they are they are handling the how how do you say that? It the inventory is there. So basically, it's a it's a warehouse and they they receive the orders and they need to package the boxes and and things like that. So I talked with them multiple times and at each time I was having different, you know, different requirements to to send the orders there and whatnot depending on on who you are talking to and and things like that. And I was like, oh, this is this is this is classical.
Dominic:So, yeah, I created a a small a small background process that just each day will kind of build the Excel file that they want to receive. And at first at first my first question was about, you know, what about the the backing slip? You know, the I don't I don't know how to say that in French in English. Sorry. The the the paper that you are putting in the box, you know, for confirming the order and whatnot.
Dominic:So at at first, they were saying, oh, no. No. No. It's us. We will we will create that.
Dominic:No worries. We we do everything. And couple of days later, it's like, oh, yeah. But now we need to either have access to your platform and print the packing flip, call it what you want, the thing that have the the customer address on there and and what product they need. Because at some point, their Excel file that they sent me had no product whatsoever on on that.
Dominic:So I asked the question, well, how do you know which thing to put in the box? And and now they told me, oh, well, well, we need we need a packing slip. We need something. And I was like, okay. But that that was not part of the discussion initially, but I asked that very own question.
Dominic:Anyways, so a lot a lot of small things, a lot of I forgot how it was to to work with with, you know, all older companies, big companies that do not even have APIs yet in 2026, which is kind of crazy. So yeah. Excel file good old Excel file with the zip file of all the PDF of the well, let's call it an invoice. Could could could call an invoice? So they they they will have that to to put in the box.
Dominic:They ship the box. A lot of tightening tightening the, you know, the order process to make sure so so basically, the store module is pretty I'm I'm pretty happy about about it now. So it's it's nice to have real usage, real customer that are going to pay because now their needs is more real. This cost this customer is is a little bit nervous because they were going to go with Shopify at first. And, you know, without entering into too much detail, let's just say they are they are more left than the right in term of political things.
Dominic:And Shopify has a, you know, moved very very drastically to the to the right. So even even though they are Canadian business, they they are, you know, quote quote unquote more bad than than than good these days in a lot of people's opinion. So anyways, long story short, the volume will be there and it will be it will be interesting. So I'm I'm happy that the back end is in go. I'm happy that I have a lot of tests at the moment.
Dominic:I won't lie. I used the LLM to generate a lot of e two e test. And now it's it's decent. I think I I think I'm I'm pretty confident of the of of their launch.
Morten:Nice.
Dominic:So yeah. Very very eager to
Morten:see that. It will be
Dominic:it will be a nice you know, if I'm honest, would I've preferred to have five smaller customers? Yes. I I I did not really wanted to handle like five five thousand orders in in one day as the, you know, as the early that the platform is at the moment. But am I confident that it will work? Yes.
Morten:Yeah.
Dominic:But, you know, will it will it is is there anything that will happen with the inventory and things like that? Well, you know, I I yeah. It remains to be seen. But but, you know, there there won't be any customer is afraid that the the servers won't won't won't, you know, won't sustain the the loading. I I'm, you know, I'm like, no.
Dominic:No. No. That that's not it. If if anything if anything is is to to happen, it will it will be, you know, regarding, well, the inventory is pretty low and now there's a lot of concurrent orders, you know, who's going to have the last one of the of the of the book and, you know, that is mostly what I'm afraid of, you know.
Morten:Yeah. I mean, yeah, I get I get it. It's it's it's always a little bit nerve wracking the first time you really put it to the test. But I mean, it's also a good way to, like, iron iron out all the the the minor details and the unforeseen things, you know. So certain things happen at scale that you don't really catch Yeah.
Morten:In in in local stuff. So that's nice. But it's it's interesting when you talk about the the pricing or the the way you're gonna price it because there was this guy who built something called Gummy Search, I believe. It the product was so so many years ago, I was toying with the idea of building, like, an analytical platform thingy with on top of Reddit, basically using the I think it was the BERT BERT language BERT model, something like that, b e r t, to extract topics from conversations. And then doing some research, I find this guy who's basically done that already for Reddit.
Morten:He built amazing products. And the point of this is that he was discussing the early pricing for his for the SaaS product, and he was he was debating the whole, like, lifetime versus, let's say, quote, unquote, regular customers. Right? And he was actually using lifetime customers as an early funding model for his Yeah. Startup Yeah.
Morten:Which is I think it's a very interesting way to look at it because maybe you lose, like, to say, you offer it for whatever, like, a thousand bucks or something like that. Right? He he did that. He he offered, like, lifetime models for, like, a thousand dollars, and then he got 50 of those. And that bought him, like, runway for
Dominic:Yes.
Morten:Like, a year, maybe, what if he was if he was, like, being being careful or something.
Dominic:I'm not a huge fan of lifetime deal, to be frank. Even even if it helps helps you at the beginning because you still don't have the real answer. You know, those people might just be there for the lifetime. When I said lifetime myself, I I was I was referring to free. It's free for them.
Dominic:It will be always free. But the coupon the coupon that I gave them in Stripe give them access to I think it's $20. So it's enough it's enough for the module that they needed, but I don't want them to start enable all the modules because my pricing is is not tiered. For the first time in my life, I'm building a SaaS that have a quote unquote more complex pricing mechanism, but let people just pay for exactly what they are what they are using. So as soon as they enable one module, this this adds to their subscription, and I, you know, I find it very interesting.
Dominic:It will it will you know, it remains to be seen because you always hear people, you know, let's make sure that your pricing is simple and blah blah blah and things like that. But I'm on the other hand, yes. But if I were to have, I don't know, a 30, 75, and 150 plan, there's a lot of there's a lot of there's a lot of money that the the customer is quote unquote losing because now, oh, I need to have the middle plan because my my module that I want is there, but I don't really care about those other two or three things. So I don't know. I'm I'm trying to I'm trying to find the the the perfect, you know, perfect balance be you know, between pricing, you know, focusing on revenue for myself, but making sure that the customer are going to pay exactly what they want or at least what they need.
Dominic:So this is where I am. But yeah, to to return to the lifetime, I I understand that. I've heard a couple of people that were also doing those AppSumo deal as well. And, you know, I've seen a couple of them doing the AppSumo deal, rebrand the product, and now you are free from, you know, those SEO thing that, you know, that can plague your your brand for a couple of years after that. Because let's face it, once you have a popular Absimon deal, well, everyone wants that deal after that.
Dominic:And so yeah. Lifetime Lifetime deal are not very sustainable. They they are they are pretty much very dangerous in my opinion. Because exactly like I was saying, you you you you still don't have this famous answer and this answer of, you know, will my product be attractive enough for people to really pay that? Or they just they are just here to, you know, to pay this this $100 and and and, you know, use a lot more resources over the years.
Dominic:So I mean, it's it's not a real test still. It it's a it's a decent first step of course because you you still you still are getting money. You still are validating a little bit that, okay, yeah, my my ideas has some legs. But yeah. Yeah.
Dominic:It's it yeah. There there's there's some careful to be there.
Morten:Yeah. It's yeah. Definitely. Definitely. It's not it's not super straightforward.
Morten:But, yeah, I I think it's, like, it's still an interesting thing to to explore. Definitely also depends on, like, what you can charge for the lifetime value. I mean, if if it is just a $100, then, yeah, maybe that really Oh, it depend about
Dominic:the product. It depend about the product. Yeah. You know, there there were a lot of calendar calendar booking apps that that were selling for 100 lifetime recently because, basically, you you normally pay for one year. Right?
Dominic:It's it's the math that is the most common. You one year worth of, you know, the normal MRR that you would the monthly that you would pay is usually what a lifetime should be around.
Morten:K.
Dominic:So if if the product is going to be $10, you know, let's take Calendly for example, which by the way, I do have a booking module in my app, but that was that was to to brag a little bit. Yeah. So let let's say the product is is $10. So basically, a lifetime price that would make sense for people would be around $100 in my opinion. You cannot really charge $5,500 for them.
Dominic:It's it's like five years of Yeah. You know. You can, but I don't I don't I don't know that I don't know that it it would sell as much as a $1,100.
Morten:Maybe not. But I also think it's kind of, like, I I think, like, doing a lot of freelancing, you you you meet different people from different regions of the world, right, that have different expectations to what does an hourly rate for a software developer or what should that be? How much how much would it cost? Right? And and and I I feel like it's a little bit of the same here because sometimes I I give a rate and they're like, what are you talking about, man?
Morten:That is absolutely crazy. And other times, they're like, yeah, fine. You know, whatever. Let let let's when can we start? So I've just also think that it's a it's a good metric to explore.
Morten:So if you say, like, a year worth is a $100 and saying $500, just seeing what happens. You know? Like, you you can always put something in your terms, conditions, you know, saying, yeah, 500. If someone buys it, fine. You know?
Dominic:It depends it depends to whom you are selling. If if it's going to be a bigger bigger business, a bigger organization, the the $500 is is probably nothing for them. So, yeah, it depends. But let let's let's pick the Calendly example or the Calendly competitor in in that case. I don't think that because Calendly target is is the the prosumer or, you know, solopreneur and things like that.
Dominic:They they wouldn't probably not have paid 500 for that.
Morten:Maybe. Maybe not.
Dominic:Maybe I'm wrong. Who knows?
Morten:But maybe they would. That's that's like the the fun thing about pricing and positioning. Like, you never really know. Oh, yeah. Yeah.
Morten:Totally. Totally. Yeah.
Dominic:You know? You do need a lot of, you know, test and whatnot, you know. It's as as soon as you as you have a product, the fur the first thing that you you should you should try to to do is make sure that your pricing are flexible. I did that for I I think I did that the right way this time. And it's it's crazy because, you know, with with all the SaaS that I've built, it was always a crazy time to try to change the price.
Dominic:But this time, I I took the time to use the Stripe as this you you can you can put your own I don't even recall the word. It's probably a key. Is it a key or an an ID on the price? And now this is what gets plugged to to my system. And if I just change the price, I I I just need to switch this this custom ID from one, you know, one price to the other.
Dominic:Pretty quick. Pretty you know, compared to previously, I I was mostly using the price ID, which now if you want to change your price, well, guess what? Even if you if you said that in an environment variables and whatnot, it's still it's still requires some redeployment of your application and things like that. I mean, this is this is something that people are not really thinking about enough. How would I be able to change my price tomorrow if I want?
Dominic:Is it going to requires me a lot a lot of efforts? What about, you know, what about the subscription page for for my customer and whatnot and things like that. So I mean, it I I know it it kind of distract a little bit from what you're probably trying to build, but it might be worth be be because testing multiple different prices is like you said, you never know. You you can you can you can bump your price. And and again, I I also think that this advice is is blindly given for a long time now.
Dominic:Oh, double your price. Oh, increase your price. Fuck fuck that shit, man. No. This is not as easy as that.
Dominic:I'm sorry. I'm sorry. This is, you know, you can you cannot just put a new price tag on someone on something and and just call it a day. This this is this is bullshit. This is not how real world SaaS works.
Dominic:I'm sorry. But, of course, try to keep your your price, you know, your price plans very flexible. And and, yes, try to try different experimentation, and you will see. You know? Yeah.
Morten:But I also think it depends on where you are in the life cycle because you're you it's true when you are, like, more established, you cannot just you saw Anthropic doing it with the pro plans just moving things around however they solve fit. Right? But that is, like, one of the benefits of the early days that that you probably could just switch things around because then then you probably know the first customers by name, you can talk to them, you can figure something out.
Dominic:No. But you can you can change that for your new customer. This is this is what what people are are not doing at at Anthropic, and they they they don't have a product that allows to do that. But usually, what you do when you when you are going to change your price, you never change your price for your existing customers.
Morten:This Oh, no. This is great. No. No. No.
Morten:Course. Of course, not for the for the for the for the existing customers. Well, when we think about exploring, it's always like, okay, so you sold that x for a 100 people. Okay. Then you can always grandfather them into that plan and then try something new.
Morten:And especially in the early days, I think that's okay to to play a bit more with that. But, of course, once you reach a certain stage, it's very hard to to to to change as much. Right? I think that's the point or not?
Dominic:Oh, yeah. Yeah. Yeah. Totally. Because because at first, you don't you don't really know.
Dominic:Like, it's all it's all it's all bundled in the same unknowns. You don't really know the messages. You don't really know how much should it cost, and you don't really know how much the people are are ready to pay. Are they even ready to pay? That that's the first question that that needs to be answered.
Dominic:That that's why I I I think, you know, when when people say double your price, well, maybe maybe you you would not even have a chance to have a sell. So let's and and and as well, you know, depends how you you want to test your software. At first, you need users. You you you need real user at some point. So if if your price are too high at the beginning, you you might jump into this phase of, oh, yeah.
Dominic:I will continue to add feature. I will continue to blow the thing because now there there's there's not real feedback from paying customers and that that is that is so much a danger that I personally fall into, you know, very often because at some point you just need you just need real user that that's a fact. After that, well, if you want to increase the prices, I I don't care that my my my first, let's say 50 or 100 paying customers will will pay, you know, what whatever the price. Let let's say $10 and I I don't I don't care. I don't care.
Dominic:This is not what I'm after. I'm not looking at money at the moment. I have some some some capital to survive for a short period of time. This is what I'm trying in my life. I want I want this lifestyle this lifestyle.
Dominic:Well, this is hard to say at six AM. But yeah. I I will I will increase my prices for sure or or maybe not. I mean yeah. This is this is interesting.
Dominic:I'm I'm not in this for the money. I'm I'm not at all in this. I I won't I just want I just want my cover, you know, cover my bases and and do some profit. That that's all. Yeah.
Dominic:Yeah.
Morten:Yeah. Definitely. I think I think a lot of this solo entrepreneurship is also just building the life you want. Right? And and hopefully reaching an amount of money that can sustain that is is is, I think, a life the the not the life goal, but the goal for many of us.
Morten:It's also my my kind of approach to to deploy CrateWide, hopefully getting to a point where you can pay the bills, not necessarily pay as much as it would taking a full time job or doing consulting. It would be nice if it gets to that point, but but if it can if it can sustain my my my life and and I can focus on building this thing as a as a solo team, just me, I think that would be very cool. Yeah. Obviously, dream is, like, we I don't know how much you know about Peter Levels. He was kind of big in in the hacking, bootstrapping Yeah.
Morten:Brought a lot of the remote work stuff on the scene. Right? That is obviously the end goal because he is just him and making, what, $3,000,000 a month or something crazy, which is just absurd amount of money to make as a single person. Right? But but I mean, less than that can also can also work, I think, at least for me and for a lot of people.
Morten:Right? So, yeah, I I get what you mean. It's it's not necessarily need to be a billionaire Yeah. Kinda play. Yeah.
Morten:If if it happens Oh. You know.
Dominic:I I won't say no, but, yeah, I would be happy with five k at the moment. Let's let's let's be honest. I would be happy with five k in MRR. From a business that I built from a SaaS product, a software product, wow. If I can just reach that, man, I I would be a happy person.
Dominic:What what happened with with you? So any any, you know, new updates, any blockers that you are having and things like that? Where where where are things?
Morten:I have been working a lot on what I call the create operator, which is the API that runs on the private servers, which I mainly had built using AI and and then focused on writing deploy create the platform myself. And now it was it was time to to to give it some some TLC, some tender love and care, which is solely needed. And and and doing this work really, I think, again, confirms my my hypothesis on on AI assisted coding that I cut, like, 99% out of now, so I write all the code. I write all the code by hand. So and and seeing what it did and, actually, I'm gonna be jumping a little bit back and forth here because I I see a lot of the people developing in something like Laravel or Rails.
Morten:I have a good friend of mine who who works with the who works at Laravel, and his mind is still completely blown about AI assisted coding. Right? And I was kind of looking at the code that the AI had written for the API that runs on the servers. It's just all these little indirections, all these small smaller, quote, unquote, helper functions that I'm like, what are you doing? This is like I have to jump to five different places to understand how you're running this thing.
Morten:That's not good. I was kinda thinking like, okay. Maybe maybe the AI is good is good when those interactions have been designed by humans, and which I think is true for a lot of the frameworks. Right? Like, lot of the the things that happens under the hood, a lot of the magic that comes from something like Rails has been designed by humans, and they have been discussed and followed and tested out.
Morten:So so I'm kind of reaching the point that maybe maybe in those kind of things where they hide the details for you, if you can live with that, maybe AI assisted coding is good. But if you wanna do something like Go where you tend to to not have a lot of magic or or those kind of elements, it's it's not good. Right? And and doing this rewrite of it really confirmed a lot of of those points for me. So, yeah, I'm still exploring local LLMs during this project, but more for, like, refactoring.
Morten:Like, the local LM is really good at at, you know, here is a bunch of errors from from GoWeb. Please go and fix them, and I can do something else. Amazing. But other than that, I'm really, really double down on the approach because I can see that there's a lot of improvements to be made. They make a lot of weird stuff because they need, in their mind, this little like, they're solving it at the moment in time that the LLM are instead of, like, taking in the whole picture of what you're trying to do.
Morten:Right? So, yeah, they're doing a lot of that, starting to add a lot of golden file testing. Is that I think the name at
Dominic:least that's
Morten:name I learned, which is very nice. I work a lot with the the KADI admin API, so get a lot of those endpoints tested. I was trying to implement a feature where you can you can start and stop an environment on on a server, and then I would like to show the state if it's serving traffic, if it's dropping, if it's draining, all of those those those states it can be in. Right? And that really prompted the whole refactor.
Morten:So now I'm starting to to get into something sensible, and I'm starting to have some nice tests on it. I still need to figure out how I actually do end to end test because that requires I think I would I would probably need, like, a VM or something like that. I'm still exploring how I can how I could spin up, like, a Debian VM, install the thing, run things on it, test the output. Right? But yeah.
Morten:So
Dominic:The Docker? Can you can you use a Docker container for that?
Morten:Yeah. Maybe. Maybe. And again, this is one of those things I didn't really have time to dig in myself yet, so it's been, again, exploring with with with AI, which is still where I'm very pro AI and why I'm also I'm still considering getting a sub for for OpenAI or something like that, because exploring those details without having to search and read, I think that's very beneficial. Yeah.
Morten:You still have to be careful. Right? Because I did spend, like, there was a day where I was like, okay. Let me just try and just rubber duck the shit out of this telemetry feature I wanted to implement. And and it the the dangerous thing is always, like, it looks it always looks correct on until you start to, like, poke it a little bit.
Morten:But the the the workflow is saying, like, hey, I'm trying to do x. I think I'm using y. Please find me all the informations all the information or the baseline, and then show me a quick default implementation and having that happen in the chat window, I think that is very beneficial. So that is basically what I have done with the end to end test suite or the exploration of the end to end test suite of the of the Create Operator agent. And Docker, I can't remember why, but it it was not really that pro on Docker, but there was another option.
Morten:And I I completely forget the names because it's been been a month since I looked into it. But there are options where you can programmatically spin up these kind of things and test it. But yeah. Maybe Docker would be an option. There was something stopping it, and I can't remember what.
Morten:But, yeah. I forgot where I'm at right now, but, yeah, I think I'm all over the place.
Dominic:I I have a lot of questions. There's a lot to unpack. I'm I'm I'm first interested to hear a little bit more about, you know, what exactly what exactly that have you have you seen? Can you remember a couple of things that makes you makes you, you know, think that the AI version that you add was was crazy. You know, what what anything that that you remember in particular that because I I regarding your point of splitting the function for for the rails thing, what what maybe it was to to test, you know, sometimes I I I see that an LLM that is writing code try to I don't know.
Dominic:Well, maybe maybe less less clawed a little bit, but let's say Codex tries to make things a little bit more testable. So maybe that was the reason.
Morten:Yeah. I don't really I'm not sure if it was actually testable. It was it was just a lot of things that did kind of the same. Okay. I would have to look at the PR diff because there was a lot of there was a lot of a lot of changes, and it was a lot of for example, actually, it was making the code less testable because it was not so I have I have, like, a a what I call a manager that I have a lot of, like, methods to to work with the admin API.
Morten:And instead of just accepting that as a dependency, so you could do, like, some dependency injection, it would literally just create a new manager multiple times in the code. So I have two two big workflows. I have the workflow to update the agent itself. So the agent that runs on the server will update itself and then switch traffic and all those kind of things. And then I have one to deploy applications that will either create the the files, start the system d service, update it, update the the variables, all those kind of things.
Morten:And all of both of those workflows, they need, for example, like the the KADI API to switch the traffic, and it was just random places. It will just create a new KADI manager, for example, and then use that instead of passing it down, or it had a bunch of smaller helper function that kind of did the same thing or it was named in a way where I remember it had one function that was, like, called sanitize domain, which did not sanitize the domain. It converted it into so, for example, if my domain, like modernvistisen.com, it would take that and then underscore all of the spaces and dashes and whatever. So it just became mortenvistisen_.com, and and then use that as an ID in the in the route config on Kedi, which makes sense, but it's definitely not sanitizing domain. It's not what I would say.
Morten:So it was just a lot of, like, minor paper cuts where I'm like, I don't know what's going on because these namings doesn't make sense, and why why don't you just inline this right now and then we can you know, it's it's hard I think it's hard to really to really to really to really how how do you say? Describe? Oh.
Dominic:Oh, yeah. It's a feeling. It's a feeling
Morten:more It's feeling, and that's Yeah. Also frustrating because, like, I'm sitting here with my feelings. You know, we are not doing feelings. We are doing engineering. But there's still this, like, nagging, like, this is this is weird, can we can we move this?
Morten:And I always end up I ended up adding, I think, six currently golden files test that have at least two files each, and that PR has a thousand added lines and 1,200 deleted lines. So I added a bunch of files, and I still deleted more code, you know. So I think that's something where it's it's it's it's just dealing with, like, wanna say, just in time, like, when it's when the agent is going through, like, okay, I need this, and and they're also starting to nick have it a little bit by only having it read x amount of the of a file, so it doesn't use up too much of the context window, and that's my maybe why it's missing some of the other things that already exist. So it's not like it's creating one to one representation of the same function, but there was a lot of this is really this is, like, the same or this doesn't need to be an indirection because now I need to jump into another file and or these things should clearly be function in a separate package. So I had taken a lot of what it had and put into, like, a Linux package where I have a lot of functionality to work with, like, system d or journal CTL, those kind of things.
Morten:Right? So it's it's, again, yeah, it's a feeling, and and that's annoys me a little bit. Yeah. That that that is the justification, but it is the justification. Right?
Morten:That yeah. I I that that yeah. You should you should probably write it yourself.
Dominic:Yeah. Totally. I I have I have exactly the same. So that that's why I'm I'm not letting that thing write any any kind of code that I care about very much. I I don't care really about the UI as long as it works.
Dominic:I I don't I don't care that it repeats themselves, you know, 100 times there, to be frank, because I won't do it. But Yeah.
Morten:You won't touch it.
Dominic:No. No. No. No. Not at all.
Dominic:I I just I just wonder why that works, but but but I'm with you. I'm with you. I'm I'm, you know, on the back end and things like that. I'm like, well, you know what? No.
Dominic:No. No. No. No. That's
Morten:But I I also see it in, like because I I created this, like, this web framework, right, that uses MVC as the main structure, which is a fairly known structure, and the packages are named model views and controllers. Right? So the the LLM, I think, should be able to reason or quote unquote reason that this is an MVC structured project. And it would still just load everything into the controller, and that, you know, might be right, but it's also I still also have a service package where I do a lot of, like, the app level logic before we reach the domain layer. So I still had examples of how I would like to write the code, and it still continues to just load so much stuff Yeah.
Morten:Into a controller, right, which is in any MSC framework that I have worked with is, like, kind of like a code smell. Like, you don't want these thousand line controllers. You should probably extract some of so it's doing a lot of that. And then, actually, this morning, I was reading an article about a guy who was building some Kubernetes project, whatever. And he was like, do the design first and then let the controller let the so we let the the agent work, which is also what I have seen from Dax, who was part of the OpenCode team, one of the founders there.
Morten:He is also like, do the design yourself and then use it to add features. But I I I just I still see it where I've done this, the structure, the design, and everything, and it still just continues to to go off on attendance. That's why I'm I'm very much on, like, yeah, it sometimes I get lazy, and I start to use, like, the local Olympus stuff. I'm like, no. No.
Morten:Just just write it yourself, and then open open a chat with the dbt or Gemini, whatever. Discuss things. Have it make examples, but make take those example harder to get into your code base. So that I think there needs some effort because, at least for me, I I get very lazy fast. So if I guess, yeah, that looks fine.
Morten:Let's just go with test yet. But if I have to copy it in and change stuff and blah blah blah, so it's not a one to one like, addition to the code base. I think it's it's easier mentally to just treat it as a as a POC or proposal Yeah. Or a rough sketch, and then you take that sketch sketch and and model it. And I think, actually, mentioning Dax, he had a tweet the other day where he was like, he's thinking of of it as like taking AI and and then just creating like a blurry blob, like painting painting a pimp creating an image, and then continuously iterating on that blob to make it into something that looks like the image you want it to be, which you can do and I will probably rather have that blob be in the chat of ChatDPT and then refine it there and then take something that's more refined, and then take the learnings and then do the final painting myself in the code base, and then I think the output becomes of higher quality.
Morten:I'm I I don't run off in five different directions myself immediately to test what is the best one and then, you know, go back a few days, like, a few days later and say, like, okay, option c was the right one. I can kind of I'm more likely to get the right direction from the get go by doing the discussion and the rough talking initially and then write it, and then I might still learn some stuff. Right? So I think that's that's where I see a lot of the benefits. Now is that, yeah, there's a lot of different directions you can go.
Morten:There's a lot of different bits you have to take, but it's easier to get the information to do the the informed decision upfront and then, you know, run with it for a week or however long it takes you to to actually build that feature, and then you get the the benefit of understanding that feature. I think that's very nice. I think we've seen it in, like, in the some of these podcast episodes where I'm explaining something I do, and I can't really explain you what I'm doing because it's not me who did it. And even though I reviewed the code, I looked at the code, I tested out, I still, you know, yeah. I'm rambling.
Dominic:Oh, yeah. Yeah. Yeah. Yeah. Yeah.
Dominic:Knowing your system is is you know, we we need to keep that. I mean, as as as an industry that are building software, we we, you know, we cannot we cannot let the AI know, you know, because they don't know. It's pretty hard for them when you think about that to to do the right things because there's there's just so many things that they can do in terms of reading some files and whatnot. They might they might be skipping a couple of important things and now, oh, they they skip that function and now they they are rewriting another function that that does almost the same instead of modifying something that was existing. It it when you think about that, it it it's pretty hard, and and it's kind of under understandable that they are not there, and they they might not even be there at some point.
Morten:Yeah. So I also have, like, a little far, like, semi semi far in the future project where I'm probably gonna take my my freelance agencies. I don't really know the purpose of the site, so I have mbvlabs.com, which is the name of my freelancing company. I think I might take that, do a rails application, and then try and let the let the NLM write that just to try and see what's what's it's like on the other side of the fence, trying to try and get an understanding of what's what what people are that use those frameworks are talking about because I still hear a lot of Rails and Laravel people raving about how how good it is. You know, even DHH is like, this is amazing.
Morten:This is exactly the code I will write. So maybe it's also a a training training dataset question. I don't know. But, again, that's like Kubernetes is out there with with eight, seven million lines of Go code. So I'm having a hard time believing that is not that is a training date.
Morten:I don't know. I don't know. It's but I think it's interesting to explore, and I think it's something you have to, unfortunately, have to explore because the the genie is out of the bottle. Right? You don't you you can't just I don't think you can ignore it.
Morten:You need to I think you have to to explore this and find, like, Yeah. Good workflow.
Dominic:Yeah. Yeah. Personally, what I what I really like, like, lately, things that, you know, I I cannot really see myself stopping doing that. Taking the production log errors, you know, saying saying to the LMCs, you know, this is this is the production logs. Can you can you list everything that I have there?
Dominic:Can you ensure that you know, regroup the things, you know, and and do some speculation about what what we are. And and this is, you know, this is helpful. Yeah. Especially for me, reading a huge log file these days is is getting harder and harder. So the LLM is way way quicker than my screen reader to, you know, just just take you for example.
Dominic:When you look at a log file, you can quickly group together a lot of of lines. You know, just mentally, visually, you are able to say, oh, okay. Those are the same errors. I cannot do that. I need to read all the lines.
Dominic:So there's a lot of small things that I'm using the LNM myself just to try and make my day to day a little bit more enjoyable, if I can say that. But
Morten:But I think that go back to, like, the my Google search example. Right? It's a little bit of the same where you can you just have like, you have a lot of information, and then you can talk to
Dominic:it.
Morten:Yeah. Yeah. Which is that is amazing. That is, like, the the the thing on StereoGod because the workflow before was we, like, yes, read through a million lock statements, try and pick out the relevant information. If you don't know what's happening, Google it, and that, of course, gets it gets amplified when you when you have to use a screen reader.
Morten:Right? So I totally get your use case for for for that.
Dominic:Oh, yeah. That that to me is is is hard to not use that anymore. So, you know, writing code is, again yeah. If you know, write the write the the UI, I don't I don't really care about. But, yeah, the I I don't know about about the Go training data, but maybe, you know, it has to be it has to be that the majority would would be probably TypeScript and a lot of other languages before that.
Dominic:So I I don't know if it if it get mixed with a lot of styles and the the typical program that we are writing in Go usually are not really just crowd operation and whatnot. I'm I'm I'm not trying to to bash on other, you know, Laravel and and Rails and whatnot. But usually, what you are building there is a little bit less, you know, server oriented or I don't know to say that. But it it might be it might be that, and it's pretty easy to write Go, but it it seems to be very easy to write bad Go as well. So when when you when you look at the LLM, you you're like and I I was I was toying with with a Gleam project the other day.
Dominic:It's it's it's even worse with Gleam. So and and probably because there there's not much, training data to to to have there, but, you know, maybe maybe it's related. As you as you go further, I, you know, I I don't have any scientific knowledge about that or real data, but it seems to be that the the L'Este language is is popular. Well, of course, it it will it will output some weird things, but I think it's it's mixing a lot of paragdims and principle from one language one language to the other. And and now you're you're you're looking at your code and you're like, well, this is more more Java than Go.
Dominic:I don't know. Yeah.
Morten:But I I don't know if you heard, but the pun not my ORM. Yeah. My the JavaScript one time, Jared's behind that. He has been talking lately about a big rewrite they're testing out. So they are moving from SIC.
Morten:They're not officially moving yet from SIC to Rust, but they are testing out a move from SIC to Rust. And that they did, I believe, with LLMs. So it's literally just taking the seg code base and transforming it into Rust code, and I think PR is like a million lines of code change or something like that. But the the test suite was passing at, like, I think 99 or something percent, which is just wild. So maybe it's also because he has access to what's what's what's the name?
Morten:Mephus. Was that the the model that will break the world or something like maybe it's Mephus. I don't know. Maybe maybe it's just because we don't have access to the same models.
Dominic:But but LLMs are pretty good at translating from one language to another. That, you know Yeah. That'd be real real language or programming language. So, I mean, the I I don't know. If if I were to start a project today and say, you know, let let's build BUN and Rust, it it would be it would be abysmal.
Dominic:I mean
Morten:Yeah.
Dominic:So they they they already have something that is working in Zig, and they they they, like you said, they already have a huge test suite and whatnot. But I would be concerned about the translation of the test suite because that that's something that that I've seen a couple of times the LLMs tweak their own test to make it pass instead instead of making the test pass, which is crazy. Yeah. So I mean yeah.
Morten:I was I was trying to test the limits of load the local LLM by adding a very very strict go Golang CI config to it and just letting so I just let it run run through the night. So I just they had like a there's a gold feature in in pie, the the the harness I'm using for local LMs. And I was just like, hey, make this pass. So since it's free, I just let computer run during the night and it I came in this morning. Here you are.
Morten:Everything is fixed. No more issues. And then it just either used Golint to silence things or removed linting rules. You know? And was like, no.
Morten:No. Let's go back a little bit. And then I was like, you cannot change Yeah. The config and you cannot add lint rules. And then it was just running for the entire day and not making any progress.
Morten:Right? So some that is true. Like, sometimes they're just like like, this is the right solution. Right? Which is also very human, you know.
Morten:So, like, I used to work at a startup where the founder early on, he was just like, there was this test he couldn't make work. He was just like, he skipped it with a comment, fuck this. Yeah.
Dominic:Screw that, man. We are deadline. We need we need to be live now.
Morten:Yeah. We need to go.
Dominic:The the LLM is is saying, oh, you know what? I I will just delete the code base so it will it will fix all problems.
Morten:So Yeah. Yeah. Thank you very much. Deli in the passes. Yeah.
Morten:So that's been been a lot of my my work And also, from a business standpoint, I've been debating with myself on what to do with the Crate Operator itself because, originally, I was planning on making it open source, then I changed my mind and made it closed source, and then I started to happen to debate with myself, how do I make it so that people cannot pay me money and still use the servers? At the the rabbit hole of trying to make proprietary software locked down in that way was just Yeah. Non feasible, and also I would have to reliably downgrade their servers to a version that because then it was the idea to have like an like a closed source that has a lot of deployment methods and a lot of nice features, and then have us like a simpler version, like a community edition version of that. But then let's like, maybe I say, like, I had they had a lot of blue green deployments, and then if the free version only offered immediate deployments, then I would have to go in and make sure, like, to to correctly configure the entire server to only use that, then downgrade the agent and then say, okay, you are free to go now, which also felt like this is not really worth it.
Morten:So I'm actually thinking of making it source available now. I have to, let's say, source. I'm gonna I'm probably gonna use a license that says, like, you can you can run this yourself, but you cannot make any you cannot use it for commercial purposes, which I think would solve a lot of issues and probably also make people a bit more make them less reliant to try it out because then it's like you can always just get I'm gonna do, like, a seven day trial, spin up some servers, add your things. If you don't want, okay, here's an open API spec. You can integrate you can integrate it yourself if you want to.
Morten:So that's that's also another thing I'm I'm debating, and I think I'm gonna go that way. I think that makes a lot of sense in terms of of of this type of this type of products.
Dominic:What is your license at the moment?
Morten:So there's no license right now. It's it's just a private repository.
Dominic:Oh, okay.
Morten:Thinking of of doing the the old SASE license from from Basecamp that got a lot of heat for saying it's open source when it's technically source available. Yeah. But, yeah, I think I think I'm gonna use that license and say, here here you go. You know, you do you. And then simply try and build an experience from a platform point of view that makes it that that you will probably rather not spend a lot of time building your own platform, integrating with API, doing all of these nice little Yeah.
Morten:Health checks and monitoring and
Dominic:And what about LGPL, for example, the version three? If if you're not open source yet, you can you can use that as well.
Morten:Yeah. We we go back a few episodes now to our licensing discussion. I I think I'm just gonna put the old SASE license. Yeah. Maybe g b I've and then say open public.
Morten:Here here you go. But I would like it to be a little bit more robust and a little bit more tested before I open up the the the code base. But, yeah, the the ideal version is that just here is here is it. You can you can run it yourself. You you can download it yourself.
Morten:You don't even need to use deploy create to configure your servers. You can just use the API because it would be a nice little abstraction layer, so you don't need to necessarily use SSH or build around SSH. You can just have, like, a simple JSON API that you can interact with and and update and deploy and basically do all the operations you need on a server. So I think that's that's I think that's I'm, like, 90% sure that's gonna be the approach going forward. And then when I get to add telemetry servers and database servers, that's a whole another can of worms that I'm not really sure how I'm gonna do yet.
Morten:Because I always have the problem that it's people servers, and they are running the thing. So once they have it, why what's stopping them from just canceling and then using it? So I need to figure out a way to to offer that thing. That might be a module that you add on for one time payments, and then you get the setup, and then you manage yourself, or you can get, like, I manage it for you. I don't know.
Morten:It's a that's a future future Morten issue, I think. Yeah. Yeah. Yeah. Yeah.
Dominic:So yeah. So I I haven't having a community's edition would would not fix that. You know, having a little bit less features. Is is because that you want to offer that feature on on the community edition as well?
Morten:No. The the the telemetry and database servers would be a config that's like setting up so you can have, like, proper telemetry server setup one and done, and then integrate with either the product grade to to monitor or integrate it with yourself. Ideally, the the community edition of the Creator Operator was meant as a only for application. Okay. That's Nice.
Morten:Regular, I don't know. We we I live on the on the like, the perfect place to just ring if you need to get in.
Dominic:Wait. Wait. Wait. Wait. Wait.
Dominic:Wait. Wait. You saying that you have a wired telephone in your house?
Morten:No. No. No. No. No.
Morten:Okay.
Dominic:Because because the ringtone was was like, this this is an old phone.
Morten:And I know This is a lame line. On tech Twitter that says that Europe is behind the The Americas in tech, but we're not that far behind. It's just it's just a door door thing. Oh. But in a in an old Spanish apartment building, so that's that's why it sounds like that.
Dominic:Interesting. Yeah. And now we completely lost where we were.
Morten:Yeah. We are. Yeah. So so, yeah, the community edition of this thing was meant to be like a a smaller version of the the let's say, not like, the paid one Yeah. But only for applications.
Morten:And now I'm just saying, like, I don't I don't even think I should make that differentiation. I should probably just have all all the deployment, everything available as you can run it yourself if you want to. And then when I get to introduce, like, telemetry servers or database servers, I could have to find a way that would make it so that you don't just spin those up and then cancel your subscription because that's gonna they're gonna be more involved, but I'm not really sure yet Mhmm. How I wanna do that or if I wanna just offer it that I do it on my own servers, that that is gonna be part of the plan. So you're gonna get some telemetry data, but database servers and managed database servers is gonna be a lot more involved than I want it to be for now at least.
Morten:So ideally, I would like to create, like, a config setup that you get a nice self hostable database cluster, whatever, that you can that you can rely on with backups and integrate with. So Yeah. Yeah. I don't I'm I'm gonna I'm gonna add it to my to myself so everything is running on self hostable servers to begin with, and then see what's your plans out into different different kind of products in different kind of products. And then I still need to stop using the word self hostable because I think that's the wrong positioning for the product because everyone is like, why don't I just use the open source versions?
Morten:That's I think that's that's a mental model people have. Right. Right. So it should be more like an infrastructure product where you own the servers Yeah. But don't have to deal with all the elements around the servers, and how that translates into to to to these paid options for telemetry and databases, I'm still a little bit shaky on.
Morten:Yeah. As you might can tell, but
Dominic:easy.
Morten:No. It's difficult. Yeah. Alright. So that is kind of like the the state of of of Deployment I'm in with my with my products.
Dominic:So do you do you put do you have any I don't know. Any hopeful date of trying to release something that you you would start to get some feedback and things like that? I mean, how how do you how do you see your prelaunch phase or something?
Morten:So I think, like, by the end of this week, the rewrite of the operator should be done and integrated into the platform. And then I I guess I need some basic sign up and onboarding. So I'm thinking, like, a couple of more weeks Mhmm. To open it up. And I don't I'm just gonna add, like, I don't really like you said earlier today, like, I don't really care about the money.
Morten:I just wanna have people on Yeah. To get some feedback. Right? So the the final thing I need to to do after the the API is done is to I need to rework the the server setup flow because right now I'm I'm I'm ingesting the catalog of the server providers. And for some reason, I server Hestner has a lot of traffic coming in right now, so some of the servers is not available, and it seems like they don't really tell me that in the APIs.
Morten:So I'm thinking of instead of storing the catalog in my database, I'm just gonna do it directly on the API key that the user give me, and then pulling and then showing. So I think I'm gonna change it over to that, and then and then the people on on the on the platform. Yeah. So a couple of more weeks, and hopefully, I can start to Cool. Get people on it.
Morten:Yeah.
Dominic:Very cool. Very cool.
Morten:Hopefully. Let's see. Oh, yeah. Yeah. Let's see.
Morten:If not if if I don't sell it to a VC fund before
Dominic:Oh, yeah. Yeah.
Morten:Yeah. Of course. They know the price now. It's out there. A million bucks.
Morten:Yeah. Come and get it.
Dominic:Yeah. May maybe you can send me 10% of that because I've gave you this this this amount. So, I mean, I I I still deserve something. Right?
Morten:Yeah. Yeah. Yeah. Yeah. Yeah.
Dominic:Alright, Morten. So yeah. Good have a
Morten:good week. We will we
Dominic:will see where we are in one week.
Morten:Yeah. Let's do that, man. Nice talking to you again.
Dominic:Alright. Bye bye. Bye.
Creators and Guests
