hx-pod

i went to #BSDC2024 (not an htmx con) so you don't have to. 
here's my own recap of all the talks

Every talk is available to watch at: https://bigskydevcon.com
  1. 1:26 - The htmx guide to gonzo open source marketing by Carson Gross
  2. 8:23 - The Life & Death of HTMX by Alex Petros
  3. 13:29 - Hypermedia Middleware: Introducing Walrus by Ben Damman
  4. 17:14 - htmx sucks and now you're gonna hear about it (Mind the Gap) by Ryan Florence
  5. 23:27 - Abusing Hypermedia by Nathaniel Maile & Jon-Michael Hartway
  6. 27:51 - Local First by Warren Buffering 
  7. 30:30 - Geospatial Data in an AI World by Jaron Jones
  8. 31:12 - What's the Deal with Flutter? by Marcus Twichel
  9. 32:41 - High floor, high ceiling by Sam Selikoff
  10. 36:41 - Building HTML Frontend with Go & Templ by Adrian Hesketh
  11. 37:56 - You can't build very interactive web apps without SPAs... and other HTMX myths by Anthony Alaribe
  12. 47:50 - Development & DevOps Lessons from the New Montana Cadastral Application by Kenny Ketner
  13. 48:27 - A Talk By ThePrimeagen by ThePrimeagen
  14. 51:19 - Release of HTMX 2.0 on floppy disk

What is hx-pod?

Join me while I learn HTMX and talk at you about it
Twitter: @htmxlabs

Lazarus:

So it is now Sunday morning after Big Sky DevCon, and, I hadn't been to a conference in a long time of any kind. And, you know, Big Sky DevCon is not exactly an HTMX conference as was mentioned several times, during the conference. But I have some friends in Montana and decided to make a big trip of it. And the conference I'd kind of forgotten what conferences were like because the last one I went to was Alarcon, many years ago. And, you know, those are just sort of on a different scale, but, you know, kinda similar, kinda similar sort of setup, but all the free food and coffee and hanging out, and just kind of amazing talks.

Lazarus:

So it was it was a really good time. So I'm just gonna go through each talk since they're still fresh in my mind. I have them written down what they are, but they're also just completely available, for free online. The video was all streamed live, so, you know, I think there was this Carson Gross kinda didn't wanna give anybody this, fear of missing out, this, FOMO. So made everything available, so that there was just kind of, you know, if you could make it, you could make it.

Lazarus:

If you couldn't make it, good. So, yeah. So he went first. He was the first speaker. He was talking about Gonzo marketing, which is kind of his approach on Twitter, and the sort of meme using memes as part of your your marketing, your voice.

Lazarus:

And his big takeaways were sort of number 1, to stay positive. And this is maybe a life lesson, you know, not just kind of a Twitter lesson or a social media lesson. But staying positive just has all these benefits, I guess, which, like, sounds obvious, but, like, in the moment, it's very hard to stay positive all the time. And it's very easy to kind of go go negative. And he said, you basically just don't wanna live in that space.

Lazarus:

You don't wanna live in that negative space. You wanna stay in the positive space. Every now and then you can throw in some snark and it's very effective to do that, but you cannot live in that snark spot. So, I thought that was interesting. And and also, number 2 to stick around.

Lazarus:

So stay positive, stick around. And and the example he gave was, you know, intercoolerjs, which had been around forever, still is around, but just kind of not never really gained any big traction. He was doing the same thing, you know, HTMX, intercooler, basically the same thing, you know, in parentheses, same thing. So I think, the lesson there was, you know, you have to stick around to be able to catch that wave, but it doesn't necessarily mean that you will. And then number 3 was to have fun, which, like, obviously, if you follow any of this kind of HTMX stuff, like, Carson Gross is having fun, and that's that's good.

Lazarus:

And I hope other people are having fun. I'm having fun doing the podcast. So and going to Big Sky DevCon and just kinda having some fun. So, some specific things you can do to kind of blunt the negativity. Number 1 was, agreeing and amplifying and trying to make it funny.

Lazarus:

So you just someone says something bad, you just agree with it and then make it bigger and say, you know, even go to the go to the next level, go to the next extreme, amplify that, and try to make something funny out of that. But once you agree with somebody, they have a hard time kinda coming back. So that was kind of the the lesson. And also agree and reasonablify was a word that I had never heard before and I'm not sure exists, but you can sort of parse out what that means, reasonablify. So agree with them, but then also make a little bit of your case, and try to, you know, bring it into something reasonable for for what you're trying to say.

Lazarus:

So there's some examples of of this kind of, you know, when someone just says something negative to you on Twitter, and you have choices what you can do. And sometimes you just ignore it. Sometimes you can just agree with them, and then what the hell are they gonna do after that? And, you know, Carson gave the example of, IDK, I don't know, exclamation. You just, it's kind of, someone says something complicated, negative, and, you know, maybe you wanna sort of argue, maybe you don't, but you can just, I don't know.

Lazarus:

