074: Andurel got contributors and OSS licenses

Dominic:

Hello, Gophers. You're listening to GO podcast. I'm Demnik St. Pierre. And I'm Morten.

Dominic:

And we are here. So, again, don't forget to join us on the Gophers Slack. If you are there, it will be it will be nice to see you there. And on the other end as well oh, yeah. I was thinking about that.

Dominic:

If you can rate the show, that that will be extremely helpful. So, you know, this show is is pretty cold and there was a lot of, you know, I would say old reviews and whatnot. So I'm not not super attached to having a huge amount of stars and whatnot. But if you have the time and you find the content interesting, it will be great because because, yeah, there there's pretty pretty hold ratings there that I would like to to bump a little bit.

Morten:

Yeah. Definitely definitely pushes the visibility of the podcast as well.

Dominic:

Yeah. Absolutely. Exactly. So so, yeah, it's a it's a small it's a small action from your part, but it it it will have a huge impact on on on us for sure. Because at the end of the day, we want to be heard.

Dominic:

Right?

Morten:

Yeah. Hopefully. Speak speaking to the void. No. No.

Morten:

Yeah. Of course, it would be nice. Yeah.

Dominic:

Right. So what what have you been up to lately? So I I think we we can start a little bit talking about what we what we have done. Have you have you worked a little bit on your OpenSys project lately? What you know, any any exciting things that you have done?

Morten:

Yeah. I'm actually seeing people starting to to contribute to the project, which is always very cool. I have two two active ones starting to more more actively pick up tickets and issues and and doing that. That's cool to see. I did I did post about it on Reddit, and I got absolutely destroyed by our Golang.

Morten:

And then I also posted it on on our rails, and they they they seem to like it. So that was nice. So so it's getting it's getting a little bit of traction now, getting some contributors, getting some of the, I will say, low hanging fruits out of the way. I did start work on getting the the way you work with forms more opinionated so that whenever you generate a CRUD observation, the the forms actually come with validation and and UI messages and stuff like that,

Dominic:

and that required a little

Morten:

bit of a rework. So it's it's starting to look like a release candidate is underway. Nice.

Dominic:

Yeah. How how do you handle trying to bring contributors and whatnot? So are you are you currently spending an extra efforts when you are creating issues and whatnot and, you know, tagging them with, you know, nice for first contribution and things like that. So what what what is the what is the trick there for you so far?

Morten:

I did I did mark some of them for, like, good good first try, but it's not something I'm thinking about. It's right now, it's still like, hey. You wanna help? Awesome. If you have question, great.

Morten:

Text me. I'm happy to to talk with you. But that's not really any real plan or huge effort going into it right now also because I have not luckily been attacked by all the the a I p the AIPRs. So it's it's This is

Dominic:

where I was going with with all this. Yeah. Yeah.

Morten:

Okay. No. No. It's it it seems like people are actually sitting down, and they're also cleaning up some of my my code, which is nice. So they are the ones that are contributing now are doing a really great job, and I don't have I don't have a I have one guy who wanted to have support or ask for support for, what's it called, inertia so you can do rails.

Morten:

No. Sorry. Not rails. SPAs in the framework Mhmm. Where I was like, that's honestly is not gonna happen for a long time because the anti is it like, this is the anti thesis of SPAs framework.

Morten:

Like, this is a hypermedia driven framework. So probably not gonna want to support that as well. So he he forked it and then implemented its support for it and then sent, like, a 5,000 line change PR for his repo.

Dominic:

Well, like, yeah.

Morten:

Yeah. Yeah. Like, can you give this a review? And I was like, yeah. Yeah.

Morten:

I will try and give it a review, man. So I I don't know. I mean, it's I think it's cool that people are seeing it, and, also, I think it's cool that he's taking it somewhere that he would like it to be. That's I think that's one of the big points of of open source. Right?

Morten:

So let's see where it evolves. Maybe he's right. This is what the people want. I don't know. I don't I just don't want it.

Dominic:

No. And and that's fine. I mean, this is this is how it's it's supposed to be. If, you know, if you want to to do something with with an open source project and and the maintainer, you know, don't see it exactly like you do at the moment. It's, you know, it's it's not the end of the world.

Dominic:

You just do that on your fork and and everybody is happy. Right?

Morten:

Yeah. Exactly. Yeah. Because I did I did I'm not totally against having support for for SPAs, but in my mind, why why why not just because I already have, like, assets directory. Right?

Morten:

So just chuck the SPA static files into asset directory, have them serve for go embeds, and then wrap some controllers as a as an API endpoint that then you're good to go. I think it's maybe it's also me not having worked with Inertia a lot to to really appreciate it.

Dominic:

But I I don't even know what what what it is, to be frank. It's a I guess it's a it's a JavaScript framework. Right?

Morten:

It's a way that you can kind of keep the MVC approach that you have in, like, Rails and Laravel, but then return a work with SPAs. Like Okay. Like, you don't have to change your workflow. You're still using model view controllers, but you're just doing it through inertia. So there's a middle layer, actually, if you check the docs for something like Temple, they actually have gotten support for, like, rare component.

Morten:

Yeah. I think it's probably rare components or more like islands of activity if you want to do that. So it's it's it's something that's possible, but it yeah. It it should be a way where you can write MVC application module controller style applications, but don't change anything and do it with something like React or Svelte or something instead.

Dominic:

Okay. Yeah. Yeah. Yeah. Interesting.

Dominic:

Yeah. It's so it's so vast. I mean, the the front end is so it's it's a different beast than what we are doing usually in in the back end. It's crazy.

Morten:

