Mostly Technical

Ian & Aaron are joined by Adam Wathan, founder of Tailwind, to discuss everything from the upcoming Tailwind Catalyst UI kit to hiring to a hypothetical Tailwind marketplace & more.

Sponsored by LaraJobs & Screencasting.com.

Sent questions or feedback to mostlytechnicalpodcast@gmail.com.

  • (00:00) - Baby Check In
  • (09:49) - Catalyst UI Kit
  • (25:50) - Headless UI Update
  • (32:52) - Hiring is a Hard Thing
  • (45:38) - Rewriting Tailwind With...Rust?
  • (52:03) - A Hypothetical Tailwind Marketplace
  • (01:10:30) - "What do you want to do, Adam?"
  • (01:18:42) - Could Adam hire somebody to run the business?

Links:

Creators & Guests

Host
Aaron Francis
Educator at @PlanetScale. Into Laravel, MySQL, and building things. Building https://helloquery.com/
Host
Ian Landsman
Founder HelpSpot, LaraJobs, and Laracon Online.
Guest
Adam Wathan
Creator of @tailwindcss. Listener of Slayer. Austin 3:16.
Producer
Dave Hicking
@UserScape Product Manager. Previously at @TightenCo, @BeineckeLibrary, & @uconnlibrary. 1/2 of @CRSPodcast (I'm @doc_beats). 1/3 of @cheese_weather.

What is Mostly Technical?

Hosted by Ian Landsman and Aaron Francis, Mostly Technical is a lively discussion on Laravel, business, and an eclectic mix of related topics.

Intro:

You're listening to Mostly Technical, which is brought to you by Lara Jobs, the official Laravel job board, and Screencasting .com, where you can learn how to create high quality screencasts Faster than ever. Now, Ian and Aaron.

Ian:

Alright. Tell everybody we're here back again With Aaron and a special guest, Adam Wathan. Welcome.

Adam:

Greetings, gentlemen. Thank you for having me on.

Aaron:

You ready to talk about who knows what? We have no idea. Probably not even till when.

Ian:

We have no idea.

Adam:

Notes than you guys do. So

Ian:

Everybody comes on here with all these notes. It's so fun.

Adam:

It's a serious podcast, man. It's a it's a Important opportunity. Yeah.

Ian:

Dude, I love that mindset, an opportunity to come on the podcast. Boy. I don't know. Before we get too deep, I want to check-in on you guys. Aaron, how's the babies?

Ian:

Adam, you have a little baby, still pretty little, right? What? 4 months old or something?

Adam:

4 months yesterday.

Ian:

Yeah. Yep. There we go. Look at that. I'm right on it.

Ian:

So You

Adam:

are Well informed. Yeah.

Ian:

Aaron, so how's it going?

Aaron:

Yeah. They Freaking kicked our butts this weekend is how it's going.

Ian:

Nice.

Aaron:

So, you know, we have a 1000000 people helping us. Right? We've got We've got the night nurse. We've got the au pair. Turns out everybody gets the weekend off except mom and dad.

Aaron:

So This Friday I know. This Friday is the first.

Adam:

I need people's help the most on, like, Christmas day, So that's when you need to work then. You know?

Ian:

Like Yes.

Adam:

Oh, the kids have a day off because it's like a holiday? You don't have They are being Yeah.

Aaron:

Turns out school also closed on the weekends. That's how they get to school. Yeah.

Adam:

Care of my kids when there's, like, Virus in our house? Fortunately, not that is when you are most needed.

Aaron:

Man, it was it was brutal. So, You know, we had the night nurse every night up until Friday because it's, like, prohibitively expensive. You know, it costs a fortune, and so now we've shifted to, I think, 3 or 4 days a week, is like, oh, we can still survive, but also still have money to eat and stuff. So nice, good compromise. Friday night was the 1st night she didn't come.

Aaron:

And then, of course, Saturday is, you know, when the au pair gets the whole weekend off, and there's no school, so we just get totally owned Friday night, you know, waking up every 3 hours because there's 2 of them, so it's not like an adult can, you know, skip a feeding, and we can do every other one. We're both waking up every 3 hours to feed these babies, And then I gotta get up and, you know, Jennifer stays with the little kids. I gotta get up and entertain 22 year olds all day long. It was Brutal. And then we did it again on Sunday, like no night nurse, no au pair, just me and Jennifer and, man, rough weekend.

Aaron:

So,

Ian:

yeah. Doctor.

Adam:

Sometimes I fantasize about like a work schedule. That's actually where there are is no such thing as a 2 day weekend. There's just One day, twice a week, you know Yeah. Where I'm off, like, Saturday and Wednesday, you know, and then

Ian:

split up.

Adam:

And then selfishly, like, On any given one of those days, no matter how hard it's going that day, at least you can tell yourself, tomorrow, I'm back in the office. Tomorrow, I'm back in the office. You know what I mean?

Ian:

A reverse. Do you you guys have a au pair or anything, Adam?

Adam:

No. We We had a nanny helping us, like, for a while, and she just finished up with us, but we are trying to find someone else. We have someone who is interested that might be starting in January. So You're welcome. Yeah.

Adam:

Yeah. I don't know. That was like a condition for me of having 3 kids because Katherine, she just wants, like, an infinite number of babies.

Ian:

Right.

Adam:

And I'm like, I don't know. Like, there's I love Kids, but they demand a lot of you. And, yes.

Ian:

Yeah. For sure. And it doesn't stop. It just keeps it changes, but Doesn't really end

Aaron:

But it's gotta get more fun. Right? Like, I I I honestly different ways. As hard as the as hard as the 2 year olds are, I think I enjoy that Even more than brand new babies. Like, from my, like, life is easy perspective, brand new babies, you just kinda feed them and you plop them down

Adam:

and then just kinda lay there. Like, our our baby is the easiest of of the household. You know? Yeah.

Ian:

She just

Adam:

sits there smiling and googling and drooling on things

Ian:

and whatever. That's fine.

Aaron:

And you can, like, put them in a container. You know, you can put them in the There's, like,

Adam:

there's, like, at least 6 months, honestly, of, like, very straightforward stuff. And then they start eating, like, solid foods and start crawling, and then it's, like

Aaron:

They get mobile. Yeah.

Adam:

And then, like, my 2 year old, who I think is about the same age as Your older kids, maybe like a little bit younger. Her birthday is in April. May. Yeah. Yeah.

Adam:

So she's at, like, peak terror Yes. Right? Totally unreasonable in every way, but capable

Ian:

of even opening the baby gates that lock now. You know what I mean? Like, does Genius. Yeah.

Adam:

Yeah. Unstoppable.

Aaron:

We've reached we've reached the the, Strongly held opinions about inane things. Like, our our daughter now only wears her brother's pajamas, Refuses to put on her own pajamas, and so she always has to wear like, they're always wearing each of them is always wearing Simon's pajamas because she just doesn't wear hers anymore. And it's

Adam:

like, Okay.

Aaron:

I don't it doesn't matter, and so I'm not gonna fight you, but it's like, why this?

Ian:

Yeah. Yeah. I don't know. It doesn't it gets easier sort of. Like, they don't really put strange things in their mouth at some point and stuff, but then it does transition into, like, they have friendships that go bad and, like, real stuff.

Ian:

Right? They have, like

Adam:

I know.

Ian:

Oh, are they sad temporarily? Rarely? Are they, like, actually depressed? I'm worried about that. Oh, they wanna go here and there, but, like I I feel like there's gotta be a sweet

Adam:

spot between, like, ages 7 and 10, You know? Right.

Ian:

Where it's got his leg. Right?

Adam:

They they're at their, like, key level of independence, but they're still kids. Like, they can still just, like, Bump into somebody at the playground and be best friends pretty quickly.

Ian:

You know what I mean?

Aaron:

But And they still like you. They still wanna hang out with

Ian:

Right.

Aaron:

That seems

Ian:

like that's what I'm so excited about.

Adam:

You know? Right.

Ian:

Yeah. All that stuff. Like yeah. The real the real world pro this is, like, overall is really nice big because, yeah, there's just so much. It's nicer than you got about I mean, we have, like with my oldest, I have, like, political conversations.

Ian:

Right? Or I have, like, deep discussions and, like, Even with the younger ones, it's still like we're you know, we have actual conversations and we play basketball and we do fun stuff and whatever. That's all great. But there is, like, oh, the real worldness part of it is stressful that they are they are humans with the same feelings you have and, fears and desires and all these things. Like, they have all those things because they're just actually their own little people.

Ian:

What have we gotten ourselves into? Oh, man.

Aaron:

I just I just pounded at Celsius, and now I'm

Ian:

I'm all amped up. But I don't know. I don't know if I

Aaron:

have energy for that right now.

Ian:

Especially when you go over the 22, because I we talked about this on the show before with 3 plus. It is. It's complicated. There's a lot going on.

Adam:

Everyone says, like, Going from 2 to 3 was harder than going from 1 to 2, and I didn't really believe it. And I still can't tell if it's true, but, like, the thing that I sort of underestimated Was that when you have 2, there was all these times when, like, you had to, like, solo parent, and that felt like a thing because it's like, you gotta watch both these kids by myself.

Ian:

But

Adam:

now it's like, what felt like solo parenting before is, like, normal every day 247 now That's totally awesome. Someone's taking care of the baby.

Ian:

You know what I mean? Yes. Exactly. Yes. Exactly.

Adam:

Yep. Yep.

Ian:

And then that stays because, like, oh, the one has soccer, the other 2 don't have anything to do or it's just of course not. The one has soccer, and the one has ballet, and the other one's got this the school thing at school, and now you're just like, well, how the hell are we gonna do that? Yeah. Like, there's only 2 cars and 2 of us. And, like

Aaron:

Alright. We gotta talk about something else. You're you're bumming me out, man.

Ian:

Making this apparent podcast. It's awesome. It is awesome. This is awesome, but it is it is a lot of work. It's a lot of work.

Ian:

It's a lot of work. Citizen is also not. Exhausted. Yes. Exactly.

Ian:

Especially Yeah. Where you're at, Super exhausting. Yeah. Oh, man. Alright.

Ian:

So what do we got going on? What what? Oh, man. There's so much to talk about. I don't know.

Ian:

I mean, I don't know. If you have a list, we could start with your list. I I have some ideas too. It sounds

Adam:

very selfish, but I I can talk about lots of things. Like, I've talked about whatever you guys are curious to talk about, things that I am prepared to talk about. One, this stupid UI kit project I've been working on for the last Sorry.

Ian:

Yeah. We gotta we gotta get into that. To talk about that, for

Adam:

sure. Every day, drop some dark, depressing rabbit hole discovery on me. The other thing is hiring. I'm always up for talking about hiring because that's the

Ian:

other stressful thing that comes up on my mind all

Adam:

the time. And then just like stuff that we're planning to do in the new year, you know, always a big infinite list of things. I talked I don't know if you guys listened to me in Ben's podcast, but we kinda talked about this idea of, like, a tailwind marketplace and trying to figure out what we could change, and I'll I really want to talk about that. Mhmm. We can focus more on, you know, the high value stuff that we do and not so much on, Like, trying to commercialize it, which whatever.

Adam:

We gotta do what we gotta do, but it'd be kinda nice if there was a way out of that Or a way to not feel like anytime we're working on tailwind, we're, like, letting something else, like, stagnate.

Ian:

You know

Adam:

what I mean? Mhmm. So, yeah, that's Yeah. Those are some things floating around. Grab something, you know, if you want or we can talk about anything else.

Adam:

I say we

Aaron:

I you know, I say we start with UIKit. What do you

Ian:

Yeah. Let's go UI kit because that'll feed nice into the other ones, especially the market place that I definitely wanna talk about. And so so catalyst, right, that's gonna be your UI kit. Yeah. And I know it's been, yeah, what, a year you said you've been working on it.

Ian:

Right?

Adam:

I'll say, like, the initial the The plan, you know, like, having it on the road map has been multiple years. Right. You know? There's always been this, like, We started doing the templates. And even, like, a year before we did the templates, me and Steve, like, kind of decided we wanted to do those because we wanted to solve this problem of, like, We want to be able to build more opinionated stuff, stuff that, like, didn't fit into Tailwind UI and and also stuff that could be, like, sort of done where, like, if something, like, went out of Dial design wise, instead of having to go and, like, update 500 components, like, make the whole thing feel fresh, we could just be like, well, that one's old.

Adam:

We'll just make a new one now. Know, it's a new website template, and it's like looks like today's websites. So that, like, felt, like, really freeing, and we started with all the marketing sites, stuff like that, but we always knew we wanted to kind of solve the same problem for application interfaces. And a big part of that was because of this, like, inherent trade off we have to make in Tailwind UI Where in the Tailwind UI components, like, everything is meant to just be like you hit 1 button and everything you need is in your clipboard. Right?

Adam:

So it has to be this copy and paste with snippet, which means like A form can't be like importing a button component from somewhere else or importing an input component from somewhere else. So if you look at tailwind UI, anytime there's a button, it's like the Same HTML and classes duplicated a 1000 times throughout the end of July, right, which is kinda crappy because it kinda sends the wrong message about how you're supposed to use Tailwind. You know? So the UI kit is like our attempt to, like, okay. Let's go the total opposite set of trade offs.

Adam:

Let's make, like, the most, like, connected, fully componentized thing ever and offer that to people in a way that they can still customize it. So you just kind of download a zip I'll drop all the components into your project. You wanna change the border radius? You open the file, change the border radius instead of a bunch of configuration and stuff. So that was kind of the plan.

Adam:

Started working on it properly in, like, May, demoed, like, the 1st version of it at our connect thing in June. Since then, deleted every single line of code and started over again. Oh, because you just learn things from building it that you can't predict ahead of time. Dude. So change, like, the entire structure of the APIs.

Adam:

Like Like one one example is like initially we started with, okay, let's, like, have a component, like an input field that that generate that shows like a label and the input and all that stuff, and it's just like 1 little thing you drop on this in your code and add some props, and it just renders it. But there's so many limitations that you get there, like, say you have 2 inputs where one of them you want, like, the actual field to be order because it's just for, like, putting, like, a credit card CVC code or something, so you don't want it to be, like, full width. How do you do that? You know, You can't if the whole thing is, like, 1 component, even if I lay

Ian:

put a

Adam:

class on there where you say max width excess or something, now it's like applying the max width to, like, the The label, the description, and the input, but you actually just wanted it applied to the input. So now do you have a prop called, like, label classes, description classes, input classes, all of a sudden, it starts to go horrific. So we trashed the whole thing. We just built it all as, like, now it looks like HTML. You know?

Adam:

It's not any more condensed to the HTML. It's just, like, more opinionated. So that's, like, one example of a thing. Something that we got, like, Trapped in today that's been the nightmare is you guys ever heard of forced colors mode on computers? No.

Adam:

The Windows thing where

Ian:

for people Oh, boy.

Adam:

We need, like, really high contrast UIs to, like, be able to see stuff. And, no one really cares about this if you look around the Internet and Turn it on in dev tools because every site breaks, but like we kind of are held to a pretty high standard because we're selling code, you know, so we kind of Have to consider all this stuff, and this kind of just it's like an accessibility consideration like anything else that we do. So trying to support, like, forced colors mode, like, basically, you forget about it constantly, and then you go and enable it, and, like, all your checkboxes disappear because, like, They're built with just, like, background colors and SVGs and stuff, and it's like, oh my god. So Yep. Trying to get all that stuff working, and then you notice so when I disable my checkbox, it still disappears.

Adam:

Fuck. So I

Ian:

gotta go figure that out. So, you know, we're working on working

Adam:

on that stuff today. Keep finding, like, every component you think is done, you go back you find something that makes it not done. We're also working on, like, like, dialogues for the last, like, 2 weeks, trying to get, like, the transitions right and Checking every single site I could find on Earth, and you think you're good,

Aaron:

and I'm still finding something to this because he's just starting down this path right now.

Adam:

It's, Yeah. I don't know, man. It's I think, like, we're gonna release something next week because it's been we've Wanted to release it every month for, like, the last 4 months, and I just want it out by Christmas because, like, I feel like everyone at the company is gonna quit if that doesn't happen, because it's just been a like, feels like it's just like The grind.

Ian:

I don't know.

Adam:

It's a grind. So get something out, and then at least, like, Every new improvement and component we make, we can, like, ship as soon as it's done. Because right now, it feels like we have to build up,

Ian:

like Yeah.

Adam:

Some substantial critical mass of something worth releasing. Right? And I think even what we released this month is not gonna be, like, as big as I wanted it to. It's gonna be missing a lot of stuff, honestly, because everything's just so much harder than I expect, but I think it's still the right thing to do is just get something out there. So it's probably going to have all your form stuff like input, text area, radio, select, checkbox.

Adam:

It'll have, like, regular drop down menus. It'll have, like, little toggle switches. It'll have, tables is like the thing I really want to include that hasn't really been started yet, so that's gonna get done by, like, Tuesday next week if you want that in there, but also have, like, dialogues. And then we've got, like, a long list of stuff that'll be coming after that, like application layouts and combo boxes and All that sort of stuff.

Aaron:

So and keep working on the demo here. Familiar

Ian:

Mhmm.

Aaron:

With with Catalyst, where does this what's the, I guess, where does this fit into the Tailwind empire, and what's the business model here? Is this just totally free and open source? Is this Paid package? Like, what are you thinking?

Adam:

It's just part of Tailwind UI all access. So, like, last year, we sort of really, like, went all in on this, like, Buy this all access thing from us, onetime lifetime access. You get everything that we ever make. You know, That's that feels like it fits under that umbrella anyways, and this is one of those things. So just like our templates, if you already have a license, you get any new templates we release.

Adam:

This is the same sort of thing. So it is it's paid in the sense that, like, it's part of, like, paying for, like, the Tailwind premium sort of access package. Right. You know? Gotcha.

Adam:

We'll sell it individually too, but, like, no one buys the stuff from us individually. Everyone just buys the

Ian:

Right. The

Adam:

all access thing. Yeah. Yeah. Yeah.

Ian:

That makes sense. Well, I mean, this is a kind of an awesome thing to be adding as, like, usually you buy these all access things and you get, like, one new little color team 2 years later or whatever. Like, this is, like, a pretty humongous thing to to add to what you're getting there, so that's pretty huge. Yeah.

Adam:

I mean, thankfully, a business model seems to work in the sense that, like, business is, like, very flat and steady, you know, for years at this point even though we have to find new customers every single month. So until that stops working, it feels like we'll just keep Keep doing it. That way, it never ever stops working. I don't know. Hopefully, someone's built something better than tailwind to that point anyway, so Won't matter.

Ian:

You don't care. You'll be you'll be happy to hang it up.

Adam:

Yeah. I'll just put a bullet in my head. You know? Like Put

Ian:

me at the pasture. Yeah.

Aaron:

We we don't have to go that far. You could just play guitar in your office. You could just log off. We'll we'll say that.

Ian:

Yeah. I mean, I think I mean, I how do you feel about the, like, that since you guys conceived this, definitely. But even since you've started building it, I feel like this landscape has changed a fair amount, with other packages and everything like that. And, like, I guess, how do you see that Fitting in here. I mean, part of it to me is, like, my external take on it at least is, like, exactly like what you just said.

Ian:

All the stuff you just said Is the stuff that people actually don't do in, like, these open source versions a lot? Like, maybe they're using Radix, so, like, the core is like, The core has some core accessibility stuff and all that, but then, like, all this stuff that you have to do on top that actually truly make it really accessible or just work well in all these different scenarios, like, that's the stuff then that next layer does. And so to me, it's like, well, I'm gonna buy a tailwind one because It's just somebody went insane thinking about every weird edge case. Yeah. That's kind of the value prop in the large part, and obviously, like, it's always Design nice and everything.

Ian:

Although I do think there's more competition in the design nice space than they used to be. Right? So but in the obsessiveness, I think I think you guys are still first place in obsessibles. Right? So

Adam:

I do think that pays off. Right? Yeah. For better or for worse, I do think that is a character Creative mind. Yeah.

Adam:

I I think, it's just us trying to do our take on You know, there's definitely a bunch of other ones out there. I think, for the reasons you said, I I I think just, like, having that official stamp on it will be Enough to have to drum up a a bunch of people who are interested in checking it out and, you know, supporting the the Stuff that we do. Tie that in with, like, the whole, like, all access thing, I think, pushes people over the, you know, whatever. Byline. Them to buy, you know, usually.

Ian:

So you guys are, like, you're paid professionals working on it. Right? Like, it's not like somebody's side thing or something like that. Like, this is part of your core offering, and you're gonna maintain it and Yeah. Improve it and all that stuff.

Adam:

Yeah. Yeah. Like and and I don't think we need to, like, be the thing everyone uses or to dominate or anything. It just has just has to do well enough that we can, like, keep doing the things that that we wanna do, which, honestly, like, if I could focus entirely on just Tailwind, I'd prefer to do that. You know?

Adam:

But at the same time, like, building this thing, we've made so many improvements tailwind just from building this and noticing opportunities to improve in, and, like, that's the other thing that's made this take longer, I think, is I'm gonna try to be disciplined about every time we actually, like, see something that's like, oh, man, this would be easier if I just did this thing in Tailwind. Like, I can either put that in this as never ending list of to dos or I could just, like, stop, go over, like, fix it in Tailwind or improve it in Tailwind Yeah. And then come back and start using it. So we're using all sorts of, like, classes and features of tailwind that aren't released as part of catalysts. We have to release a new version of tailwind at the same time.

Ian:

Right.

Adam:

So, like, the classic one everyone has always wanted is, like, some utility to set width and height at the same time or, like, Avatars.

Aaron:

I love that. Yeah. So that was, like, a

Adam:

size 4, size 5. You

Ian:

know? Finally.

Adam:

Or like something to target, like, child elements. We added, like, native Mhmm. Thing for that too. The forced color stuff wasn't in there before, so now you're like, oh, I have to change the color of this in forced colors mode. Like, I can do that, whereas you couldn't before.

Adam:

So

Ian:

Mhmm.

Adam:

Stuff like that. So lots of improvements coming to Tailwind. That that's kinda like the thing that scares me about working on just Tailwind on its own. It's like It's no longer extracted. You know?

Adam:

Right. So it's probably good that we build these things, but man, it is hard not to feel like you're letting something stagnate. This year especially has felt like that to him. This has been a focus for so long now that, like, we really haven't, like, released anything since, like, before the summer. You know?

Adam:

Mhmm. And that's, like, not normal for us, because this project has just been so hard.

Ian:

Yeah. When you get into these big software projects, they just take a long time and a lot of Like, mental energy from everybody in the team. And, like, I mean, that we've always had that here. You just skateboards. Like, we have a few products, like, obviously, help spot's big one, but we have, like, the Lara jobs job board, and we've had other little sasses, and it's like, where we do Laricon online even.

Ian:

Like, I would do Laricon online and, like, we kinda maintain help Spot and support customers. We do that online, and then it's, like, 3 months go gone by, and I'm like, oh, we didn't, like, grab the ship, the new HubSpot version. We didn't do anything with our jobs at all. Like, You know, like, it just goes by. You're like, oh, months months have gone by, and we didn't do anything on any of the other products because we're just you just get in the zone on something else.

Adam:

The world notices that, or do you think Now you just notice it.

Ian:

I think it's just me noticing for the most. I mean, occasionally it does. Like, occasionally you miss something that's like, oh, that's kinda big or whatever. I mean, very occasionally, but, Yeah. I think the vast majority of time, it's just

Aaron:

because everybody else busy

Ian:

with their own stuff.

Aaron:

Everybody else is doing the exact same thing.

Ian:

Yeah. Everybody else has their head down on their stuff for 3 months

Aaron:

at a time, and then they look up, and they're like, oh, wow. Oh, what's going on out here? Yeah. Nobody nobody notices anything.

Ian:

That's kinda true Some degree.

Adam:

Yeah. Yeah. So we are saving up all these releases for the end of the year. So they'll be like catalyst. They'll be 10.1.4.

Adam:

They'll be headless UI at one point 8

Ian:

or whatever the hell it is.

Adam:

And then

Ian:

I'll be should do that before Christmas? I feel like you should really wait till after.

Aaron:

You think so?

Ian:

I don't know. Because, you know, if something goes wrong or whatever, it's all the moms. Like, I don't know. It's just like if you were gonna

Aaron:

go wrong? What's gonna go wrong with CSS? No way.

Ian:

Guys. I know. This is the genius of the tailwind business model. It's just whatever. Nobody's Nobody says that happens.

Adam:

Yeah. Exactly. It's not like we're launching a SaaS or something

Ian:

that Right. If there's some

Adam:

tailwind one's gonna use it over that time for real stuff either.

Ian:

Yeah. Well, yeah, less over catalyst for sure. Even like the tailwind, but it's like, even if tailwind itself had some regression, it's like, whatever you can just roll back in the previous one. Like, yeah, it's not the end of the world, so not Yeah. We'll have too big a deal.

Adam:

A couple days to react to things.

Ian:

Yeah. If something obvious is hugely broken.

Adam:

Yeah. Yeah.

Aaron:

And I thought there's that magical week between Christmas and New Year's that this, like, Tailwind and catalyst are all perfect for where it's like, hey. I'm not really working, and I wanna play around with some stuff. Let me play around with the new tailwind and the new catalyst. I feel like that's a good way to capitalize on that.

Ian:

Little side project week. Yeah.

Aaron:

Yeah. Exactly.

Adam:

And if people find bugs, they're not, like, Angrily finding them, you know, because this is like, well, I'm just gonna go eat that gingerbread ice over there now,

Ian:

you know, over there. Yes. Gonna move on. Yeah. Yeah.

Ian:

I know you guys were talking about this on, hackers incorporated, which is Adam's podcast. If you, don't listen, definitely check that out. But, The idea of, like, having real world project, whether it's a SaaS or Mhmm. Catalyst or whatever it is, tailwind keeps moving forward. So you kind of like that those real world use cases.

Ian:

And Mhmm. Yeah. I think that I mean, I think Callist is, like, perfect for that. Like, you've obviously found tons of stuff in there. Yeah.

Ian:

More than if you were building a SaaS or something like that, I think, really, because, like, they're just so down into every corner of component. You wouldn't necessarily need yourself. Right? Like, I'm not gonna build this box, whatever thing because I don't need it in my app, but you're gonna build it for catalyst because there's an expectation of But there's breadcrumbs or whatever UI component that you might not necessarily apparently use. So, yeah, having that mean, tailwind has so much in it that you guys have extracted from your own ideas and other people's ideas and whatever along the way.

Ian:

It's unbelievable. Like, when you first released it, I was like, oh, it's done. It's cool. And now it's, like, 10 times bigger now. It's like, there's everything in there, and then, apparently, lots of stuff still missing.

Ian:

So

Adam:

lots of stuff missing. Yeah. It's still a lot. So still don't have tech shadows. You know what I mean?

Aaron:

Yeah. That's fine. I kinda wanna hear about headless UI. Like, where does that fit in with Catalyst, because headless UI is like it's a sleeper hit. That's one of my faves.

Aaron:

I love headless UI.

Adam:

Yeah. So originally, because Catalyst is gonna be React only, we thought, let's just use something else instead of headless UI because Yeah. The only reason we built headless UI is because we wanted to support Vue for Tailwind UI. And and at the time, there just wasn't all these options that there are now. Like, all that existed was, like, reach UI.

Adam:

And it had, like, some limitations on our side where, like, it was hard to style with utility classes. That was, like, other thing, like, a lot of Mhmm. Anything that did exist kind of wasn't built with Tailwind in mind. So, like, you could style things with custom CSS and stuff, but not by just, like, slapping utilities on things. And also tailwind was missing features to, like, do things like arbitrary variance and stuff where I could, like, target a child element with this data attribute on it because we didn't have the sort of like just in time version that it became now.

Adam:

So we built headless UI to sort of be like Headless UI library optimized for styling with Tailwind, basically. And We kind of built everything that we needed it to have for all the stuff we put in demo July, and that's always been, like, the driver of adding new stuff to it. I think if we have, like, a bigger team, we probably would have just, like, put more effort into building it out for the sake of building it out, but that just never happened because there's so much to do with just tailwind itself. Yeah. So we're working on Catalyst thinking, okay.

Adam:

Well, now there's, like, RADIX, there's React ARIA components, there's all these things out there. We should just, like, Let that be someone else's problem because we got enough problems and, build

Aaron:

And yet. Using one of those.

Adam:

Yeah. So we started going down that road, and all those libraries are all really well done. But what I was finding is that the Catalyst code was, like, more complicated than I wanted it to be because we had, like, conveniences and opinions that we had about how we wanted catalysts to work that wasn't just, like, automatically handled by the underlying libraries. Like, We wanted to be able to do things like if you have a fieldset, you could put disabled on the fieldset and it'll disable all the elements inside of it the way, like, a native HTML, fieldset works. A lot of these libraries, like, don't even have a fieldset component, so we have to build a fieldset.

Adam:

And now we have to, like, make that disabled thing cascade through all the other components. We have to create our own, like, React context and, like, in all those other wrapper components, read from this context. And it was just like death by a 1000 cuts where, like, again, it was nothing that's really the of any of these other libraries, like, they all do what they're supposed to do and do them well, but because of the APIs we wanted to sort of layer on top, the catalyst code was getting too React y to me. Like, I wanted it to just look like just a bunch of components with class attributes on it. I didn't want there to be a lot of if statements and react hooks and use effects So,

Ian:

like Yeah.

Adam:

That's stuff that people are gonna be afraid to touch, I think, unless you're, like, a super React expert. So we eventually just got to, like, 1 API that we were trying to implement where it was just like, we can't even, like, figure out how to work around this and get it to work the way we want. So what are our options here? We either, like, throw out all of the conveniences we wanted to layer on top and just commit to just embracing someone else's API and just, like, Styling that API, or we just, like, double down on headless UI, migrate everything to headless UI, and now Anything we want Catalyst to do, find a way to bury it in headless UI instead. You know?

Adam:

Oh, yeah. Right.

Ian:

That's what I'm talking about.

Adam:

So that's what we have been doing. And and it was pretty scary decision, but it's actually worked out a lot better because I was always afraid of, like, what is this what message does it send to people if we're, like, not even using headless UI for our own things, and

Ian:

Mhmm.

Adam:

Does that mean we should need to go and update all of Tailwind UI to use, like, something else? But then, like, what about Vue? Because, You know, people are using a Vue version of Dev and July, and there is no good Vue library that we can use or whatever. So it's actually worked out for the best because now I feel like we're actually Continuing to improve and develop Headly Swy for, like, a good reason, not just out of, like, obligation. You know what I mean?

Adam:

Right. Yeah. So, yeah, I'm actually really excited about it. I kinda, like, really reinvigorated my passion for that project because I kinda, like, took for granted, like, the advantages of controlling the whole stack there. Yep.

Adam:

Now, like, Catalyst is just being built in this monorepo where we have, like, fork of headless UI in there and catalyst just next to each other, and it's like, oh, headless UI needs to do something. Just open the headless UI file and edit it, and it works right away. It's not like we need to publish a new version of headless UI or thing. So instead of, like, having to be like, okay. Well, you know what we should do?

Adam:

I guess, we'll open an RFC on Radix or React r or whatever and try

Ian:

to prevent them that this is

Adam:

a good idea. You know? And whatever. That's, like, not their problem or fault. You know?

Adam:

But if we can just, like, hey, Robin. Can you just, like, make this work? 5 minutes later. It works. You know?

Adam:

Awesome. Right. So yeah. So I I'm excited about that. I think we'll do, like, a redesign the website and stuff too.

Adam:

But yeah. So there'll be a new release coming out of that, which will have, like, all these form components. So now headless UI will have, like, a text input and a regular checkbox and button and all that stuff purely just so you can, like, get all the IDs and aria described bys and all that stuff automatically. So that'll be cool. We also added, like, the dialogue or sorry, the drop down positioning stuff.

Adam:

So classic

Aaron:

Yeah. Float UI or

Ian:

whatever it

Adam:

was. That's built then now. I kind of was stubborn about that originally because I thought, hey. It's headless UI. It has no opinions about styling.

Adam:

If you want something to be, like, anchored, Like, install the library that does that, wrap the headless wiring component with that, and just wire it up. But it's actually like a pain in the ass to do. Yeah. So we're just, like, going all in on, like, you know, maximum convenience. Yeah.

Adam:

Yeah. Yeah.

Ian:

Like, for sure. Especially when you start, like, building, like

Adam:

I was

Ian:

just gonna say, like, with a drop down, like, I only ever want the drop down dropping part near the drop Down. Like, it you know what I mean? Like, it's not even like a it's just like, yeah. You always want that. Yeah.

Ian:

Right. I always want that. Nobody doesn't want that one. The window that you

Adam:

want it to, like, flip to the sides, and then it's

Ian:

still working. Wants it to show in the far right corner when you click a thing that looks at the drop down.

Adam:

Yeah. And you can still do that. Like, we built it in a way that's backwards compatible. You have to opt into it with, like, One little prop. So

Ian:

Yeah. So if you No big deal. You can. Yeah. Yeah.

Aaron:

So as you're building out headless UI features and stuff for Catalyst, That's all React. Is the Vue version staying up to date? Is Robin just doing both at the same time when he does it?

Adam:

Not right now, but we will Get them to parity. Right now, like, we're changing it so aggressively and rapidly in every 5 seconds that it's, like, Doing it in 2 places would just be silly. Yeah. But once it's, like, stable, then we'll definitely get them to parity. We'll probably do a release for the React one first just because I don't think we'll have time to update the Vue one before next week, But we will go back and, like, port all that stuff over for sure.

Adam:

So So sound like the wall.

Ian:

Speaking of, like, Your employees working on this stuff and everything. I know, like, 3 or 4 months ago, just you and me talked, and you were looking at hiring people. Like, did you end Hiring anybody or have you just the core team's been working on this?

Adam:

I spent a lot of time drafting job postings and thinking about what roles we needed and stuff like that, and, Yeah. I felt like it was stressing me out even more because it was, like, a big distraction from this catalyst stuff. So I just decided, like, forget about everything until this catalyst stuff is done, because even trying to bring people on now, they wouldn't make a move in

Ian:

the hospital. You know? Yeah.

Adam:

So we're gonna do a bunch of hiring in January, I think. Like, I think I wanna hire probably 3 people before the summer. Wow. So, yeah. Right now, we literally have two and a half employees right now, like 2 full time, 1 part time operations guy, And then there's, like, me, Steve, and Jonathan.

Adam:

You know? With a

Ian:

Oh, wow. I guess that's all the work. You're gonna have this whole thing done, and then you're gonna add 3 people, but it's gonna be built. Not that it's done, but you know what I mean?

Adam:

How about there's so much more to do? You know? So always more to do. Wow.

Aaron:

I really thought y'all were bigger. So just Robin, Jordan, and Peter?

Adam:

Yep. That's it. That's whole whole team.

Ian:

Y'all are doing a lot. Yeah. It's crazy.

Adam:

Yeah. We were bigger, but 2 guys left in the summer. And, like, we've always hired so slowly that, like, There is, like, inevitable employee churn, you know, as people just wanna do new things in life. And most companies are like it's like people are coming in and out on this, like, kind of normal pace, so, like, stays stable. But for us, like, we only hired our 1st people, like, two and a half years ago.

Adam:

You know? So this is, like, the first Customer to churn.

Ian:

You know? Yeah. Think about it

Adam:

that way. And no one's been, like, brought in, like, on the other side. So yeah.

Ian:

Yeah. Yeah. That's that's what So, yeah, I mean, when you're small, it's just hard. It it always just takes I mean, we we had a person leave in whatever. Well, it was last year, and it I mean, like, took, like, 6 months to replace.

Ian:

Because, like, when you're small, it's like, yeah, making time, like, do the JavaScript and do the search and interview everybody, and you have all the stuff you're working on. And it's like, well, no. Yeah. Just Getting into that's gonna take then then nothing's gonna literally get done for 2 months while I go down now.

Adam:

It's so brutal, dude. Like, I could These are, like, not Twitter safe, like, spicy takes, but, like, a tweet that I've always wanted to to tweet is like It's

Ian:

a safe place, sir.

Adam:

It's like getting fired from your job is actually, like, less inconvenient for you than, like, you quitting your job is for your employer. Like, it's easier and less work for you to find a new job than this for, like, your employer to

Aaron:

find someone to replace you. I Dare you. It would be so over.

Adam:

Oh, I would I that would be nuclear for sure.

Ian:

I mean, at least

Adam:

on a podcast, there's, like, some, like, Towing a voice and, like, some

Ian:

context and whatever. Hey. We're having fun here.

Aaron:

We're just having fun, aren't we guys? We're loud.

Ian:

We're We

Aaron:

we won't

Ian:

we won't clip that one.

Adam:

It's just it's it is just like, you get a you gain a different perspective on, like, how the economy functions, like, when you start employing people, I think.

Ian:

Yeah.

Adam:

Like, the amount of work that it is to find people and, like like you know, people people get angry on Twitter sometimes about, like, Oh, I didn't I didn't get the job, but they didn't send me, like, a detailed list of, like, feedback about, like, why I didn't get it. Like, what what a waste of my time. Like, Think about the fact that I interviewed, like, 50 people. Like, technically, 49 of those interviews were a waste of my time.

Ian:

You know what I mean? This is this is a thing where, like I mean, this is it is changing a little bit, but I still think there is especially for a smaller company, there is this value of, like, People who stay at their jobs for a reasonable amount of time, you know, like, I think it's, like, hard to bring in somebody, like, in a tailwind lab situation of, like, Like, somebody who's had 4 jobs in the last 6 years or whatever. Right? Like, that's, like, the person that's, like, hard. Like, do you know that, like, you're gonna be back on that grind in a year or 2, like, Hiring that role again, like, you know, when when you know you have, like, a good salary and it's a good job doing pretty cool stuff, like, you know, that's, like, that's a tricky thing.

Ian:

It's not always true. It's, like, sometimes somebody has that background and then stays 10 years, right, or whatever. But, yeah, that is the a little bit of, An element I sometimes look into.

Adam:

It's, it's hard, man. Hiring is a hard thing, but gotta do it. I'm looking forward to doing it. I think I got a good plan. I think, like, the thing I've identified that took me a long time to identify is, like, I can solve my anxiety and dread around hiring by, like, Hiring someone who's good at hiring, not to be like a recruiter or an HR person at the company, but just like I'm sure, Aaron, like, where you work, there's Plenty of people who are just like engineering manager who has to interview people and hire people just for their job.

Adam:

You know? They that and those people have way more experience hiring people than I have. You know? Just because I, like, own a company doesn't mean, like, I have any clue how to do any of this stuff. There's plenty of people who are just, like, employed managers who are, like, really good at this stuff.

Adam:

So I'd like to, like, look for someone to be sort of, like, an engineering lead type person at the company that can, like, you know, contribute at at that level too. I think that would be really helpful. So yeah.

Aaron:

Yeah. And on on the other side, y'all are both employers. I am an employee. This is why it's So easy to get hired, y'all, because it's hard to hire people. So if you put in just, like, a little bit of effort

Ian:

Sure work.

Aaron:

Of just a little

Ian:

bit of effort.

Aaron:

And, like, hey, Adam. Here is you know, here are 5 examples of me having already done the thing that you're hiring for.

Ian:

Mhmm.

Aaron:

Link to GitHub, link to a blog post, link to Twitter, link to a video. I can do these things that you're hiring for. I've already proven it. I would love to meet with you. It's like Yeah.

Adam:

Oh. Super easy.

Aaron:

That helps.

Ian:

Yeah. Be be on. No. Yeah. But I do I say this to people all the time, but I think people don't really understand it That, like, the even the tiniest extra effort, honestly, like, it just stands out.

Ian:

Like, it just those people just stand out so far above, like, everybody else, the other 95% who, like, here's a resume, and, like, that's it. Like, the people who do the cover letter and have put a little effort in just, like, pop right out.

Aaron:

Did y'all see Taylor tweeted recently about hiring somebody for video at Laravel? And people replied to the tweet with, I would love to. Like, what? That that's that's you just shot that's your shot by saying replying and saying I would love to work with Laravel? Yeah.

Aaron:

No, dude. Put together a specific video that's like, here's, you know, clips of all the videos I've done. Here's a message for you, Taylor. Send it There's 1 link to your inbox and not, like, 80 links of, hey. Here's some random crap that I've done before, but, like, Specifically, here's the thing you're looking for.

Ian:

Especially with video. Like, make an edit. Like, here's an edit. Make a video. I've done.

Ian:

Yeah. Make a video. Like, here's the thing I've done.

Aaron:

Yo. Come on. Yeah.

Adam:

I think, to be fair, it is sometimes hard to, like, have an intuition for, like, What someone wants to see until, like Yes. Yeah. You've been in a position of, like, hiring people? Because now I feel like I could get any job I wanted to because

Ian:

I know what a sad no means and outs.

Adam:

Like, what pain everyone that I, like, is hiring has. You know what I mean? But I didn't have that intuition before. Yeah. You know?

Ian:

I think there is a difference too, which is this also does stand out to me when hiring, but it's, like, if you do that extra little legwork, though, of even finding out who the company is And, like because, yeah, if you're applying to, like, Microsoft, right, like, you're not it's not a specific person.

Aaron:

Let's move the needle. Yeah.

Ian:

It's gonna go through HR and 3 other layers before, like, the manager even sees it. So it's a little different game there. But if you're, like, applying the tailwind, it's like, you know, oh, there's Adam. I know him specifically. I can, like, read his Twitter thread.

Ian:

I could see what he's been complaining about. Right? And then he's probably he's hiring this job for and, like like, there's no excuse not to tailor that, Specifically. And, also, if it's these companies that you know really well and admire, like a tailwind, like Larabell, whatever these, like, Internet famous company you're applying to it, Like, yeah, you gotta put in that extra effort there.

Aaron:

Didn't Robin do something awesome when he applied forever ago?

Adam:

Yeah. I mean, he put together, like, a really good Little website job application thing that kinda outlined a bunch of

Aaron:

Yeah.

Adam:

His experience and and also even, like She shared a bunch of his, like, opinions about things that, that were sort of, like, risky in a way, but, like, good because, like, if his opinions happen to, like, be compatible with ours, then, like, that's exciting for me Right. Because it's like, oh, man, I'd love to bring someone on who I don't have to worry that I'm gonna, like, have to, like, fight with about things. You know what I mean? But, yeah, he put together, like, a good a good page with a a bunch of bunch of stuff, and he'd already been, like, really active in our Community Discord answering questions for people. And, and then, like, when we did the interview process, we did, like the thing that, like, I've always done that I have actually really, like, liked how it's worked out is, we do, like, a pair programming interview, but we pick, like, a problem that Neither of us have any idea how to do.

Adam:

So it's not like this

Ian:

Mhmm.

Adam:

Oh, I'm waiting to see if you do what I think you should do.

Ian:

Right.

Adam:

So for me and Robin, it was like, okay. Let's see if we can build, like, an SPG charting library, and let's do it in Svelte. Like, neither of us have ever used Svelte or ever built the charting library.

Ian:

Oh, wow.

Adam:

So it's just like, let's just try and learn it together. And he was, like, probably the the person that stood at the most when we were interviewing that just I felt like I never felt like I was waiting for them to, like, Understand something that I had just understood. You know? It was just like we were, like, programming at the same pace and, like, understood exactly what to do next at the same time. So it just felt, like, really fun and productive.

Adam:

It it never felt like I was, like, having to try and get someone to, like, you know, register like what this bug was or whatever. Right. So that was really good.

Aaron:

It's a cool process.

Ian:

Yeah. Now now you could just sit there, pair chat GBT ing, like Svelte and SVG and Svelte. Yeah. Have it produced.

Adam:

It's true. Yep. But yeah, so hiring. Gonna do some of that in the new year. I think hire like I think the role I'm thinking is like engineering lead because I feel like too small to have like director of engineering.

Adam:

You don't have a lot of people to direct, really, but someone who can help me out there that's like just a really But

Ian:

formalize some stuff too maybe, like

Adam:

Yeah, like Someone who, like, is happy to, like, be responsible for, like, mentorship and coaching and that sort of stuff. Like, that stuff stresses me out. I'm not really good at that stuff. Well So I'd like to have someone to help with that and who I can help who can help with hiring, and it's just, like, really technically Talented too. Sounds like a lot of things, but I think there's people out there that are like that.

Ian:

There. Yeah.

Adam:

I think I might find, like, So some, like, engineering manager from Heroku or something that's, like, wishes they got to, like, write more code. You know? I think that's, like, the pitch for a lot of these Like, you kinda took this management track because, actually, you are good at that, but now you're just doing administrative stuff all day. And here, that would be, like, 10% of your day, you know, and you'd still be doing a lot of work. I mean, you'd hire, like, another designer, I think, but I think I really wanna find, like, a Technical designer this time, someone who can, like, design and code and

Ian:

Yeah. It seems like a big advantage.

Aaron:

Like a like a Hugo over at 2PL. I mean, obviously, you Yeah.

Adam:

Someone is sort of, like, Bridge the gap between pure design and pure implementation because I feel like I play that role the most here now, and I don't trust even my own, Like, skill set there. You know? And then probably just, like, another person just to be an engineer the team, especially since, like, we're gonna be maintaining headless UI, like, pretty hardcore going forward. Yeah.

Ian:

There'll be a bunch of stuff there, I'm sure, over the next 6 months with Yeah.

Aaron:

Between that and Catalyst. Yeah.

Adam:

Yeah. It's tricky to know, like, what to look for in people, but I think, like, for us, like, both Robin and Jordan, they can just, like, switch between working on Tailwind or working on headless UI or working on whatever, so that I think there's people like that out there, and I'd rather hire like Just a bunch of people who can cover for each other then have, like, a headless UI team and a Tailwind CSS team because then you miss all these opportunities that Sit in, like, the intersection of, like, the 2 projects when you actually know how they both work. Right?

Ian:

And your guys' stuff is pretty it cuts across each other a lot, so it's not, like, Totally nuts because they're, like, totally different products and nothing doing each other. Like, this is overlap there.

Adam:

CSS animations and, like, database query optimization. Right. Right. You know? Yeah.

Adam:

I think of, like, our company as, like, the back end of the front end. It's, like, all we do. It's, like, we write,

Ian:

like the way I put it. Yeah.

Adam:

We write node code to generate stuff you use to build UIs, basically. Yeah. So you kinda have to know what you're doing, and you have to be performance minded and stuff like that.

Ian:

But,

Aaron:

Yeah. Because Tailwind is basically a JavaScript project at this point. Right? Yeah. You spit out CSS.

Aaron:

JavaScript program. You know? Like Yeah.

Adam:

Yeah. Yeah. At one point, you

Ian:

guys were gonna rewrite it in Rust or something. Did that ever happen or not happen?

Adam:

We rewrite we rewrite part of it in Rust. So that's gonna be at released in the beginning of the year, Like, the not the next version because it was gonna be the next version, but now we're doing this sort of interim release to add all the features that we needed for Catalyst. Yep. But, basically, we the main thing we did is we took, like, the part of Tailwind that looks at all of your files and tries to find all the class names, And we rewrote that in Rust because the only way to make that fast in JavaScript was a giant regular expression, or it's actually multiple regular expressions that run-in half of each other. I love that.

Adam:

And it's horrific. Like, if you need to add, like, oh, we need to oh, like, a situation we that's currently unsolved is we added this Child selector variant. So now, like, you can do, like, asterisk, colon, underline, and that'll, underline any child elements. And the JavaScript like regex parser is just like, oh, classes that start with asterisks. I don't know about those, You know, and it's like,

Ian:

it's the

Adam:

asterisk in this regex for, like, that to work. You know what I mean? So we rewrote that whole thing in Rust, And it's just written like a very classic parser in Rust. So it's just, like, go through every character, maintain a bunch of state, like, Cool. Keep track of things, and it's all doing, like it, like I don't even know.

Adam:

Robin and Jordan did this mostly, but it's, like, reading characters in, like, binary format so that there's no, like, conversion of types and anything to be, like, optimally fast. So the code is, like, very readable compared to the regular expression, but it's still, like, a 1000000000 times faster. And if you write the exact same code in JavaScript, it's, like, brutally slow. The other nice thing about Rust is that, like, it Is actually multi threaded, and this is like a perfectly parallelizable task where it's like, okay. Let's just, like, Read all the classes

Ian:

on every day on your calendar.

Adam:

So that's, like, way faster, which is cool.

Ian:

And and also programming stuff there.

Adam:

Yeah. The other thing it does is, you know how in tailwind right now, you have to, like, specify the paths to, like, all your templates?

Ian:

Mhmm. Mhmm.

Adam:

So in Rust, we're able to write an algorithm that just, like, looks through your whole project and finds anything that might be a template, and we're able to do that in Rust faster than we can look up those files, like, with you specifying them by hand in JavaScript. But that's

Ian:

awesome. Yeah.

Adam:

And Robin had to write a bunch of crazy We had to come up with some, like, heuristics, and we had to, like, make sure we're not wasting time looking at, like, bitmap files and JPEG files and stuff.

Ian:

Yeah. Yeah.

Adam:

Make sure we're not looking in, like, git ignored files, because, yeah, you can still opt in to that stuff, but, like, by default, we're trying to, like, look in in sensible places. So now,

Aaron:

yeah, NodeX vendor and node modules and stuff like that Yeah. By default?

Ian:

Yeah. But you'll if you have,

Adam:

like, a library pulled in that has Tailwind classes in their templates, you'll be able to, like, tell it about that. And I even would like to find a way to make those, like, almost, like, autodiscoverable, like the way the stuff in Laravel works. Or maybe, like, if you have if you publish a UI library that uses Tailwind, maybe there's, like, a file that you put in the root that kinda just says, this is where my templates are, And then we can, like, look at your package dot JSON file and be like, okay. You've got 7 dependencies installed. I'm gonna go look at those dependencies at node modules and see, like, Just those 7 folders instead of like the 10,000,000 folders that are in node modules, and then we can see,

Ian:

do

Adam:

any of these notify us about templates? And So, yeah, this is what I mean. There's, like, lots of Work.

Aaron:

That's cool.

Ian:

But, yeah, that's, like, the vision for 2, and I

Adam:

just wanted to be as simple as possible because right now, there's, like, JavaScript configuration files, plugins. There's things you do in CSS. There's all this configuration you have to do. There's, like, at tailwind stuff. What the hell does that mean?

Adam:

You know? So, like Mhmm. Tailwind 3.5, which might be tailwind 4, depends on what happens. My dream is, like, You install Tailwind with NPM. You don't even have to use, like, post CSS or anything, as long as, like, Basically, I'm gonna make make PRs to every popular framework to, like, auto detect the presence of tailwind and configure it for you.

Adam:

Don't have to specify your paths. Then in your CSS file, you'll just do at import tailwind CSS at the top. And that's, like, saying, use tailwind in my project. And Right. My dream is also that all configuration will happen in CSS.

Adam:

So if you wanna override the colors, you just, like, override some CSS variables your CSS file instead of, like, doing it in JavaScript. Or if you want to, even if you wanna tell Tailwind about some paths to look for templates. I wanna come up with, like, a CSS syntax for that too because, like, the fact that it's in JavaScript is like I don't know. It's fine, It's weird in some situations. Like, in the Rails world, everyone uses our, like, standalone CLI, which is like Yeah.

Adam:

We bundle node into, like, an executable. Mhmm. So they don't even have a node modules folder or a package dot JSON file or anything, but they've got this, like, tailwind dot config dot JS file for some reason. And you know? Whereas if I could just, like if all you're doing is, like, chain specifying, like, a font custom font you wanna use and, like,

Ian:

putting some brand stuff on everybody,

Adam:

and, like, why can't that just be in your CSS file? You know? Yeah. And if we can Their

Aaron:

JavaScript story is so wonky over there.

Adam:

It is. Yeah. So the more stuff we can put in CSS, the more, like, freedom we have with, like, doing more stuff in Rust too, Because now it's like a a file format that we can just do whatever we want with. We don't when it's in JavaScript, we have to be able to, like, execute that JavaScript file, you know, which that's hard in Rust. And I don't know how much Rust stuff will actually even do, but I don't know.

Adam:

It just kinda feels simpler. I I see tailwind in my head now as more like Sass than it is like Bootstrap. You know? Mhmm. It's like a tool for processing your CSS.

Adam:

So kind of just thinking about it that way helps clarify, like, where some things Should be how some things should work. Anyways I like it.

Ian:

I definitely hate when I have, like, just 1 random tailwind class somewhere just like I'm outputting it in some PHP code somewhere for some crazy reason, and it's like, well, now I have to, like, remote like, it it wasn't like why isn't this working? Oh, it didn't.

Adam:

It didn't work. My event listeners folder to the 10 minutes.

Ian:

Yeah. Exactly. Go in there. Yeah. Exactly.

Ian:

Right. So that'll be I'm definitely looking forward to that. Alright. Let's do some business y stuff. So I know on the other podcast you're talking about, and we've talked about this in the past, having a marketplace.

Ian:

Give us your rundown of the idea of a place. I got some thoughts there myself, but, like, what's the idea behind the tailwind marketplace? What's that mean?

Adam:

K. Two motivations. So One is, like, right now, our business model kinda, like, puts us in competition with, like, people who love building stuff with Tailwind often Right. Which is, like, Unfortunate. You know?

Adam:

I wish there was, like, more alignment there. So if there's people out there, like, making awesome tailwind templates, It's kinda like there's not a lot of incentive for me to, like, help offer them distribution or tweet about how cool this is or whatever because it's like, the back of my mind, I'm like, am I telling someone to buy this instead of, like, buy something from us? Like, that's silly. You know?

Ian:

But at

Adam:

the same time, it's like, well, that sucks because if wanna build a big community. I should be able to, like, spotlight some of the stuff that we're doing. Embrace everybody. Yeah. Yeah.

Adam:

And and we do that with anything that isn't competitive generally. Right? Like, if someone builds an awesome site with Tailwind, like, you know, the Shopify home page comes out and goes with Tailwind, like, I'm all over, like, promoting that. Yeah. So I'd like to be able to do that with basically everything.

Ian:

Mhmm.

Adam:

I also kind of feel like it'd be interesting if we could incentivize a community to build stuff, just to see what that would do to the community, does that attract, like, more designers and stuff like that into the community that aren't really there right now. Like, Tailwind Right. In some to some people has this reputation of, like, it's a CSS framework for back end developers who, like, don't know CSS or whatever. Right? And I'd rather it be, like, something that people who are really good at design embrace to build really cool stuff too.

Adam:

Like, that that is Common. You know? Yeah. But you see, like, ecosystems like Framer where there's just, like, people building Framer templates and stuff because Framer has, like a theme store where you can publish that stuff and people make a little bit of money doing that and everybody kind of wins, which is cool. So the idea of the marketplace is, like, can we spin up, like, a page on the Tailwind CSS site that showcases, like, Our templates and stuff, but also showcases, like, templates from, like, trusted partners where we've kind of, like, vetted their code enough to be able to feel like anything this person makes is gonna Pretty solid.

Adam:

And, probably just set it up where, you know, there's some, like, percentage split between The sale so that, like, we don't have to feel like it's necessarily competitive. So that that was, like, my main motivation is just, like, Do setting something up that, like, makes me feel like I can promote stuff other people are doing without it just being, like, objectively stupid to do, You know? Because I want to do it, but I want to feel good about I don't want to feel like I'm shooting myself in the foot by doing it. And then, like, the other side of it is, like, if that could actually work and take off in any way. Like, The the the big side of that is, like, a theme forest or something, right, as, like, an example of, like, this sort of thing being a thing that works.

Adam:

But there's also plenty of examples I think of it not really working. But if it did work a little bit even, it'd be nice to just feel like There's new design stuff coming out while we're focused on, like, the Tailwind CSS stuff and the open source stuff instead of having to be, like, put all that stuff on hold while we do some tailwind stuff for 6 months and then do some UI stuff, and that's that's really felt like more stressful this year because of how long this catalyst project has taken. Like, historically, it's been, like, 2 months working on tailwind release, 2 months working on a template, 2 months working on tailwind release, 2 months working on a template. And that pace has felt fine, but this year has just felt too slow. But I I don't know.

Adam:

I'm curious what you guys think because I I'm still pretty skeptical that it would actually work well enough to even be A drop in the barrel compared to, like, how well our stuff actually does.

Aaron:

Yeah. Yeah.

Ian:

I mean, my yeah. That was my Concern, was, so I think you could tweet about cool stuff and that would have zero impact on your revenue. Like, none. Like, if you just saw a cool Tailwind UI thing that was somebody else's whatever component library or is there definitely just a pure template, like, you could just talk about that. I mean, I wouldn't talk about every day all Fine.

Ian:

But if you, like, tweet it out once and, like, hey. This is really cool. I think that's not gonna ever impact you. I don't think, you know so you could just do that and feel fine about that without even any of this other stuff, But there could be some revenue there. I mean, I don't know.

Ian:

Bootstrap, I I get the impression. I never get the impression, like, they made tons of money with their There are theme stuff

Adam:

Interestingly, they marketplace. They do, publish, like, the numbers of Oh. Templates that have been sold. They don't say, like

Ian:

Okay.

Adam:

Right. The numbers. Close enough.

Ian:

If you

Adam:

look at, like, their most popular temp dashboard template that's sold 22100 copies. Right?

Ian:

Yep.

Adam:

And that's at $39, and they're getting, like, 3% of that, you know.

Ian:

Yeah. So that's 2nd day sales or whatever. Yeah.

Adam:

Call that, you know,

Aaron:

whatever 25 that's $26,000.

Adam:

$25,000 total, you know, whereas, like I don't know if I wanna share exact numbers, but that's, like, Nothing. You know? This doesn't matter what, like,

Ian:

the sound device. Exact exact number is nothing. It's not a 0. It's not a 0. We don't need the

Aaron:

exact number to know. Yeah.

Ian:

Well, so this is the other thing. I think what's kinda interesting to me, and I don't wanna rehash what you talked about in the other podcast too much, but I kinda feel like it's similar. You talked about how Tailwind had a job board.

Adam:

Yeah.

Ian:

And that didn't work out totally. And I think this is kind of the same thing because to me, it's like you have a huge audience. Right? And you could have sold a bunch of jobs, I think, but the thing is the thing you'd have to do to accomplish that, and I feel that's the same trade off here is like If you just wanted to turn the Tailwind Twitter feed into, like, jobs all the time and marketplace stuff all the time and you wanted to tune a newsletter into that and you wanna change the website and instead of having 2 links to components, go to Tailwind UI that you guys get all the profit from. Instead, it goes to, like, the job board or the marketplace.

Ian:

Like, you could have, like, Super push these things, so the same thing with the marketplace, and probably sell a reasonable amount, but I don't think it'll sell nearly as much as you do tailwind UI. So, like, that's, like, where it gets to be a weird trade off. Like, are you gonna start I don't think you're gonna steal money from Tailwind UI Because the other designers, I think it's because if you have to give up real estate on your SEO empire, which is kind of how the whole thing runs

Aaron:

Yeah.

Ian:

For these other initiatives, like, that's a bad trade off is kind of the issue.

Adam:

I agree. Yeah. It's tough. I kinda feel like the better Version of the same thing is, like, pay people a lot of money to design us templates.

Ian:

That's what I was just gonna that is literally what my what I was gonna say. That's what I think it should is. I was like, why don't you just pay people and, like, because also the best designers and stuff. It's like, well, I could do this tailwind theme Nope. For a website or whatever.

Ian:

But that's a lot of risk. Like, they're going into business. Right? They're like, well, I have to do this thing. I have to market it.

Ian:

What if it doesn't work? Yeah. But, like, even in the tailwind UI marketplace, if you had that or the tailwind marketplace, it's like, well, number 74th. Is that, like, I'm actually gonna sell a lot through there? Yeah.

Ian:

Whereas if you're if you're like, hey. I'm gonna give you $20 up front. And then Yeah. And I'm gonna give you some percentage. What I mean, you could do

Adam:

The percentage is complicated because of the all access thing, but I was gonna say, like, even if you look at this Bootstrap template, the most popular one, Back of the napkin math, the person selling it made $60, you know? Right. That's to be the most popular template on the Bootstrap Theme Store. Like, I could just pay people $50 guaranteed,

Ian:

you know? Right.

Adam:

And that's, like, less than we've probably spent on every template.

Ian:

For sure. Right. Almost. Yeah. You know?

Ian:

Well and that's the other thing too. But I mean, I think there is a sort of in between. I think the easiest way is definitely, You just pay people with themes, you add them to the all access, boom, you have this huge library of themes over the next couple of years. Great. Mhmm.

Ian:

I think you could do a marketplace like thing even, but it was more curated, and it's more like you That is where you could have a people earn a percentage where it's like, I'm gonna give you 20, and you're gonna earn a percentage because this marketplace is like a special place. It's like for It's not internally done. It's externally done. Maybe they're only getting, like, 20% or 30% because they're getting, like, a bunch of money up front. But it's like, If you did wanna have another place that was more like a quasi community place but still with your oversight curation.

Adam:

What's the difference for that? You mean, you just because it's like it's not as I don't know. Highly emphasized on the tailwind CSS Dodge.

Ian:

Maybe it lets you go more in different directions maybe a little bit. Maybe a little bit, but yeah. I mean, I think ultimately, just putting in all access is fine too. I mean, it does give a place for people to buy more stuff from you. Right?

Ian:

That's not in all access, like, maybe you have certain, you know, different types of themes or more themes that people can just buy in addition to the all access. I don't know. Maybe it doesn't make any sense with the concept of wall access. I don't know. But

Adam:

Yeah. It's hard. I wish the jobs thing had worked out. To me, the jobs thing felt like the better Secondary revenue stream because it felt like that's very clearly totally separate. It's not, like, template related at all.

Adam:

It's selling to, like, businesses. It still saddens me that, like, it wasn't the low hanging fruit that I kinda hoped Yeah. It would be.

Ian:

There was definitely a disconnect there in terms of, like, think you explained it perfectly. He was the one, the person you talked to explained it perfectly on your other podcast that basically, like, they're like, we don't have any tailwind jobs. And you're like, yeah, we have rack developers and they're doing tailwind stuff. And Yeah. Like, oh, yeah.

Ian:

I guess so. But, like Yeah. You're right. Nobody thinks about that. So you'd have to, like, really market the hell out of it.

Ian:

You know, it's it's I don't think it would be It's still not gonna be any near tailwind UI.

Adam:

That's what I'm gonna do. We'd have to build, like, uijobs.com or something. And now it's like, okay. Well, now this isn't really taking advantage of, like Yeah.

Ian:

The speech change. Think you'd have the revenue you have now. Like, I still think it's, like, the Time hassle trade off of, like,

Adam:

as long as it's not. Fucking marketing site template. You know? Exact exactly.

Ian:

Yes. Exactly. Yeah.

Aaron:

Yeah. I think the ticket I think the ticket is you you pay designers to make new ones and do them as, like, Almost is like collabs where, you know, you kinda,

Ian:

like, get the design. The collab.

Aaron:

Yeah. Exactly.

Ian:

Yeah. Yeah. That's how I've thought about it in the past.

Adam:

Like, you'd Probably give us a design. Right?

Ian:

Famous design you know, whatever famous

Adam:

unit designer is out in

Ian:

there and work with them.

Adam:

Clean up some, You know, things to make it fit better into the tailwind spacing scale or whatever. Maybe we kind of interpolate some of the breakpoints that you didn't give us and

Aaron:

Exactly. Yeah.

Adam:

The front end person on our team kind of who's just, like, the machine that can, like, rip through these, like, Figma designs and turn them into, like, bulletproof tailwind templates goes and And does that.

Aaron:

Yeah. And I think there are 2 I think there are maybe 2 other things. I agree entirely about the marketplace. Like, I don't think it's gonna cannibalize y'all stuff. I think it's just gonna be A quagmire of time and attention, and and that, in the end, may cannibalize some of your stuff.

Ian:

Mhmm.

Aaron:

But I think having having other Designers do it sounds great. Having designers do it for for potentially specific tools or platforms Sounds really great. So if there's I don't know what the biggest in the world you know, Shopify. I don't know if you could do a Shopify or WordPress or something theme where you can be like, oh, you like Tailwind and you happen to use WordPress for whatever reason? Great.

Aaron:

Tailwind, you know, the Tailwind Labs team has one of those. I think That's potentially new and interesting that you could do. And then, honestly, I think 1, like, One, complimentary and not competitive thing that you could do is become a destination for people taking their Figma and turning it into Tailwind. Like, acquire Jason Beggs

Ian:

Yeah.

Aaron:

And just, like yeah. If you have a budget and you have a Figma design and you want Tailwinds, Like, Tailwind's done by the Tailwind team? Yeah. We do that. Yeah.

Aaron:

It's $30,000 or $20,000 or whatever. But, yeah, we do that, and then Jason goes and he does it, and then Y'all massage it and give it back, and everybody's happy. I think Feel like that's another

Adam:

I think the real, like, opportunity out there that I just, like, I'm too fucking old for is the really good, like, AI driven tailwind design generator thing that, like, Where I just, like I put Steve in front of a computer for, like, 6 weeks just, like, swiping on, like, good design, bad design, good design, bad design until, like, all the GPUs Know what good design is.

Ian:

You know what I mean?

Adam:

And then, like, you get, like, here's a URL to my website. Add a pricing section to the bottom that just the rest of the site. You know? And it's that's something out that's, like, actually really good. I I think, like, maybe that's an opportunity, but I also kinda feel like, Like I said, I'm too I'm too old.

Adam:

You know? The flower of youth

Ian:

has faded. Yeah. All all these state all the I mean, not that maybe not the AI. I know, though it's hard to say, but, like, these other things too, I think it's tricky because they're just, like, gonna be a small percentage of your rev like, if you build the world's best tailwind WordPress theme, I still think it's gonna be, Pretty small percentage of your revenue, you know, and then that gets kinda, like, annoying to work out.

Adam:

Yeah. I mean, it's weird. Like, the current business is great, you know, but I also kind of feel like, don't you have to be constantly, like, thinking about, like I do think

Ian:

this is one of your, You don't have to do it. Now. We're talking. We're finally getting

Aaron:

to the real

Adam:

mic. Just

Ian:

enjoy it. Be like, yeah. We just enjoyed it. And plus, you have so much stuff to work on in your actual, I mean, this catalyst thing, I mean, this is gonna be a huge thing. You could spend the next 2 years working on catalyst.

Ian:

Right? Like, I think, really, if you, like, flush it out fully and go into the corners and make it more catalyst. Stuff.

Adam:

You know? Because catalyst is 1 one opinionated visual style.

Ian:

Right. You could have different styles for it. Yep. Yeah. Have, Yeah.

Ian:

Well, I mean, like there's all kinds of stuff

Adam:

every time like a design trends change, you know, we have work

Ian:

to do.

Adam:

Yep. And there's there's, I mean,

Ian:

if anything, that's one of the things that you haven't done as much with tailwind UI. It's like, kinda like you dropped it and that's like, it's kinda had that Similar UI for most of the time.

Adam:

I Yeah. We we we redesigned all of it at the beginning of this year, like, every single component. There we go. But

Ian:

yeah. And But it's not a selection either. Right? It's just you tweak what was there, or can you switch between the 2?

Adam:

So I know Paul's seeing that. If you if you go to, like, tailwind joy.com and go to, like Uh-huh. The hero sections, for example

Ian:

Yeah. Oh, I have seen that. So as

Adam:

long as you're, like, logged in, then you scroll to the very bottom, you go, like, show archive examples. You can see, like, all the stuff that we used to have. And that'll, I think it's almost like we refreshed it, but, like, it was, like, not really super noticeable until you, like, Like, side by side

Ian:

with the old ones, and

Adam:

you're like, oh, wait a minute. Like, the old ones, like, look junky compared to the new ones.

Aaron:

So, Ian, are you saying there's no, like, There's no retro. There's no minimal. There's no I

Ian:

am saying, obviously, you could push this. So, like, yeah, you could have different all different no. I don't think Tailwind's thing is to, like, have 300 versions of everything. Right? But, like, definitely, like you're saying, like, with catalyst has this, like, newer, cleaner vibe going.

Ian:

Right? And then you have, like, the original tailwind UI, which was Certainly a big step up in cleanliness compared to older stuff, but is different from catalyst for sure. Yeah. I don't know if you talk like Something as niche is retro, but you might have, like It's

Aaron:

a good idea to use that. Variation.

Ian:

Yeah. Yeah. Those different variations of sorts.

Adam:

Like Infinimized stuff to design and build sure. And, like Yeah. The fact that, like, tastes change over time, like, is a

Aaron:

Yeah. Right.

Adam:

Blessing and a curse in that sense where it's like, there's always work to do, which maybe that's good, maybe that's Bad. But, yeah, like, after this catalyst thing, I think we wanna do, like, a marketing kit that's, like, similar to the catalyst thing where instead of just being all the tail and dried things that you paste on top of each other, it's like, We've designed, like, 6 landing pages and, like, all these different pricing sections for different tiers. And you can still piece it all together the way you want, but it's actually built as, like, a website. Not snippet. You know?

Adam:

And then if we build that, then maybe 6 months later, we do another marketing site that's a different look. You know? And, yeah. It was and the the things people ask us to do all the time is, like, this is, like, you guys are fucking the ones who Asking for this sort of thing is, like, the Alpine version of, like, toe in your eye.

Ian:

Oh, give us the Alpine. Don't put that on

Aaron:

me. That's easy.

Ian:

It's the Alpine Pod version.

Adam:

But just, like, just the non JavaScript framework y version. You know? Like, the server rendered HTML version. Like, our rails world, everyone was, like, Begging me for, like, a

Aaron:

Have you ever thought about just doing a non JavaScript version? Yeah. I'm sure.

Adam:

Have you ever thought about, like, a vanilla JS version of headless UI? So, basically, I have to write all the code I've already written and reimplement React.

Ian:

You know? In a way in a way. Right? Yeah. And some of that stuff, it's hard to know how what is Genworth, like, doing, moving the needle wise and everything.

Ian:

Mhmm. But, I think that also you don't wanna, like to me, you guys have such a you have a big audience. You have, you know, good revenue and all that stuff. It's hard, like, you wanna do stuff, but, like, saving some capacity is super valuable. Because what if you do not just forcing, like, a sass.

Ian:

Right? But, like, what if you really have an inspirational idea that's like, oh, shit. Like, this is a really good idea. And if you're, like, down these, like, 10 other paths, like, that are all adding a little bit of revenue, then why

Adam:

like, Treadmill y work where there's, like, there needs to be someone running on this hamster wheel all the time. Like, we can't,

Ian:

like, think about it. Yeah. Yeah. Even though you don't even think of the idea to begin with, or if you do, it just gets sideline because it's like, well, we have all this other stuff going on now, and people are asking us for things or whatever. Whereas if you just, like, leave even, like, a little bit of capacity, And Mhmm.

Ian:

You know, who knows what you just

Adam:

stumbled upon as far as on, like, finishable projects, which I I think, like, is always top of mind For me, like, I I'm very cognizant of, like, signing up for something new that's gonna be, like, a permanent distraction. Right. Exactly.

Aaron:

Like a sass.

Adam:

Yeah. Exactly. Like yeah.

Ian:

Yeah. I mean, that's your guy's stuff is so nice, like, that way because I mean, obviously, it's ongoing maintenance, but it's also ultimately, like, on your time frame too. It's not Mhmm. Imposed on you because the database server is down, for instance, sort of things like that, that I've been dealing with where it's like, oh, well, I'm just gonna be up all night with this database babying it through, because that's what has to happen. Right?

Ian:

Which I think, obviously, you guys could definitely have that kind of idea that, like, this needs to be SaaS, and let's do it, But probably want that to be the right the right one. You know, when you're like, yeah, we're really inspired to take that off.

Adam:

I'm not sure that all ever happened for me. Right.

Aaron:

Yeah. We we we gotta we gotta back up. We ran we just ran over the big existential question

Ian:

of Let's go back.

Aaron:

Adam saying, like, isn't that what you're supposed to do?

Adam:

Like Right.

Aaron:

What do you wanna do, Adam? I feel like you're always thinking, like, well, if somebody who I don't know. Somebody who actually knew how to run the business ran the business, they would do it differently. It's, like, what do you wanna do? It's like, what do you wanna do?

Aaron:

True.

Adam:

I

Ian:

don't know. I know.

Aaron:

You say that all the time.

Adam:

I mean, that's the problem. Like, I am doing this because I don't know what I wanna do, and it is Fun for the most part, so until you sometimes you just get into these problems that are just, like, horrible because they take forever and, like, it feels like there's no good answer. You know those problems where it's like, I just gotta pick the least bad solution here and really be disappointed with the way the whole thing went? That's how, like, some of the hard things in catalyst have felt. But when I get to, like, jump off that and work on, like, a new tailwind feature that I can build in, like, 2 days, it's like, yes.

Adam:

This is fun. You know, I like working on that stuff. Yeah.

Ian:

Mhmm.

Adam:

But, I don't know. Like, I could just stop doing all of it, but that's, like, really boring. You know? I don't

Ian:

have anything Right. To replace that Then the opposite with either. Problem. Then you're

Adam:

super bored by the last than be bored because as much as it sounds fun to just, like, play Fortnite with Taylor all day, which I did do plenty of anyways, You do start to feel like a hollow shell of

Ian:

a human being. That makes sense. Yeah.

Aaron:

Yeah. Gotta be something productive. There there doesn't have to be toil, but there does have to be some work. And it sounds like you've been toiling.

Adam:

Some there has to be work. Yeah. Yeah. There's been some toiling. Yeah.

Aaron:

But on this new, like, business expansion stuff, do you wanna do any of it?

Adam:

I think so. Convincing. I'm telling myself that, like, I think things will be actually even more fun here if I can get, like, the right people in place to, like, even help me be more inspired with, like, stuff that we can do and, Mhmm. Have more fun people to, like, work on on stuff with and and and offload more of the stuff that, like, stresses me out. Like, I've done a good job at some of that stuff.

Adam:

And, like, I sometimes have to, like, take a step back and, like, acknowledge it and even notice it. But, like Yeah. For the longest time, like, So much administrative stressful stuff was my problem. And now, like, Peter is, like, my favorite human being in the world Because he handles, like, all of it, and he does it amazing. Like, he's awesome, does all our crushes all our customer support stuff.

Adam:

He's like, we just, yesterday, got, like or when was it Friday? Yeah. Friday. Days go by fast. I finally got, like, our trail Telen registered trademark stuff approved, because that takes, like, years, you know?

Adam:

So we, like, put that in and, like, it got rejected initially because, like, the trademark office thought there was another trademark that was too similar, And the lawyer was like, well, you can try and appeal it, but I give it, like, a 1 in 10 chance so you, like, get anything out of it. So Peter just, like, fucking sat down and was just like, gonna put together the most compelling case we've ever seen for why, like, these don't, like, overlap at all. Even to the point where, like, the day before the lawyer had to send it in, she Emailed, oh, there's just a piece of evidence that, like, we're missing that we need. And Peter got the email at, like, 1 in the morning. His phone buzzed, and he's, like, out of bed, on his computer, Like, getting, like, the evidence.

Adam:

You know what I mean? Just like,

Aaron:

man, just the best dude. Anything. And, that's awesome.

Adam:

But then on Friday, we heard back, like, 3 days after we submitted the appeal, they're like, oh, yeah. You're right. This is fine. That's so stupid.

Ian:

You got it. Wow. Yeah. I would I would have thought 3 years. Like, 3 days, that's great then.

Aaron:

You know what happened? Somebody got it at the office and said, I ain't reading all that.

Adam:

Like, I'm

Ian:

doing this. That must be alright. Yeah. So, like I mean, that's a

Adam:

a I was just gonna

Ian:

say yeah. Yeah. Yeah.

Adam:

Go on.

Ian:

Go ahead, Adam. You got it. I was just saying that's

Adam:

an example of the sort of thing that, like, It's easy to take for granted that I barely had to be involved in at all. You know? I spent, like, 45 minutes total in the last, like, couple weeks, like, Answering some questions for Peter. Like, hey. When was, like, the first time you guys used this word or whatever, you know, and digging through some things?

Adam:

But he, like, put the whole thing together. I mean, Chad GPT did a lot of work too, admittedly.

Ian:

But Yeah. I'm just That's the thing I think you can't take for granted either. It's, like, Peter does is part Time or whatever, and also does the customer support, which, like, I have a full time support person and for, like, you know, less than a 1000 customers, you have who knows how many bazillion customers, and it's like a part time guy who could do the support. You know? Not a lot of support.

Ian:

That's right.

Adam:

That's that's the other way that scares me with the SaaS. You know? Like Yeah.

Ian:

You need the support. People need help. Yeah. Yeah. But yeah.

Ian:

I I don't know. The, oh, man. I had another idea, but

Adam:

I still

Aaron:

haven't really answered questions. Mhmm. Yeah. I still wanna find out what makes Adam happy. So it sounds like

Ian:

I don't know.

Aaron:

And that's interesting that you said working on, like, the super gnarly problems is toilsome to you? Because I feel like that would be right up your alley, like, working on these super, like, Tricky APIs and finding the way through, and I wonder if

Adam:

it's those things are, but some of them are just impossible. Some of them are literally, like, can't be solved. And it's just like like, with Catalyst, I'm finding myself very much in, like, you can't build a website mode. Website's capable

Ian:

of built.

Adam:

You How does that I

Ian:

don't know how

Adam:

any of the current websites on the Internet exist because, like, they're all broken. Every single one on them is broken. Like, here's, like, a classic one. K. You open a dialogue.

Adam:

Right? The ARIA guidelines basically say when you open a Dialog, the 1st focusable element in that Dialog is supposed to be immediately focused. Right? So say you have a dialog that pops up like adding a new customer to your CRM and there's like a first name field, so you've seen this on the web for sure, where you open that dialog, that Feel this, like, focused right away, and you can start typing. Lovely.

Ian:

Yeah.

Adam:

Try doing that on your phone and focusing it right away. The fucking software keyboard pops up. The dialogue moves into the wrong now the input's covered up by the software keyboard and the animation. It all gets it's all janky and screwed up. So it's like, okay.

Adam:

Well, what do we do about that? You know? Can this even be solved? Me go check a bunch of other sites. Oh, they're all fucked too.

Adam:

Am I gonna be content

Ian:

with that though? You know, like, can

Adam:

I ship that? So there's a lot of things that are just, like, settling for horrible stuff. And our solution to that was, like, we're just not gonna focus the 1st focusable element on the screen On mobile because, first of all, like, focusing anything other than an input on mobile is, like, not even a thing. There's no such thing as, like, focusing a button On mobile Right. Unless you've got a keyboard connected.

Adam:

Right? Because, like, all you can do is press the button. You can't, like, tab to it with your thumb. You can't just, like, lick it to, like, almost tap

Ian:

it or whatever. So inputs

Adam:

are the only thing that can be, like, focused anyways. So we just don't focus the first element, but that's, like, a big headless guy too.

Aaron:

That's a great solution.

Adam:

Or, like, there was some and we do solve things, you know, but they're They're not like, today, I spent my whole day working on something that was not on my list of things to do today because we just hit it, and we're like, I thought that was done. But Right. It's not done.

Aaron:

And that was bad. Right?

Ian:

Yeah. That's a bad feeling. Yeah. The the

Aaron:

good feelings are

Adam:

like new CSS feature. Oh, I think there's a cool way we could do something with this with Tailwind.

Aaron:

Yeah.

Adam:

Let's, like, work on this for, like, 3 days and crack it and build the API, and it goes in really smoothly, and then people could start playing with it. Those are, like, the honest things. Like, you need to be a little bit See,

Aaron:

and I feel like but I feel like the thing there is, like, not necessarily the type of work, but the the timeline and the external pressures to have the thing done. Like, if you were if Catalyst was out and you were came across this FOCUS thing, and you're like, I wonder what an elegant solution for that on mobile would be. Oh, I could just not do it. You could crank that out in, you know, 6 hours a day Yeah. Half a day, whatever.

Aaron:

That seems like more fun. Yeah. But the fact that Catalyst has been going for so long and you come across yet another problem, and you're

Ian:

like, yeah.

Aaron:

Exactly. That that is the biggest thing Mars started out. For sure. Yeah. You burned out by the catalyst.

Adam:

Yeah. But that's that's why I, like, I just wanna get it out next week, even if it, like, doesn't have all the things I wanted. Because then after that, like, I can spend 2 weeks on something and release it, 2 weeks on something and release it, 2 weeks on something and release it.

Aaron:

So feels like you'd be happy there.

Adam:

I will be a lot happier in that mode. That's something to where long term, I

Ian:

don't know if you're ready for this yet, but like, like how you were saying before about like, Like on the more on the open source side, like, I think in general, you kind of prefer the open source side and then also, like, sharing other people's stuff. Like, if if they were separate, If they were actually separate and you were the head of Tailwind CSS open source, like, you would just share all the cool stuff and you wouldn't be thinking about anything else because, like, like, yeah, I built this cool thing, and I'm sharing all the cool stuff. Right? And I feel like that could eventually, you could just get there, like you could hire somebody who's like runs the commercial side, essentially. Like this look, Jason Cohn kind of done something like this in a different way.

Ian:

He stayed in business side of it, but it's like, yeah, You could be the open source guy doing the cool open source stuff, sharing whatever you want. Like, the business people, that's their job to worry about. Like, if you Step on some toes over there. Like, even though you still own it, it's like you are just separated Yep. From the business of selling things under the tail of brand.

Adam:

Product or something. You know? Right.

Ian:

And you don't even mess with that. It's like, whatever. You once a quarter, I checked

Adam:

down the numbers to make sure things are going good. Do you think there's someone just out there right now that's ready to, like, Parachute in and be, like, had a product to tell and and succeed at it and do it better than me.

Ian:

Is it had a product or even almost, like, a CEO or something like that? But, like, Or yeah. Maybe it's a

Adam:

Whatever. Their their job though is to, like, make things that Grow the commercial side.

Ian:

Yeah. Yeah. There's tons of People out there. I mean, that they're pretty warm.

Aaron:

Name 1 Make them do it. Yeah.

Adam:

Name 1 I

Ian:

mean, I'm not in those circles, but I feel like they're definitely I mean, this is how every VC company works. Like, They, you know, they plan a CEO in there after they do the investment or whatever, like, that's very common, or the founder eventually leaves and they get a CEO. Like, this is all very common. It's not Common in our circles, but you do hit a lot of things that aren't as common in, like, the bootstrap founder circles because of, like, your guys' scale In mobile ways seem harder

Adam:

at smaller company. I'm I'm sure I'm just making excuses here. But to me, it's like, I can understand how, like, T Mobile can replace their COO with a different COO. Know what I mean? Right.

Adam:

And how that's like, I went to, like, business management school, so I'm good at this job.

Ian:

Right. You know? I don't know. I don't think so. I think that people have, like if you find somebody who say, like, has 2 successful exits from companies that they did a great job running them from being, you know, single digit millions to A 100,000,000 or whatever.

Ian:

Like, those people are out there. I mean, obviously, you need to find

Aaron:

somebody to

Ian:

jive with and all those things.

Aaron:

Get him, but Jason Code, he'd come in and run the commercial side. Right?

Ian:

Yeah. He would be he'd be capable of it. Right?

Adam:

But what would he do? Like Could he not? How how would the how would the right new templates get built?

Ian:

The thing I suspect and I'm totally speculating, but the thing that I always think about in my business if I had somebody from the outside come in and run it is they're gonna see all kinds of Cool stuff that I don't see because, a, like, I'm thinking exactly like that. Like, what's the new template, or how do I build the custom fields and the new version of help Right? Or, like, I'm down here in the weeds. They're, like, not even programmers. Right?

Ian:

They're like, what do we do Right. To, like, Increased revenue given that we have this big audience and we have these assets and this thing going on. Right? And then, oh, well, that logically, we should have this other line of business why we should do something.

Aaron:

We should have $100,000 enterprise contracts.

Ian:

We should

Aaron:

have enterprise. I was thinking about a template. Yeah.

Ian:

Not that that always works. And then, of course, there's trade offs. Like, especially if you're doing it yourself, it's like, well, you're gonna hire that person. That person needs other people. Like, now you're getting into, like, do you wanna cut into your revenue and you guys run a very nice profitable business and, like, Obviously, everything, you could just run it the way it is and do nothing and be totally fine.

Ian:

So, you know, that's gets into, like, your desires and motivations and what you wanna do there, But I don't think it's possible to find those people.

Aaron:

What does Jonathan do?

Adam:

Helps me with anything that he can help me with that I need Help with. So for the last forever, he's just been, like, building stuff in Catalyst, running into hard problems, letting me know that he's running into these hard problems, And Yeah. Working on them with me. He does, like, 1 on ones with people on the team. Before, like, Peter took on a bunch of stuff, he was helping out with support.

Adam:

He kinda came on as, like, life raft, Human life raft. Right. I remember that. Yeah. So he's totally happy to just help wherever there's help to be needed, You

Aaron:

know? Mhmm.

Adam:

Yeah.

Aaron:

Yeah. Yeah. I wonder That's

Ian:

a lot of options.

Aaron:

I don't I don't yeah. I wonder if he had more of a focus on the commercial side and you had more of a focus on the open source side, does that make any sense at all? I don't know what he wants.

Adam:

In some ways, yes. But then I feel like the biggest risk of that, at least depend if the commercial stuff is The same format that it is now is, like, Tailwind improves best when, like, the people building the templates also have the power to improve Tailwind. I think if you have, like Yes. Tem template and templates or whatever and then, like, Tailwind CSS, it's like ivory or academic improvements to Tailwind happening instead of, like, Size 5. We need fucking size 5.

Adam:

Okay? Right. Build size 5. You know? And and honestly, like, this is what the company was like For the longest time, like, when we had the 2 guys that were designing and building the templates, they just had a bit of a different attitude than me around it.

Adam:

Like, Their threshold for, like, just, like, finding some way to get Tailwind to do the thing they need to do was way higher than mine. So they would just make it work. You know? And I would be like, I wanna make this easy, you know, in Tailwind.

Aaron:

So I don't know that it's mutually exclusive, though. Right? If somebody is in charge of the commercial side and they hire, you know, whatever, 5 designers, and you build out a bunch of templates and you sell a bunch. That doesn't preclude you from making templates when you feel like it, But that also releases the pressure a little bit from you having to do it. Mhmm.

Aaron:

And it also doesn't that doesn't eliminate the possibility that they build the 90% template, and then you come in and you're like, hey, this all sucks. Let me go change Tailwind real quick and make this part better. Yeah. Like, you could still get maybe the benefit If you're trying to come in at the end and make it all

Adam:

Yeah. And maybe, like, the thing that the business guy does is actually, like, they're the one out there, like, Making the deals with the external designers who are designing things and whatever.

Aaron:

And I

Adam:

think that's something that, like, even Peter would be really good at here, you know, just Sourcing people, kind of pitching them on what the deal would be and kind of steering that along and whatever and Working with, like, a developer here to build stuff out, like, I think that is like a delegatable commercial side of things

Aaron:

for sure. That feels like a playbook even. Like, I like I like having, you know, I like having repeatable things that I can do, and that feels like a pretty good playbook where you say, alright. Go find a designer. Do a template.

Aaron:

Here's, like, here's our contract. Here's our money. Here's what we expect out of them, then we'll release it and get a big Splash. We'll do a co promo, and then we'll move on to the next one. That feels fun.

Aaron:

I feel like that's the same if you wanted to spin up a services side where you we take your We take your pristine designs and turn them into pristine HTML CSS with Tailwind. So that's that's a playbook too. That that may, You know, that may even be super high ticket playbook.

Adam:

Yeah. That's and that's a good example of something where, like, you just you need, like, a machine builder, you know, to do that Mhmm. That type of work, someone who can, Yeah. Put together the right people to do very, like Yeah. High leverage sort of puppet master work.

Adam:

You know? Yeah.

Ian:

And you get it is a very different kind of business, though. Right? Because it's like it's not there's no scale in consulting. Like, you have massive scale with what you sell now, And it's true. The the scale, like, it's 1 to 1 with the number of hours you have to commit to it.

Ian:

Right? So you have to have more people to make more money. And I again, like, this is all this is all one of these things that kill and could sell all kinds of stuff. This is like how I feel about DHH. You're very DHHS.

Ian:

Like, DHH could come out with a toaster. Lots of people would buy a toaster. They'd be like, DHL

Aaron:

toaster. Say the toaster doesn't work. You shouldn't sell the toaster.

Ian:

I'd say this toaster sucks. Why is there only 1 single one?

Aaron:

Why is there

Ian:

only 1

Aaron:

single toasters?

Adam:

Only pay for it once. Like, no

Ian:

one wants to buy a toaster when it's not a subscription.

Aaron:

So It's like I've been selling toasters for years. Nobody buys toasters.

Adam:

Own house. They they want a

Ian:

cloud toasters. They go to Starbucks. They get the toast. They toast in their house anymore. Come on.

Ian:

Where's your bed?

Aaron:

Three initials. D h h, and we're off

Ian:

the rails. There you go. But wait. Well, you gotta decide what you wanna do. That's what I do think, My a plan, if I was you, I'd be like, hey.

Ian:

I'm okay with how things are. It's awesome.

Adam:

I am generally, like, no. That's right. Yeah.

Ian:

And that's like yeah. And it's like yeah.

Adam:

Parallelize things a bit more. I'd like to be able to, like, feel like we could get a few more things done a little bit faster and be a little bit less bottleneck. But that's kinda that's kinda it. Otherwise, I'm, like, pretty pretty content with the the whole setup. Doesn't need to be a whole different system.

Aaron:

Any of then.

Ian:

Yeah. Don't play this.

Aaron:

People, take some stuff off your plate, play guitar, play Fortnite, and Yeah.

Ian:

Do the

Adam:

stuff you wanna do.

Ian:

And but keep that capacity. That capacity could Be very valuable. Yeah. You just don't know when it's gonna be valuable. You know?

Ian:

It's like you don't know when you're gonna have this great idea. Like, you didn't know 5 years ago or whatever, you'd be Selling tailwind UI, and No. It would all be great. Mhmm. Right?

Ian:

But you had enough room back then for it. Like, you Sold the book, and you made some room in your life with that, and then that led to the next thing. Right? So, like, everybody gets some

Adam:

feel like I'm kinda waiting for a next

Ian:

thing that stuff. In life. We'll still like what it is. It's still

Adam:

nice to act. Maybe. I don't know. Still like what I'm doing, but, I've been doing the programming thing for, like, a long time now and, like, longer than any other thing that I kinda got insanely obsessed with and good at in my life. You

Ian:

know? So But that is trickier too, obviously. Here's what

Aaron:

you need. You need more tinker time. Gotta get catalyst out the door, and you need you need tinker time. So feel like your best ideas having, like, observed from the outside or when you're tinkering, Yeah. I'm building Kite tail, and you're like, actually, wait.

Aaron:

I'm not building Kite tail. I'm building tailwind.

Adam:

Yeah. That's like Kite tailwind is gonna grab

Ian:

it too.

Adam:

It's like the Yeah.

Aaron:

Yeah. You need some more some more just f around and find out time.

Ian:

Yeah. We'll get but, also, you know, it's like I think Adam started at the very beginning with, like, feel too old for some of this stuff, and I feel like you're obviously not too old in age, but I do feel like you're in this phase of life that I definitely felt At your guys' age, it was like you have the the young kids and stuff. Like, it's so hard. Like, it just keeps so much energy. Yeah.

Ian:

Yeah. Like, you're not gonna

Adam:

be Even though the kids go to bed at, like, 7, like, you wanna tell yourself this vain to see stories. I'm like soon. Okay. At 7, gonna be able to, like, go down to my I'm gonna get, like, 3 hours of work done. It's like, no.

Adam:

I can't do anything at 7.

Ian:

Right. Exactly. Yeah. So it's like so in that way, you have, like, you have probably, like, an 8 8 years, honestly. Like, I'm not saying you couldn't do something big in the next 8 years.

Ian:

You absolutely could, but at the same time, if you just give yourself 8 years and they're like, yeah. I'm gonna be doing awesome stuff with tailwind, whatever, blah, blah, blah, and then, like, Kids are bigger. Yeah. Brain capacity frees up a little bit. It's like then maybe that's, like, the phase 2 of, like, others new type of things, but, like, it It is very hard because, like, just yeah.

Ian:

Just whatever. Being a reasonable father to your kids is, like, a lot of overhead. And so Like,

Adam:

I I have to leave Right now, because it's piano lesson time. You know?

Ian:

There. You got it. There you go. Alright. Well, thanks for coming on.

Ian:

I really appreciate it. It's a perfect ending note right there.

Adam:

Thanks for having me. Guys, boys, have

Ian:

fun of piano lessons. Will do. Alright, man.

Adam:

See you. Alright. See you.

Ian:

Alright. Let's wrap up the show then. Thanks everybody for listening. You can follow us at mostlytechnical.com, mostly tech pod on Twitter, and, mostly technical podcast atgmail.com. Thanks a lot.