---
title: "AlpineJS with Caleb Porzio: Lightweight javascript in your markup."
date: 2022-05-31T05:00:00-04:00
author: Sean Smith
canonical_url: "https://website101podcast.com/episodes/season-05/episode-11/alpinejs-with-caleb-porzio-lightweight-javascript-in-your-markup/"
section: Podcast
---
&lt;!\[CDATA\[YII-BLOCK-BODY-BEGIN\]\]&gt;[Skip to main content](#main-content)![Caleb Porzio](https://website101podcast.com/uploads/hosts/_200x200_crop_center-center_none/caleb-porzio.jpg)Guest Caleb Porzio

I've been building Laravel apps for the last five years and Vue apps for the past three. During that time, I've contributed to the Laravel framework, written a number of community blog posts, and spoken at Laracon.

<https://calebporzio.com/>[ ](https://twitter.com/calebporzio)[ ](https://www.linkedin.com/in/caleb-porzio-75911419/)

Season 05 Episode 11 – May 31, 2022   
35:16 [Show Notes](#show-notes)

## AlpineJS with Caleb Porzio: Lightweight javascript in your markup.

﻿

0:00

0:00

1.0x

0.75x1.0x1.25x1.5x2x

[](//dts.podtrac.com/redirect.mp3/website101podcast.com/uploads/mp3/season-05/S05-E11-AlpineJs.mp3)

Explore Alpine JS, a popular and simple JavaScript framework for web development. Learn about its unique features, including the Alpine Day conference and new components, in this episode of Website 101 Podcast.

<a name="show-notes"></a>### Show Notes

- What is AlpineJs
- The origin of the name Alpine
- Caleb's background and history
- Online courses
- Alpine Day conference
- Tailwind and Alpine - a perfect pair
- Alpine in your HTML markup
- Alpine components
- Accessiblity
- The future of Alpine

### Show Links

- [Laracon](https://laracon.net/)
- [Laravel](https://laravel.com/)
- [Livewire](https://laravel-livewire.com/)
- [VueJs](https://vuejs.org/)
- [Code Course](https://codecourse.com/)
- [Laracasts](https://laracasts.com/)
- [Alpine Weekly Newsletter](https://alpinejs.codewithhugo.com/newsletter/)
- [Alpine Day Conference](https://alpineday.com/)
- [TailwindCss](https://tailwindcss.com/)
- [CSS Zen Garden](http://www.csszengarden.com/)
- [Alpine Components](https://alpinejs.dev/components)

Powered Transcript Accuracy of transcript is dependant on AI technology.

**\[00:00\]** **Amanda:** Hello and welcome to another episode of Website 101 Podcast. We are the podcast for novice web developers and small business owners who want to learn more about running and optimizing their websites. This is season 5, episode 11. I am Amanda Loots, hello how are you all? Joining me as always is Mike Mella covering for Sean Smith and Sean Smith covering for Mike Mella.

**\[00:27\]** **Mike:** Oh, that's great.

**\[00:30\]** **Amanda:** I just wanted to make that up a thing. I like it. That's good. Joining us today, we have Caleb Porzio, who is the Alpine guy. Hey Caleb, how you doing?

**\[00:41\]** **Caleb:** Great. How are you guys? Good, good. Welcome to the show. Yeah, thanks for having me. So Alpine, we're talking about Alpine, the JavaScript framework. Yes, the JavaScript framework.

**\[00:54\]** **Sean:** Yes.

**\[00:55\]** **Caleb:** We always have debates about what's a framework and what's not on this show. I don't know, I call it a framework.

**\[00:59\]** **Sean:** Yeah, I don't know what it is. Yeah, I think it's a framework.

**\[01:03\]** **Amanda:** So Caleb, unlike Sean and Mike, who have a lot of experience with Alpine, I have zero, so can you give me like the 30-second elevator pitch?

**\[01:14\]** **Sean:** Yeah, well, I'll first, I'll give you the tail-in version, are you familiar with tail-in?

**\[01:20\]** **Amanda:** Yes. I know of it.

**\[01:22\]** **Sean:** Yes, as a CSS framework. Okay, Alpine is sort of the tail-in for JavaScript. That's the easiest pitch to give. But without giving that pitch, without saying the word's tail and I'll say, it's like a little JavaScript Swiss Army knife.

It's not meant to take over your whole front end or manage your whole front end. It's like the, it's like JQuery, I guess the other tagliney pitches. It's like a modern JQuery. It's something that you can have in your back pocket and create lots of little widgets and doodads, make things move, make things change on your page.

Without all the complexity and tooling of modern JavaScript frameworks, so it's much smaller API surface area, smaller in every way and the build size. So it's just this small little thing that you learn the basics of and then you can use it to make your websites do stuff.

**\[02:15\]** **Mike:** Cool, excellent, excellent. I have a slightly off topic question for you. Sure. How did you choose the name Alpine? Does it have any special meaning, other than mountaineering or anything?

**\[02:29\]** **Sean:** Yeah, so I do a bit of mountaineering, you might call it, I don't know, in the Adirondex around here. And so that is sort of something that I do. And it was sort of inspired by that, but I didn't name it first. I just called it Project X because I knew what I wanted the project to be right away, but you know how you get stalled out on a name, you spend the first whatever, just trying to think of a name. So I thought, I'm not gonna do that this time. I'm just gonna give it a generic name. So it's Project X for a while.

**\[02:59\]** **Amanda:** I love that you're not gonna do it this time. I think it's all done before, and we're all gonna do it again.

**\[03:05\]** **Sean:** It waits many other times. So it was Project X for way too long. It already had traction and became a thing while it was still Project X. And then my first name internally was, I wanted, because it's all minimalistic, that's kind of the idea behind it.

so I wanted it to be kind of zen something. I tinkered with a bunch of that stuff, but whatever. Oh, this is what happened actually. I went on Wikipedia and looked for car names.

Like, and I just looked at a list of every car making model in existence. And you can tell I didn't get that far into the list before I went, ah-ha. And that's like, that's it, Alpine, which is perfect because I do love like, you know, when you're up at like a mountain top, all the vegetation is really small. And because it's all like weather proof, it can handle like super strong winds.

And it's so quiet up there, it's like there's weird. Your brain doesn't know how to process it. It's like total silence, tiny little trees. And I don't know.

And it just felt like that's what I wanted the framework to be. The small pure thing. This is so meta. I know, you asked.

So. I love this. I had no idea there was so much meaning.

**\[04:16\]** **Caleb:** That's where the name came from.

**\[04:18\]** **Amanda:** Yeah, I like it.

**\[04:19\]** **Caleb:** So, okay, before we get too deep into Alpine itself, could you just briefly tell us your own origin story? Like, I know you just recently at the time of this recording came back from Lericon where I assume you were speaking. Were you speaking in Lericon? Yep, yep. So, as a developer, you know, what's your sort of history briefly?

**\[04:38\]** **Sean:** Yeah, I mean, I was always like a computer kid, you know, and stuff like that. and was in a programming for a long time, but stuff like, you know, the TI-83, like you guys ever get into that programming on those graphing calculators. Anyway, that was my introduction to programming, but eventually started making like websites for friends and family and stuff, and found myself in the PHP world, because at the time like that was, like the popular thing to do was get into the lamp stack, like PHP on the back end, my SQL, Apache, whatever, and like JQuery on the front end, if you even needed it, like Bootstrap mostly. So anyway, that was where I landed in web development because I don't know, I think like people listening to this podcast, like the stuff that's popular right now, you're probably gonna go for and get into, you get a job, and it defines the rest of your career, but you don't even realize it.

You're just getting into something, but you're really getting, I don't know, I guess what I'm saying is it's kind of meaningful where you start, but you have less control over where you start than you think maybe. I don't know. Whatever. So, got into the PHP stuff and worked my way through different frameworks and then Laravel is what I landed on as far as a PHP framework and it sort of sold itself as the framework for web artisans and I was like, that's what I want to be.

I want that. I think code is beautiful. I want to make my code beautiful. So I kind of fell in love with that, and then just that's really kind of where I found a real niche, a real community, started going to conferences, started writing blog posts and working at agencies in the space and all that stuff, kind of building up a little bit of a career of experience, different projects and companies and whatever.

And then I kind of always knew I wanted, I always wanted like an independent life, like I didn't want to work for someone else. And I loved open source, and I made a few packages and whatnot. So one day I quit my job and just was going to quit and just go on like a sabbatical and just program for fun, and really soon into that I made this tool called LiveWire, which is the other half of me that is, it's a layer of L tool, so it's not, like when I usually talk about Alpine, I'm not always talking about LiveWire, but that's kind of how this all started a back-end-e-front-end-e framework, very much like hotwire, whatever. We don't have to drop names about all the other frameworks that I like it, but that framework birthed Alpine.

I had basically written Alpine for it, and I just saw this need of like, hey, my framework could use this. I bet a bunch of other frameworks could use this. This is useful for so many things. So I built Alpine, and by that point, I was full-time open source, and I am now to this day.

on open source stuff all day for fun, and it's great.

**\[07:31\]** **Mike:** And that's my life. So you said you created LiveWire, or is that true?

**\[07:36\]** **Sean:** Yes.

**\[07:36\]** **Mike:** OK, off topic, three-sentence elevator pitch. What is LiveWire? I don't know. I'm not a PHP guy.

**\[07:42\]** **Sean:** Yeah, LiveWire is in this fan, actually, the GitHub ReadMe project just did a really big post on the renaissance of backend frameworks, or these kind of full stack frameworks. It's a full stack framework. So if you're, if anybody listening, You guys are familiar with backend frameworks like Ruby on Rails, Laravel for PHP, Django for Python, Express for Node, all these backend frameworks, there's a, whatever, LiveWire is a tool for, for, it Laravel in this case, that allows you to mix the front end and the backend so you can basically have a button that you can like set up to click and run a backend function without dealing with AJAX or anything, like you could literally have like a backend variable called Count and have it rendered on your front and you know in a template count, and then a button called increment that calls a backend method that increments count, and then everything reacts. So it's almost like using View or React, but you have access to the backend and your backend code.

So yeah, interesting. Yeah, Phoenix Live View kind of birthed this family of tools, LiveWare was like number two in that run, but.net has their own blazer stuff and whatever. It's like a kind of a movement, a lot of these ecosystems have these tools now, so.

**\[09:03\]** **Caleb:** Yeah. Cool. So would you say that we talked about Alpine, you're the Alpine guy and what not, is Alpine your main jam these days?

**\[09:12\]** **Sean:** No, it's basically been even 50, 50 split LiveWire and Alpine for quite a while. And in many ways LiveWire is like a stronger community because it's so much deeper where Alpine is not that deep of a tool, it's like that's kind of the beauty of it. You don't, it doesn't consume your whole life. Like I don't think a lot of people identify as Alpine developers.

The same way you don't identify as being a tailwind developer, you know, you identify as being like a view developer or a react developer or something. And then you use tailwind, it's the same thing with Alpine where live where you might identify a little bit more, like a live, I don't know whatever.

**\[09:51\]** **Caleb:** Yeah, I will say that, so we'll probably get into this, but Amanda's a real JavaScript pro, but I and Sean are, you know, not great. We were, we came from the J query world.

**\[10:02\]** **Sean:** Oh, cool. Yeah. Well, Alpine speaks right to you. Yeah. That's what I was going to say.

**\[10:06\]** **Caleb:** Is it like Alpine is so comfortable for me to use because I don't know as much about JavaScript as I'd like to. Yeah. I'm still working on, but it's, it's very, very intuitive to use, I find.

**\[10:17\]** **Mike:** Cool. Yeah, I first heard about Alpine early days, and I was like, I've been trying to get off of jQuery forever, and I was like, Alpine is exactly what I need, because it was lighter than jQuery and simple, and the docs were okay, but I think they've improved a lot since then when you did your recent release.

**\[10:40\]** **Sean:** When you started, was it just a GitHub read me? Was that the documentation?

**\[10:44\]** **Mike:** Yeah. Sorry, it was difficult as a non, as somebody who's not super proficient at JavaScript, but now, especially when you release the new docs and components, so much better. I love it. Awesome. It's really easy to use for me.

**\[10:59\]** **Caleb:** Cool. It's great to hear. So, would you say then that Alpine for someone who is sort of just getting into the web and learning JavaScript and stuff? I mean, I think I know the answer here, but would you say Alpine, You should learn Alpine. Forget about learning how JavaScript works, learn Alpine.

**\[11:17\]** **Sean:** Like, yeah, before even learning how JavaScript works, I would say, yeah, I mean, yeah, it's meant to be like the easiest thing. I mean, I'm not just saying this, but I think it's the easiest framework to use and to learn. I do. It's, it at least is for me. I mean, maybe jQuery would be easier, but it's pretty hard to beat the simplicity of Alpine and the ease of installation and getting up and running and whatnot. My brother is actually getting into programming from a lifetime of like hard labor. He’s just like barely just like touched a computer and he’s totally just flipping into programming. And so he’s going through a boot camp and they’re doing Vue.js as like the front end framework. And he’s just totally like overloaded with like build step and everything. He’s got to learn all of that stuff, which is funny, because I’m a big view fan. I was a view developer for years. And whatever, I’m just like, dude, once you try Alpine, you’re going to flip. You’re going to be like, it can be this easy. No way. So, yeah, if I do say so myself, I think it's a great place to start.

Yeah, and I guess one nice thing about it is, you use Alpine and you can use its own APIs and they’re very simple and you don’t have to be, you don’t have to know much JavaScript at all. but you could probably get pretty far with just the docs.

But each Alpine expression is purely JavaScript. So the more you ramp up your JavaScript foo, the more powerful Alpine becomes. And that’s something I really like about it also. It’s like my hands aren’t tied as having written Alpine. I’ve become a much better JavaScript developer.

So it’s nice that like I don’t feel like my hands are tied and I’m working with like a little toy or like blocks. It’s like, I actually feel like I’m using something that takes away all the things I don’t want to do and gives me little places to just run wild, you know?

**\[13:15\]** **Mike:** Yeah, one of the things that I really like is if you're opening up a model, you know, you have your button and it's like open files, open, or for anyways, you click the button, you can add a function after it. So I've created a function that's like, toggle overflow so that you can't scroll the page anymore.

**\[13:35\]** **Sean:** nice. In the background. And it’s so simple. Right, you could say like open equals true. And then add a semicolon and do something else, you know, because it’s just that’s what I was trying to say. Just JavaScript. Yeah. The one thing I will say, though, injection, the your toggle overflow, you can scrap that because there’s a plugin.

I don’t know if you’ve seen it. The focus plugin. So basically, there’s, yeah, there’s X trap. It’s a new directive that makes models, all the hard parts about models that are the worst, and nobody builds them, right? Because nobody wants to build them this way, where you trap focus within a div, you know, and don’t let focus go without, you disable scroll, you add the type, or like, area hidden attributes to every other element on the page, accept the model, like, these are things nobody does. But the area, like, standards tell you, you have to do this if you are to make a dialogue. It’s all taken care of with XTrap, one simple direct if you just add it and it does all the things that you need to do and you’re talking about in like five characters, you know, so check it out.

**\[14:39\]** **Mike:** Sales pitch. So you just, you just add X trap and that's it and it does everything for you. Yeah, so it's amazing.

**\[14:46\]** **Sean:** Well, if open is your state, you know, that toggles it, like you would say X trap equals open because it would enable the trapping and then disable the trapping if open is false. Right, okay. And then you can tag on like dot no scroll because sometimes you want no scrolling and sometimes you don't. So, you could say dot no scroll, dot inert, you know, add on extra, you just, like, it's like you're shopping, you're just like, I want that, so now-

**\[15:08\]** **Mike:** So, dot notation to add other stuff to-

**\[15:10\]** **Sean:** To add extra stuff.

**\[15:11\]** **Caleb:** Yeah. I will say sometimes when I'm looking to figure out how to do something in Alpine, sometimes the odd person will say, you know, you can include normal JavaScript, just write JavaScript at the end of it, like, and my whole reason for using it sometimes is, well, I don't really know how to do that.

**\[15:27\]** **Sean:** Yep. So, that's not healthy. Right. It's an interesting thing where different, I think a lot of people use it differently. And I think it's important, the tricky part, I guess, is the framework maintainer is like, how do you create an experience that is conducive for learners and that you don't get inundated with all those advice right away? But then it has all those ways to grow later on. Put on the learner's hat, that's the hard part.

**\[15:57\]** **Caleb:** Hey, this is Mike here. And we're currently looking for topic and or guest suggestions. So if there's anything you'd like us to talk about, or anyone you'd like us to talk to, please reach out website 101podcast.com slash contact.

**\[16:12\]** **Amanda:** So besides checking out the alpine.js website and official documentation and stuff, do you know if there's any online courses or any other types of resources that are available to people like me who would be new to alpine?

**\[16:26\]** **Sean:** Yeah, there are, there’s, so TeamCodeCourse is a platform they have a whole Alpine course and pretty sure, LeraCasts is a, it’s actually not, I mean, it kind of sells itself or it’s in the name, LeraVel, it’s like a LeraVel training platform but I think it’s one of the best training platforms on the internet for just development in general and they cover everything, view, react, like there’s a lot of front end stuff and there is an Alpine course,

I actually did a course on there a while ago called building Alpine from scratch, the old Alpine version, and it was really fun. Like, let’s build a JavaScript framework from scratch and show you demystified a little bit. So that’s a fun bit. But yeah, there’s other platforms that I’m not thinking of. There’s an Alpine weekly newsletter that always posts when new stuff comes out.

**\[17:18\]** **Caleb:** Yeah. And it's getting more popular every day, so I'm sure that people are generating all kinds of stuff these days.

**\[17:24\]** **Sean:** Shruti Balassa, she's like a kind of an up-and-coming tailwind.

**\[17:30\]** **Caleb:** Yes, she spoke at the conference.

**\[17:32\]** **Sean:** Yeah, she just spoke at, right, she spoke at the Alpine Day conference, and she spoke at Lerica. And so she does a lot of tailwind stuff, but she also kind of picked up Alpine as something she teaches as well. Yeah, so check out her stuff.

**\[17:45\]** **Amanda:** So besides creating this awesome framework library, you also have a, you just made up a conference to go with it?

**\[17:52\]** **Sean:** Yeah, actually, I,

**\[17:54\]** **Amanda:** That's kind of badass. I like that.

**\[17:56\]** **Caleb:** That's cool. Yeah. Yeah. You need to learn to be more ambitious, Caleb. This is ridiculous. You really slashed.

**\[18:04\]** **Sean:** No.

**\[18:05\]** **Mike:** Yeah.

**\[18:06\]** **Sean:** I wanted to drop. I wanted to build hype around the whole framework. It’s a full from scratch rewrite. It was like, I learned a ton along the way. And it’s Alpine version three currently, but it’s really Alpine version two. Version one lasted like a week. I just needed to make one breaking change, so it wasn’t even a thing. So really, it was like old Alpine and new Alpine.

And it was a big shift. I spent like six or seven months at least writing it. I wrote it and then I trashed it and I rewrote it. So whatever’s, this thing I kind of went dark for and I wanted a platform to like, yeah, I’m with Laravel, like this is one of the strong points of the Laravel community. There’s these kind of like Apple Keynote. There’s an Apple Keynote-esque hype atmosphere thing that happens like every Laircon when Taylor gets on stage and releases like some awesome new feature or something.

So I wanted to bring that to the community. And you know, I don’t know, conferences are so important. They’re just so important. And for people, they are huge for, they’re like everything to my career. Like, once I went to a conference, then I was like, do you meet people, I didn’t even know that people were on Twitter until I went to a conference everybody’s like, oh, follow me on Twitter. And that changed everything. So, so I wanted to take a part in that.

**\[19:24\]** **Mike:** I love conferences, spin to many. Would you ever, or do you ever plan on making the Alpine day and in-person conference rather than online only?

**\[19:35\]** **Sean:** That's really tough. That would be fun because yeah, it's, I mean, it's, there's so much to love about in-person conferences and it's night and day. But, you know, the trade-off is that, that you restrict who can come so much. And you can livestream the in-person stuff, but I would say, I haven't thought about it much, but after talking about it right now with you, that's a new goal of mine. I would love that. If you heard it here first.

**\[20:02\]** **Mike:** Inspiration from the website, 101 Podcasts.

**\[20:04\]** **Sean:** I would love to host an in-person conference, yeah. That'd be awesome. Cool, you should do that in Toronto. Toronto, by the way.

**\[20:10\]** **Mike:** Well, three of us will be there.

**\[20:11\]** **Sean:** Oh, you're all in Toronto? I live in Buffalo. I'm in Florida right now, but I live in Buffalo and so it's like,

**\[20:16\]** **Mike:** Oh, you're literally just across the lake from us.

**\[20:19\]** **Sean:** It's like two hours away, hour and a half, or some stupid, low amount.

**\[20:22\]** **Mike:** Two hours, two in a bit, maybe three hours with border cross.

**\[20:25\]** **Sean:** Yeah, it depends how that goes, right?

**\[20:29\]** **Caleb:** So you mentioned tailwind earlier. We had Adam Wathen on the show recently to talk about tailwind. A lot of people seem to be using Alpine almost in conjunction with tailwind. Like they're meant to go together. They're like, Peter butterns, and peanut butter kind of thing. Jam. I said peanut butter chocolate. It makes more sense to be. Sorry. I guess jam. Sure. That's fine. If you're six years old, peanut butter and jam.

**\[20:55\]** **Sean:** Peanut butter chocolate is the sophisticated. That's right. Yeah. That's right.

**\[21:00\]** **Caleb:** It's a more professional version. Anyway, I too use alpine with tailwind. Sean does as well. I mean, do you do you use a lot of tailwind stuff in your work? Do you feel like this is a really good direction to head in.

**\[21:13\]** **Sean:** Yeah. I mean, exclusively. Everything I do is tailwind and alpine, so I’m big in a tailwind. Adam is actually the first conference I ever went to, Adam spoke at, and, well, that was before tailwind. Whatever. Anyway, I have a bit of a history with Adam and Tailwind, and the commute, like Adam was a Laravel developer, just like me. We worked at the same agency, so we kind of like, came, went up on, like, similar paths,

And so he was creating Tellwind, I was following everything he was doing, and Tailwind kind of started on these live streams where he was building a different SaaS app, but everybody was like, we don’t care about that. We care about what you’re doing with your CSS, like we want that.

I remember people would just be like, you should really package that up, like you should really turn that into a framework, and he’s like, yeah, okay, maybe whatever. And then he did, and it’s Tellwind, and so anyway, so I’ve been using Tailwind. since the beginning and yeah, the ethos of Tailwind is like, I mean, Tailwind taught me a lot about stuff like, I mean, I used utility frameworks before and I was like, I don’t know about this. This is, you know, tacky on stuff like that. I was like, I don’t think this is very good. I don’t like this. And then Tailwind, you know, that’s kind of the thing. They like forced you to like it and then you love it. Yeah, you know, they’re like, hey, I know you hate this, but try it, you’ll love it. And then you do.

**\[22:34\]** **Mike:** Yeah. Going back to what Mike said, you know, People use tailwind and alpine together a lot. What is it about the two that goes together so well in your opinion? Why do people who like tailwind like alpine and vice versa people who like alpine like tailwind?

**\[22:51\]** **Sean:** Yeah, I mean, I guess they kind of follow the same pattern of being directly in markup. So like where tailwind, your styling is co-located with your markup, you're not maintaining a separate CSS file that correlates to your HTML file and having to deal with that mapping. There's that big gap there, and that's a whole world of overhead, where it's like, wait, if we just put it right in the markup, it's going to look like hell, but it's going to actually result in all sorts of benefits. And so it's the same kind of idea with JavaScript. It's like, well, what if you could just, because I was using View as my framework of choice. And I started to kind of like really push the inline script stuff, like a view, like a V on click or at click or whatever, and I started like, you know what, instead of making a separate method in my view component, and just referencing the name there, I'm just going to put those stuff right in there, and I started leaning heavier and heavier on that as just a principle, and that's some part of the spark that started Alpine. And so yeah, it's a lot of the same ethos of like, what If you put not only your styling co-located right with your markup, what if you put all the behavior?

And then, of course, the question of like, well, you're just copying everything all over the place. You're duplicating all sorts of stuff. What about dry? You know, that kind of thing. And then the answer is the same answer to Owen gives, which is like, use something else to abstract this, you know, for Alpine, it would be, you know, there actually are abstraction stories in Alpine directly, but for the most part, people are using them. I'd say about half the people are using them on landing pages and things where you don't really care if you're copying something a bunch of times. Then the other half are using it in like a framework like Rails, Laravel, where you already have backend abstractions and can

**\[24:37\]** **Caleb:** easily make a button component or something. Yeah, I know my entire career I was like really obsessed with like semantics and stuff. Sure. Like don't call a thing button red because what if you redesigned the site in six months and then Alva said and it's blue and you're going to have to to redo all the, and then I don't think ever in my, I've been doing this 22 years, I've never redesigned a site and not touched the markup and had that issue.

And then I sort of realized who cares, there's drawbacks to everything, and it's a question of, do the benefits outweigh the drawbacks and for things like tailwind and alpine, I find that they do, yeah, it's like, the benefits make it very much worthwhile in my opinion.

**\[25:23\]** **Mike:** Totally. It's the speed of development for me. That makes it so much faster.

**\[25:28\]** **Sean:** Yep, being able to just hack it out right there, not have to. I don't know, yeah, but to your point, I think that's a big part of the culture of Tailwind and Alpine is sort of this, yeah, it kind of goes against best practices in a lot of ways. Like the CSS Zen Garden, you remember that? Like, yeah, so for the newcomer, maybe the CSS Zen Garden is this project where, or maybe it's much more than that, you could tell me, but it's at least a website you can go to where the markup is the same, but there's a bunch of different versions of the site based on different CSS style sheets included to show the power of CSS and if you structure your markup properly, you can do anything with it, which is very cool, but that whole culture of I went through that myself through all the different CSS best practices and waves, BAM, that was probably what I did for most of my career and so many things like that, that a lot of them have this, they're built around this promise that you're gonna rewrite it someday or you're gonna do some big refactor and this is gonna save you and the reality is it probably not and even if you do, it's still not gonna save you.

So what if you just kind of take that benefit off the table and caching on the value of being able to just throw it all right in there, you know? you're just better off in practice, I would say.

**\[26:52\]** **Caleb:** Yeah, yeah. So you recently released Alpine Components. Yeah, tell us about that. Just last week or two weeks ago?

**\[27:01\]** **Sean:** Yes, yeah, so it's kind of a pre-release. It's sort of half done, although I think there's plenty there. But yes, that was last week, right, yep, last week. I did it. I purchased it. Oh, did you? Thank you, Sean.

**\[27:14\]** **Mike:** Yes, I did. That's great. Thanks a lot. As soon as I step down on my desk and saw the email, that was out.

**\[27:20\]** **Sean:** Nice, that means a lot. Thanks. That's how these projects get made. That's my sole income is that for Alpine and Live Warrior.

I have a video course, so it helps a lot. Funds the thing. Yeah, so Alpine components is birthed out of Alpine's great and all. But if you need the things that you would expect a browser to give you, I think if you're a new developer, you might just assume, I think this is actually something that a lot of people assume, and I actually, I don't know a lot about mobile development.

I kind of assume they have these things and we don't, like basic ways to make a drop down, basic ways to make a modal dialogue, an accordion, a carousel, I don't know, all of those things, a tab list, those are kind of primitive UI things that you might expect a browser to have, like, isn't there a drop down tag that I can just use? And the answer is, of course, no. And more than that, Alpine makes building something like that easy, functionally, like if you wanted to make a tab group or something, that's so easy or a drop down. It's like the easiest thing you could do in Alpine is make a drop down.

But unfortunately, there's all of these extra concerns that you need to have accessibility standards basically, making it work with a keyboard, making it work across browsers, giving it all the proper ARIA attributes and roles and all that, where like from my bootstrap days, if I wanted a modal, I went to the bootstrap docs, sure anybody who was in the bootstrap knows exactly what I'm talking about, you copy that big chunk because you're not going to attempt it on your own because there's too many role attributes and ARIA attributes in there for you to feel confident that you're capable so you copy that whole chunk and paste it in. basically, this is what Alpine components is. Accessibility feels like a dark art and a moving target, and it's like I can never be a developer who can truly make an accessible proper modal or dialogue. Alpine components is a product where you pay and you get all that stuff.

I did the work, I went through, and I put my accessibility hat on and proper everything had on and build what I believe are like really good primitive UI components, tabs, accordions, carousel, modal, dialog, notifications, tooltips, all that stuff that every app needs and put it out there for you to take home. And along with it, screencasts with each component so you can watch me.

**\[29:53\]** **Mike:** Yeah, I was going to talk about that. I watched one of the screencasts. It's so educational. I learned a lot just watching it. And I got to say the tooltips should have come out two days earlier. Or the component you need two days earlier because I built my own tooltip before the components came out. Oh, that's so fun. But it's just coincidence. Right. Well, I mean, this is

**\[30:15\]** **Sean:** like, I am not a marketer and it is very obvious, especially in this case because I don't know how to market it. I mean, I'm sure I could market it better. But I consider almost a failure that I don't I don't think people know who weren't on that email list that, like, if you go through all those screencasts of all those components, you will be an Alpine master, like you'll be an Alpine master and you'll be, like, you'll be so much better at JavaScript and browser standards and all this stuff and they're pretty short. So it's like a masterclass in Alpine but it's not necessarily even sold as that.

So I think it's the kind of thing where people just need the components. They check out a screencast and they go, oh, this is like a deep wealth of Alpine knowledge,

**\[30:56\]** **Mike:** know. Seriously, Caleb, the teaching style that you did in there, I know it was more like a walkthrough but it felt like you were actually teaching. You would make an excellent full course teacher. I definitely paid lots of money to watch you teach me something. Cool. I appreciate that.

**\[31:15\]** **Sean:** I do actually have like a live where I do like a huge full screencast course. I have other courses and stuff like that, so I kind of do do that, but yes, that's flattering. Thank you.

**\[31:30\]** **Caleb:** Yeah, the documentation for Alpine is fantastic now, especially the videos that's great. Nice.

**\[31:37\]** **Amanda:** So I'm wondering, you've recently done the Alpine Day, and you've recently dropped these components. Where do you see Alpine heading? What's next?

**\[31:48\]** **Sean:** Right, so a great question. I think my hope.

**\[31:51\]** **Amanda:** Or are you like, I've done enough for now. Get off my back.

**\[31:55\]** **Sean:** No, not at all. Never. No.

Yeah, very. I have lots of ambitions for a lot of these things. And I hope they get realized someday. Alpine, I think, I don't know.

And I think this is already happening, but I want I could be, honestly, before I got on this call, even I don't know why I was thinking about it. But I was like, there should be a place in the Alpine docs of how to use Alpine and Rails. How to use Alpine and Laravel. Just click on the framework that you use and get a guide of Tailwind has that, I think.

And even though whatever, so my hope is that it becomes the front end solution of choice for backend frameworks like Rails, Laravel, Django. So, full stop there, I in Laravel it's sort of taken off as that and I want that to happen in other communities.

it happened in Laravel because I'm in Laravel, and I speak at the conferences about it, and it's kind of born out of there.

The same way all of the Laravels on tailwind, because Adam's like our homeboy, you know, so like I would want that to happen with other communities, and that's a function of getting on talk on whatever podcasts, like this, doing conference talks at their conferences.

And then also I think, you know, like it, again, I think it's kind of placed well, I just wanted to grow in those places, because it's already used in a bunch of CMSs, and that's another great place for Alpine.

Wordpress, Statomic, Craft CMS. Like all of these CMSs, Ghost CMS. Like all of these CMSs is Alpine's a great fit for.

And just straight up, just one off landing pages, that stuff's great for Alpine too. So I want all the places where Alpine's great, I want it to be really popular, of course.

And I think it's on that trajectory. But I'm not headed for world domination. There's so many things where view and next JS and react, and those solutions are like, that's a full on solution, and you should go do that.

And you should not use Alpine because that would be silly. So the corner of the world that Alpine is really good for, I want to dominate the rest, I'll leave alone.

**\[33:58\]** **Mike:** That's that. The right tool for the right job.

**\[34:01\]** **Caleb:** Exactly, yeah. All right. Caleb, we talked a little bit about all the things you do. Where would you want to send people to learn more about your various projects.

**\[34:12\]** **Sean:** Yeah, best place to follow anything I do is Twitter. So follow me Twitter. Caleb Porzio is my handle, and that's, yeah, all the other places I'm more inconsistent. If you want to know what's really up, follow me on Twitter. That's what you should do.

**\[34:27\]** **Mike:** That's easy, yeah. Thank you so much. This was really, really good.

**\[34:31\]** **Amanda:** Thank you, Caleb.

**\[34:32\]** **Sean:** Thank you, guys.

**\[34:37\]** **Caleb:** Hey, thanks for listening today. This is Mike Mella, you can find me online at belikewater.ca or on socials at Mike Mella.

**\[34:45\]** **Mike:** Posted in part today by me, Sean Smith, you can find me at my website, caffeinecreations.ca or on LinkedIn at caffeinecreations.

**\[34:56\]** **Amanda:** One third of the website 101 podcast talent is provided by me, Amanda Loots. You can find me online at my website, AmandaLoots.com. I also hang out on Twitter sometimes, you can find me at Amanda Loot's T.O.

Close Transcript 

Have a question for Sean, Mike, and Amanda? [Send us an email](/contact).

[![Listen on Google Play Music](/assets/images/google_podcasts_badge@2x.png)](https://www.google.com/podcasts?feed=aHR0cHM6Ly93ZWJzaXRlMTAxcG9kY2FzdC5jb20vZmVlZC5yc3M%3D)[![itunes badge](/assets/images/itunes-badge.png)](https://itunes.apple.com/ca/podcast/website-101-podcast/id1449510012)[![itunes badge](/assets/images/spotify-logo.png)](https://open.spotify.com/show/3rmSM1R9t6q1U8DmYWJRSO?si=NrYPMgDaRV6Dd56PjEaPow)### Season 05

- 1 [ Meet your Host - Sean](https://website101podcast.com/episodes/season-05/episode-1/meet-your-host-sean/)
- 2 [ Meet Your Host - Mike Mella](https://website101podcast.com/episodes/season-05/episode-2/meet-your-host-mike-mella/)
- 3 [ Wes Bos - Your Web Boss](https://website101podcast.com/episodes/season-05/episode-3/wes-bos-your-web-boss/)
- 4 [ Tailwind CSS with Adam Wathan](https://website101podcast.com/episodes/season-05/episode-4/tailwind-css-with-adam-wathan/)
- 5 [ Starting my own Website with Bill Campbell](https://website101podcast.com/episodes/season-05/episode-5/starting-my-own-website-with-bill-campbell/)
- 6 [ CSS is Awesome with Kevin Powell](https://website101podcast.com/episodes/season-05/episode-6/css-is-awesome-with-kevin-powell/)
- 7 [ Meet Your Host - Amanda](https://website101podcast.com/episodes/season-05/episode-7/meet-your-host-amanda/)
- 8 [ 11 Things to avoid doing on your website](https://website101podcast.com/episodes/season-05/episode-8/11-things-to-avoid-doing-on-your-website/)
- 9 [ Vanilla Javascript - Fundamentals before Frameworks](https://website101podcast.com/episodes/season-05/episode-9/vanilla-javascript-fundamentals-before-frameworks/)
- 10 [ Hiring Junior Devs and How to Stand Out from the Crowd](https://website101podcast.com/episodes/season-05/episode-10/hiring-junior-devs-and-how-to-stand-out-from-the-crowd/)
- 11 [ AlpineJS with Caleb Porzio: Lightweight javascript in your markup.](https://website101podcast.com/episodes/season-05/episode-11/alpinejs-with-caleb-porzio-lightweight-javascript-in-your-markup/)
- 12 [ Contract Opinions From Not a Lawyer](https://website101podcast.com/episodes/season-05/episode-12/contract-opinions-from-not-a-lawyer/)
- 13 [ Talking to a New Dev](https://website101podcast.com/episodes/season-05/episode-13/talking-to-a-new-dev/)

### All Seasons

- [Season 01](https://website101podcast.com/season/01/)
- [Season 02](https://website101podcast.com/season/02/)
- [Season 03](https://website101podcast.com/season/03/)
- [Season 04](https://website101podcast.com/season/04/)
- [Season 05](https://website101podcast.com/season/05/)
- [Season 06](https://website101podcast.com/season/06/)
- [Season 07](https://website101podcast.com/season/07/)
- [Season 08](https://website101podcast.com/season/08/)
- [Season 09](https://website101podcast.com/season/09/)

      &lt;!\[CDATA\[YII-BLOCK-BODY-END\]\]&gt;