Yeah. It is. But it's also one of, like I'm I I can see why you want it sometimes in, like, an app dashboard setting. You might have a lot of stuff where, okay, that's fine. But but for the the server side rendering parts, I'm like, why not, you know, send back some HTML and you're good to go?

Dominic:

Yeah. And SPAs are are still valid in a sense. I'm I'm building an app at the moment where the users basically create their own app, if that makes any sense.

Morten:

Yeah.

Dominic:

So from there, they are able to enable some modules that I created, but they they are kind of able to customize a lot of things. So there is there is way too many dynamism in in in everything that having server side render makes no sense at this point. So it's it still depends, I think.

Morten:

But that's also where you get, like, that's that's that's that's that's what you discover, and then you you, like, you you approach it from, okay. And now I need this tool. Right? And that that that, I think, is a good way to go about adding these SPAs. But then you like, we also see where there's, like, they have they literally have a CRUD application, and then it's just this huge Yeah.

Morten:

SPA setup. Then everyone is like, why is things taking so long? It's like, because you'd made this decision. You don't need to have that have this in place, right, because we are, quote, unquote, just creating some data and showing some data and working with data. Right?

Morten:

Yeah.

Dominic:

No. No. Totally. Totally. I mean yeah.

Dominic:

I've I've been I've been away from the front end for at least five years, six years. Yeah. Yeah. It's certainly not my first choice. But sometimes, yeah, sometimes you don't really have a good a better alternative on on the back end to to be able to drive those types of application.

Morten:

No. I I did look a little bit into SolidJS at one point. That seemed interesting.

Dominic:

I I don't know. To to to me, every everything on the front end is isn't interesting. I I I have it's not like I'm writing any line of of code. Right? It's all it's all cloud code.

Dominic:

Review the code, but I I cannot write any front end anymore. It makes me oh, I don't know how to say that in English, but I I want to I want to vomit karaoke. It's it's yeah. I I cannot do that anymore.

Morten:

No. No. No. I I I yeah.

Dominic:

I've I've been creating HTML page since 1998, so I'm a little bit tired of that, to be frank.

Morten:

Yeah. That's fair. That's fair.

Dominic:

I've seen I've seen HTML three. I've seen HTML four. I've I've seen HTML five. I think that that's that's enough. That's enough HTML.

Morten:

That's enough HTML. Yeah. Yeah. Yeah. Yeah.

Morten:

And we also think the eighties are quite good at it. Right? So why why not?

Dominic:

Oh, yeah. It's way it's way better than me, especially with with my blindness now. I I cannot I cannot do any UI anymore. So, I mean, that that what it remains for me while writing the the the the TypeScript file that, you know, bridged the front end and the and the back end. I I mean, I don't want to write that either.

Dominic:

No. So yeah. So pretty much interesting. That that's cool. That's cool to hear that that you have starting to have contributors.

Dominic:

I remember static back in when when it was more active, I had this discourse server. It was it was very fun, but it also add a little bit of of toll on on the on the Nepenthesos project. It's it's sometime because now exactly like you said, sometimes you just need to to say no, might not be easy. No. And you need to review the PR as well.

Dominic:

You need to help people, and it it's it's all fun and and whatnot. But yeah. It depends on on the on the amount the amount of people that that start to to want to contribute.

Morten:

Yeah. But that's maybe also, like, I have I have had this ongoing thesis that we would have a lot better much we have a lot much better software, is that the right way of saying it, if more developers said no. So I also think it's a good little exercise in learning to say no. So we don't don't build up the home home or car again. Yeah.

Morten:

Yeah. It's an

Dominic:

it's an art to say no.

Morten:

Yeah. Because you also wanna progress in your career. Right? You can't just be the no guy or the no person.

Dominic:

Yeah. No. No. That that's fine. But, yeah, that that that's why that's why there is fork.

Dominic:

I mean, this is this is how it should it's supposed to be. So there there's no arm. It it yeah. There there should not be any tension when when you're getting a no as an answer. It's it's just that at this moment, in this this time space, it's not it's not the right time or it's not the right vision for the project, and and that's fine.

Dominic:

I mean Yeah.

Morten:

Pretty cool. Pretty cool. So that's in total for now. And what about you? Have you done more with the static back ends?

Dominic:

I have done a little bit because it's so it's so major now that the thing that I need to do are kind of minimal in terms of changing the the API and whatnot, adding any function. It's it's pretty it's pretty much there. I've added a couple of functions recently to to get entities by IDs, so you can pass like a a slice of IDs, and now you you are getting some some kind of entity. So I'm always careful, extremely careful to to add any, you know, API change at this moment. It's pretty I would say it's pretty solid in a sense.

Morten:

Nice.

Dominic:

The the thing that I I did not miss, to be frank, was to deploy the this not not deploy, but, you know, use NPM to to deploy the packages. I was like, oh, dear. This is well, I understand that there's security involved around that because all, you know, all the attacks and the men in the the men in the middle attacks and whatnot. But the amount of times that you need to validate yourself just to publish your package is is kind of interesting. Not the most accessible accessible flow as well, if I if I can say that.

Dominic:

But other than that, I was not missing that. I changed changed a little bit. I I I use I use Claude, to be be frank, to generate me some nice to have or at least better life in terms of releasing. So I added to create GitHub actions for when I push tags, basically, that will that will create GitHub release automatically. I was I was doing all that manually and that that is the kind of things that I don't really like to write, to be frank.

Dominic:

I I kind of don't really like a GitHub Action to write them. I like them a Yeah. Yeah. Because it's it's yeah. Know.

Dominic:

It's always so much back and forth. Oh, I forgot that. Oh, this is not working. And and now and and again, accessibility wise, it's pretty hard for me to just see what what happened because now the the UI is is not very helpful. So you you you just go to the to the action tab, you click you click on on the the x.

Dominic:

You see you see the x for your action, and you quickly go to what what went wrong, and you are able to to see the logs. Mhmm. For me, it's not like that at all.

Morten:

No.

Dominic:

You know, the navigation to just go there is extremely painful. And so yeah. So now the release cycle is is is all done. So I also change I have I have a CLI with static back end where you know a developer can have the full experience without installing anything. So you can you can just install this this CLI and just do back end server, for example.

Dominic:

And now you have a a fully functional local server. I was previously deploying that to NPM. I'm still I'm still are. You know, people can that have the the GoToolchain can install that with with GoInstall for sure. But since this product, I think it's targeting more like the front end developers.

Dominic:

Mhmm. It's it's on NPM. And before that, I was I was embedding the binaries there. So and I cannot do that anymore because strangely enough, it's getting too big. I I I was not not aware that there was a, you know, a size limit on NPM to to publish.

Dominic:

So I I had to change that, to be frank. So it's it's mainly house house cleaning, you know, making sure that I have a better better flow for everything when I change something now that it's it's it's very very comfortable now to just push a tag. And I have this directory of markdown files where I I just named the the file with the same tag, and it's automatically added to the release notes on GitHub. So that you know, those small things are are not and very nice to have for me at the moment because, again, there's not much development. But I'm still building a SaaS on top of of static back end at the moment.

Dominic:

So this is mostly where where if anything happened in in that activity, and there's something missing in static back end, then I will be able to just add the function. So far, you know, it's all it's all pretty much it's all pretty much good.

Morten:

Nice. And I'm like, I just remembered I need to ask you about okay. So you do have you have an MIT license for

Dominic:

Yeah. I I yeah. When when I reactivated the project, I was entertaining the idea of changing the license. Changing a license is a pain in the ass if you have some contributors that you cannot reach anymore. Yeah.

Dominic:

So that is so I would I would need to try to reach them, try to make them sign something because I I would I would have wanted to move to DLGPL v three. And I decided, oh, you know what? This this is this is way too much complicated. So I would I would hide or need to contact them, make make them sign something, which I'm sure they would do, but I cannot, you know, I'm not sure I will be able to reach any one of them now. And high the the other solution, it's is that you need to rewrite all their contribution, which is

Morten:

Is that a legal requirement? Well,

Dominic:

it it is if you want to change from a copyleft to a copyright.

Morten:

Okay.

Dominic:

So at the moment, with with an MIT license, basically, what they what they gave to me as their contribution is that they gave me the the rights to to do, you know, to to do basically redistribution of their of their contribution, but not change the license of of the contribution that they they have made. I'm not a lawyer at all. I don't really so this is this is what I I think I understood from all of this changing from an MIT on an Apache license to something like the GPLs and and the like. You you need you need to make them sign a contribution agreement that now they would accept that this code is is now GPL'd.

Morten:

Oh, okay.

Dominic:

Yeah. Okay. But yeah. The the the other the other option is to rewrite what they have. And now you need you need to you need to clearly state that before this commit, this change this, you know, this code was MIT license and and let the attribution to the contributor.

Dominic:

You know, long story short, I was like, oh, you know what? This is way too much work for what it is. I don't believe that Amazon or in any any big player will will be interested that much to static back end to to to take it and and host it. And if someone is doing that, you know what? So be it.

Dominic:

I'm I'm doing it myself. If anyone wants to to do a paid services on top, well, good luck. I'm trying to do that and I'm not having much customers at the moment. So I mean Yeah. Can I do?

Dominic:

It's it's if I were to to give me an advice like five years ago when I started the project, because at first it was closed sourced, and I open sourced it in in January 2020. Picked in my MIT for not really any. I haven't put much much thought in into this. But today, if, you know, if I could tell me an advice, I would say go with LGPL.

Morten:

Yeah. Yeah. Because I've been for my commercial endeavor, I also have this API that's gonna be running on client server like, customer servers and gonna be doing all deployment and management That's I kind of had this idea that I wanted to be at least source available. So that's, you know, if you if you use my product and you didn't wanna use my product anymore, it would not break. Well, I I used the OSesi license that tier eights and Yeah.

Morten:

Signals made a lot of noise with. But I can't really enforce it, you know. So it's kind of pointless in in a sense because I can I can only hope that people respect it? Because, like, I I can't I cannot hire lawyers to police this fight. So I've been I've been thinking a little bit about it, and I was, like, also thinking, like, how you approach it because my other my other idea is to create, like, a community edition, sort of, like, how Plausible I don't know if you know Yeah.

Morten:

The tool. They do it, so it's, like, a couple of releases behind. So there could also be an approach to it.

Dominic:

Yeah. That could do that. Plausible was MIT at first. They changed it. But when when you are 100% owning the code, you can change license Yeah.

Dominic:

You know, any anytime you want. My problem was that I had like seven or eight, maybe 10 contributors so far. And when I when I did the get blame and tried to to find it's still not much of a of a rewrite that I wanted to to do, especially if I would use an AI to do that because frankly, I don't want to rewrite code that already exists. I I found it very bad to do that for the contributors. So I was like, you know what?

Dominic:

They, you know, they took the time, they took some efforts and whatnot, and I don't know. At at this moment, I'm just trying to try and have some kind of traction which which I haven't been able to do in five years. Mhmm. So I don't know. Yeah.

Dominic:

But if you, you know, if you are still the the main the main contributor and there's there's not much contribution at the moment, It's either if you know, I I would advise you to have something signed by the contributors that they give you the right to their contribution for commercial activities. That way, if you have that, you can you can change the license later or or you can do that now. The LGBL is is kind of interesting because, you know, it's usually something that people respect. Mhmm. But it also it also can be a a red flags for some organization.

Dominic:

There there's organization. I was I was working at Equifax. At Equifax, you cannot have anything. You cannot say the word GPL. It's it's crazy like that.

Dominic:

So but I I kind of understand. But but, yeah, there is there is bigger organization, bigger companies that I I think they just don't touch those things

Morten:

at all. Okay.

Dominic:

But, again, I mean, this is damn. This is way much complicated than than what GitHub or anyone wants to choosing a license is hard. And and I was I was reading the the post. The plausible did did a long post on how they changed their license. And and again, it's it's pretty long.

Dominic:

It's pretty it's pretty involving, but they owned 100% of their code, so they could do that. As soon as you as soon as you have contributors and you have a BSD or an MIT or any kind of, you know, non non copyright license. Well, it's pretty hard to change. Well, I it's it's not that hard, but I don't have the time to do that. No.

Dominic:

I I was I was starting to craft emails, and I was starting to find email. There there are some contributors that used I was not even aware of that, but on GitHub, you seems to be able to block your email for some reason, and now the email that that shows on the on the commit is is like a GitHub internal IDs or whatever. I don't know exactly what it is. So I was like, okay. I cannot contact them for sure.

Dominic:

It's not a real email. Yeah. So I I don't know. I I don't know. This this this is hard.

Dominic:

This is very very hard.

Morten:

Yeah. Yeah. This is way more complex than I I have ever

Dominic:

Well, it's just that you you really need to to think about those, but you you know, nobody is thinking about those things at first. And once you are five years in, it's pretty, pretty involving. I would need to rewrite an entire an entire implementation of a cache because let let's continue with my example. I I have this this this CLI and the usually, my system comes with with a caching mechanism, but I don't want people to install Redis when they are developing. Mhmm.

Dominic:

So it's there's an internal implementation of a cache with PubSub and whatnot inside, but that have have been, you know, developed by by a contributor. So it's it's not like 10,000 lines of code. That's not what I'm saying. But I I don't know. I I feel bad about rewriting this.

Dominic:

And and rewriting this, what it means exactly? Well, it it just means it it it will basically be the same code, but, you know, not really. So that that I don't like.

Morten:

Yeah. It will basically just be Claude, Git blame, and change.

Dominic:

Yeah. So so Yeah. It's pretty strange. So I I feel bad. I feel really bad for contributors to do that.

Dominic:

Yeah. So I could try to reach reach them all. This this is still something I might try to do. Maybe maybe I I should try to send emails. But again, I mean yeah.

Dominic:

There there was some Ukrainian back then, and I I don't know. I just feel bad now with with all the political aspect, and Yeah. I don't know I don't know their their status, and now I'm, oh, you know, can you can you sign this, please? And and they are right into war and whatnot. I mean, I don't I don't know.

Dominic:

I I feel really, really bad to to do that.

Morten:

Yeah. Yeah. That makes sense. Okay.

Dominic:

Yeah. That's mainly I don't know. So, yeah, it's MIT for

Morten:

now. I

Dominic:

don't know. You know? And and and to be frank, I mean, if if a company wants, you know, to cross me I don't I don't know. What what can I do? I mean, this is I I'm just trying to build something useful at the moment.

Morten:

Yeah. Yeah. It's part it's part of the game. You can't really

Dominic:

Yeah. Exactly. But but yeah. If if it were if it were new today, I I would I would definitely choose a way more restrictive license.

Morten:

Yeah. Yeah. That makes sense.

Dominic:

Yeah. Even though even though some people don't like the GPLs and whatnot, the LGPLs as well and things like I when you realize why did those exist, You you kind of you kind of say because I'm I'm not thinking like that, but there's there's a lot of people that that have compared GPL with with with the virus or plague and whatnot because now it's trying to spread the open source. Well, it's it's not open source because that that not what it was called at first. Open sources came with GitHub and whatnot. This is not really but the the fact that the source is available and you cannot really redistribute a modified version that is closed, I I I still believe in that myself.

Dominic:

This this is something that I I truly believe in if if that is what the maintainer of the project wants. So if they don't want commercial usage of their project, I mean, this is still the way to go, I think, in today's parents. Even though there is a side couple, you know, there there's still some people that don't don't like this because I don't know. I don't know exactly why, but yeah. Of course, companies don't don't really like this because, oh, you know what?

Dominic:

I cannot I cannot modify your your library and now repackage my $100,000 per year software that I've built on top of your library. So

Morten:

Mhmm. Yeah.

Dominic:

Yeah. But at some point, you know, just buy just buy a commercial license if you know, contact the maintainer. Do you know? There there is option even even with the GPL and and LGPL. There there is still option for those bigger organization to to acquire you know, if if someone were to say to me, you know, I will give you $25 for a a license that I can do anything that I want with static back end, I would be like, yeah.

Dominic:

Go ahead. Yeah. Sure. So I mean yeah. This is this is tricky.

Dominic:

This is way, way more complicated than than what it is on on GitHub. You you are just there. You start to start the project. You have this small, you know, drop down. Please choose your license.

Dominic:

Well, this decision is should should be should be taught a little bit more.

Morten:

Yeah. A little bit more explicit, maybe. Yeah.

Dominic:

Well yeah. But but, again, I mean, it's it seems like and I'm I'm saying all those things. I'm not even sure I understand everything I'm saying myself completely and clearly and whatnot. The it's yeah. It's just complicated.