And then post one of your essays, which, like, I don't have a bunch of essays online, but, you know, if you happen to have a bunch of essays or blog posts, it's this has been part of what he has done to kind of not only have some fun with it, but also, boop, get your message across. Also, I wrote some essays on web development and software and, you know, all just everything, all the conceptual stuff around the tools that he's building. And if you have these essays ready, if someone mentions something even just close to what your essay is about, you can just kinda drop an essay in there. And then someone who's reading through the comments is gonna click it and, hey. Maybe they learned something about your stuff, and maybe they agree with you actually because your essay is, like, very different from a little Twitter post that was negative, you know, like, oh, wow, there's, like, a real thing going on here.

Lazarus:

And then also I think one of the big things he talked about was that self criticism is good. It's okay. You should you should self criticize. You should accept criticism from other people because you should be doing it yourself, not in a negative way to break yourself down and to, like, feel bad about yourself, but to, like, honestly examine the things that you, you know, the things you believe and the things that you sort of work on, you know, not everything you work on is the world's greatest thing for everybody. And that's just a true statement, so worth, you know, recognizing it.

Lazarus:

So I think that was kind of the main thing, and also, he kinda gave some examples of, a lot of it is luck, you know, you have to be in the right place at the right time. If a way, you set yourself up for luck, you sort of, he was able to ride the waves of, you know, people finding out about his, you know, primogen sort of doing this and couple other people kind of finding out about these different things. He was able to ride those waves because he was in the right place and had been there for a while and had all these things at the ready, had the experience of doing, you know, just being in the game, being on Twitter, posting, so, you know, I think some of us, myself included, who are kind of new on Twitter, and, or I've been on Twitter technically for, I don't know, 10 years, but it's like, you know, I haven't posted, I've had an anonymous thing and it's like, you know, if you're trying to get into the world of social media, like, I don't think there's a great, there's no sort of just thing you can do, you have to sort of, and this is what Carson was saying too, it's not just me, but, you gotta kinda find your voice and you can use these memes, you can use different stuff, but you also just gotta kinda find your voice and be true to yourself.

Lazarus:

You know? It's not like you can't just copy what Carson, you know, his success. But there's definitely parts of his success that you can sort of, emulate and and learn from and stuff like that. So number 1, stay positive. You know, sometimes he boasts, I'm sorry.

Lazarus:

Sometimes he beefs. Boasts, sometimes he beefs with with people, but his big takeaway there was always beef bigger. Don't be don't set up fights with, you know, people. If you have a 1,000 followers, don't set up fights with people with 50 followers, you know. And if you're like him and you have tens of thousands of followers, you know, don't set up fights with so you wanna be beefing with the big accounts.

Lazarus:

You wanna try and get in their replies, their mentions, and, you know, if they fight with you, that's good. Every everybody wins. But, you know, you don't wanna be kinda picking on or or fighting with smaller accounts, stuff like that. And even then, when you're beefing, you stay positive, you beef with your friends. For him, you beef with yourself, you know, you try stuff out, just experiment.

Lazarus:

Some things are not gonna work and you just move on. So like I said, talks online. Carson's very good at this kind of stuff. Very good. It was an excellent talk.

Lazarus:

And and so that's all available. Second talk was Alex. He's a core maintainer of of HTMX. And, I didn't write down his last name, but, he was talking about the life and death of HTMX, which I thought was really interesting because there's something I hadn't really thought about, which is just that HTML is not done. It's not it's it is an evolving language and there are things they could add to it.

Lazarus:

And that's kind of what I've been doing with HTMLX. That's how I think of HTMLX is sort of these things that are added to HTML that maybe they could actually just be in HTML, and and Alex gave some really good examples. You know, first of all, there's, like, being able to do the put, patch, delete, which, like, you know, I think semantically, it is interesting to see they'd know the differences between post, put, patch, delete. Well, you can actually just look at them and and then you can see what your route is supposed to do without going deeper in the code. You just look at the very root level of your your HTTP requests and you can see, oh, that's a put, so it does this.

Lazarus:

That's a patch. You know, I think put replaces the whole thing, post creates a new one, and patch just updates a little bit. And so, you know, if there's actually if if you could just use those and have them be part of your, form, then the browser would know a little more about what's going on. And so, you know, the example he gave you ever get that refresh where it says, like, you've already submitted this. You're sure you wanna submit it again?

Lazarus:

And then you're like, I don't know what the hell is gonna happen if I click this. Like, so, that's because everything is a post. And so it doesn't know if you're creating a new object or you're updating something or you're replacing something. If they had put in patch, then you could, on a form like that, if it was something like a patch, you know, you could just use it anyway. Like it all it would do is update the record.

Lazarus:

It's not creating a second new one or something like that. So your browser would just know more. So it's just a small example of kind of like the usefulness of that. The bigger example and the one that he kept coming back to, which I thought was awesome, his this talk was great, Was a button. Like, how often do you need a button to do an action?

Lazarus:

Like, that's what buttons are for. Right now, only the a link, you know, an a, you can do a you can that's the hypermedia link to go somewhere, you could the, anchor tag and a form. Those are your options. And so, like, how many times have you had to set up a log out button where you click it and what does it do? You know, it's it's not just a button with an action, It is wrapped in a form or it's a an a button that goes to a get route that then has to run something on the server.

