076: From nginx to Caddy and we both had LLM quality issues/concerns
Hello, Gophers. You're listening to go podcast. I'm Dominic StPierre. And I am Morten. As always, you can join us on the Slack community if you are on the go the go slack community is called gophers.
Dominic:The channel is go podcast in one word. So we are there. As well, you can rate the show. It helps in your podcast listening tools and whatnot. If you, you know, if you can talk about the show as well with your colleagues or friends or whatever, this also helps.
Dominic:You know, you know the drill. We shouldn't have to say the do those things, but every time that I'm listening, you know, I don't know, YouTube videos and whatnot, it everyone is always repeating that. So I guess it does really help and it does really make a change if, you know, one of you is going to to do something this week. So yeah.
Morten:Yeah. Like and subscribe.
Dominic:Yeah. Yeah. Exactly. Alright. So wow.
Dominic:What what's what's happening in in your world during the during the the it's been it's been, like, two weeks because we had a we had Andy, like, last week, basically. So Yeah. What's going on?
Morten:I I have been filing a lot with AI. I I have a smaller, extensive crisis around those models. I am I don't know what's going on. I I've been using them to go faster with my my SaaS projects. And then it came time to prepare for the alpha version and get people on it.
Morten:And I looked at the code, I was just like, this is this is horrendous, you know? Like, nothing makes sense. So I think that's big big part of my my life since we talked last time, fixing things from from from the AI agents.
Dominic:This interesting that that you're saying that because I'm a little bit in the same situation. I feel I feel like I let it cook too much without, you know, enough supervision if I can say that. And now, when I'm looking at things even though I thought I was clear on certain aspects, I I've started a a huge huge refactor on on the the Go code that for some reason, it should not have done that that much because I'm I'm usually not using LLMs to write go. But like you said, sometime to go quicker, I I tend to let it let it do a couple of things because I think it it's it's going to go faster, but at some point, the amount of cleanup that is is required is still real.
Morten:Yeah. I also think it was the Primagen who shared a link to a site where you can actually see how these models perform on the same task over time, and there is a clear downwards trend after release date. Like, if you look at, like, per day or per week, it is actually trending down. So this is a thing I've been discussing with with with other people as well, this feeling of when they just come out, they it feels incredible. You know, it feels amazing.
Morten:Like, okay. It actually gets it. It does it. The code looks right. And then a few days later, you you get this, like, this is not right.
Morten:Why why do I have to keep repeating this thing over and over and over again? And now that it's it's actually someone tracking how well these models do on on on the same task over time, Wizz is going down, and I think from a from, like, an economical standpoint, it makes sense that they they turn up the the knobs to to 11 to get people excited, right, and then slowly turn them down. Hope you
Dominic:don't notice. That does not sounds really good to me to me. No. I I was I was not aware of that, to be frank. I so so so it it it it has been proven without without a doubt that, you know, it's clearly after two weeks, let's say, the same task that that you asked at the beginning isn't going to perform as well?
Morten:Mean, it there is probably a little no. Not all of them. I I was also this is probably a little bit there's still a little bit of tinfoil around it. I can I can I can try and share the the link to the sites afterwards in the in the Slack channel so people can check it out? It's also I don't know how they do it exactly.
Morten:It is just it's a feeling I have been having, or it's something I have I think I have been noticing for over, like, at least the last six months or something that that whenever they release a new model, it is really, really good. And then it just trends downwards to meh. You know? Yeah. And and I do think it was also, like, a bit of a confirmation bias here, right, because this this site confirms what I was thinking.
Morten:So I don't know. But I I it I think this is a also on on on Twitter, this discussion that we've been having, like, oh, do they actually become dumber over time? And people are like, no. No. No.
Morten:There's, like, this is just because they you get used to their performance, and that might also be a thing. But I think it's interesting to see someone actually running some sort of benchmark consistently against these models to see, do they actually perform on as good on the task, but also do they do they adjust for for the randomness of these models? Is that I don't know. Right? So it might also just be that the in in what is called nondeterminism or nondeterministic nature is what is causing these these swings.
Morten:But even if that is what's causing these swings, it still gives caused a concern. Right? Because then, I I I was kind of I don't know where I heard it, but this this term of, like, slut slut slut machine based development, like, you kind of just you pull the the the lever right, and you hope for a good piece of code.
Dominic:Close your eyes, and you
Morten:wish. Yeah.
Dominic:That is not fun.
Morten:No. It's not. And I also like, I've been really critical about how much time it actually had saved me if because it like, a lot of the the work in a new project is getting all of the data model set up and and getting getting the base create functionality down, and then, of course, you need to get permissions and all of that on top. Right? So there's a lot of busy work, I think, in the beginning before you can actually start building out value.
Morten:And sometimes it feels easy to be like, hey. I need you to write CRUD queries for this this table or extend them. I mean, I do have a generator for this in in Enduro, but then I started having the split between team based access and admin based access. So I was like, okay. Like, let let let the Clangas do the the updated SQL queries, and then, I mean, I was just so surprised how bad it was actually done.
Morten:So, yeah, I spent spent most part of last week rewriting
Dominic:Yeah. Code. So yeah. It's so funny. Yeah.
Dominic:Yeah. For yeah. Exactly. It's it's awful. But but at the same time, again, yes, like you said, it's it's also it's also great sometime to have a booth and and in, you know, you have something to show or you have quicker value for especially when you are starting with the project.
Dominic:So those things are interesting, but I but again, the amount of cleanup is real. That that is that, you know, that is not something that we but but it's it's kind of normal and but I'm not I'm not sure I like this flow then. If I'm if I'm to clean up a lot because at this at this moment, I'm I'm doing a major refactoring. So, you know, LLM or not, I I would do that. I would do exactly what I'm doing at the moment, which is trying to isolate functionalities into its own packages.
Dominic:You know, just just trying to to have some kind of decent organization or at least good hygiene on on the go go side. I thought that I was going to be able to use Claude to to help me with this, with this. And I I I made it I I created the plan and when it's it started to try to implement that, its context was already full. I was like, I I quickly quickly stopped it. And the funny part is that I'm now, you know, following ish the plan that it that it's created because for some reason, I I it's easier for me to to just have, you know, one, three, two third 13 steps that I need to refactor this.
Dominic:And I I I I said, you know you know what? I will do that. Let let don't touch that. I will do it. But this this is this is my experience so far with with Go, at least with LLM and Go.
Dominic:Maybe because I don't want to write any kind of front end application React TypeScript, whatever it is. I don't care about this code at all. And it's probably not that good even though I'm I'm looking at it and it seems to be good. But if I'm really honest with myself, I'm not looking at this code like I'm, you know, looking at at any kind of GO code. And that is why I typically do not really like to have LMs generate any, you know, GO code.
Dominic:Yeah. I I saw this Yeah. This this this blue blue sky post recently. Someone did a benchmark with a couple of languages trying to determine, you know, the cost, the the token cost per language and the dynamic, languages, you know, were on top of the list. You know, Ruby Ruby was the the cheapest with, with JavaScript, actually.
Dominic:Go was in the middle of the list. So I I I don't, you know, I don't I don't know the validity of the of those numbers and things like that, but I replied with, it's funny that it kind of follows the same kind of salaries, you know, numbers for those jobs. Askel Askel was was the last one that, you know, was was really costing a lot. Rust was also in in I think the second last. So when you compare that to in the real world, usually, a Rust software engineer will be will be, you know, will will get more money than a Ruby on Rails developer.
Dominic:Yeah. So that that was funny. I I was like, this is this is intriguing.
Morten:Yeah. Yeah. If if I this this whole space is is strange. Also, when I I listen to forget his name, but the the guy behind Claude Coat itself talking where he's like, oh, this is basically coding is basically solved right now. And I'm like, is it though?
Morten:And the thing is, I was actually he he might actually be right because he probably have access to different kinds of models. Because I I have seen some be very impressive on certain elements. And he they might have access to a non limited, insane, non quantized version or whatever in internally at Anthropic. That's entirely possible. So you can't actually say he's a 100% wrong.
Morten:It's just from what I have seen, it's it's definitely not solved. It's definitely not solved. There's still stuff to do, and you also you need to to learn how to to work with them. And all of the a lot of the workflows I see people mention is, but but you are not gaining anything here. You're not like, you you have to be honest with yourself.
Morten:Is it just because you don't want to physically type out the code? That's fine. But then I do not believe that you get more efficient. Like, I can tell sometimes when I've been coding for a long time as I've gotten a little bit older, I'm like, ah, I don't wanna write more code today. And then having, you know, Claude write some code for me, yes, I could get more code out, but it's still at the same pace, I think, as what I've worked on myself because I would look over everything.
Morten:I would check it. I will stop it. I will adjust it. So, yeah, it's also always these people who has a vested interest in in this being true that, oh, I don't look at code. I ship 10 PRs.
Morten:Or the the CEO of Y Combinator saying that he ships 10,000 lines of code every day, and everyone who has done any sort of professional programming will look at that and say, that that is insane. I mean, that is not a gain of anything, like because you could always generate 10,000 lines of code. That's not really I mean, it'll take you a long time to type it out, but it'll probably not be a very good code that you get out of it.
Dominic:Yeah. Not only that, but imagine the team that are responsible to review this at some at some point. The the and this is in my mind since the beginning. I I don't, you know, I don't know exactly how it is in in organization and companies these days. But if I project myself and trying to imagine myself being responsible to review what what deal the influx of PRs that are created with LLMs, if if if any I know that Shopify, recently forced their employees to to use, AI and whatnot.
Dominic:So I mean, at some point, there there is some some higher, senior level people that will need to review the the the, you know, this code, then this is a this is an I cannot really picture myself doing that all day, especially for sloppy code, you know. It's it's something to receive a number of PRs that are interesting and and well well written and and now you you know, your job of you reviewing those are is is kind of acceptable. But I mean, if yeah. If the quality is not there and and it's just it's just to to produce content, you know, similar to all the these these articles and and whatnot. Yeah.
Dominic:I don't I don't know. It feels it feels very very strange. Justin Jackson was was saying something in in his last newsletter. He he he was mentioning, like, the product managers now thinks that they can write code. The the software engineers thinks that they, you know, they they know what users want and the designers, you know, think that they can do product manager and software engineer.
Dominic:Basically, every role now thinks that they they they have this this new skills and I don't know. It it it was I I was reading that and it felt like, wow, the the this might start to cause little bit of friction inside the inside teams that were having, you know, wall guard and before and things like that because if if if anything, you know, usually accepting that the the PM is going to write code in in a software engineer team might might not be I don't know. Might not be accepted accepted as easily as that.
Morten:No. I I also saw I saw the the CEO for Ripplet, who has been saying some wild stuff in general in the last, like, I don't know, one or two years. He was like, it's actually a benefit, A competitive advantage to not know how to code because Oh, shit. Because the coders gets lost in the detail. And I I think it's also with with who was it?
Morten:Was it was it Anthropic or was it OpenAI who said they recreated, what was it, the c compiler or some something like that?
Dominic:Yeah. Yeah. Saw that.
Morten:Yeah. By, yeah, by letting it run. And then it's I mean, they they know what they're doing. Right? They know this is a marketing stunt.
Morten:But all of that code is in the training data of these models. And trying to make it sound like it recreated something from scratch when it clearly did not because they were they had access to the test suite. Right? That's like me reinventing one of the hardest technical problems ever by having by having the the fact sheet next to me. Right?
Morten:What what what am I creating? I'm creating nothing. And I think that was also one of my realization last week is is whenever I try to do something that it has done a million times before, it actually does a quite good good job of a job because it is in the training data. So that's also why I'm now I'm leaning a lot more towards using it for discussion discussing things that have already existed. If I wanna do something with my my project, right, that's related to, I don't know, telemetry data or or whatever it might be.
Morten:There's probably a lot of that in this training data, so I can discuss my thoughts with it. I can discuss I can get what would you do different and all of these kind of things because these tools have seen a lot more code than I would ever see in my entire life. So as long as you stick to areas where this is something that already has been existent and you're trying to do a variation of it, I think it's very good to discuss it with those kind of stuff. Or go the other way around, do some very low not low level, what's it called, like low scope, low low effort box fixing, stuff like that. I think there's, like, this kind of those two streams where I'm starting to to use them more, but this whole I'm just gonna chuck out 10 PRs per day thing.
Morten:Yeah. No. We still need to scale human attention. Like, you still that's also, like, what you said about now the the product manager is a coder, and the coder is a project manager. Right?
Morten:Like, there's still skill to this kind of things. There's still you know, you you you can't do everything well. And the the people who can are the ones who typically become very, very successful, but it's also such a unique skill to be able to do multiple things at a really competitive level. Right?
Dominic:Yeah. Oh, yeah. Totally. But I am a product manager because my my my cloud folder has a skills folder, and there's a PM skills in there. Wow.
Morten:Yeah. It's a it's a wild world. I actually I was I was meeting with some angel investors for the for the project last week as well. Just here, high level, what's what they've been What what's Wow. Yeah.
Morten:Yeah. I mean, it's it's too early to to do anything related to funding. I'm not even sure I wanna do funding, but it's always interesting to hear their perspective and and what they would they would see be in place for a project to to do some some funding. Right? Nice.
Morten:And they were talking about they had someone in their network where it was just full automation of app creation with with AI. And I was like, oh, cool. But I also have this feeling like, I'm not sure this is gonna be a great a great thing. It's kind of like a mirage of of, yeah. Yeah.
Morten:We're just gonna have spend $20,000 a month on on on Cloud Code and then Yeah. Hope something works out. You know?
Dominic:Yeah. So yeah. Yeah. Yeah. Yeah.
Dominic:What? I wow. So this is this is this is interesting, though. So what what is the state of of your project? Is it is it near a an alpha version?
Dominic:Is it is it released yet?
Morten:I mean, the the I'm I'm I'm duck feeding this staging environment right now through through the project. So Deploy Quade runs Deploy Quade, basically. Okay. And this one angel investor is a guy I know that also lives here in in Barcelona. So I was just reaching out to him saying, hey.
Morten:I'm he knew he knew about the project a little bit. We talked about it before, and I was like, hey. I'm getting to the stage where I would like to explore how I can continue on this full time. Also, very honest that this is too early. Like, if I if I were to try and raise money right now, it would probably be at a not so interesting valuation, meaning, like, no users and no revenue that that definitely need to change.
Morten:So, yeah, definitely, simply just hearing about about the space. I've I've been I've been working in in VC startups for a lot of my career, so I kind of am a little bit familiar with the game of of VC. But but the angel investing thing can be I think it can be different because it can also you can you can get access to capital in in a way where the expectations are not hypergrowth Yeah. Simply because you get someone who either are very deep in the industry and have made exits before and and wants to to see other companies build in that space, and they know more about it. Also, definitely some angel investors, they just wanna do kind of like a VC thing.
Morten:But
Dominic:yeah. So Oh, yeah. Totally. Not not only that, but usually a software as a service has different expectation than a, you know, a developer tool because what correct me if I'm wrong, but I am you you are you are you are targeting the the developers. Right?
Dominic:So it's it's a developer tool. So it's very hard for a developer tool to have tracked any kind of traction before getting the funding usually.
Morten:Yeah. Yeah.
Dominic:That's pretty it's pretty hard to bring 5,000 users because if if you, you know, if you if you add 5,000 users, you you would not need any file any VCs.
Morten:No. And it's also depending on I think having like, you can always think, like, what kind of life do we wanna build with these kind of products because I I believe the the guy behind Coolify has been out saying that he's making around $20,000 per
Dominic:month Nice. Through
Morten:through the project. Right? Which for a single person, that is fun. I mean, that's a really great place to be. Right?
Morten:But from an investment perspective Yeah. How do we double, triple that? So that's Yeah. Also with my project, my mental model of it is I sit somewhere between a a project like that and and something maybe like a full blown platform like Render or Fly. It's it's sitting somewhere in between those two two models.
Morten:Right? So is it ever gonna be a multibillion dollar business? No. But but, I mean, it might be it might be a very good lifestyle business and and something that can just be a full time job for me, and that's great. So that's also something I needed or not needed, but I wanted to hear some analyst investors' perspective on, like, how interesting is that to invest in.
Morten:Yeah. So Yeah. Totally. That was a discussion, and and they were very much like we they they they mainly done the business side of their their businesses. So they were like, we have these people we can help you reach out to and hear what they say, and then we can we kinda take it for that.
Morten:So yeah. But first first step is getting getting alpha out, getting other people on it to try it out at support for more server providers. But yeah. Actually, also, you mentioned that you have been switching over to NGINX from from Caddy. I think this is a nice little segue into hearing because I'm using Caddy for for everything on in in this project on the server.
Morten:So why why did you switch over to NGINX?
Dominic:No. No. I I did the the reverse. I I was a NGINX user. Oh, yeah.
Dominic:Yeah. Yeah. I never really had the courage to to switch. You know, NGINX is something that I'm using, I don't know, since twenty years, whatever. But Yeah.
Dominic:Yeah. I I always saw Caddy the other way the other side of the spectrum if we can say that because it's it seems to me that it was a little bit simpler. You know, just in terms of the amount of configuration that you need to to just have a let's say, a simple Go server on the back end. It's fairly fairly it's a one liner basically or two lines if you count the the the external block or the domain name and whatnot. So and I I I I think I I I talked to you a little bit about the the feature that really wins me for Caddy is this, this on demand TLS, which I expected the first hand when I when I switched.
Dominic:This this is just crazy to me. So and I I know that you can you can, you know, dynamically add the sites and whatnot or domains to to to Caddy's API and whatnot. But the reverse is so crazy. So when let's say let's say I have a a subdomain. I so I I have a wildcard, record, for example, that sends all the traffic to to my server.
Dominic:And now when a new domain is seen by Caddy, it's just doing a quick HTTP call to my back end. And now I can, I can say, oh, yeah? This, you know, this subdomain is is legit. Please please go ahead. And on the same request, it just it just you know, it requests the TLS, and it it does it does everything, and boom.
Dominic:It's it's pretty impressive, to be to be honest.
Morten:It's a really cool project. And, also, I've been working a lot with Caddy and with Trafic. Yeah. I don't know if you're familiar with Trafic. And think Trafic is also a very cool project, but I always get so confused with the project.
Morten:It's so on overwhelming where I think Caddy is is really well described, really well documented. They have some really cool features as well. I'm utilizing heavily right now their load balancing policy that I can also just adjust programmatically. So that gives a lot of interesting options for doing different kinds of deployment strategies. Right now, I have I have two strategies implemented.
Morten:One is just immediate or the yellow the yellow approach, and the other one is blue green, which is also working very nicely. But, you know, you can basically do anything you want. Like, do So are canary
Dominic:Oh, yeah. I can finish your your thoughts. You know?
Morten:No. No. It's just I was also planning on doing rolling and and Canary Yeah. Canary releases. Right?
Morten:Yeah. Yeah. Yeah. Because it's literally just an API call to the admin that is running on server.
Dominic:I was going to ask. So you're you're basically using Caddy's little banter to do your your blue green, I I suppose.
Morten:Yeah.
Dominic:Okay. Okay.
Morten:Yeah. So the setup is is
Dominic:This is your your your project that you you were talking with with the VCs just a couple of minutes ago. Right? So so Yeah. This is this is the project in a sense. So, basically, if I understand correctly, it can deploy so are are you installing the any kind of binary on all the instances of your of your server?
Dominic:How how does it communicate from my developer machine to my servers a new update, for example?
Morten:It's installs of my my design is to add API agents, whatever you wanna call it. I I'm hesitant on using the word agent now because everyone thinks it's AI. It's not it's literally just a Go API that gets installed on the server. So so the the kind of the hypothesis is that, yes, you can just spin up a server for Hetzner and then have Claude or whatever generate best scripts to make it secure. But but going from there to, like, a fully production ready system is that's a lot of steps.
Morten:So the main value point in this project is the dashboard and the deployment and release management features that's gonna be built into it. So whenever you provision a new server, I do some server hardening. I do some I change some of the defaults around, say, logging via ads, some some software to to track the state of the server. And then I also install this agent that's running on the on the server. And then I register a domain for that agent in my right now, it's Cloudflare.
Morten:I might I might move it. I'm not sure yet. So that everything all communication is done through HTTPS. Everything is encrypted. So the agent will just do oh, sorry.
Morten:I should say API does, like, talks to talks to the Caddy API, for example, or talks to the NodeExporter API locally and then sends everything back to the main app through through HTTPS. And the way that you would create a new deploy would depend on your your setup. If you you don't really like Docker, right, so you do something, maybe just want to release a a simple binary of packets to go into a binary and then ship that. And then depending on where you store that binary, that could be I use GitHub releases a lot right now. You just connect connect, like, whatever GitHub repositories you want, and then you will tell me, okay.
Morten:This is this is the name of the binary, and then you could do do manual deploys, or you can use a webhook where you can you can change the versioning, or you can have a specific version or default. It doesn't really matter. So, basically, the automation comes from webhooks that gets sent to the to the main application that then checks, are you allowed to do this? It then pulls the, in this case, the binary from GitHub leases and then creates oh, sorry. Didn't it doesn't actually pull it.
Morten:It generates a secure, what's it called, one time download link that gets sent to all the servers you have registered for an environment. It then downloads that. It switches over the traffic. It checks everything is good. And then if if it's running and if if depending on if you added a health check endpoint or not, it will switch over the traffic, delete the old binary, and then then you're good to go.
Morten:And that was a very convoluted way of of explaining this. I hope it makes sense.
Dominic:I know. That's good.
Morten:Yeah. Yeah. Okay. Cool.
Dominic:Yeah. Yeah. Yeah. Yeah.
Morten:So yeah. So yeah. Value of prop is probably in dashboarding the dashboard and and the automation of this this whole flows.
Dominic:Okay. Yeah. Got it. No. That's nice.
Dominic:That's nice. Yeah. I I I I I think I would see, you know, returning to Caddy versus traffic. So I think it you know, would it be would it be correct to say that it's similar to a little bit like Docker versus Kubernetes for example? So I I I think like, you know, traffic or HEProxy maybe are a little bit more tailored the you know, around bigger organization while Caddy seems to to fit, you know, the the smaller smaller setup.
Morten:Yeah. That that might be true. I I do know, Trafig, they have enterprise level products that they also but they also heavily on on containerized environments what they offer. And also you can do you can probably they do develop some stuff around release strategies, deployment strategies that is built into the projects. You get some monitoring.
Morten:So it's probably not wrong, but I'm not maybe it's because people, they have been building around Kubernetes more or Docker more that Caddy is maybe perceived as such because I don't necessarily see why
Dominic:I I would I would be I would be surprised to see Caddy in in a a big organization. I don't I don't know why, but from the little that I've seen, I don't know. But maybe I'm wrong. Who knows? It's it's a it's a it's a very nice project though.
Dominic:And I I remember I've been seeing the the author on the the Go Reddit, actually, a long time ago. Just before at some point, I I don't recall if it was acquired or something like that, but or you get some funding, but it was it was very nice to see to see them I don't know. Just going from, okay, this is a side project to this this is this is this is my paid my main paid job if, you know, quote unquote job now. Yeah. So it was very nice to see that.
Morten:It's really it's really cool. It's a really cool project. And I the more you work with these kind of things, I think the the the one file installed is just amazing. You know? Like, this is just a binary install, and then you run it.
Morten:That is really nice. And fairly fairly understandable docs. I actually think they are quite good. Yeah. So nice to hear that you switched it, I think.
Dominic:Yeah. And then, of course, of course, there was a problem. So I did that during the weekend, obviously, and I have a couple of clients. I'm doing, you know, very, very limited consulting, and I I still have, I still host some application for clients. And yeah.
Dominic:Of course, I tested. Everything was good. And the first thing I knew on the on the morning Monday morning is that I received a call from one of my clients saying, oh, there's something that is not working with our our systems. And I was like, oh, no. What is going on?
Dominic:And believe it or not, it was it was an old an old domain name that I I did not knew that their application was still using. So when I start well, yeah. Exactly. That that's all that's always small things. But those things are very hard because now I was not looking at that at all.
Dominic:I was thinking, oh, no. Shoot. There's something in in the caddy configuration. There's something on the server. I I was not looking at the right problem at all.
Dominic:And at some point, I found it because I I dug into the, some logs of of the systems that was failing. And I saw the old domain, and I was, oh, when I when I started to build that, that application, I I was using a sub domain of my own domain because the the customers that the the client did not add a domain at the time. And it stayed like that in the code. I was like, oh my god. This is not good.
Dominic:But but again, no no worries because everything it it it was it was only only a they are receiving emails, basically. The the application treat email for them, process email for for them. So all all of the emails was still in the in the queue. So I was was well, I was I was kind of lucky because I was like, oh, wow. This but but other than that, it was it was pretty smooth.
Dominic:One other one other bug that I had was very strange for some reason. I think it was on static back end. So static back end is hosted on the I I have the domain name on on Cloudflare. And so Cloudflare is handling the TLS, and I have this self serve certificate on on the server. So basically so I told Caddy, you know what, you know, don't handle the TLS for this.
Dominic:It will it will be handled for you, blah blah blah. And there were some some call to the the Cloudflare domain name from that domain that was never reaching the server. It was very strange. So I I had to reverse to using the the local domain or at least I I used an IP an IP address and whatnot. Very, very strange.
Dominic:I I I did not investigate it more because I I had this client issues that was taking my time, and I quickly fixed that by using the local TLS. So now but I I did not understood. So basically basic basically, if I try to explain a little bit what's going on, so so there were some kind of service on the server that was calling the domain name that Cloudflare is hosting. So Cloudflare was supposed to do the, you know, the forwarding or whatever the what they are doing, the reverse proxy and whatnot. So they were supposed to and and that request never reached the server.
Dominic:So I don't know where it whether it where it fell, but it it seems to be at at Cloudflare, but maybe not. I I don't know. There there were nothing in the the caddy log file. I was seeing nothing on on the on the request. So seems like this request never reached my server, and I was like, wow.
Dominic:This is strange.
Morten:Yeah. I mean, they also start the DNS settings that you I can't remember if it was with Caddy or with Traffic. I had to fiddle a little bit with it. I might just be talking completely random here, but you can go in and change your DNS setting on Cloudflare, and I think putting setting them to full strict, I think, is a option downwards. And that's sometimes, like I can't I I of course, I don't know if this is the issue you had.
Morten:Right? But I did I do I do recall I had to change the Cloudflare DNS settings for this to really work with with Caddy as well. But if it's actually the root cause, I am unsure about because this has been too long since I looked into it. But that might be something to explore the yeah. What's the they have some DNS settings.
Morten:Right?
Dominic:Well, that's interesting. Yeah. Will I will look into that. It's probably related to that because the the fix that I that I did was to to add an entry in in the the Etsy slash hosts, basically, to to say, you know what? This domain now, you can resolve that to this this private IP address on on my VPC on DigitalOcean.
Morten:Mhmm.
Dominic:So now it's it's not it's not exist exiting the the virtual private network, and it worked. But, yeah, I I will I will I will look look into that, which means I will never look into that because now it's working. And, you know, I would do.
Morten:That's the thing. I I I I had a had a not necessarily a bug, but the the the API I installed on the server, it I wanted to have, like, a domain that was recognizable. So and then I had accidentally used a dot, so it was something something something like server server slug, team name, and then my domain or something like that. And then I had accidentally put, like, a dot between, I think, server slug and team name or something like that, and it just it didn't it didn't work. I couldn't make it resolve, and I was like, what is going on?
Morten:And then I figured out it was because my domain settings now treated this as another top level domain.
Dominic:Is that correct?
Morten:Something like that. Right? And I was like, ah, okay. And then I figured out it was because I accidentally put a dot instead of two instead of a dash. Yeah.
Morten:And since I had this full strict mode on, it never resolved and never reached, so I could I had to I had to yeah. It was just a one line fix, but it's just yeah. Sometimes you get you get bit by these DNS settings, and it's something very, very simple. It's like, yeah. Of course.
Dominic:Yeah. Yeah. Totally. Totally. Yeah.
Dominic:But but, yeah, overall, Caddy seems to be to be nice. I'm I'm I was wondering about the performance because I I know that NGINX is pretty capable, but I I suppose that Caddy is is as as good probably. What what I like about it is is really the the simplicity of the the configuration so far. And Yeah. I haven't tested anything related to WebSocket and whatnot, so I will I will soon soon have to check that.
Dominic:But but, yeah, it's pretty impressive that this thing is is built in Go. Very nice.
Morten:And also very nice that you can just use the admin APIs to pull. Yeah. So Yeah. So you don't even need to hard con like, if you don't hard code or hard code. If you don't add your domains and routes or whatever to the to the Caddy config and just use the admin API.
Morten:You can simply just, you know, you can just treat the routes configuration as a version version configuration, right, started in a database or whatever. And then if you ever need to roll back to another configuration or your server crashes, it will start it up. Use that the latest configuration and have those routes set up for that API, and you are you are back to
Dominic:Yeah. That's nice. I'm I'm an old school, though, Linux configuration person. I I really like to edit text files for some reason. I I I like to I don't know.
Dominic:Yeah. It just feels like what I've been doing for the last, whatever, twenty ish years. So, yeah, I I don't I don't mind the the configuration, you know, files and and backup backing it up and whatnot. But but, yeah, it's it's it's different than yeah. The reverse proxy is just a one liner, very nice.
Dominic:And I also have some some Django Python don't judge me. Those are for some clients and whatnot. And and, yeah, I was surprised to to see that I could use the the Linux socket easily to do the reverse proxy as well. So pretty pretty impressed with with this.
Morten:Yeah. Very cool project.
Dominic:Yeah. Totally. But but, yeah, it's it's done. I'm happy now. And no.
Dominic:No. If if if it if it was the the other way around that, I think that would have been a little bit weird. To go from Caddy to NGINX, I don't think that there is many people that that are doing this.
Morten:No. That's also when I read it, I was like, okay. Yeah. Let's hear. Yeah.
Morten:Let's hear why.
Dominic:No. No. No. Yeah. Yeah.
Dominic:Totally. So that's that's done. So now at least in my app, there there's a new customer that can can just start to, to create their own app because at the end of the day, I'm I'm building something that allows small companies to build, you know it's it's not an app builder per se, but they they opt in to to to add some modules that they want. So if they want the CRM, if they want proposal invoicing, podcast, I I I have a lot of things. Courses.
Dominic:I'm kind of building the zoo of small companies, basically. But, yeah, it it started just a an app for, for my wife because, she started a an agency with with my kids. But, basically, this thing is starting to turn, to turn big. And, and, yeah, a a customer can can create an account and just pick a domain, and, I'm I'm thinking about, having also probably with d n simple, maybe, maybe Cloudflare, but I would like to have domain registration on behalf of, of customers as well. So that is something that I I have never done.
Morten:Yeah. So when you you so so they can buy domains through you?
Dominic:Yeah. Or you Yeah. And and they own it. Right?
Morten:It's Yeah.
Dominic:I I don't want my my company to own the domains. That the the point is that and this is where I think Cloudflare would will will let me down. I don't think it's as easy as the n simple to to do that. I I know the, the founder of the n simple, Actually, we were we were on the same the same founder community in another life, like, in 2009. And maybe it could be interesting to have him I don't I don't know if he would like to to come to the path, but they they they they are doing really great thing at at this company.
Dominic:It's it's a small company. It's a calm company. It's a company that, focus on on, you know, having just simple experience with with domain and DNS management and whatnot. So
Morten:Yeah. But, I mean, if you can if if your customers are okay with providing with API key, isn't it just because I'm pretty sure you can buy domains through, like, the API on Cloudflare.
Dominic:Yeah. The problem is that those those target customers are not technical at all. You know, they I'm not even sure that they they they would open an account on CloudFront and whatnot. So those are very very very small shops, you know. There there's there's an influx of people wanting to sell things now on the Internet that that because they are looking at a second revenue stream and whatnot.
Dominic:I'm I'm not really talking about l l m l m multilevel marketing. I'm not talking about those people, but there there is a lot of small entrepreneur that, yeah, that I don't I I would like to make that easy for them to have an email, to have a domain name, and to have a website with a lot of functionalities. If they want to start a podcast, I have built myself a mini podcast hosting in this thing. So it's it's I'm I'm basically taking the the use case of my wife and myself, and I want to build an application that will be able to sustain us in terms of functionalities.
Morten:Mhmm.
Dominic:So so so far, you know, my you know, I'm publishing courses. My wife is is going to publish courses as well. So I I do have a, you know, a small Podia, a small Gumroad and and that thing. So it it's all opt in. So you pay as as soon as you enable a module, you you just pay for that, and there's a price assigned to a module.
Dominic:So it's very modular. It's very, it's very flexible. It's yeah. It this is what I'm I'm trying to to do in in the last year in the next year. To try to to get some some revenue.
Dominic:You you were you were talking about $20 a month. I'm I'm looking at something like, you know, $6.07, 8. If I if I could reach $10.10 $10,000 a month that that would be crazy. So this is what I'm trying to do since 2008 basically. Just trying to just trying to to build a very, very small software as a service that will that will be able to sustain myself.
Dominic:That that's my goal.
Morten:That's It's
Dominic:very hard to do.
Morten:It is very hard to do. That's also why there was that that $20 that the guy behind Coolify did is very impressive. I think when you see these, like, posts on social media, we're like, oh, we reached, I don't know, 50,000 thousand dollars MMR in, like, ninety days, and you're like, no. You did not. Wow.
Morten:This let me it is it is very hard to do. It is very difficult to to get to find, that. Right?
Dominic:Doing, actually?
Morten:Coolify, you say? Coolify. Yeah. Coolify. Coolify is is also in the self hosting space.
Dominic:Oh, really?
Morten:Yeah. So it's I believe he started during corona times where he he open sourced it, and it's something you install on a install it on a VPS. And then Okay. You can he he has a bunch of, like, one click deploy apps through Docker. So I don't know.
Morten:If you want plausible, you can one click that and deploy it to your server. You can you can specify Docker Compose configs and then host your applications for that. So he has made it very easy to get started with self hosting software on your own Nice. On server, and it is kinda similar to what Docploit does. I don't know if you're familiar with them.
Morten:They kind of do what's Heroku does or did, but around Docker. So there's also, again, something you can that's open source. You can you can you can run yourself. And then Okay.
Dominic:So it's a it's a it's a basically, a platform as a service, but you're self hosting it. Like, Dooku was was was doing that.
Morten:Exactly. Yeah. Yeah. Yeah. Same same principle, and then they all have managed solution where you you pay a fee per server.
Morten:You you connect. So so very impressive projects. And and, also, I think it's very cool to see someone, like, a single single developer reaching those levels of of revenue because it it is a hard number to get to. It's it's nothing to it's it's it's a lot of hard work. Right?
Morten:So yeah. So self hosting on your own server, and then a lot of features around around that. Nice.
Dominic:Yeah. That's that's that is intriguing because you are competing with with the the one click install of DigitalOcean and all, you know, Vault VaultR and all of those, you know, non Azure, non AWS, non Google GCP. The the the there's another level of cloud provider that are fairly cheap and have all all of this already. This is this is intriguing.
Morten:Yeah. I mean, it I think it's a real this is also because I think it's a very interesting space to operate in.
Dominic:There's a lot of people.
Morten:There's a lot of people. Right? But it's also you you kind of you get to a point where, like, you you kind of do what you what you love to do. It's actually the the the VC guy, the angel investor I talked to last week. I talked to him some months ago, and he was like, just just just start.
Morten:You know? Just do it. Don't worry. Like, you know, this sounds like something you you love to do and you have the knowledge about. So so so do something because also just because there's a lot of people is not necessarily a big problem.
Morten:Right? This this might just validate that there are
Dominic:Oh, yeah. Yeah. Yeah.
Morten:Money and demand in the market. Right? And and the goal is definitely to, like you wanna you wanna you can sit different kinds of stages of of this kind of thing because, with some start ups, they will just get the 100,000 credits from AWS and then, you know,
Dominic:just Yeah.
Morten:Spin up whatever. Right? They don't want to care about this project, but there's I think they're gonna see a lot more people starting to get interest in in coding and in building with all these genetic tools, whether we like them or not, where, you know, these kind of more medium sized solutions compared to something like a crazy Kubernetes setup in AWS where, okay, I just need a server and and I have to predictable cost. I know I spent, let's say, I don't know, $50 a month on on server and tooling, and then I can just worry about deploying my application, building my application, and don't have to worry about deploying and and and monitoring. And because that's the things one of the next steps that once you get into running your own infrastructure, how do you monitor server health?
Morten:How do you monitor your application health? How do you monitor logs? What do you do in case of things going down and and, you know, replicating That
Dominic:is still very hard to compete against a platform of DigitalOcean or render.com, which which which do all of this for, $7 per month at at first. So that that that that that is mostly my so people that are self hosting, where are they provisioning their so I I guess they are not using Digital Ocean or or or these kind it's it's probably an an o v h v p s maybe? Because they they are probably using cloud infrastructure that don't have those platform as a service offering, I would I would guess.
Morten:Yeah. I mean, probably Linode, Hostinger, Hetzner, probably also DigitalOcean. Right? It it is different, I think, because, yeah, you can get started very, very cheap, but you also all the cheap plans are on shared CPUs, and those do not perform well. Mhmm.
Morten:Like you said, you were on Tethysyl Ocean, so I think I have the same specs for what is what am I paying on my Hetzner server? I think 12. I have one. There's one in, like, five different applications for, like, €15. So what?
Morten:Four I don't know. Whatever that is in dollars a month, and I think the equivalent of that on the solution would be $40.50 bucks just just in in pure compute. And and then you could discuss, okay. Is this does this really matter?
Dominic:You do you have the the firewall? Do you have do you have the virtual private network that Digital Ocean offers built in on that thing? No. I'm not I'm not talking about the software firewall. This this I'm talking about so on DigitalOcean, this you know, you you have this infrastructure firewall that you you can say, you know what, Those instances with that tag only have port four four three, for example.
Morten:I'm not sure because I haven't used that feature until the Ocean. But Yeah. You can definitely create your own networks on like, I mainly use Hetzner, and you can definitely create your own networks and place them in those net servers in those in those networks. You can also manage firewall on a platform level. Is that the right word?
Morten:Okay. Don't don't need to go in and do what was it like UFV or something like that? Yeah. UFWV. You can do both if you want to.
Dominic:So So, basically, you you you have the same services, but it's it's it's cheaper than than DigitalOcean. So I, yeah, I I I thought that DigitalOcean was going was offering a little bit more, you know, icing on the on the cake, if you will.
Morten:I mean, this doesn't really make sense why they are so cheap. This is something I'm still considering because they just increased the prices, and it's still very cheap. So I don't know. I sometimes I make the joke that it's because they don't like money. I don't know.
Morten:Because it's it I mean, or you can see now, actually, that they are getting a lot of lot more demand. So there's a bunch of server types you cannot provision right now because they they don't have space. Yeah. Yeah. Digital Ocean is a nicer UX.
Morten:Definitely. I'll I'll much more prefer to be on DigitalOcean if you take a look at the the dashboard and the UX and and the support. And they are depending on how you look at this, they're probably also a little bit more business oriented. On DigitalOcean, that's not really Maybe. That Hestan, you do have to ask permission sometimes.
Morten:You know? You might get into, like, I would like to rent more than five servers, and you have to ask permissions permission to do that, which can sometimes feel a little why? But this is also because there's different regulation. Right? It is a it is a German based Yeah.
Morten:Company, and maybe they they no. Not maybe. Definitely, there are different regulations that they have to adhere to compared to to to the lotion. Right? Yeah.
Dominic:Totally. Yeah. I I know. I I I keep saying saying that with with one friend that that is on OVH. So OVH has this this data center in in Quebec.
Dominic:And they have those prices in Canadian dollars as well, which are so cheap compared to to Digital Ocean, especially Digital Ocean being a USD. So the this the Canadian dollar to USD is is abysmal at the at this moment. But even with the same currency, the price of an o v h VPS is going to be, I would say, maybe not half, but close to to half the price. Yeah. So like you said, for for $15.15 Canadian dollar, you you you can have you can have a 40 USD, VPS.
Dominic:But the problem is, like you said, the overall experience of OVH is turned me down. Each time I'm I'm on the on the checkout, and now I'm I'm starting to look at the reviews, and now there's a lot of people that, for some reason, waited two days because their their their server were were down and whatnot. I was I'm I'm like I don't know. It it just feels like a risk.
Morten:Yeah. Yeah. I definitely. Because I also been I heard and read stories about people just getting shut down on HESNA because of various reasons. This was not necessarily malicious behavior, but that is that is always scary.
Morten:And I again, I'm I should I'm not gonna sit and promote a lot here, but this is also one of the bits with the project that's making it easier to have servers in different providers and deploying to all of them at the same time.
Dominic:Nice.
Morten:Think that is gonna be a big thing. So the target is, like, small, medium sized businesses where you don't necessarily want to be on, let's say, l d AWS or have someone who knows AWS because it it does get tricky. Right? And then instead of, like, those thousand dollars you spend at InfraCost, you can spend on having on building review apps like you had on Heroku. Right?
Morten:So you you spin up an app for a PR, and you get a domain with that Nice. With that PR, and you can like, all of those things just becomes accessible for different costs on different providers. So, again, depending on on on what you want. So yeah. But the the whole the whole experience of getting getting shut down or getting locked out of your servers is is is a concern, and that's also why making it, I think, making it easier to have things on multiple servers is is a really good approach.
Dominic:Yeah. Yeah. It it happens as well on Digitulsion. It's it's just that the amount of bad reviews that OVH has is making me nervous. That's all.
Dominic:Yeah. But if if you are deploying on multiple providers, where are you putting where are you putting the the load balancer then? It's it's it's it's it's a conscious decision. You say, oh, you know what? I trust this one to owes my my load balancer and and that's it.
Dominic:You you don't have, you know, high availability for your load balancer?
Morten:I mean, it depends on in if it's it's it's customer service or my own service because this is something that will need to be built in at one point to help people set this up because it's not really a it it depends on
Dominic:what service allow me to use your load balancer. Right?
Morten:It it would not know right now.
Dominic:Okay. Okay. Okay. So so so yeah. So so I So this is load balancer.
Morten:Yeah. It would be an open question, but it's still something that's because it also depends on do you wanna be on on Cloudflare? Do you wanna be on Route 53? There's a lot of, I think, unanswered questions there in terms of certificates and domains and load balancer options. I'm also exploring simply just pointing multiple servers to multiple a domain to multiple servers and seeing how that actually works out because it it it is diff like, I I couldn't offer this project at at a competitive price if I did.
Morten:Like, I could just do, let's say, Cloudflare route load balancer. Right? But there, you start to pay $5 per server or per target. Mhmm. And it gets even more expensive when you do geographical routing.
Morten:Yeah. So that would that would be a thing that people will have to figure out themselves, but that I could automate in a way because I do have access to the accounts to do things. That's kind of the premise.
Dominic:Yeah. Nice. Yeah. Yeah. Yeah.
Dominic:Yeah. It's you I mean, I Yeah. You're at this stage where you you need to decide what what is the minimum functionality that you need to to launch. Right?
Morten:Yeah. Yeah. Yeah. Yeah. And that's also I'm I'm not gonna I'm gonna do things.
Morten:I'm I'm mainly building this for how I want it to be, and then we Totally. Just Totally. Right? And there's also the whole dog feeding principle that it runs itself. And everything that gets released gets released through it through itself first.
Morten:Nice. So that will also happen for the load balancer. And I'm a little bit I'm actually I'm not sure if if I can do this, but just just point multiple point a domain to multiple server IPs. I again, I've I've checked TBT a little bit if it should work because through Cloudflare
Dominic:You mean in the aRecords having multiple IPs there? Yeah. Yeah. I I I don't know. I don't know what what what decides which request goes where because at at the end of the day, I I guess that sometimes it's one and sometimes it's the others.
Dominic:Or is it is it just always the first one? And I I I don't I don't know. I don't know to be to be frank why why an A record would would have to who's going to decide the distribution of the request?
Morten:Yeah. I I don't know either because I've always always just used a load balancer. Right? So I don't know. Maybe I can because I I was again, I was this is one of I think it's interesting to discuss ideas with with with AI because they, again, they they have a a last
Dominic:couple of
Morten:training data, right, where they're like, oh, yeah. You can totally do that. Or sometimes they'll tell me, no. No. You're stupid.
Morten:You can't do that. Okay.
Dominic:You can you can still do that until you test, and now, oh, no. We cannot do that.
Morten:Yeah. Yeah. So this I think it's that's why it's very interesting to just like, sometimes just have ideas. They might be stupid. Doesn't really matter.
Morten:Chargle that at whatever and then see what comes back. So that is also something I'm gonna explore because if that works decently well, maybe. I do know if you if you sometimes I have accidentally added multiple records, eight records to the same server. That does not work well. That does that definitely slows things down because then Wow.
Morten:It it doesn't know which one to pick. Yeah. Interesting. So it's a lot of fun and open interesting questions on how to to do this.
Dominic:Yep. Totally. Cool. Yeah. It seems seems like a a nice nice project.
Dominic:It's it's fun to to hear you talk about that. We we will hear that, you know, more as you as you continue with it.
Morten:Hopefully. Yeah. Hopefully, there's more stuff to tell. That's that's a rubbish.
Dominic:Yeah. Yeah. Well, at least yeah. Yeah. Totally.
Dominic:Alright, Morten. So so I think I think we we have a we can wrap.
Morten:Yeah. I think let's do that.
Dominic:Alright. So talk to you next week.
Morten:Talk to you. Bye bye. Bye.
Creators and Guests