Dominic:

Yeah. Legally and whatnot. Yeah. You know, I'm I'm reading the GPL license myself, and I'm like, what? What what what are we saying here?

Dominic:

Can I do that? Can I not do that? Did you notice? So but again, the m the MIT is is very, very, very popular. But when you are building a library and you want other developers to to to use that, I think it's fine to to have to have, you know, a a less restrictive license.

Dominic:

When you are building a system or any kind of application that can be used as is, you know, Redis is a good example. Look like the elastics elastic with their with their search engine. It's kind of crazy that Amazon and yeah. Let me finish that that that thought, but I I will pursue with with something else. It's kind of crazy that Amazon built an entire product on there, and I will say something crazy, which yeah.

Dominic:

We'll be honest. I I I was contacted by Amazon at some point. I think it was like 2017, whatever when. And they they were they were looking for a Go engineer for to work on Elastic. And they the person that that was talking to me on the phone said, oh, you you do you have any any experience with the open source elastic elastic project?

Dominic:

I was like, elastic? Elastic Elasticsearch? I was not even aware that Elasticsearch was was not the the product of Amazon. I was not aware that it was an open source separated project that was just being used as a service. Mhmm.

Dominic:

You know? Yeah. The the and and this is crazy when you think about that. It's it's like it's like if if someone would were to build a cache service on top of Redis, and now they they they name it x y z Redis, and the general population does not really really know about Redis. This this is yeah.

Dominic:

This is crazy.

Morten:

Yeah. Yeah. The dynamics of of capitalism just Yeah. Maximizing. It is crazy.

Dominic:

We we have turned into a political podcast now. Yeah. People people will say, oh, stay stay in stay in your lane. Don't don't talk about those things. But I I I think the the the licensing is very, very important.

Dominic:

If you are to start any kind of open source project, please give it a small a small think. Yeah. It's it's really it's it's at the beginning that it's easier. And Yeah. Yeah.

Dominic:

And again, I mean, having a coder agreement or developer agreement, what whatever it's called, it's it's also complicated. Now you need to to have digital digitally signed documents from the contributors. The contributors just want to pick or or pick an pick an issue, you know, fork it, work on their thing, and push. They they don't they don't want to read, and they don't want to sign anything. That that's a huge ask, I think, for smaller projects.

Morten:

Yeah. Yeah. This this was was just convinced that, you know, you put a license and then up until that point that you change that license, the code base is like, if I put MIT on something and I change it to a commercial license, you know, then everything up until that change point is is fair game. That was kind of how I have had understood this this setup.

Dominic:

Yeah. I I was in the impression as well a little bit, but, yeah, all all the contributions that were made under a a non restrictive license, they they are not valid anymore. If you the contribution from not from the maintainer, not from the the author of the project, the the copyright holder. Everything else is is need needs needs to have an agreement from them. Mhmm.

Dominic:

And again, I mean, it it's not like any one of them would would say no to this. The I I I personally contributed to to k six as well, the the load balancer, and they they they had an open source. They had a I don't know. Maybe it was MIT. I don't recall, but they two years after, it was a very, very small contribution.

Dominic:

I think it was, like, less than 100 lines that that I wrote in Go. And they had me sign something two two years later. I remember it was just very polite. I'm sorry, Dominique. We changed the license, blah blah blah.

Dominic:

We we would need that to to you know? So, yeah, it's it's it's it's a lot of recontacting old people that you that you are not in contact anymore. It's it's Yeah. It's a lot of it's a lot of work.

Morten:

Wow. Well, I learned something today. And I'm probably just gonna make my make my thing private for now. Don't worry about it later.

Dominic:

Well, again, do do your research. I mean, I I again, I I don't I don't know that I am 100% alright every No. No. On those topics. It's it's pretty, pretty hard to

Morten:

Always do your own research, you know, just like with with financial advice of crypto. Do your own research.

Dominic:

Yeah. Totally.

Morten:

Yeah. Okay. Cool. So yeah.

Dominic:

So that was that was basically my my ice cup couple of weeks.

Morten:

Nice. Yeah. Okay. Yep. And what what are you so you're mainly doing the business side of StaticBack End.

Morten:

Is that what

Dominic:

Well, I I there there's a lot of things that are coming. You know, one thing that I think I implemented not completely or might not be what users want is when when you are building a reactive application or something that needs a real time collaboration, you want to receive updates from the system, you know, events, if you if you if you think about that. When when there's something a records on the database that changed, It's Mhmm. It's done. It's already like that.

Dominic:

So let's say let's say you are on the on the post for example, and you want to see real time other people that are commenting. There is already all the plumbing to to listen, if you will, to the comments table in a sense for that post. No. No. That's the problem.

Dominic:

So you will receive all the, you know, all the inserts and updates and deletes of that table without filtering to where you are at the moment. So let's say you are viewing, posting the post one, two, three, and someone else is commenting on the post five five six seven whatever Mhmm. You will you will still receive that. So from from my point of view, it was not going to be a problem. I was expecting developers to just filter for those results.

Dominic:

Let's say let's say you have a function that that is there on on the CLI not the CLI, but on the on the JavaScript client that is is there and and is already notifying, you know what? The this table is has gotten some updates, for example. I was expecting people to do some kind of if, you know, if I'm on this post, blah blah blah. And but it's not it's not the way that Firebase, and I I think Supabase is working as well. I I don't I don't know Supabase very much.

Dominic:

But I I know that Firebase is letting you re just receive the the real time updates to the entities that you are currently seeing or that you have fetched. Not even sure how to do that yet, but this is something that seems to to be distracting for users, especially users that were used to to do Firebase and whatnot. So Okay. So, yeah, that that's a that's a tough one. That's a tough one because I I on on the server, it's it's it's basically just, you know, there there there's an insert, an update, or delete on on the table.

Dominic:

I will just broadcast something. I don't have the knowledge of what the user is currently looking. So it's which will probably be in the in the the TypeScript library in a sense. I will probably just myself do this if if no one wants to do this, if I will do it. But but again, it it will requires now to pass an array of of IDs that you want to monitor.

Dominic:

I I don't know. I I don't have a good solution, and I don't like that when when I I have a problem in front of me, and I don't know how to model it. I don't know how to out I don't know how to structure it in terms of what will be the best developer experience for this new thing. Yeah. Because what I did so far was what I thought was the best and more flexible.

Dominic:

Personally, I want to receive all the things because it's not because I'm looking at post one two three that I don't want to receive the the comment from post five six seven. Maybe I I want to receive them and I want to to post a a notification to the user saying, oh, boom. There there there's now a new comment on a different post. Click here to view the post. Something like that.

Dominic:

I don't know. Yeah. Yeah.

Morten:

Yeah. I like, I only know how to do this. Like, I because I'm doing a lot for my my product with DataStar. They have, like, this nice keep keep open, and then you can just stream results down.

Dominic:

Yes.

Morten:

It was just amazing. So that that was the first thing I was thinking about. But, of course, I don't like, you're you're communicating you should have access to the same, right, because you're communicating through fetch, so you should have servers and events. And is that not how

Dominic:

Yeah. It's it's it's like that. But I don't really know exactly how to to filter, you know, the I don't want the servers to to know exactly what the users is is is fetching because that that is two separate things.

Morten:

Mhmm.

Dominic:

The the users basically subscribed to to some messages, and the messages is like d b underscore the table name, for example. And that when you subscribe to that message, you will receive the inserts, deletes, and updates for that table that you do have rights to to view because there there's this there's this security model that I have, which which is is pretty interesting. But yeah. So I'm I'm not sure I'm not sure I want to to change anything on the server, but but yeah. It's it I I think it's just a a sugar sugar thing that some front end developers expect to have.

Dominic:

And I just need to to find a good way on the client side to say, you know what? Limit yourself to only only those IDs maybe.

Morten:

Yeah. Yeah. Like, try it like an array or something? Or

Dominic:

Yeah. Yeah. Something like that. But but again, I yeah. Since I am not the requester of that thing, and I don't really see why because I do I I I would personally just do an if in in my receiver.

Dominic:

You are receiving a message that says, you know what? There's an update on the the DB underscore comments table. Yeah. That that that that that is clear to me. That is because I can do that also on the server side functions.

Dominic:

The server side functions can also trigger on those kind of message. So you you could have an email sent when when there's a new comment that is inserted in a database. I I don't want the server to handle any kind of filter. No. Yeah.

Dominic:

Yeah. So yeah. So that that is something I need to do, but again, I I need to I need to think about that a little bit more. You know, all all the all all the libraries are kept in sync. So that is something that I was not really missing.

Dominic:

When you have so I have this Go client this Go client library. I have I have this TypeScript library, and I have this node back end library as well. So whenever I I had anything so that is why I'm not adding a lot of functionalities these days because now you need to change all all all three of those libraries. You need to redeploy them. And, you know, that takes times, and I I don't think that API wise, I am missing a lot of functionalities.

Dominic:

No. No. It's pretty it's pretty daring. I've I've built at least four or five product with with static back end so far. So I'll you know, a lot of different use cases, I would say, and and so far, I'm not missing much.

Morten:

That's also a really nice to build products. Like, little a really nice way to build products. Right? Like, have an idea, build it, test it out with something real, and then, continue and iterate on it. I had a discussion yesterday on Twitter with or whatever it's called, with someone where they were like, how I built my framework was literally just iterating with AI over a long period of time and then throwing it at real world things and seeing what stuck and what did not stick and then change it.

Morten:

Yeah. You you typically end up with something that matches reality a lot better than than you would have if you just did the whole waterfall.

Dominic:

Oh, I think so. I think so as well. Yeah. But, again, I'm not even sure. That that is what I I want to to truly discover now because I'm not sure that this this works with with anyone else at the moment.

Dominic:

Personally, I find it very easy to use and very friendly and whatnot. But but again, I I don't know. I don't know if it's the documentation that I have, the formats. I'm I'm trying to change the messaging as well. I've I've updated the website to be more targeted at people that are building with LLMs because and I I stole something from from from you, basically.

Dominic:

Yeah. I I saw that you have this LLM action on on your CLI, and I was like, oh, this is interesting to generate generate files. So I I did that as well. So now people can generate to markdown for for the client library and the and the Go the Go library. So now, you know, if you are using cloud of whatever, you can you can tell tell it to to look at those files.

Dominic:

So

Morten:

That's I don't know how because, yeah, like, I had to be very careful with naming, I found out, in that command on the CLI, simply because it it insist on running the short form command for compiling your SQL queries to for for generating your temple views. I I and I kept asking it like, hey, dude. What makes you think that this is the right command? So I could so I could put something in the documentation file, and they're just like, oh, no. I'm sorry.

Morten:

And it's literally just because it says compile. So it is and I put like, hey, this is for SQL only, for SQL only files. It didn't care. It just I don't know. I don't know if you will experience it, but it's I think it's a good approach, but it also it seems like it sometimes it just gets into into this thinking like, this is this is definitely what I need to use it for, even though you explicitly say, like, this is for SQL files.