Lazarus:

And it's like, it's just not ideal, you know? This is not the best we shouldn't. The purpose of a button, if you really just, like, think about it, like, what is a button for? It's to perform some action, and that's what we've been doing with HTMX, is giving these buttons and giving these different things action. So his case here is basically, like, let's let's make buttons happen.

Lazarus:

Let's have HTML buttons allow you to perform an action. So just, you know, let's say it's to cancel something or to, to, save something or, you know, without a form, but it's just, you're gonna, you're gonna slip, you're gonna switch a, you're gonna toggle a flag or something like that. And like, these are all perfect use cases for buttons, which we do anyway. But if you allow the button to be part of semantic HTML along with the a tag and the form, then you can actually just accomplish a bunch of stuff. And maybe this makes something like HTML obsolete at some level.

Lazarus:

You know? If they make enough of these HTML, enhancements, like, these sound like little things, but the way that it would change the you know, how what you can do and and how you sort of use the system and how people think about it and and all this kind of stuff. And and he also said, like, this is dangerous. Like, not just the buttons thing. Like, the buttons thing you should do, but, like, any changes to HTML, the core thing that every single part of the web, the entire, you know, the web is how big is the web in the world right now?

Lazarus:

Like, how much does that affect? You have to be so careful making any changes, and you cannot break anything. You know, you can't go back and and do something that's gonna not be backwards compatible because you can't break parts of the web, and there's still websites up from, you know, 30 years ago, stuff like that that are meaningful websites that people need to be able to access and all this stuff. So, so that was really interesting. HTML could have some updates, and that would be awesome.

Lazarus:

And that that talk is absolutely worth taking a look at and, get an idea of of what that kind of stuff is. So number 3, the 3rd talk was, Ben Damon. I'm not quite sure how to say his name, about hypermedia middleware. And so this was interesting. It was this concept of, you know, he I think he he he's building his own product, which he was gonna open source and it will at some point in the future called Walrus.

Lazarus:

And the idea is buckets. You just have these buckets where you can place files, essentially files. You know, it it's like as if you were just throwing things, you know okay. So back up for a second. You have an issue where a bunch of different people need to send you data so that you you need to process that data, do stuff with it, make reports, send it back to them, run analysis, all this kind of stuff.

Lazarus:

But you, don't know the format that this is gonna come in. So using hypermedia as a middleware, what Ben is sort of setting up is this idea of you just post your stuff in whatever format to a specific place, and this is, you know, by the, kind of HTTP, REST, like, HTTP RESTful, sort of setup. And it's just a data receptacle. You could think of it as an s 3 bucket, you know, but the his product is gonna be, you know, those walrus buckets. So you post this data to a bucket using REST, and then everything is kind of in the file system as a URL.

Lazarus:

And so what's the benefit of this? It's basically by doing that, you are sort of instead of having a processing center where everything has to go through your app and get decided where it goes, and you have to work out an API, you gotta figure out this, figure out that. It's just a place where they can safely put things so that things do not get messed up. And, you know, this is used a lot. This is the kind of thing for logging and analysis and and you don't want to end up just, losing things.

Lazarus:

Like, that's that's one of the big you know, you don't wanna have a system that's down, a queue that's not processing, like all these other things that could that are real world, you know, the data format's wrong. You wanna be very, I think I forget the exact words he used, but, it was Postel's Law, I think he said. You're very liberal in what you accept, and you're very, you know, stingy. I don't know what the conservative in what you, put back out. So if if you're trying to get systems to talk to each other, you need to hear what they are saying and whatever format there is.

Lazarus:

You know, you don't know what they're saying until you see what they send you. So this was about not trying to fight and organize and get every thing correct for the API so that every different thing, every different team working on this all has the same API and they're all submitting in the same all their data has been normalized to just the way you want it. Rather than having that fight, let them send you all the data and just put it into a big, you know, walrus bucket. And then afterwards, you can go through and go 1 by 1, sort it out, figure out the format, and then build your own system for processing it. So that was very interesting.

Lazarus:

A very it's a neat idea, and his product is going to be called, Walrus. It's got a very cute, a very cute little logo with a walrus with a bucket. Okay. So the next one up was Ryan Florence, who is kind of an enemy of the, you know, this kind of no builds, anti react, or something. Like, I don't know.

Lazarus:

On Twitter, there's about a bunch of kind of battles. So he's been going around and and offering to break people's sites, and then we'll you know, everybody will get mad at him because he says how easy it is to break these kind of especially, you know, talking about the the kind of server server driven, server side rendering sites because because of the issues of network latency and stuff like that. So his basic talk, you know, I think he called it, HTMX sucks, but, actually, he updated it to mind the gap. And the gap is the gap between the front end and the back end, the network. So everything is trade offs.

Lazarus:

You know, this was sort of his, his big thing is acknowledging that you have trade offs, right? So, what you get for sort of being able to build these, you know, the the ease and the simplicity of using these back end tools. If you only use those back end tools, though, the trade off is you can't do everything you need to do on the front end. And if you only do stuff on the front end, then you lose some of the power on the back end. That was kind of a recurring theme for this is, you know, sort of talking about the differences between the front end and the back end.

