Well, Hello, hello everybody, and welcome back to another exciting episode of JavaScript Jabber today on Well Today, on our show, we have We've got your hostess with the most us that's me and Joe Neil for now Yo yo yo, coming at you live and all that stuff. And then we've got Steve Yo what up from Portland? And then we have our guest today, Kelvin. Hey, how you doing? Ye? All right, so let's jump right into it. Who are you? What makes you famous? Or
if not, what makes you famous? What do you want to be famous for? Okay? Thanks? AJ? So I'm Covin. I am the lead Mintino Sims Jiz, and I'm currently working on the borrowing jervascript stack. Hopefully it's the name is not a turner for most people. I him to make it a go to stack for building full stack web applications in JavaScript. So how long have you been maintainer of sales? Did you start it? No? Not at all. So sales was created by Mike McNeill. I
became the maintenance of sales June last year. Cool? Why did it change hands? Okay? So Mike is still the BDFL you know, and but currently we have his hands full with being the CEO of Fleet Device Management to fleet Security and endpoints company based on squad. So there's your help. You get visibilities into your computers and all the stuff. So the sales frame of the more hands on midness, which is where I'm come in to like lead
the framework. Yeah okay, And for those that are not familiar, BDFL is Benevolent Dictator for life, So any the person who gets to call the shots, all right, and then what is boring JAS because that kind of sounds like a generic term like vanilla JS. Yeah yeah, so the full okay, go ahead, Yeah for sure. So the fool it's it's kind of like a mouthful. So it's called the ball in JavaScript stack and it's
my own. Like, I just think that in the gymascript space we sort of have a lot of excitements when it comes to building full start as apps. There's so much going on boats in terms of actually putting everything together is sort of like not complete. So the boring stack was started I think back in twenty twenty where I was like, you know, the old promise or the premise of no jars was that we can build wh JavaScript across the stack,
right, but what we have today. Most times when we want to build single page applications, you have like a single page app which is like a like his own ripor and everything. Then if you if you're going to do anything sub scated, you're gonna leave like an API. So that's two separate Javaski apps that are in separate ritos. And of course there's a lot
of things. You have double routing where you have to route on your API routes then your client side routing, and that's just scratching the surface, right, So I wanted something where I could piece all this together still have a single page application, but we did more server centric flow, right, so that means no more loading spinners, no more double routing and other things I saw for us. So that was it, Like that was the old and I get to use it in the old platform. And then I figured out,
you know what. At first I called it like the vit stack, which is view innationial tail with that sales, but it supports react and filt so that's this reads and see he's just does me any sense? To me? I was like, you know what, let's call it what it is, which is like it's not exciting, it's just boring, and it gets to move a really quickly, so hence the name. I got to say,
you're preaching at the choir because I'm looking at the repo. And I have been preaching about inertia, Tailwind and View for years, both here and when I was doing the Views on View podcast, because I have talked to Jonathan Renick, the creator of Inertia, twice on this podcast, and I have been using inertia in Tailwind and View for an app that I've been writing for last year and for other stuff. The difference between what you're using what
I normally use is I use LERAVL on the back end. Yeah, but but yeah, this this stack is the bomb, and I understand what you're talking about double routing. It makes it really nice because Murcia handles all that and you only have to define your route once on the back end and everything gets to pass through those. So yeah, it's it's I don't I mean, I'll take don't. I don't know if I would necessarily coin this as its own separate stack simply because the point of inertia is the plug and player
back in with your front end. And I know initially when I had first talked to Jonathan. Node was not an officially poor supported back end supported by Inertia, but the community had come up with plug ins to use no, so I know, like I think Ruby and Lara Bell were the first back end that were supported by a nurse out of the box, along with sales excuse me with spelt you and React. So walk us through the stack. What are the pieces and what how long have they been around and what's the
goal of each? Yeah, for sure. So one thing I like about the stack really is that I kind of see it as basin a lot of cool technologies at the stable and most bowing versions, for example, we all like React for j exs, right, but most of the time when you get to like you full stack, okay, I don't really use it that you speak, But the void is at the components level, React to stable
right, and it's it's really good for what it does. Stepway one of layer stuff like routing and all the metal frames, it just gets out of hand. So my thought process was, you know what legs take the components, which is made possible by inertia, right, and just let you build your pages with reacts components which are just as view which is a single fire component. Then it speilts own stuff and let us be the pages and a
more selver centric web framework like sales which is really old. Serss like what twelve years or more now, which is really old, and just take the stable versions of all the step and of course stalings which makes starting super good and just give you an holistic mono reple like a monolith where you just build full start JavaScript applications. So there's Sales which is going to control everything as the web framework. There's Inertia which this is your view spelled or read components
together with sales. So why I think is it makes sense to make it its own stack because this is just like the earliest version of it. The vision is to get it in social way that for you to build the pages the way your users are going to consumments. For example, I don't think your marketing page should be a single page application because you literally don't have any
drama script that should run there. So with this stack, you should be able to use your jeccess and still just ship or send back HTML at the end of the day or like what you do when you have a single page application with SSR, Like there's no need for SSL in your marketing page. Really, so my thought process is led to dev use the DSL, which is the which is the views templates, to use components felled or reacts, and just give them the option to build either apps or websites. But's all
in the same code base. You say, don't say no to chasing JavaScript trends, Yes, and then you've got view react and Felter supported tailwind, et cetera. So what do you mean by say no to chasing JavaScript trends
when I mean those seem kind of trendy all those things. Yeah, not really, So like I said, we know everything happening in the JS for for example, now when we have things with RSC, you know the app rout and the next years or the pages router whether they're just all these complexities that you have to learn in order to just chip your rectangles to use us to do stuff with. What I'm saying is that you don't really need to go all that trend All your need is the component, which is the basic
cell of all this from and framework. Leave the whole state management jas because the borings that you don't need the state management at all. But you don't need to know sustained or whatever you use for state management. Neither those trendy, because there's some more stable and borrowing to do things that actually gets you moving really really quickly. So those are the trends. The frameworks, they're really boring. At the components level, there's not so much you could do
with the excess than just write it. But when you start adding all the trends on top of it, that's where you just get out of hands. And we've seen applications that are just terrible for that use cases. Yeah, all right, I got that. So you mentioned state management. There's no need for state management. I'm curious to see why that is or why you say, because I have found niche where yes, it is still important, but I'm curious to see why you say it's not even needed with the stack.
Yeah, definitely, So most times why you needed like a state manager, especially when you're building a single payer applications the normal way, you often want to sink states across your app right, because the front that is away from the back end. But with the star the owner sort of truth is the state from the back end. But we can be cashed of course to make it really fast, so there will be no needs. So like the way I've been building ups and I've even't seen this even I think Remix also
have this as well. Where there's no state management, you don't need any state management. So I'm not talking about use states. Yeah, I'm talking about state management libraries wife like the sour stand. Like in View with Opinia, you don't really need to synchronize states in the front end because again it's
centric. So all this did come from you back data and it just gets sent to your front that that's prop shid zta, all facilitied by Yeah, Okay, So the basically the premise that you're saying is is that I mean, is that because I don't know if it's because of a speed issue, because of the sort of source of truth, you don't need the state management.
And I ran into a case using inertia with you with Lara Belle, where I had I was dealing with the calendar app and because of the hierarchy of of components without state management, I would have been having to either go back and forth to my server or pass props from A to B to C to D. Granted with View three, you can use inject yes inside the components whether it called provide inject I think you can do that. But for
Jonathan, state management isn't prohibited. You can't use it if you want to, and I think there probably are going to be some cases where state management needed, But to your point, yeah, you don't need it to the extent, yeah you will where you're just using arrest API from the front in
the back end. Now, I think we should probably do for those that might not be as similiar with inertia as you and I are, is to explain how exactly inertia is working and what it's how it's working behind the scenes that invalidates the need for state management. Yeah, definitely, thank you, Steve. So the old promise of inertia is that it's acts like erupting library rights sols of like view route or the or anyone using reacting language. Right,
but it's kind of interesting to do it, Walks. So two things you have to know. It has a protocol which is like a page So there's a page object that initial expects to get sent from the back end, and that page object has the name of the components and prop which would be
like the proper you want to pass to your components. So For example, if on the page we have like an initial link, if you click on that link, Initia is going to intercept that click so that that you don't make a full page request, but it's going to send an AGEAX requests to get that page object. So once you get the page object, it uses the name of the component to find the component in like maybe if a pages slash in the extra says, and then swap the current page with that page
as well as passing the problems that the page needs just like that. Okay, So doing so you find that you don't need like a loading spinal because as soon as you click the link, it goes to the back end. I guess the pitches and also the prop so it's it comes with the data it needs, so you don't have to make an extra request to get the data. So that's at the high level, that's like, well it works, and of course the headers you have to send we're is all going to
be taken care of by the sem aside adapter that you're using. So I wrote the one for sales, so there's there's also official one for laville and of course rails. That's basically what it's doing. Exist the best way I've heard it put is that it's hijacking the request from the browser and instead of doing a full page reload, it's just passing the data back and forth so that your browser isn't doing a full load. And so when you're writing your back end, no rails, what have you, you say okay, in
whatever your function is that that's saying okay, return this value. You're telling it, okay, this is the component that I want you to pass it to, and here are the props that go to this particular component. And so then in your in your front end component, you just expect your props as you normally would, you know, from anything else, and that way, it's that makes it very much a lot quicker because you're bypassing the page
reloader it uses. And if you look in the inertia docks at are Ersegas dot com and talks about the headers that it uses to determine what's going on. And then even within you know, if you're within a component you want to click a button and you want to, you know, just go to your back end and get some data without reloading the page. That has some helper functions like visit where you can say, okay, go to this url, it calls your method, you do what she needs to do, and
then it returns it. So it makes it very quick because of bypassing the whole page reloading. That's really all it does. And then not sure if we cover this in detail, but your routes, you're only defining your routes in your back end and it's just using those if you go to the docks, it just says, yeah, to find your routes in your back end, you call them from the front end, where normally with like a USPA, you would have your your view router configuration where you've got to find your
routes and then it calls the standpoints on and so forth. So it makes it much neaterer and cleaner, and that you're only finding your routes in one place instead of instead of two different places and both your front and your back end. Right, So, what are some other things that you wanted to that you want people to know about the boring stack, either implementation details or
philosophy. Yeah, definitely. So the first thing is that you don't need to because in the JavaScript cycles of new trends, and you feel if you're already no view and reacts or is built? Are you like the component? Because I find out most times what we like in these promotes is the DSL that they like that they to us write our U eyes in right. So if you if you want to shout out the noise that you have to piece
yourself. Because why I liked Sales back in the day was I started to know just with Express and it was a paint to always have to go find for everything that I need in order to build an API. In Express, I have to piece everything together. So I found Sales and they just have everything you need. So there were a lot of conventions that work, which is MVC. So that's same thing that Sales let me do, which is
the move with quick. That's what the start is trying to do, which is if anyone, even if you're a new by, your already know components in whatever you have frameworks you like, all you have to do is to user start right your components like sixty percent of the time because your back end just act like the data layer. I just just sending down a page with
the prop. Then you do everything that you normally do components and it's just a brudge to work with I've had folks seeing that we're using next Years have a demo of the stack, and they really really loved it because of how simple it is, and it takes a lot of stuff, like cause is no longer an issue because you're backing at your front there at the same page, so you don't have to worry about all that, all right, so the old reckless hell of course it's not long your thing to worry about.
And it just sort of like makes sense, right, like when you use something that is there's holistic, Like I said, no loading spinners, Like I've had to deal with that, where why is the page loading? And I still have to go fetch data for it again? Right, like to give you this empty share which is your spa promise, you know, just look the page and get the data. But there's no benefit of the page to the user if you've seen a loading spinner. So the page load first
of all with the normal browser load that's some seconds. Then do you not have to load your own? It's just too much. So I feel like you want to keep the simple, keep things really really fast. You should use the boranch start because it just does all that. And again you're not
construmed from what's sending Jason over the wire. You can also do that because it doesn't construme you not to do that, So you could still have pages send the inertial way and also Bill fetch your data with Jason if you want. Okay, so two questions, I'll try this one. I mean, I hear both sides of this argument about should your application use its API? Are you going to export an API to customers? And then, if so, should your application use your API? And I've kind of always been on
the side of yes, your application should use your API. And my reasoning for that has been that when people design, like most people don't have experts on the team, right, and when people are designing their front end and their back end together, then everything starts to look like the front end, right. So when there's a form on the front end, then the data model starts to look like that form, and the database table starts to look
like that form. And then when it comes time that you need to modify things or add an API or expose a customer integration, you're just screwed. And I'm curious with this stack, are you advocating it to people that are
going to be exporting things that are going to integrate with others. Are there some guardrails in place to help people fall into the pit of success in terms of data modeling or is it really just for kind of like the javscript versions of rails where it's you're going to create a cookie cutter site and you're not You're not really going to be, you know, exporting an API or something.
You're just building a like a like it's more customizable than WordPress, but you want to do it in JavaScript rather than Ruby on rails, Like, I guess there was a lot of stuff there, but yeah, you pick at any of that. Yeah, definitely. So for our sales mix for a really good framework for building APIs, Like I do know Postman and Pastack they use it Postman for micro services and Pastack for like, yeah, public facing a PI. You can't build an a p I a right, And
this thing is what I've seen and I think a couple of us. So I used to be a very good advocate for recpis. I still am. But the through is for most apps you won't need to expose a sp I. Sometimes I get people say, like, you know what, let's vie the RECIPEI now and use it so that when we have to expose it, it's just the what the truth is your API that you use for your app a lot of the time, if you want to suppose it, it won't
be the same. So I've seen this work, but like when seems that to be, like, you know what, let's build an API so that we can consume it, and of course I suppose it. It's not going to be the same thing, so the use case is never the same. That's when we have terms like back and for front end, and you start have like you start having to modify different parts of the Jason your center back. So to your point, this tack is mostly for full start applications.
Most apps are okay being food that applications, especially if your client is on the web. You don't have to build an API, which is the entire idea of of initial which is like, you don't need an API, but if you must, you can expose your API routes. But I wouldn't say that the same API routs for you for your own private use the same you're going to suppose. It's most likely doesn't always work out really well, I
know, right, So on the I think the old recipe. I thought, right, if you could use your your private one I used to, I suppose the same one. Have you had to do that? So I I just think that if the data is modeled well, I mean, well then this this comes to the SPA versus the service I render issue. But I think if the data is modeled well, then you you should be able to use it externally and internally. And yes, you may need to tweak it for the internal use, but but then you have to you have to
model it well. And if it's modeled well, I mean, but this this is the whole thing of like the PHP style where you're exporting the data specifically for a form view or a gallery view or whatever, versus you're exporting information, Like are you exporting a view as Jason or you exporting information? If you're exporting a view as Jason, then it's not really an API. It's it's a it's a particular view of the data. It's not about the
properties or the values of the data or the relationships of the data. It's about I wanted to show this gallery with this this pieces of information. You're selecting that, right, And that's and that's kind of like the promise of graph QL is that you don't have to make the decision. You get to
do both and then you know, we saw how that turned out. But you know, on the other side, if the data is not modeled to the UI, then if you're trying to do whether you're doing client side rendering or service side rendering, then you have to have another layer that's going to consume the API, which I guess you know, either it's the back end for the front end, or it's the or it's it's more sophisticated front end where you need to fetch a bunch of objects, you need to iterate through
them, you need to attach the extra data for them. And so I guess I guess maybe I think of a of an API as being a little bit closer to the model with some of the business logic that needs to be done on top of it solved, and a view is more like what what's going to be templated. I don't know, I don't know where I'm going with that. I'm just thinking out loud. No, yeah, like I get the thought. But I think when we go into real world we sort of like, see, so you just painted an ideal API hing, but
if that was the case of every app, we wouldn't need graphs. All the different solutions we have tried to come up with just for like, our UIs to get just the data it needs, so do all over an affetching thing. It gets to tell us that that ideal the PI is not really
what the end consumer would need. So if I just send you know what, this is my generative game, which is tied to the data and it's modern, really well, my UI will have to now do some extra work right to get just the data it needs, you know, like, okay, let's put the graph on top of this one. Two cannot pick face. So with the boring stack, now the you I only get the data it needs. And this is suitable for just web apps. So instead of you thinking of okay, graph c so I can need to pick so the
page will only come with the data that that page need. So there's no overfetching, there's no un affection. You only get in the data you need. So we did have a couple of questions here, I'll go ahead and field which I think you just answered this one to confirm the boring stack compiles the page with the props you passed into it, right, Yes, So
it makes an asp PA look like a static site. If you if you look at the source code of an inertia page, what you'll see is there's a big, huge data attribute of the top page that has all the data that's been passed into it as props. And that's how it's scoring that and accessing that. Yeah, I'm not sure I understand what it means. What makes it look static because it's still because what I guess, because the data is passed in before the page is actually compiled. I mean, it can
be verysly. I do a lot of really cool dynamic stuff with the page as well. Once it's loaded, you know where I just send you know, a little bit of data back to my API and it passes it back and I only update that certain section of the page without the whole you know, browser reload, which is part of inertia, and there's some stuff you got to do. There's some really cool props you can pass that says okay, only get me to change data or only get me such and such data.
So it's doing the absolute minimum in terms of traffic between the front and the back end. Yeah, definitely. And to add to that, point. Sometimes in the old traditional way, you often get to like if I submit the form, or like I want to reload the page back after like an update, you just get everything back, right, Like maybe I have like a course to space, and I just edit just one course. When I submit the form with my agents and everything, the data would just send
back the JAP blog, right. But with this one, with this tag, which is really cool and it's powered by inertia, you could just need to pick what you want back, be like, okay, this course in this process, list was the only thing changed, return it back for me, right. So it's I don't want to call it giving you the power graphical, but it's sort of like you have control of what gets returned back from the server. With all the APIs that inertia is going to provide for
you. You could preserve scroll and you could do a ton of stuff that's really really cool that we can't really actually get into because it's just it's simple. It's a routing layer, but it has so much power. Well, what are some other what what are some other questions that we we should be asking you? Oh yeah, yeah, So so Steve's point so earlier on in measure that it's not sure why this should be zone stack, but I'm making a zone stack because at the end of the day, my vision is
that inertia it's not just so making not all pages are mediequal. Right. So in an SPA land, because you're using React SPA, everything should be a React SPA because it is in nextges, everything is SSR if you want that, or all the I SR and everything you have to do. But in my world, or in the boring staff world, we know that not every page should be a single page application, none, that every page should have SSR. Right, So we are using inertial to power these single page
apps. Right. And there's something I'm currently working on which I've actually mentioned a little bit before, which is even now in sales world we use EAGs for templates, but I feel like having to learn to DSL to author pages people don't like. I think me and myself, I don't like egs at
all. I don't like the same tax at all. So my thought process is, what if you can use the same jexs you write for your clients side up and also your back end views INSS as well, so that for pages like the home page, they are back page, the priceing page. Of pages that don't need jamas at all, you can still write the same gess but when it gets acts for like user, you just send them HTML, which is SEU friendly, does not have anything to do with the user
in terms of JAMA scripts load. Right. So this is the key piece of the broying stack which is still being walked on today because I feel like you can have this hybrid app but the same code base, the same dear story you're writing. All you have to do is to know that, okay for this, this is so my slash dashboard, it's my single page app. My marketing page should be HTML because that's what value you get from the
from the marketing page is more content, right, content and SEO. So I saw this this talk from someone at Netflix where they had to remove react from the marketing page and then saw an increase in conversion because they all hydration was taken too long and people were actually clicking away. So just imagine you are still using reacts, but you're sitting down htmoor by default. Yeah yeah, I mean I that as somebody who is a big fan of scraping and
being able to get to data when no API is provided. I really do hate react sites because there is no data on the page. Yeah, and it is. Yeah, it's it's really frustrating because there's so many sites out
there that have useful information. It's like, I just want to automate something off of this, and they, you know, they haven't bothered to create an API for it, and and so yeah, from from that perspective, whether it's because the search engine is going to be able to understand it better, or the GPT is going to be able to understand it better, or just because I know a lot of people don't like the idea of somebody scraping
the content off of their site. But I don't know. I hope if you've got valuable content and you're not, you're not in a business where you're creating a product out of the content, particularly like just make it in a format that's easy for people to consume. Otherwise, I guess why are you Why are you creating the content in the first place. Some people should be able to use it in some some way. So, yeah, I really
like the idea of for static pages render them. So so does this does this have some sort of mechanism where you can say, Okay, these pages are mostly static, so treat treat them as such, and then these pages are mostly dynamic. So you know, these pages are more component heavy and these pages are more content heavy. Is there a differentiation between the two or is it just you're always getting the static benefit by way of you know,
it's it's it's rendering things as the as the props are past them. Yeah, So what's going to happen is that they're going to be two places to define your your components. Right. So now in the stack, so we have assets like jas and pages, so that page directory is where you find your XPA pages. Right. Then if you want to define your STML pages, which is going to be in your components, you could do it in views. So we all know the old emphys at model, views and controller.
So once you define something in jers inside the views folder, it's going to be compowd at request time and send back as at right, so the only convention you have to know is and the views older you will are only defining components that are going to be used as templates for your server side rendering.
And once it gets to the user, there is no hydration because you don't need this, right, It's just these pages has stating their hym but just for your DX you can still use the same components you're using for your single applications. So that's just the convention. Like I said, this part is still being worked on. And I saw who know from class flare. I think yes, I think we know from classware, so it's a new framework. They also do this where you can write your your templates in gxcess.
Yeah, so's actually a very good and vible idea. I think Netflix does it too, and a little bit of paper as well. So we can't do this like for like since forever now right, but with this like next years and remixed, it's sort of like I've been archived for you to just go use next for something else. But I think those components can be really good templates if you just have the engineering to just make it really nice
to use. Now, for what it's worth, is probably worth mentioning along these lines that I know this came in later after the initial at least, But Inertia has a service side rendering capability. Yes, that's mentioned in their docs, so there's a whole page on how they implemented, but it does take that capability have that capability, so that not every page has to be a job script rendered template. Yeah. So the the only difference with that one with the SSL one it needs to hydrate, right, So yeah,
and full there sellicide views that I'm talking about. It shouldn't hydrate because you don't need the Joba script right And even in larre Bell I know you can do you can just return and you know that you do the view. You know in an interview, you can have your hard coded ah htmo. There's been ways you can do that. So but the point is even with this, there's not every page doesn't have to be a dynamic job screen template. Yeah for sure. All right, well it sounds like we're kind of wrapping
up here. I think we've covered a fair amount of the topic. If people want to learn more or if they want to reach out to you, where should they head. Yeah, so you could go to the dogs for the bowling stock, which is dogs the sky, the com slash bowl stock, or just of com slash boring to take you to the repo. It
can of schedule links of the dogs. So if you want to reash out to me, you could join this discord slash chats, or you could just sweet at me at Dominos And yeah, your questions and do you know about picks? Were you informed of that we do a thing called picks at the end of the show. No, I did not. What's that you have to feel? Met Steve, and I'll go first. It's just you pick
something you're interested in or something that you thought was cool. Could be tech, could be a movie, could be uh you know, some sort of article and a newspaper or whatever. You just pick pick something that that you think is cool. And then before I do that, Steve, did I do everything right? Do we leave anything off before we close out the show here? Uh? No, I think we got to cover. If we do remember something, it will be after we're done. Then we'll have to
added in somehow. I'm sure. I thank fornight. You're pretty good. Okay, well, I will go ahead and lead us off with a few picks. So, as I mentioned last time, I have gotten into the aquarium hobby and it's very fascinating because it's there's a lot of technical stuff to learn and do. Some stuff that's pretty rote, like if you learn how to do I like things that are functional from the perspective of if you do X, you get result why, and you get result why every time.
That is something that you know has drawn me to computers and programming, and I like to optimize things in my life. I will take the same routes on a road, like my brain is like a reduced instruction set processor. I will take the same routes on the road, even if I know a more efficient route is available, because I just rather get better at these particular set of routes rather than every possible route. And I've got a buddy who when he drives with me, he's like, oh, well, you know
if you went this way, you'd get there faster. I'm like, yeah, but I'm just gonna take State Street or Main Street because because that, you know, that's I just I travel the same roads, I do the same things. I even oftentimes eat the same foods very very much. That I just well, it's it's beyond habit. It's I am customizing for fewer mental inputs. But this, the aquarium hobby kind of goes against that because
there there is no way to really jump start your aquarium. You you can have anyway you there's there's just a lot of levers and knobs that you you have to learn, and they're going to be different for everybody because your tap water is different where you live, The fish that you get might be used to different parameters. The plants that you want are different than the plants that somebody else wants. The type of things you're trying to combine in your tank
to create the environment you want are different. And the ecosystem just isn't natural. You know that these fish don't naturally to go together, These plants don't naturally go together. These fish and these plants don't naturally go together, and so trying to create a self sustaining ecosystem is kind of impossible, or at least there's trade offs. There's there are no solutions, only trade offs.
That quote certainly applies in this case. Anyway. I didn't mean to go that much into all of that, but I guess it's just super fascinating to me because I'm trying to learn how to create the ecosystem that I want inside of this little glass box. And it's hard to get the parameter right because they're living things, and you can't just even if something is generally true, the evolution that you're getting like that, if you breed some fish, if
you breed some guppies or you breed some tetras or whatever. The next generation that you're getting from what you bought is more specific and tuned to its environment. So the next generation is going to be different. As you get more fish, the bio load of the tank is going to be different. Well, assuming that you're feeding them more. You know, at some point you
can reach equilibrium by just letting things die. But then the problem with that is then the water starts to turn kind of a yellowy color like it is in real life and ponds and whatnot, because the decaying matter tends the water. But if you wanted to just let stuff die and grow and die, then things will reach in equilibrium in terms of you know, the water can only support this many fish, it can only support this many plants, only
this many nutrients. You can create a clothed system like that. But it's just it's super fascinating and so yeah, I'll just I just pick that as a general concept, and it's I'm having a lot of fun learning about it. I'm trying to get my wife into it a little bit. She kind of will dip her toe into it with me. She's not as excited about it as I am. But she helped me. She helped me put together
an aquarium last night. And it's it's so I tore one down. I bought a ten dollars aquarium on sale and I tore it down and I built it back up and I used a higher grade silicone. And it's so crazy
because there's like there's like four millimeters of silicone holding this thing together. And that's it, Like that's that's all you actually need is the silicone in between the glass if you clean away everything else, Like it's the four it's it's like a a quarter of a millimeter thick and about four millimeters wide, and it's so scary, but in reality, like that is actually what holds the
thing together. All the rest of it is just because they use a lower grade aquarium that's like ten cents less, and probably more importantly, they use a they don't they don't use people that are highly skilled to put them together. So at the shops they just slop on the silicone. So you see, you know, when you go into the pet store, you see this tank and it's got like a full freaking inch of silicone on it. But that's literally just slop that's left over because they didn't bother to clean it up
when they put it together. The part that actually holds it together is the quarter millimeter. By the four millimeters, it's insane, so it's so scary to look at the thing, but it holds water. So anyway, so that pick brings a couple of things to mind. Yeah, that's great because it's your turn. I guess you could say that your aquarium is sort of an unopinion native framework, right, okay, all right. It doesn't give you all the rules. It lets you do things however you want to do
it. Well, there's a lot of rules. They're just not easy to understand. There's basic trade offs like the nitrogen cycle, how much food you put in, how much water you take out. If you put up your plants, then you're taking out some of the nutrients, which means you have
to add nutrients. But but yeah, it's just there's a ton of variables, and if you want to get the low maintenance, self sustaining aquarium, it's going to take like a year to do it because you have to get everything has to reach equilibrium and then you have to stop doing so it's just constant change. Yeah, well, like I said, from a code standpoint,
it's like an unopinionated framework versus an opinionated framework. Yeah yeah, and then yeah, but like but like a code more framework where every time you run the code, the code changes, because I mean it's biology, like every day some different process is happening and then that affects other process. The other thing was I don't know if you ever heard a song I was back in the eighties, the guy named Kippa Data. He was real big on puns. He had all kinds of songs, and they had one called Wet
Dreams. It's all the whole thing about fish puns. And he goes into a bar and anyway, he's talking to some some gal and he says, so, what's your son. She goes aquarium. He said, great, let's get tanked. Anyway, that reminds me of so uh picked for the day. I just as last week. I might have mentioned this before.
Apologies if this is a duplicate a few months ago. But I've been studying to get my It's called the FAA Federal Aviation Administration Part one of seven drone certification and it's what you need, it's what you have to have if you are flying your drone in any capacity other than as a hobby for fun. So if you're doing you know, you're getting pictures something anything for money,
you know, a commercial, if there's a commercial aspect to it. Those limitations on the types of drones, and the reason I got it is to be able to fly drones for our fire district. The fire department I'm with, We getting a drone program going and it's very useful over you know, some larger instincts and stuff. Anyway, it was recommended that I take study for the course by taking there's an online course from a place called Pilot Institute.
Pilot institute dot com. Really good online course for this. This guy who does that, he's a French guy who lives in Prescott, Arizona now, but he has online classes for pilots as well as the drone courses. And you know, with the FA there's books you can get and there's FA has study guides for all the things you need to study. I never even had to crack those. I just went through this course and took all his
course and was able to pass. I got an eighty seven percent. A lot of people get above ninety percent on the FA Test, which is sixty questions but really really great course, really thorough course. The guy's name is Greg Revard. But pilot Distitute dot com if that's something you want to do. And now for the dad jokes of the week, which is, uh, you might not know this, Kevin, but this is the high point of every podcast. So recently I told my wife that a husband is like
a fine wine. We just get better with age. The next day she locked me in the cellar. Right, So I did a little bit of putting money on the horses, and I got I was misled, and fortunately I put a bet on a horse I supposedly had excellent breeding. So in the race, after the horse left the starting gate, he stopped and closed it behind him. Get that edge, No excellent breeding, you know manners, he stopped and closed the starting gate behind him instead of racing. Oh
okay, all right, right. So one of the things with being highly pedantic and very you know, like the way I was just describing my brain, is that puns get more and more difficult for me every year. Oh okay, because I killed a joke, but for you all too, literally, yeah, so it gets anyway, what do you call a group of chubby newborns, heavy infantry about that one. That's good. Yes, thank you. Those are my picks for the week. All right now, Calvin, now you get to go hog wild. Yeah, so for the picks
of the week. I don't have no dad jokes though, But for me, I've been really stick in film music. So I played the piano. I've been playing it for a while now, but late last year I i, I don't know whether I discovered Handsomer, and what it did in Interstellar kept me up. Like most nights, I just had it on repeat because it was just so good. So I was like, I think this is
something I need to do for the next step of like playing music. It's like taking the emotions in pictures and infusing it in like a musical production. And it's something I've been like working on, you know, trying to like see how to really understand it because I am not classically trained. I played that year, but I feel like this is really really good to like interpret
words and acts in music. So yeah, So Handsomer is someone I've been studying bowl on that one, and it's local and Interstellar Deprives of the Caribbean and even the Lion King Yeah, my son is like you. He is. You know, I take the piano listens too. I just started here a few months ago, and I'm one of those people that, you know, I've got to learn how to do this, and it's really slow and learning how to play without watching the keys and all that kind of stuff.
My son is a musical freak, and that he can just sit down. I have yet to he he can't. He plays my ear and he can sit down and watch a demonstration of how to play a song. Uh, And pretty soon he's playing the stuff like he's been playing for years, with just a couple of hours worth of work in it keeps here. I am working and working in ten minutes later, he's playing his beautiful song with all these chords and he doesn't even know what the chords are. He just knows
they sound good. Yeah, you know, so he's crazy gifted that way. It's really amazing. I was gifted. So I'm jealous of people like that. That's amazing, really awesome. All right, Well, with that, thanks for coming on the show and teaching us about the Boring Stack, and we look forward to catching up with you again sometime in the future. Yeah, definitely. I look forward to being here. Thank you, thank you Steve, thank you a J. This was amazing our pleasure. Sure have a good one. I