Morten:

This is for HTML files. So it it works, sort of.

Dominic:

Yeah. I I I don't know. I mean I mean, it seems to be good to have the you you you're saying about having some kind of markdown in addition to to the the context that that you're setting at first?

Morten:

No. Because you talked about the Enduro LLM command. Right? Yeah. And in there, I do like an overview, and then I do sub commands in the overview.

Morten:

So I try to keep the context window as efficient as possible. And for some reason, whenever I use Claude on and total projects, it keeps thinking that it needs to run the command to compile the SQL c queries

Dominic:

Oh, okay.

Morten:

For for for generating for compiling the views.

Dominic:

Okay. I don't know

Morten:

if that so is it because I a short form where it's like a doodle queue compile, I believe, and that will take, like, all the SQL files and generate the boilerplate code with SQL c. And it keeps thinking that that is what it needs to do to generate the temple like, to generate the GO files from the temple files. Yeah. It's a long way to explain this.

Dominic:

Yeah. Okay. But have you have you have you tried to to have a some kind of markdown file that explain all the the commands that you have to be extremely clear and and that that you link that to in in your cloud, the dot m d u, You can say, you know, if you you know, to to to see the the detail or or the the documentation for the CLI, look at this markdown file?

Morten:

I do have like, I try to do, like, an agents dot m d where I have, hey. This is Enduro framework project. You have to use enduro.lm for context. You cannot run Go builds or Go test or Go formats because I hate when it does that. And then try try to make it use that, and it's sort of working.

Morten:

You can see, like, it does run the LLM command, but then it's also sometimes it's lazy and it doesn't run the whole thing. So I had to move certain elements of certain commands up to a higher level for it to actually read it because it will just do, like, a short short read of some of the LLM commands, so it didn't get the whole context. So, I mean, it's working, but it's also not great.

Dominic:

Yeah. Yeah. Yeah.

Morten:

What I keep finding again and again is if you have good good patterns in the data code base Yes. That that is the only thing that really, really matters, at least from my perspective or what I

Dominic:

see. What I was going to say because if if it finds something that is not good, it it will replicate it. Yeah. So

Morten:

pretty also, like, I'm I'm trying to get this article written about my experience of creating the framework. And one of the things I really wanna iterate on is that we need like, getting some more determinism into our tools is actually a really nice part, especially because you can see, like, why say, like, why would I want to use something like in Doodle when we already have AI to generate all the things? And the whole argument is that you you if you start from something with consistent convention Yeah. Good examples, you will go super fast. And there's also, like, I saw this this business influencer.

Morten:

I don't know if that's the right word, but he was like, oh, you just start from zero with with AI. And I was like, you do not start with zero from like, I have never seen that work really, really well. And it's something that you see go through, like, throughout the ones who work a lot with AI. It's like, yeah, you need you need, like, to have a good base. And once you have a good base, then you can let it run a little bit more wild because it will replicate what is already there.

Dominic:

Yeah. I I always always use very, very long detailed things with a lot of code example and whatnot. Mhmm. And I I hear people say, you know, sometimes, you know what? It it will take me the the same amount to explain exactly what I want and things.

Dominic:

Well, I was a little bit thinking that, but when when it's doing all the the the the UI component and things like that, and I I'm I'm like, you know what? I would not have done that in fifteen minutes for sure. Because I would have opened the TS file or TSX or whatever. I would I I would I would have said to myself, oh man, not another not another UI component and whatnot. I would have procrastinated so much.

Dominic:

Compared to now, I I just say, oh, you know what? We have we have this module, and it will be extremely similar to blah blah blah, and and look at this file, check this. Yeah. You can you can do something like that, and I do pseudo code and whatnot. So I'm basically not really typing anything ever on the CLI.

Dominic:

Always bigger, you know, bigger document. Not not document like 50 page, but 50 pages, but you know, more. Let's say 1,000 word explanation of what exactly I want Wow. It to do. Oh, yeah.

Dominic:

Oh, yeah.

Morten:

That I I mean, I do I do like four lines at max Oh, no. I know. You do you, like, go go look at these files, do this thing, and then I I look at what it's doing. Yes. No.

Morten:

Continue.

Dominic:

Oh, No. No. No. No. I'm extremely I describe anything.

Dominic:

I do I do mock ups. I do you will I I do exactly what you say. You know, you you will find this in in that file, but I do a lot of code sample. I yeah. I I do a lot of things.

Dominic:

When you do that, it's just each time I I interact with with Cloud Code, it's it's it's v I plan mode. I never if it's a I have a bug. Let's say I have a bug on the front end. Yes. I will I will not I I will do I will do probably like it's more than four lines.

Dominic:

Probably fifteen, twenty, even for a buck. But all the time, I'm I'm in plan mode. Never I I never ask anything other than and and I never type anything on the plan mode. I say, you will find please create a plan for the feature that I define here. Bang.

Dominic:

And this is a markdown file. Yeah. Otherwise, it's it's not understanding anything, and it's it's doing a lot of things that I don't want it to do.

Morten:

Yeah. I mean, that's one of the interesting things about these tools that we are still exploring all of

Dominic:

these different

Morten:

different approaches because I always try to minimize contact usage as much as possible. So so it it can use as much of the contact context window to to work in. Mhmm. Yeah. So that's also why I I never do the I I don't have any skills.

Morten:

First of all, I think that's just another way to make us use more tokens. And that's Yeah.

Dominic:

I don't have. I don't have.

Morten:

I'm not convinced that that is I there's like there was this marketing dude who created a lot of Cloud Code skills where I've just taken this to the the markdown file and adjusted a little bit and then told Claude, hey, please take this file and then apply it to this page. That works fine, you know, like, it follows some instructions. Yeah.