Lazarus:

But the goal for Ryan Florence, you know, is to basically stay in the product world, and and you're always sort of balancing the tech cost and the and the product benefits, and over time, the tech cost has been getting better in every ecosystem. Right? So, the JavaScript, the the back end ecosystems have just, like, come so far, and the JavaScript front end ecosystems have come a long ways, and they're both starting to move into the other's territory. So the front end ones are kind of they don't wanna leave their ecosystem to do some you know, to have these 2 separate code bases, and the back end systems don't wanna leave their ecosystem. So that's why there's LiveWire and, you know, even HTMX kind of is a little different because it works within these other systems.

Lazarus:

But, there's other sort of projects that are trying to to bridge that network gap. And so his, you know, basic thing is that React now is going to become, in his opinion, the de facto everything stack. So right now it covers, you know, the front end extremely well, and he's able to do some very, very nice UI interactivity, optimistic UI. You know, you sort of you you build your whole thing on the client and stuff is immediate, there's no jank, there's no, like, you're loading, you're doing this. It just assume, you know, everything works.

Lazarus:

I'm I'm sure, you know, if something fails, you need to get some sort of feedback that it failed and things go back to how they were, but but, you know, the idea is you have this sort of extremely smooth user experience. And now with React 19, you have this new idea of you build your components, and then you add use client or use server up at the top of them. And then React behind the scenes is figuring out where that component is supposed to go. But you as the user, you as the developer, you don't need to know whether that's running on the server or running on the client. They are seamlessly talking to each other.

Lazarus:

So that's the idea. And and while I was watching, you know, his talk, I was thinking about my experience with LiveWire because that's what it felt for me when I started using Livewire, which is that they're just you were doing things on the client side that the user was clicking, but you were writing it in the same place, in the same way that I had always written, you know, back end templating server code. So it was like you were living in that client side with your code, but, you know, you only had to write on the back end. It just, it, the differences between the network, like they're all abstracted away. I mean, Livewire, you're not adding routes, you know, for everything.

Lazarus:

You're not, you're not adding you, you just could have defined your actions and it doesn't care whether it's happening on the server or the client, you know? So, so this was a very similar experience. So I understand the appeal. I do think there's some potential, that there's maybe I think the examples are a little bit I think you can never really forget about the the network. In my opinion, I think it's it's a nice idea, but even with Livewire, with React, like, you still need to know what's a network call and what's not, because it matters in how you write your code.

Lazarus:

You know, this is like if you're writing something on a mobile or, you know, I I write stuff in in Dart sometimes and and just anything that's asynchronous. You need to sort of know in your head what's asynchronous and what's not. What's gonna go to the network? So I I think, the goals that Ryan Florence set out where sort of you have one system that's kinda doing everything, I think that is is probably where everybody is trying to get to right now. And so I'm not a 100% convinced that that the React is React sort of a way of doing it is going to be the future.

Lazarus:

I almost feel like, you know, with the size of the Laravel ecosystem, and some of those other ones, rails and stuff like that, they may actually have a better chance at it. But if it's gonna happen, I don't know. I thought that was an it's an interesting idea that there's basically every framework could be converging onto a single framework where you try to just forget that the network exists. You just sort of dissolve the network. So yeah, that I thought that was an interesting idea.

Lazarus:

The next talk was Nate and Jean Michel called abusing hypermedia, and this was so it was so good. They so they have a a link which I'll I can put in there, but, you know, these are all also just online. So, but they built flappy bird in HTMLX. So this is like just doing things that you just there's no reason you would ever wanna do this. And and, you know, I think one of the funniest moments of the conference was opening up the console, log or opening the network requests in the inspect element and just seeing how many network requests were being made, to to play flappy bird.

Lazarus:

But you could play it. It was totally playable. I don't know. It had a little frames per second marker and it was, I don't know, somewhere like between 7 20 frames per second or something like that, which is pretty amazing for just a completely I mean, you wouldn't actually wanna do this because there were thousands of requests, And I don't know I don't know how many people in this in the auditorium actually, like, opened up their laptops and played along, but then you add all those requests too. So it's very inefficient, but it could be done.

Lazarus:

And I thought that was their whole message, and somebody's art you know, people get these ideas, like, you know, so they they did flappy bird. They did h t m x pong. They built things that you would not normally build for the purpose of experimenting, for learning, to see what the limitations are, to see how it works, And they actually found some kinda cool things. Like, it is actually kind of an interesting paradigm for multiplayer games because you, you know, it doesn't exactly work for something like a streaming, you know, a game like that where the, reactions have to base you know, be determined by a network request, that maybe might not make sense. But if it was a turn based game, like, yeah, that's perfect.

Lazarus:

And it works very nicely with the server and you've got this kind of, you know, multiplayer kind of possibility built in there. That was very cool. The big takeaway in my mind, and I think what made their their presentation kind of so special to me and just like personally something I really believe. You know, people get held up on someone's already done this. You know, Deuce is like, should I really, like, build this thing?

Lazarus:

You know, everybody's already built a to do app or everybody's already built this or everybody, you know, and people just end up kinda giving up. So their message was, okay, how do you get rid of that fear of what that not that fear, but that little voice that says, like, you're wasting your time. Somebody's already done this. Do something so dumb that nobody's ever done this. So nobody's ever made flappy bird with HTMLX.

Lazarus:

It doesn't make sense to do it, but you're gonna if you do it, you are gonna learn a ton, and you're gonna have some fun. And that was, you know, going back to Carson's talk. Have some fun with your development career, with your life, with your social media. So this to me was a was a great example of just, like, having fun, doing cool stuff. I'm sure they learned a ton.

Lazarus:

I learned just, like, seeing what they did. One thing they said was that probably couldn't do a spreadsheet in you know, that's, like, that's going too far. I'm a little bit inclined to disagree. I actually think spreadsheets could work nicely for, for some HTMLX stuff because you can handle so much on the screen at once. Whereas if it's all in the virtual DOM, you basically can't.

Lazarus:

So I'm just gonna speed through some of the some of the other ones, until we get to, like, some of my favorite ones here. And I when I say speed through and favorites, like, I'm just talking. This is an HTMX podcast. So, I you know, there was a lot of stuff. It's big sky dev con.

Lazarus:

It's not an HTMX conference. There's this is about Montana programmers and some of the very cool things they're doing. And it was awesome. You know, I'm very glad they have a local, you know, sort of Montana bent to a lot of the talks and everything like that. But, you know, this is an HD Mix podcast, so, I'll I'll go over some of those.

Lazarus:

So Warren Buffering, who's on Twitter, you know, relatively kinda like, big voice on Twitter and and sort of along with with, the primogen who was there. But he did a talk on local first, which was which was interesting. You know, basically trying to say, like, don't be scared of local first. Like, this is something that you can do. And he gave a, an example that was, I don't know, 30 lines of code or something like that, of building an app And you have he had a little network toggle up at the top.

Lazarus:

You turn the network off and you can still use the app. What's it doing? It's just setting a temporary ID and putting those into local storage, and then when the network comes back on, everything that has a temporary ID, you know, it gets more complicated, of course, if you need to edit, update, but he said, you know, you work those out as you need to. You know, but the basic idea was you create something, you get a temporary ID, network's off, network goes back on, all those things that were stored in local, given temporary IDs are now sent up to the main server, saved, and then it's synced, and then your local stuff, you know, gets real IDs. But as a user, you don't even know necessarily that there was no network for some period of time because your local storage is what you're actually accessing.

Lazarus:

It just things were still added to your local storage. They were just given this like temporary ID. So I think that was a, that's a nice paradigm. I think that I have some questions there, which I didn't ask of the thing, but, you know, basically, like, does this mean you have to sync your 2 databases? That sounds like you have to local storage and you sync it, and, you know, yeah, you probably do, right?

Lazarus:

You have to kinda like, it introduces the sort of complexity, but if your use case involves not having a network and your app's still working, then yeah, you need to, and this is a good setup for doing it. So, I thought that was a good talk. Then there was a little discussion between Carson, Warren, and Kent. Between 2 Idiots was what the Primogen called it. You know, not much to kind of, recap there.

Lazarus:

They just had some fun. You know, what kind of cheese would you be if you were a cheese, and what kind of cheese would h t m x be if it were a cheese? So I think it was a blue cheese because, because Ken c Dodds hates it just like he hates blue cheese. But, yeah, I mean, I'm not gonna recap all that. That was if you wanna have some fun, go you can see that video.

Lazarus:

And there was a talk on AI and geospatial data, not related to HTMLX, but very related to the Montana scene. There was just a ton of apps of people I talked to that were working on, you know, hunting apps, fishing apps, ski trail apps, off roading apps, you know, everything involving outdoor activities, geospatial, you know, coding, and basically just it was interesting. It was a different market than, you know, some of the others, just the stuff that I normally see at tech conferences. It was a lot of outdoor stuff, which was super cool. Okay.

Lazarus:

So then there was a talk on what is Flutter, and again, not HTMLX related, so I can kinda skip it. But I've actually used Flutter and I thought this talk was awesome. It was by Marcus. I don't know his last name, but, you know, it's in the thing. And, he basically just talked about, you know, why would you use Flutter?

Lazarus:

And, you know, Flutter is a, system that lets you build it. It's for mobile apps, lets you build it, and then you can put it on iOS, you can put it on Android, and it has some interesting concepts. It really gives you a lot of freedom, and it's a very different sort of programming paradigm than than some of the other web stuff. But, I mean, I've used it. I built a companion app for one of my things, and it's been great, and it was probably the easiest way that you could do that would be my guess, and there's a lot of support for it.

Lazarus:

And it doesn't seem like it's going anywhere, was kind of part of the talk also. Like, you know, Google's built a ton of their own internal apps that are used by millions and millions of people, not internal to the company, but, I mean, like, Google owned apps are created with Flutter, and some very popular ones, and then some very popular other ones that are just companies around the world. So, yeah, I think Flutter is is, if you're gonna try to move into mobile apps, I feel like it's a very good option for, kinda going in. So this talk was about doing that. And then there was a talk by Sam Selakoff, which is much more about, he's kind of a, you know, I think he's been in the JavaScript world, but he's he's sort of has done a lot of different development.

Lazarus:

And his was sort of big picture. Very interesting stuff about, sort of similar to what, Ryan Florence was talking about. But, again, it was this idea of the back end frameworks, like, what are the good things from each, you know, from the back end frameworks? What can we learn from the back end? What can we learn from the front end?

Lazarus:

And the back end, he said, the big thing that we can learn, the thing that they've gotten right, so Laravel, Rails, Django, Elixir, all these things, what have they gotten right? Cohesion. It all just works together, it's so smooth, they keep adding new features, you can test it, you have these like really robust, you know, they've been battle tested, you have relationships between stuff, you've got scheduling things, you've got all these different ways to do stuff, queuing, caching, tools, and, you know, adapters for different tools, and it's like, it's just this sort of incredible ecosystem that all works together smoothly. You get this really nice experience from it. So that's the back end.

Lazarus:

That's what they've done right. And the front end, they've done right is composability. This is the ability to really sort of create what you want to create exactly as you've as you've sort of designed it, add the way you want it. They have all these libraries that are sort of made for that purpose, to get you to, you know, a level of just like really nice, code and really nice kind of, you know, interactivity and a nice UI. They have this kind of more of a concept of locality of behavior, you know, in the back end services, although that is changing.

Lazarus:

But in the back end server, the back end frameworks, you know, a request comes in and you sort of have to memorize what happens next. You know, it goes to the routes, then it goes to the controllers, then it goes to the views, then it goes back out, and you sort of have to know where those folders are, and you just sort of accept that they're in different places, and, you know, part of his talk was this locality behaviour, which I know I totally agree with as an HTMX, like, user putting attributes and tailwind user. And I I put attributes for tailwind, for alpine, for HTMX right there in the code, right where it's happening because, you know, that's easy to see what's happening. So and he said the front end has done a really nice job of this, of sort of locality of behavior versus, he called it spooky action, what was it? Spooky action elsewhere.

Lazarus:

That's not quite right, but, you know, something else is happening somewhere. I actually think the front end has some issues with that as well because there's a lot of events and listeners and reactive things that when something happens, something else reacts to it, and you don't always know where that is. So I'm not sure I fully agree that the locality, the the spooky action, is is better on the front end than the back end. It hasn't exactly been my experience, but, you know, he knows what he's talking about, so there's probably less of it with the way that he codes. And he talked about, you know, also this lexical scope.

Lazarus:

So this is something where pretty much at at the top of every kind of React or I'm just using React because I think that's what he talked about. But at the top of every file, you've got this, list of all the files that are being used so that you can go and you can track down, you know, what's being used for this. There's a lot less hidden magic, and there's a lot more libraries, for composition, for, you know, things that where you could just go grab a component, put it in, build your site the way you want in a really nice way with all these different sort of very good components. So the next talk was about Temple and the Go templating language. And, you know, I think Go is pretty popular in the HTMLX world.

Lazarus:

I don't I've never used Go, so I can't really say, but, you know, if you're using Go and you're using HTMLX, temple looks like a very good option because you're gonna need, you know, templating for static pages. You need to be able to render partials, you need to be able to, you know, add these sort of tools into it. So, you know, this his tool, Temple, just it seems like Go is not very opinionated, so this sort of adds a little more structure, and makes it sort of easy to create these reusable packages and reusable sort of different components, and these templates. So there was kind of a lot a lot there in in sort of, you know, if you're using HTMLX and and Go, like, it I would definitely check out Temple. And, you know, there's a lot that talk, I would just go through and watch the whole talk.

Lazarus:

You know? This wasn't one that I knew very much about because I'm so used to using Laravel. They've got their own templating language blade and, but, you know, temple looked awesome. Alright. So we're getting close to the end here.

Lazarus:

This has been a very long episode, but I'm just gonna go for it. And it's still fresh in my mind. All this the conference was fun. I met a lot of people. 1 of the people that I met, and this next speaker, I just thought, his vibe and everything, the way that he talks about building applications, Anthony I don't know how to say his name, unfortunately, but it's, spelled Alaribe.

Lazarus:

And it's he his talk was about building rich applications with HTMLX, but also mainly just the myths of multi page applications and breaking those down because browsers have come a long way. And so he uses the, what he called the H three stack and what he later said he wishes he had called the triple H stack, which is, Haskell, HTMX, and then one other thing that I don't remember and I didn't write down, but the h three stack, triple h. So he he was basically talking about the myths of, you know, this people think that if you're you have 2 choices. You either have, you know, you're building like a web 1 point o, you're building some really basic site, or you're building an SPA with React or or Vue or something, and you're just kind of that's what you have to do to make it good, to make it fancy. It has to be an SPA.

Lazarus:

And this is, you know, not really this is not really true anymore, but this this has been people's attitude and it still kind of is now, like, where it's like, well, I'm not building, like, a little toy site, so, you know, I better make it and react. And I've heard that and that's that's kind of a reductive kind of thing, but, you know, it it's people sort of have that mentality because they don't wanna accept limitations on what they're building. And so if one of the limitations of a multi page app is, you know, for instance, that every time you click, the JavaScript and the CSS has to load again. So that was, you know, his myth number 1, MPA myth number 1. JavaScript and CSS has to load every time.

Lazarus:

That's not true anymore. So he's got some solutions for it. You know, h x boost, pjax, like, these these have been around for a long time, where you're just kind of you're hijacking the link, you are doing what HX Boost does, you load the HTML, and then you swap it in. Right? So then there's also client side caching, so you can set up a service worker.

Lazarus:

So service worker is this JavaScript file that sort of handles your includes. I've never used this. A lot of this stuff that he talked about, I've never even seen this. I didn't know this was a thing that people did, but you can set up a service worker so that if a, you know, if your your browser tries to load a a file, load and include, it can check the service worker and say, is that cached? Just give it the cached one then.

Lazarus:

Then you never run into any of this. It doesn't have to load it every time. And you just keep that you know, you have to have a good service worker system but you can either write your own or you can find one of the many sort of options out there. And you basically would define which files you want to be part of this and, how you want to handle each. Do you wanna cache it?

Lazarus:

Do you wanna check for a new version? Like, do you wanna break the cache? What are your rules for that? But there's there's this is an example of something that's been out there, people can do that for a while. So you you do not need to load your JavaScript and CSS every time.

Lazarus:

You also have the HTML, you know, preloading option. There's something in the browser called speculation prefetch. This was a big thing in in his talk was, like, browsers have stuff you've never heard of, which is super cool. Okay. Myth number 2, MPAs, multi page apps, this is what, you know, he's calling the opposite of an of an SPA, single page app, can't work offline.

Lazarus:

And, again, the solution for this was the service workers. You could have, similar to, what what, Warren Buffering was doing, which was have local storage. And you can continue to use the app, but your service worker just has to know, and it it can intercept and handle it. Basically, whether the network is there, it does one thing. If the network is not there, it does another thing.

Lazarus:

So service worker just being, you know, a JavaScript file that is running you have that option. You can do it. You can set up local storage, then you can, you know, hold that stuff and wait until you have the network again, and then you can send it. Very similar to what word buffering was doing. So myth number 3, MPAs always flash white.

Lazarus:

So when you're clicking from page to page. Right? People hate this because it's old school web. They feel like we've come a long ways. I shouldn't have to see flashing white anymore.

Lazarus:

You know, I get that. So what can you do? Well, I guess the browsers nowadays have something called Pate Holding, and especially if you're in the same origin, you can either set that so that it's always true, so it uses with paint holding. I believe it's already set by default in some browsers, he said, but, you know, he showed an example of video of 1 without the paint holding and one with the paint holding, and it's just, you know, it just waits until it's received everything and then it paints the screen. So, it's just a little bit, you know, that that is sort of a myth that was true.

Lazarus:

It did used to always flash white, and now you've got options, again, with the browser. Myth number 4, MPA myth number 4, multipage app myth number 4, fancy traditions are not possible. This was actually shocking to me because I've heard of the view transition API, which is just using CSS to, you know, transition from one page to the next. But seeing it in action, you know, it was it was very cool. And, you know, you click on a link, and I think it must be matching up the IDs between from page to page, but you had, like, a little image that, you know, zoomed in and became the main image of the screen, and then you had the other text just moving around, so, I think it's gotta be just looking at the IDs, but, like, I wanna see more of that because it was it was a very cool experience, you know, to have it smoothly transmission transition from one page to the next when you click, rather than, you know, refreshing the page or something like that.

Lazarus:

So this was he said it was using the view transitions API, pure CSS, just CSS, nothing else. You know, it's not, he wasn't adding some library to do this or something like that. This is the browser. The browser and CSS just getting better and better. He had a little, you know, snippet of code for the CSS.

Lazarus:

So MPA myth number 5, every action is on the server. And that's just, you know, that's just something people think like, because, oh, I have to, if I wanna, like, open this thing, I need to, like, you know, if I wanna show hide something, I'm going to the server. You can go to the server if you want to, but and it's probably fine if you do, but you do not need to. Like, nothing about multi page apps precludes using JavaScript. So just use JavaScript if you want, you know, you can put a little snippet in there, you can use Alpine, you can also use, and he gave a nice example of, you can kind of hijack, you can use just CSS, and you can hide and show stuff.

Lazarus:

CSS has a way to hide and show stuff, by sort of hijacking the check boxes. If something's checked, you can, make it visible. And if and so you turn something into, basically a hidden checkbox so that it's this item works as a checkbox, and then with it's checked in quotes, it shows everything underneath it. It shows everything in some other DOMs or some other part of the DOM. So, you know, you don't need to go to the server.

Lazarus:

I most people I think who work with multi page apps in a serious way already know that, like, you don't need to go to the server every time, you could just still use JavaScript. And the final myth, myth number 6, operating on the DOM is slow and, you know, your code is gonna turn into spaghetti code because you're doing all this stuff kind of, and, you know, this was like a good moment, Basically, like, I love spaghetti. Spaghetti's great. No, but you learn to like having your code be right there. This is sort of like the locality of attributes, more and more attributes, classes, tailwind classes, it's all right there.