Dominic:

Oh, yeah. No. No. I I mean yeah. And to me, I I've noticed that it's it's consuming a lot of lot of tokens lately, I I say.

Dominic:

Because now when you when it enters the plan mode and it tries to and I it it always say, oh, you know what? I will start two agent to explore everything. And now

Morten:

Yes. Like, you're asking me.

Dominic:

So much reading. I'm like, you know what? I just sent you most of what you need.

Morten:

Yeah. Like, can you change the background color to blue? Yes. Let me first explore the code base to understand. It's like, no, my guy.

Morten:

You just need to do this one thing I'm telling you. Yeah. But it's funny to see how it also the whole thing, like, are gonna be developers are gonna be redundant in what it was, like, six to twelve months. It's like, you can't even keep your agents consistent because now

Dominic:

Yeah.

Morten:

Like, I use Codex more than I use Claude now. And Claude used to be really, like, you know, trigger happy. Just, you know, bang. Do some stuff. And now it's gone, like, complete one eighty.

Morten:

It feels like that, oh, let me just research, like, the entire universe, and then I can start working on the task. So it's like I don't know. It's it's it's from week to week.

Dominic:

Yeah. Yeah. Yeah.

Morten:

It's the new JavaScript ecosystem, you know, like, everything is chasing every every week, you know.

Dominic:

Oh, totally. That yeah. That that is why I have so many difficulties letting it write any Go code myself because inevitably, I when I open the file after that, I'm like, oh, no. This is not right. And I I'm I'm rewriting a lot of things.

Dominic:

Yeah. Because yeah. Probably, I'm I'm super picky and and and opinionated and whatnot. But even even if I rewrite a lot of things, I I feel it's not it's not picking it. It's not it's not picking my style.

Dominic:

I don't know why exactly. But again, for for me for me, it's it's all about writing all the the UI. And if I were to even if I were to build an I I Premise UI application, it it it would still write my template and whatnot, you know, this all the HTML and things like that. I I don't want to write that anymore. Yeah.

Dominic:

Yep. Makes sense. But again again, this is I mean, yeah, my mind has changed so much in the last eight months. Maybe six that I've started to use that because before that, I I was not. Yeah.

Dominic:

And forced to admit that it's true. I mean, I would not have written the application on the front end that I have at the moment, which I started like, I don't know, ten ten business days ago. You know, honestly, if I'm if I'm completely honest, think it would have taken me, like, two months to to do that myself. It's crazy.

Morten:

But I I I had a I did a I made a post on on LinkedIn a few days ago, something like last week, where I was like, it's funny to see how different people and organization seems to go through the same conclusions on on AI, which always depends on how long they've used it. It's always something like this is crap. Okay. Maybe not. Okay.

Morten:

This is crazy. Sometimes it's also humanity is doomed. There's no more jobs. And then it's like, okay. Maybe not.

Morten:

Okay. It's it's another tool that we can use. Think, generally, that's the the cycles I have seen a lot of different people go through and talk about that in in various degrees, of course. But I remember first time I saw Devin and I was like, if this is true

Dominic:

Oh, yeah.

Morten:

I mean, we are done here. Like, I'm gonna go start a new career, you know. And then it's like, oh, it was just a video.

Dominic:

Yeah. It was it was it was very, very, quote, unquote, disturbing that that thing back then.

Morten:

I was

Dominic:

like, wow. Me, I was I was talking about junior developer entering the field. So I was like, wow. They what are they thinking at the moment? You know?

Dominic:

Or everyone that is at university and whatnot at the moment, are they are they like, okay. You know, should I should I switch program and whatnot? You know? Should I continue? Yeah.

Dominic:

This is this is crazy.

Morten:

Yeah. I'm sure it's very stressful for those fields. Yeah. But I also think we have to remember that there is an I think there is an economic stop. There's something economically built into this thing that will not make it overtake everything because then you need people to buy stuff.

Dominic:

Yeah. Totally. Totally.

Morten:

So, you know, you can't just like, also, you can you see again and again and again that these companies come out and say, we don't need developers. And then you check at the career page and they have, like, a 100 open developer positions. Yeah. It's like, oh, but if what you're saying is true, why are you expanding? If you it it doesn't make any sense.

Morten:

So I I I think that is I think I think we are starting to arrive at the point where people like, okay. Okay. Things are good. Maybe we are only we're getting a lot of the boring task like, right? I like I don't like so I like to write CSS.

Morten:

Right? Yes. It's really nice that I don't have to write CSS anymore. Yeah. Or these little minor box that it was not really critical, but okay.

Morten:

Now I can I can just have an AI fix those box and look through the code and, you know yeah?

Dominic:

Yeah. Oh, yeah. Totally. I mean, when you when you find the the task that really fit with your, you know, with your flow, that you that you are happy to outsource or to that thing, it it's it's pretty yeah. It's pretty hard to beat.

Dominic:

Mhmm. Yeah. But again, food for thought, and we will see. I think I think on those those words, we will we will wrap up for this week.

Morten:

Yeah. Sounds good.

Dominic:

Alright. So thank you, and talk to you next week.

Morten:

Yeah. Thanks. See you next week.

Creators and Guests

Dominic St-Pierre
Host
Dominic St-Pierre
Go system builder - entrepreneur. I've been writing software systems since 2001. I love SaaS, building since 2008.
Morten Vistisen
Host
Morten Vistisen
Contract Full-Stack Developer at mbv labs.
074: Andurel got contributors and OSS licenses
Broadcast by