Lazarus:

Some people hate that, you know, that's to them as spaghetti. Like, oh, we want perfectly clean code. We gotta hide all the stuff that's happening. I'm like, why do you wanna hide all the stuff that's happening? I don't wanna hide the stuff that's happening.

Lazarus:

I wanna know the stuff that's happening. So you don't need as much JavaScript, and CSS is much more powerful now. You can just do a lot of stuff with it. So big picture. Great talk.

Lazarus:

That's why I'm dwelling on it so long. Loved it. Browsers are getting better. That's the big takeaway for me. Browsers are getting better, and that's not over.

Lazarus:

They're gonna keep getting better. So if you can leverage all the stuff that they're using now in the browsers, in your websites, in your multi page app, keep building the way you're building but keep making those better and better, you know, that's you can continue the browser's gonna continue to get better too, so your app will move forward with the browser also. And then there was you know, the final talk was, actually, not the final. The second to last talk was, about the some of the Montana stuff that they're building, to help with the GIS and help with the geocoding, and and, they have the kind of, they had sort of a big development example. This guy was actually really funny.

Lazarus:

Started to talk with, his name's Ken Ketner. You know, I'm thrilled they saved my stuffy institutional talk for the end after all these exciting ones. And, you know, it was just a very good moment. And then the last talk was Primagin. And, you know, he's he's great.

Lazarus:

He did it. He MC'd the whole thing, just positive attitude, funny jokes, you know, I don't know. He he's a good he's a good guy. Super just nice to everybody, talk to everybody, and he just sort of told his story of feeling like a failure, failing out of pre calc, feeling like you can't do something, but deciding to do it anyway and working really hard, doing something, you know, you don't think you can do, and just how that builds on itself. You do something that nobody else thinks you can do, or that you don't think you can do is maybe even more important.

Lazarus:

And you just power through it and you do it. And then the next time you're faced with something that you don't think you can do, you have this memory of, okay, you know what? I did this thing that I didn't think I could do, and I completed it, and I did a good job, and it, you know, so so his story is kind of this one of of kind of, you know, overcoming some of these things, having this sort of imposter syndrome, faking it till you're making it. But if you can endure the pain, the difficulty of learning, the parts where you do not get it, and then you do get it. And it's this, like, everything seems obvious and it just kind of fits into place and you get to that amazing point, but remember those successes.

Lazarus:

So remember the you you know, you don't have to remember even too many of those, just remember the big successes that you've had, all the things you've done, all the things you've overcome, all the things you've learned, and think of how you were before. You know? You never would have thought the stuff you're doing now was possible. They're out there developing, building things, have some fun with they're out there developing, building things, have some fun with it, volunteer for the hard things. And rather than kind of letting your job, letting your company, letting your responsibilities sort of you follow them around and you just do whatever they need to do, You know, he said lead, like lead, do stuff on your own, lead your employer to the things that they should be doing.

Lazarus:

So you should get ahead of it a little bit. Try new stuff, practice new things, learn what, like, you are interested in Because first of all, you're gonna have more fun if you learn what you're interested in. But also, you know, it's your responsibility as the tech person, you know, to to learn this stuff and to you can get ahead of some of the trends. You can help your company in the long term. That's gonna be much more valuable for you and for your company.

Lazarus:

So that was pretty much it. You know, that that was the that was the last talk. I just I had a great time. Carson did one more thing, and he brought out the, you know, HTMX 2 point o little floppy disks, which I am very sad to say I waited too long to go grab from him. He had a backpack full of them, but, they were very popular.

Lazarus:

And so by the time I got to it, they were all gone. So, but yeah. No. I had a I had a great time, and, I hope that, you know, I don't I don't wanna give anybody fear of missing out or whatever like that through the podcast, but it was a good time and everything is up available online, all these talks. If one of those talks I just mentioned sounds exciting to you, and hopefully a couple of them do, you know, please go check out the actual talk and, like, hear their name said correctly and, you know, hear what they actually had to say rather than kind of my, my understanding of it.

Lazarus:

So yeah. Have a good one. I'm just coming back on for one more addendum. I just wanna give a shout out to the people who, you know, the the people who spoke at the conference and and also to, like, Carson and Primagen and and, just some of these other people who were so gracious with their time. Like, there was an after party after the conference and, you know, they were walking around talking to everybody, saying hi, taking pictures, really getting into the weeds on things, you know, on hypermedia or just on, you know, what's going on in in the day and stuff like that.

Lazarus:

So they were very nice and and gracious to everybody. And I think I think that's the vibe of a conference and the sort of, you know, it's got this kind of, the vibe is very good. The people were very friendly and kind of down to earth and all that kind of stuff. So, it just you know, it it's different than some of these. I've only been to sort of these really gigantic conferences, and and, this had a very homey feel, and and I really appreciated it and, appreciated it and, had a lot of fun there with with, meeting people and stuff like that.

Lazarus:

So just a little shout out to the to the organizers and to people who were were speaking.