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.
Right.
Tell everybody we're here back again with Aaron and a special guest, Adam Wathan.
Welcome.
Greetings, gentlemen.
Thank you for having me on.
Aaron
00:00:13 – 00:00:16
You ready to talk about who knows what?
We have no idea.
We probably not even tailwind.
I probably have notes than you guys do.
So Exactly.
Everybody comes out here with all these notes.
So fun.
Hey.
It's a serious podcast, man.
It's a
it's a important opportunity.
Yeah.
Dude, I love that mindset.
An opportunity to come on the podcast.
Boy.
I don't know.
Before we get too deep, I wanna check-in on you guys.
Aaron, how's the babies?
Adam, you have a little baby, still pretty little.
Right?
What?
4 months old or something?
4 months yesterday.
Yeah.
Yep.
There we go.
Look at that.
I'm right on it.
You are well formed.
Yep.
Aaron, so how's it going?
Aaron
00:01:00 – 00:01:08
Yeah.
They freaking kicked our butts this weekend is how it's going.
Nice.
So, you know, we have a million people helping us.
Right?
Aaron
00:01:08 – 00:01:15
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.
So
That's not worse.
Friday.
Aaron
00:01:17 – 00:01:20
I know.
This Friday was the first
I need people's help the most on, like, Christmas day, so that's when you need to work then.
You know?
Like Yes.
Oh, the kids have a day off because it's like a holiday?
You don't have a day off.
Aaron
00:01:33 – 00:01:36
also closed on the weekends.
That's how they get sick.
Care of my kids when there's, like, a virus in our house?
Unfortunately, that that is when you are most needed.
Aaron
00:01:43 – 00:02:02
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, which is like, oh, we can still survive, but also still have money to eat and stuff.
So nice, good compromise.
Aaron
00:02:02 – 00:02:22
Friday night was the first night she didn't come.
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.
Aaron
00:02:23 – 00:02:40
And then I got to get up and, you know, Jennifer stays with the little kids.
I got to 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 his man, rough weekend.
So
yeah.
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 Wednesday,
you know, and then Right.
Split up.
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.
The reverse.
Yep.
Do you guys have au pair or anything, Adam?
No.
We we had a nanny helping us, like, for a while, and she just finished up with us.
So we are trying to find someone else, we have someone who is interested that might be starting in January.
So hopefully 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.
Right.
And I'm like, I don't know.
Like, there's I love kids, but they demand a lot of you.
And, yes.
Yeah.
For sure.
And it doesn't stop.
It just keeps it changes, but it doesn't really end.
Aaron
00:03:56 – 00:04:13
But it's gotta get more fun.
Right?
Like, I I I honestly different ways.
Hard as the as hard as the 2 year olds are, I think I enjoy that even more than brand new babies.
Like, from a, like, life is easy perspective, brand new babies, you just kinda feed them and you plop them down and they just kinda lay there.
is the easiest of of the household.
You know?
Yeah.
Cool.
She just sits there smiling and googling and drooling on things and whatever.
Aaron
00:04:23 – 00:04:25
can, like, put them in a container.
You know, you can put them
in the There's, like, there's,
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
00:04:34 – 00:04:35
they get mobile.
Yeah.
And then like my 2 year old, my thing is about the same age as your older kids, maybe like a little bit younger.
Her birthday is in April.
Aaron
00:04:43 – 00:04:43
May.
Yeah.
Yeah.
So she's at, like, peak terror mode.
Totally unreasonable in every way, but capable of even opening the baby gates that lock now.
Like It's a genius.
It's a yeah.
Unstoppable hours.
Aaron
00:05:01 – 00:05:24
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 like, okay.
I don't it doesn't matter, and so I'm not gonna fight you.
Aaron
00:05:24 – 00:05:26
But it's like, why this?
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.
Right?
They have like, oh, are they sad temporarily?
Are they like actually depressed?
I'm worried about or they wanna go here and there.
But, like I feel like this
guy is going to sleep, like, between, like, ages 7 10, you know, where it's
kinda like is about.
Right?
They
they're at their, like But there's still 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.
Right.
You know what I mean?
But
Aaron
00:06:05 – 00:06:07
And they still like you.
They still wanna hang out with you.
Right.
That seems No.
That's what I'm more excited about.
You
know?
Yeah.
Yeah.
All that stuff.
Like yeah.
The real, the real world pro this is like, overall is really nice when they're big, because yeah, there's just so much.
It's nicer.
And you grab a, I mean, we have like with my oldest, I have like political conversations.
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 these 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.
What have we gotten ourselves into?
Aaron
00:06:51 – 00:06:59
I just I just pounded at Celsius, and now I'm I'm all amped up.
But I don't know.
I don't know if I have energy for that right now.
Especially when you go over the 22 because that we talked about this on the show before.
3 plus, it it is it's complicated.
There's a lot going on.
Everyone said, 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,
take I gotta work both these kids by myself.
now it's like, what felt like solo parenting before is like normal every day 247 now because, like, someone's taking care of the baby.
You know what I mean?
Yep.
Exactly.
Yes.
And then that stays because, like, oh, the one has soccer, but the other 2 don't have anything to do.
Or it gets even worse than that.
The one has soccer and the one has ballet and the other one's got just the school thing at school.
And now you're just like, well, how the hell are we gonna do that?
Like, there's only 2 cars and 2 of us and, like Alright.
Aaron
00:07:53 – 00:07:56
We gotta talk about something else.
You're bumming me out, man.
Making this a parent podcast.
It's awesome.
It is awesome.
It is awesome.
But it is it is a lot of work.
It's a lot of work.
There's a lot of work.
Businesses and everything else going on.
Aaron
00:08:03 – 00:08:04
That I am exhausted.
Yeah.
Exactly.
Especially Yeah.
Where you're at, super exhausting.
Yeah.
Oh, man.
Alright.
So what do we got going on?
What what oh, man.
There's so much to talk about.
I I don't know.
I mean, I don't know if you have a list, we could start with your list.
I I Yeah.
Well, your list is so serious.
Very selfish, but I I'm talking 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.
1, this stupid UI kit project I've been working on for the last 7 100 weeks.
About that for sure.
Every day for
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 other stress thing that's on my mind all the time.
Yeah.
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, so we kinda talked about this idea of, like, a tailwind marketplace and trying to figure out what we could change in our companies.
So Yeah.
I really want to talk about that.
We could focus more on, you know, the high value stuff that we do and not so much on, like, trying to commercialize it, which, whatever, we've got to do what we've got to do, but it'd be kind of nice if there was a way out of that, for a way to not feel like anytime we're working on Tailwind, we're, like, letting something else, like, stagnate.
You know 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 you can ask.
Aaron
00:09:35 – 00:09:38
I'd say we start with UIKit.
What do you think?
Yeah.
Let's go with UI kit, because that'll feed nice into the other one.
Yeah.
Especially the marketplace stuff, I definitely wanna talk about.
And so so catalyst.
Right?
That's gonna be your UI kit.
Yep.
And I know it's been yeah.
What?
A year you said you've been working on it.
I'll say, like, the initial the the plan, you know, like, having it on the road map has been multiple years.
You know?
There's always been this, like k.
We started doing the templates, and even, like, a year before we did the templates, me and Steve, like, kinda decided we wanted to do those because we wanted to solve this problem of, like we wanted 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 style design wise, instead of having to go and, like, update 500 components, like, make the whole thing go fresh, we could just do, like, well, that one's old.
We'll just make a new one now.
You know, it's a new website template, and it's like
Aaron
00:10:31 – 00:10:31
looks like
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 kinda 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 one button and everything you need is in your clipboard.
Right?
So it has to be this copy and pastel 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.
It just all has to be effectively in mind in this, like, one big snippet, which is nice because, like, having this super
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 Tailwind UI.
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 at, like, okay.
Let's go the total opposite set of trade offs.
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 file, drop all the components into your project, if you want to 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.
Started working on it properly in, like, May, demoed, like, the first 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.
Right?
Dude.
So change, like, the entire structure of the APIs.
Like like, one one example is, like, initially, we started with k.
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, one 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 shorter because it's just for, like, putting, like, a credit card CBC 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, one component, even if I let you put a class on there, we say, like, 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, this is
horrific.
So we trashed the
It was built at all as, like now it looks like HTML.
You know?
It's not any more condensed than 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 a nightmare is have you guys ever heard of forced colors mode on computers?
No.
It's a Windows thing where Thankfully, what?
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 kinda have to consider all this stuff.
And this kinda just Right.
It's like an accessibility consideration, like anything else that we do.
Yeah.
So trying to support, like, force colors mode, like, basically, you forget about it constantly, and then you go and enable it.
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 Yeah.
Trying to get all that stuff working.
And then you notice so when I disable my checkbox, it still disappears.
Fuck.
figure that out.
So, you know, we're working on working
on that stuff today.
Keep finding, like, every component you think is done, you go back and 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 and I hope Caleb Horsey
Aaron
00:14:28 – 00:14:28
is listening
to this because he's just starting down this path right now.
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 in the company is gonna quit if that doesn't happen.
Because it's just been like, it feels like it's just like The grind.
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 to, like, 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 been 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 gonna have all your form stuff like input, text area, radio, select, checkbox.
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 if 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.
So Right.
Gonna keep working on things
Aaron
00:15:54 – 00:16:08
For people that aren't familiar Mhmm.
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 a paid package?
Like, what are you thinking here?
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, one time, lifetime access, you get everything that we ever make.
You know, 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 to be released, This is the same sort of thing, so it is it's paid in the sense that, like, it's part of paying for like the Tailwind premium sort of access package.
Right.
We'll sell it individually too, but, like, no one buys the stuff from us individually.
Everyone just buys the Right.
Call access thing.
Yeah.
Yeah.
Yeah.
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 scheme 2 years later, whatever.
Like this is like a pretty humongous thing to to add to what you're getting there.
So that's pretty huge.
Yeah.
I mean, thankfully, a business model seems to work in the sense that, like, the 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 I'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.
You won't care.
You'll be you'll be happy to hang it up.
Yeah.
I'm just, like, pulling it
in my head.
You know?
Like, we'll be even faster.
Yeah.
We we don't have to
Aaron
00:17:46 – 00:17:48
go that far.
You could just play guitar in your office.
You could just log off.
We'll we'll say that.
Yeah.
I mean, I 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, 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 fine.
Like, the core has some core accessibility stuff and all that, but then like all this stuff that you have to do on top to 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.
That's kind of the value prop in the large part.
And obviously, like, it's always designed nice and everything.
Although I do think there's more competition in the design, nice space than there used to be.
Right.
So, but in the obsessiveness, I think, I think you guys are still first place in obsessiveness.
Right?
So I do think that kind of pays off.
Right?
Yeah.
For better or for worse, I do think that is a character trait of mine.
Yeah.
I I think, it's just us trying to do our take on it.
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 Yeah.
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.
Them to buy, you know, usually.
So And
you guys are, like, your 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
Improve it and all that stuff.
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 it 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?
But at the same time, like, building this thing, we've made so many improvements to 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, because I've been trying 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,
Aaron
00:20:44 – 00:20:44
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.
So, like, the classic one everyone has always wanted is, like, some utility to set width and height at the same time for, like,
Aaron
00:21:01 – 00:21:02
avatars and height.
Love that.
So that's, like, size 4, size 5.
Finally.
Or, like, something to target, like, child elements.
We added, like, native 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.
So
Stuff like that.
So lots of improvements coming to Tailwind.
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?
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.
And this year, especially, has felt like that, because 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?
And that's, like, not normal for us, because this project is just so
hard.
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, we've always had that here.
UserScape where it's like, we have a few products, like, obviously, help spot's the 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 Lara Con online even.
Like, I would do Lara Con online and, like, we kinda maintain help spot and support customers.
We do Laracon 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 help spot version.
We didn't do anything with Lara 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 Yeah.
Just getting the zone on something else.
The world notices that, or do you think you just notice it?
I think it's just me noticing for the moment.
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
00:22:52 – 00:22:53
because everybody else
busy with their own stuff.
Aaron
00:22:54 – 00:23:03
Else is doing the exact same thing.
Yeah.
Everybody else has their head down with their stuff for Yeah.
3 months at a time, and then they look up.
They're like, oh, wow.
Aaron
00:23:03 – 00:23:05
going on?
Right.
Yeah.
Nobody Yeah.
Nobody notices anything.
That's kinda true to some degree.
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 1013.4, that we have this UI 1 point 8 or whatever the hell it is, and then they'll be
you should do that before Christmas?
I feel like you should really wait till after.
Aaron
00:23:23 – 00:23:24
You think so?
I don't know.
Because, you know, if something goes wrong or whatever, problems,
don't don't know.
It's just like you were gonna have
Aaron
00:23:32 – 00:23:35
go wrong?
What's gonna go wrong for CSS?
No way.
Guys.
I know.
This is the genius of the Tailwind business model.
It's just whatever.
Nobody's nobody's sites down because of it.
Like Yeah.
Exactly.
It's not like we're launching a SaaS or something that Right.
People are using There's some
tailwind gonna use it over that time for real stuff either.
So,
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 to the previous one.
Like, yeah.
It's not like the end of the world.
So not Yeah.
We'll have too big a deal.
Oh, we have 2 things.
Yeah.
If something obvious is hugely broken.
Yeah.
Aaron
00:24:10 – 00:24:27
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.
And I feel like that's a good way to capitalize on that deadbeat
for a little bit.
Projectweed.
Yeah.
Yeah.
Exactly.
And if people find bugs, they're not, like, angrily finding them,
you know, because it's just, like, well, I'm
just gonna gonna go eat that gingerbread house over there now.
You know?
Right.
Yes.
Gonna move on.
Yeah.
Yeah.
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 projects, whether it's a SAS or catalyst or whatever it is, tailwind keeps moving forward.
So you have like that, those real world use cases and yeah, I think that, I mean, I think Calis is like perfect for that.
Like you've obviously found tons of stuff in there.
Yeah.
More than if you were building a SaaS or something like that.
I think really.
Because like you're just so down into every corner components 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 Mhmm.
Just an expectation of that there's bread crumbs or whatever UI component that you might not necessarily inherently 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, it's unbelievable.
Like when you first released it, it was like, oh, it's done.
It's cool.
Mhmm.
It's, like, 10 times bigger now.
It's like there's everything in there.
And then apparently, lots of stuff still missing.
Still lots of stuff missing.
Yeah.
It's Still a lot.
So still don't have text shadows.
You know what I mean?
Aaron
00:25:53 – 00:26:01
Yeah.
That's fine.
I kinda wanna hear about headless UI.
Like, where does that fit in with catalyst?
Because headless UI is, like, that's a sleeper hit.
Aaron
00:26:01 – 00:26:03
That's one of my faves.
I love headless UI.
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.
Mhmm.
And and at the time, there just wasn't all these options that there are now.
Like, I think all that existed was, like, reach UI, and it had, like, some limitations on our side where, like, it was hard to style with utility classes.
That was, like, the other thing.
Like, a lot of 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.
So we built headless UI to sort of be like a a 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 Tailwind July, and that's always been, like, the driver of adding new stuff to to it.
I think if we had, 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.
Well, now there's, like, Gradics, 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 And yet.
Using one of those.
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 catalyst 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 field set, you can put disabled on the field set, and it'll disable all the elements inside of it.
like, a native HTML, field set works.
But a lot of these libraries, like, don't even have a field set component, so we have to build a field set.
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, and 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 fault 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 reacty 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 and, like Yeah.
That's stuff that people are gonna be afraid to touch, I think, unless you're, like, a super React expert.
eventually just got to, like, one 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?
I'm talking about.
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?
Yeah.
And 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 new version of Tableau.
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?
Yeah.
Yeah.
So, yeah, I'm actually really excited about it.
It kinda, like, really reinvigorated my passion for that project because I kinda, like, took for granted, like, the the advantages of controlling the whole stack there.
Like, now a catalyst is just being built in this mono repo where we have like a 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 anything.
So instead of, like, having to be like, okay, well, you know what we should do?
I guess we'll open an RFC on radix or react or whatever and try to Wait
for 3 months.
A good idea.
You know?
It's whatever.
That's, like, not their problem or fault.
You know?
But if we can just, like, hey, Robin.
Can you just, like, make this work?
5 minutes later, it works.
You know?
Awesome.
Oh, yeah.
So
yeah.
So I I'm excited about that.
I think we'll do, like, a redesign of website and stuff too.
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 would be cool.
We also added, like, the dialogue or sorry, the drop down positioning stuff.
So classic.
Aaron
00:31:28 – 00:31:29
Yeah.
Float UI or
That's good then now.
I kind of was stubborn about that originally because I thought, okay, it's headless UI.
It has no opinions about styling.
If you want something to be, like, anchored, like, install the library that does that, wrap the headless UI 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
Agreed.
Maximum convenience.
Yeah.
Yeah.
You know?
Aaron
00:31:54 – 00:31:55
So as you're building out
Like I was just gonna say, like, with a drop down, like, I only ever want the drop down dropping part near the drop down part.
Like, you know what I mean?
Like, it's not even like, it's just like, that's just how you want that.
Yeah.
Right.
I always want that.
Nobody does.
If you like resets the window, you want
it to flip to the other side so that there's room for it.
Nobody wants it to show in the far right corner when you click a thing that looks at a drop down.
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
Yeah.
So if you do do what you can.
Yeah.
Aaron
00:32:24 – 00:32:33
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?
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 1 before next week.
But we will go back and, like, port all that stuff over for sure.
So that'll be cool.
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.
Yeah.
Like, did you end hiring anybody, or you just the core team's been working
on this?
I spent a lot of time drafting job postings and thinking about what roles we needed and stuff like that.
And 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 anymore.
In
yeah.
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.
So yeah.
Right now, we're we literally have 2 and a half employees right now, like, 2 full time, one part time operations guy, and then there's, like, me, Steve, and Jonathan.
You know?
We're the partners.
Wow.
guess that's so funny because 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?
But there's so much more to do.
Core.
You know?
So always more to do.
Aaron
00:34:15 – 00:34:19
Wow.
I really thought y'all were bigger.
So just Robin, Jordan, and Peter?
Yep.
That's it.
This whole whole team.
Aaron
00:34:22 – 00:34:23
Y'all are doing a lot.
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 it, like, stays stable.
But for us, like, we only hired our first people, like, two and a half years ago.
You know?
So this is, like, the first customer to churn.
You know?
If you
And no one's been, like, brought in, like, on the other side.
So
Yeah.
Yeah.
That's that's
so funny.
We got a higher
in here.
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, it took, like, 6 months to replace because, like, when you're small, it's like, yeah, making time, like, do the job description, do the search, interview everybody, and you have all the stuff you're working on, and it's like, well, I know.
Yeah.
Just getting into that's gonna take then then nothing's gonna literally get done for for 2 months while I go down that road.
So brutal, dude.
I 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
Is, like, getting fired from your job is actually, like, less inconvenient for you than, like, you quitting your job is
for your employer.
You know?
Like, it's easier and less work for you to find
for, like, your employer to find someone to replace.
Aaron
00:35:50 – 00:35:51
I dare I dare you
It would be so over.
Oh, I would I would be nuclear for sure.
I mean, at least on the podcast, there's, like, some, like, tone of voice and, like, some context and whatever.
Yeah.
Aaron
00:36:02 – 00:36:03
Hey.
We're having fun here.
Aaron
00:36:03 – 00:36:06
having fun, aren't we, guys?
We're laughing.
We all a joke.
We won't we won't clip that one.
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.
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.
Yeah.
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 a person that's, like, hard.
Like, 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.
It's not always true.
It's not 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 Yeah.
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, Erin, 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, you know?
They 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.
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
00:38:26 – 00:38:30
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.
Aaron
00:38:35 – 00:38:38
So if you put in just, like, a little bit of effort
Extra work.
Yeah.
Just a little bit of GitHub, link
Aaron
00:38:41 – 00:38:48
to a blog post, link to Twitter, link to a video.
I for.
Aaron
00:38:48 – 00:38:57
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, oh.
Aaron
00:38:57 – 00:38:58
That helps.
Yeah.
It's too easy.
Yeah.
But I do I've I say this 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.
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 a cover letter and have put a little effort in just, like, pop right out.
Aaron
00:39:23 – 00:39:31
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 that you just shot?
Yeah.
That's just your shot by saying replying and saying I would love to work with Laravel?
Aaron
00:39:40 – 00:39:51
Yeah.
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 as one link to your inbox and not, like, 80 links of
Aaron
00:39:52 – 00:39:57
Hey.
Here's some random crap that I've done before, but, like, specifically, here's the thing you're looking for.
Especially with video, like, make an edit.
Like, here's an edit of the things I've done.
Yeah.
Make a video.
Like, here's the thing I've done.
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, like, I know exactly ins and outs, like what pain everyone that I like hiring.
You know what I mean?
But I didn't have that intuition before.
I think there's a difference too, which is this also does stand out to me when hiring.
But it's like, if you do that extra little leg work 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
00:40:43 – 00:40:44
I'm bending the needle.
Yeah.
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.
So 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.
I can see what he's been complaining about.
Right.
And then probably he's hiring this job for, and like, like there's no excuse not to tailor that, more specifically.
And also if it's these companies that you know really well and admire, like a tailwind, like Larabelle, whatever these, like, Internet famous company you're applying to it, Like, yeah, you gotta put in that extra effort there.
Aaron
00:41:16 – 00:41:19
Didn't Robin do something awesome when he applied forever ago?
Yeah.
I mean, he put together, like, a really good little website job application thing that kinda outlined a bunch of Yeah.
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?
Yeah.
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.
So it's not like this, oh, I'm waiting to see you do what I think you should do.
Right.
So for me and Robin, it was like, okay.
Let's see if we can build, like, an SVG charting library, and let's do it in Svelte.
Like, neither of us have ever used Svelte or ever built a charting library.
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.
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.
that was great.
That's cool.
Aaron
00:43:02 – 00:43:02
That's a cool process.
Yeah.
Yeah.
Now now you could just sit there, pair chat GBT ing, like Svelte and SVG and Svelte and have it produced.
That's true.
Yep.
So I was 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 a director of engineering.
You don't have a lot of people to direct, really.
Yeah.
But someone who can help me out there that's, like,
just a really formalize some stuff too, maybe.
Like
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.
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 people.
Like, you kind of 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?
Right.
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
Yeah.
That seems like a big advantage.
Aaron
00:44:30 – 00:44:32
Like a like a Hugo over at Tuple.
I mean, obviously Yeah.
Someone has sort of 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 on the team, especially since, like, we're gonna be maintaining headless UI, like, pretty hardcore going forward.
Yeah.
There'll be a bunch of stuff there, I'm sure, over the next 6 months with Yeah.
Aaron
00:44:59 – 00:45:00
Between that and Catalyst.
Yeah.
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, you know?
So that That's cool.
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 than 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.
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 to each other at all.
There's overlap there.
CSS animations and, like, database query optimization.
Yeah.
I think of, like, our company is, like, the back end of the front end.
It's, like, all we do.
It's, like, we write
I put it.
Yeah.
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.
Aaron
00:46:00 – 00:46:03
Because Tailwind is basically a JavaScript project at this point.
Right?
Yeah.
Yeah.
You spit out It's a JavaScript
program, you know?
Like Yeah.
Yeah.
Yeah.
At one point,
you guys were gonna rewrite it in Rust or something.
Did that ever happen or not happen?
We rewrite we rewrite part of it in Rust.
So that's gonna be released in the beginning of the year, but, 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.
It's actually multiple regular expressions that run run through each other.
I love that.
And it's horrific.
Like, if you need to add, like, oh, we need to oh, like, a 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 that's, like, where do I put an asterisk
in this regex for, like, that Oh, yeah.
K.
Donate.
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, keep track of things, and it's all doing, like and, like, I don't even know.
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 do, 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 multithreaded, and this is, like, a perfectly parallelizable task
okay, let's just, like, read all the classes on
every table.
All these files.
Yeah.
Yeah.
So that's, like, way faster, which is cool.
And also that
real programming stuff there.
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?
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.
Really?
With the.
Yeah.
That's awesome.
Yeah.
And Robin had to write a bunch of crazy stuff.
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.
we're not looking in, like, gitignore files.
Because, yeah, you can still opt into that stuff, but, like, by default, we're trying to, like, look in in sensible places.
So now,
Aaron
00:48:53 – 00:48:57
yeah, yes.
Ignore vendor and node modules and stuff like that Yeah.
By default?
Yeah.
But you'll if you have, 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, auto discoverable, like the way that 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 Right.
Do any of these notify us about templates?
And so, yeah, this is what I mean.
There's, like, lots of work to do.
Aaron
00:49:41 – 00:49:42
That's cool.
But, yeah, that's, like, the visual template.
I just want it to be as simple as possible because right now, it's, like, JavaScript configuration files, plugins, there's things you do in CSS, there's all those configuration you have to do.
There's, like, at tailwind stuff.
What the hell does that mean?
You know?
So, like, tailwind 3 dot 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, like, make PRs to every popular framework to, like, auto detect the presence of Tailwind and configure it for you.
Don't have to specify your paths.
And 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.
So if you wanna override the colors, you just, like, override some CSS variables in 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, but it's weird in some situations.
Like, in the rails world, everyone uses our, like, standalone CLI, which is, like Yeah.
We bundle node into, like, an executable.
So they don't even have a nodemodules folder or a package dot JSON file or anything, but they've got this, like, tailwind dot config dotjs file for some reason.
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,
putting some in for this demo.
Everybody regularly does.
Your CSS file.
You know?
Yeah.
Aaron
00:51:19 – 00:51:22
And if we compute Their JavaScript story is so wonky over there.
It is.
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.
It just kinda feels simpler.
I I see tailwind in my head now as more like Sass than it is like Bootstrap.
Aaron
00:51:40 – 00:51:41
You know?
It's like a tool for processing your CSS.
So kind of just thinking about it that way, it helps clarify, like, where some things should be, how some things should work.
Anyways
I like it.
I definitely hate when I have, like, just one 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, remember like, it's like Yeah.
I have a blank slate of work.
Oh, and then it adds, like, my event listeners folder to the town of convenience.
Yes.
Yeah.
I gotta, like, go in there.
Yeah.
Exactly.
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 we're talking about, and we've talked about this in the past, having a marketplace.
Give us your rundown of the idea of a marketplace.
I got some thoughts there myself, but, like, what's the idea behind the tailwind marketplace?
What's that mean?
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, which is, like, unfortunate.
You know?
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, in 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?
But at the same time, it's like, well, that sucks because if I wanna build a big community, I should be able to, like, spotlight some of the stuff people are doing.
And 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 with Tailwind, like, all over, like, promoting that.
So I'd like to be able to do that with basically everything.
Mhmm.
I also kinda feel like it'd be interesting if we could incentivize the 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
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?
Right.
And I'd rather it be, like, something that people who are really good at design embrace to build really cool stuff too.
Like, that that is common.
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 kinda 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 be, like, pretty solid.
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 wanna feel good about it.
I don't wanna feel like I'm shooting myself in the foot by doing it.
Right.
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.
Yeah.
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 the 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.
Historically, it's been like 2 months working on a tailwind release, 2 months working on a template, 2 months working on a 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.
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
00:56:22 – 00:56:22
Yeah.
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, But I get none.
So it's
like you're not the other
cool tailwind UI thing that was somebody else's whatever component library or definitely just a pure template.
Like, you could just talk about that.
I mean, yeah, I I wouldn't talk about every day all the time, but if you, like, tweet it out once and, like, hey.
This is really cool.
Like, 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.
Bootstrap, I I get the impression.
I never get the impression, like, they made tons of money with their Yeah.
Their theme stuff
They do, publish, like, the numbers of
Templates that have been sold.
They don't say, like Oh, okay.
Right.
The numbers.
That's close enough.
If you
look at, like, their most popular temp dashboard template that sold 22100 copies.
Right?
And that's at $39, and they're getting, like, 30% of that.
You know?
Yeah.
So that's, like, a day sales or whatever.
Yeah.
Call it,
Aaron
00:57:25 – 00:57:27
you know, whatever.
5 that's $26,000.
$25,000 total.
You know?
Whereas, like, I don't know if I wanna share exact numbers, but that's, like, nothing.
Aaron
00:57:35 – 00:57:36
You know?
This doesn't really matter.
Like, can only deny.
That exact number is nothing.
It was 0.
Aaron
00:57:40 – 00:57:42
It was 0.
We don't need the exact
number to know.
Yeah.
You know?
Well, so this is the other thing.
I think what's kind of interesting to me, and I don't want to rehash what you talked about the podcast too much, but I kind of feel like it's similar.
You talked about how Tailwind had a job board.
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 like 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 do the newsletter into that and you wanna change the website instead of having 2 links to components, it's like go to tailwind UI that you guys get all the profit from.
Instead, it goes to, like, the job board or the marketplace.
Like, you could have, like, super pushed these things.
So the same thing with the marketplace and probably sell a reasonable amount, but I don't think that it'll sell nearly as much as you do tailwind UI.
Yeah.
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.
Yeah.
For these other initiatives, like, that's a bad trade off is kind of the
issue, I think.
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.
That's what I was just gonna say.
That's what I think it should be.
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, you know, for a website or whatever.
But like, that's a lot of risk.
Like, they're going into business.
Right?
They're like, well, I I have to
I have to market it.
What if it doesn't work?
Blah blah blah.
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.
Whereas if you're a, if you're like, Hey, I'm gonna give you 20 grand up front.
And then Yeah.
give you some percentage.
What maybe you could do
The percentage is complicated because of the all access.
Yeah.
But I was gonna say,
you look at this Bootstrap template, the most popular one, back of the napkin math, the person selling it made $60, you know?
That's to be the most popular template on the Bootstrap theme store.
I could just pay people $50 guaranteed.
You know?
Right.
And that's, like, less than we've probably spent on every template.
For sure.
For sure.
For sure.
Internally.
Yeah.
You know?
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 like you just pay people for themes.
You add them to the all access.
Boom.
You have this huge library of themes over the next couple years.
It's great.
Mhmm.
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
What's the difference for that?
Aaron
01:00:52 – 01:00:54
You mean you just Yeah.
What's the difference here?
Emphasized on the tailwind CSS docs.
Yeah.
Maybe it lets you go more in different directions 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?
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.
May maybe it doesn't make any sense with the concept of all access.
I don't know.
Yeah.
It's hard.
I 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.
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.
There was a definitely a disconnect there in terms of, like, I think you explained it perfectly.
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, you have rack developers and they're doing tailwind stuff.
And Yeah.
They're like, oh, yeah.
I guess so.
Like Yeah.
You're right.
Nobody thinks about that.
Right?
So you'd have to, like Yeah.
Really market the hell out of it.
You know, it's it's I don't think it would be it's still not gonna be in a near tail with UI.
I think for it to
work, 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, our distribution.
Think you'd have the revenue you have now.
Like, I still think it's, like, the time hassle trade off of, like
Might as well as make another
fucking marketing site template.
You know?
Exact exactly.
Yes.
Aaron
01:02:25 – 01:02:36
Yes.
Exactly.
Yeah.
Yeah.
I think the ticket I think the ticket is you you pay designers to make new ones and do them as, like, almost as, like, collabs where, you know, you kinda
get design drops a collab.
Exactly.
Yeah.
Yeah.
That's how I've thought about it in the past.
Like, you'd probably give us a design.
Or whatever.
Famous design.
You know, whatever famous you're in that design is.
Like, work with them.
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 break points that you didn't give us and
Aaron
01:02:57 – 01:02:58
Exactly.
Yeah.
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
01:03:09 – 01:03:22
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 might cannibalize some of your stuff.
Aaron
01:03:23 – 01:03:51
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.
Tailwind, you know, the Tailwind Labs team has one of those.
Aaron
01:03:51 – 01:04:10
I think that's potentially new and interesting that you could do.
And then, honestly, I think one, 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
Aaron
01:04:11 – 01:04:19
And just, like yeah.
If you have a budget and you have a Figma design and you want Tailwinds, like, tailwinds done by the tailwind team,
Aaron
01:04:19 – 01:04:28
we do that.
Yeah.
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.
Aaron
01:04:28 – 01:04:29
feel like that's another
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.
You know what I mean?
Yeah.
And
then, like, you could, like, here's
the URL to my website.
I had a pricing section to the bottom that matches the rest of the site.
You know?
And it spits 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
Aaron
01:05:13 – 01:05:15
too old.
You know?
The flower
of youth has faded.
Yeah.
Yeah.
All these, they all I mean, not that maybe not AI one, although it's hard to say.
But, like, all 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, like pretty small percentage of your revenue, you know, and then that gets kinda like annoying to work
current business is great, you know, but I also kind of feel like, don't you have to be constantly, like, thinking about, like,
this is one of your, you don't have to Here we go.
Now.
You just enjoy it.
We're finally getting to the real stuff.
To just enjoy it.
Just 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.
Right?
Like, I think, really, if you, like, flush it out fully and go into all the corners.
Yeah.
You make more on catalyst.
All that stuff.
You know?
Because catalyst is one one opinionated visual style.
You know?
You could have different styles for it.
Yep.
Yeah.
You could have, yeah.
I mean, like, there's all kinds of Every time, like,
the design trends change, you know, we have work to do.
Drop
Yep.
And there's, there's not, I
mean, if anything, that's one of the things that you haven't done as much with tailwind UI.
It's like, kind of like you dropped it and that's like, it's kind of had that similar UI for most of the time.
I don't know if you've got some
metrics, gotten tweaks, but I all of it at
the beginning of this year, like every single component.
we go.
But yeah.
And and But
it's not a selection either.
Right?
It's just you tweaked what was there, or can you switch between the 2?
So if you if you if you go to, like, tailwindjoy.com and go to, like, the hero sections, for example.
Yep.
And Oh, I have seen that.
So as long as you're, like, logged in, 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,
with the old ones, and you're, like, oh,
wait a minute.
Like, the old ones, like, look junky compared to the new ones.
Aaron
01:07:15 – 01:07:19
So, Ian, are you saying there's no, like, there's no retro?
There's no minimal?
There's no
I am saying, obviously, you could push this.
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.
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.
Mhmm.
Yeah.
know if you have, like, something as niche as retro, but you might have, like It's
Aaron
01:07:44 – 01:07:46
a good idea that you could use that.
Variation.
It's a good idea.
Yeah.
There's a lot of variations of sorts.
You have
a lot of stuff to design and build for sure.
And, like, the fact that, like, tastes change over time, like, is a
Aaron
01:07:56 – 01:07:56
Yeah.
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 sad.
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 dry things that you paste on top of each other, it's like, hey.
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 as like a snippet.
You know?
Mhmm.
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.
There's and the the things people ask us to do all the time is, like, this is, like, you guys are fucking the ones who ask me for this sort of thing.
It's, like, the Alpine version of, like, Tailwind UI.
Oh, give us the Alpine version.
That's Alpine version.
Just like just the non JavaScript framework y version, you know?
Like, the server rendered HTML version.
And I got Rails world.
Everyone was, like, begging me for, like, that stuff.
Aaron
01:08:57 – 01:09:00
Have you ever thought about just doing a non JavaScript version?
Yeah.
I'm sure that 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, you know.
Yeah.
It's some of that stuff.
It's hard to know how what is Genworth, like, doing, moving the needle wise and everything.
But, I think the also, you don't wanna, like to me, you guys have such like, you have the 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 SaaS.
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, but then, like like,
treadmill y work where there's, like, there needs to be someone running on this hamster wheel all the time.
Like, you can't, like, take
Even though you don't even think the idea to begin with, or if you do, it just gets sidelined 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, then Mhmm.
You know, who knows what you stumbled on like
to go.
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.
Like a sass.
Yeah.
Exactly.
Like, yeah.
Yeah.
I mean, that's your guys' stuff is so nice like that way because, I mean, obviously, it's ongoing maintenance, but it's also ultimately, like, on your own time frame too.
It's not imposed on you because the database server's down, for instance, or 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?
Which I think, obviously, you guys could definitely have that kinda idea that, like, this needs to be SaaS and let's do it.
But I probably want that to be the right the right one, you know, when you're like, yeah, we're really inspired to take that one.
I'm not
sure that'll ever happen for me.
Right.
Yeah.
We we
Aaron
01:11:02 – 01:11:07
we we we we ran over the big existential question.
Aaron
01:11:08 – 01:11:21
Adam saying, like, isn't that what you're supposed to do?
Like Right.
What do you wanna do, Adam?
I feel like you're always thinking, like, well, if somebody who I don't know.
Dude who actually knew how to run the business ran the business, they would do it differently.
do you wanna do?
True.
I don't know.
Aaron
01:11:24 – 01:11:25
that all the time.
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 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.
This is fun.
You know?
I like working on that stuff.
Yeah.
Mhmm.
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 know what I mean.
Yeah.
Then the opposite either.
Problem.
Yeah.
Then you're super excited about
all of that stuff.
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 a human being.
I think so.
Yeah.
Yeah.
Gotta be something productive.
There there doesn't have to
Aaron
01:12:26 – 01:12:29
be toil, but there does have to be some work, and it like you've been toiling.
Some there has to be work.
Aaron
01:12:34 – 01:12:38
But But on this new, like, business expansion stuff, do you wanna do any of it?
I think so.
No.
I'm convincing.
I'm 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, the 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, and, like, I sometimes have to, like, take a step back and, like, acknowledge it and even notice it.
But, like, 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.
He's like we just yesterday got, like or when was it Friday?
Yeah.
Friday.
Days go by fast.
I finally got, like, our trick tailwind registered trademark stuff approved, because that takes,
You know?
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, I'm gonna put together the most, like, compelling case that you'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, like, emailed,
oh, there's just a piece of evidence that, like, we're missing
that we need.
Peter got the email, like, 1 in the morning, his phone buzzed, and he's, like, out of bed on his computer, like, getting, like, the evidence.
You know what I mean?
Just,
Aaron
01:14:22 – 01:14:23
like Man.
Aaron
01:14:26 – 01:14:27
Yeah.
That's awesome.
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.
Oh, it's not bad.
You're right.
I would I would have thought 3 years.
Like, really?
That's crazy.
You know
Aaron
01:14:39 – 01:14:43
what happened?
Somebody got it at the office and said, I ain't reading all that, like,
approved.
It must be alright.
I was just gonna say Oh, just Yeah.
Yeah.
Yeah.
Go ahead.
Go ahead.
Go ahead.
I'm I
was just saying that's 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, okay.
When was, like, the first time you guys used this word or whatever, you know, and digging through some things.
So he, like, put the whole thing together.
I mean, Chad GPT did a lot of work too, admittedly.
But,
yeah, there's 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 and you have who knows how many bajillion customers and it's like a part time.
do the support, you know,
the other thing that's here with the SaaS, You know?
Like Yeah.
You need the support.
People need help.
Yeah.
Yeah.
But yeah.
I I don't know.
The, oh, man.
I had another idea, but But
Aaron
01:15:46 – 01:15:49
what makes Adam happy.
So it sounds like
Aaron
01:15:50 – 01:16:07
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.
It's like working on these super, like, tricky APIs and finding the way through.
And I wonder if Some of those things are, but some of Part of it
is 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.
Websites can't be built.
You know?
How does that work?
I don't know how other websites on
the Internet exist because, like, they're all broken.
Every single one of them is broken.
Right.
Like, here's a good classic one.
Okay.
You open a dialogue.
Right?
The ARIA guidelines basically say, when you open a dialogue, the first focusable element in that dialogue is supposed to be immediately focused.
Right?
So say you have a dialogue 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 dialogue, that field is, like, focused right away, and you can start typing.
Lovely.
Try doing that on your phone and focusing it right away.
The fucking software keyboard pops up, the dialogue moves into the wrong spot,
the input's covered up by the software keyboard and the animation all gets is all janky and screwed up.
So it's like, okay.
Well, what do we do about that?
You know?
Can this even be solved?
Let me go check a bunch of other sites.
Oh, they're all fucked too.
Am I gonna
that, though?
You know, like, shit, bro.
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 mobile.
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.
Right?
Because, like, all you can do is press the button.
With your thumb.
You can't just, like, lick it to, like, almost tap
it or whatever.
So inputs 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
Aaron
01:17:49 – 01:17:51
UI change.
That's a great solution.
Or, like, there was 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 it's not done.
Aaron
01:18:06 – 01:18:07
And that was bad.
Right?
Yeah.
That's a bad feeling.
Deal.
Yeah.
The the good Yeah.
The good experience are, like,
new CSS feature.
Oh, I think there's a cool way we could do something with this with Tailwind.
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 funnest things.
Like, you
need to be a little bit bit See, and I feel like
Aaron
01:18:28 – 01:18:43
but I feel like the thing there is, like, not necessarily the type of work, but the the time line and the external pressures to have the thing done.
Like, if you were if Catalyst was out and you came across this focus thing and you're like, I wonder what an elegant solution for that on mobile
Aaron
01:18:43 – 01:18:54
Oh, I could just not do it.
You could crank that out in, you know, 6 hours a day, half a day, whatever.
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
is the bigger death march side of it.
For sure.
Yeah.
You're a fucking
But that's that's why I just
next week even 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.
2
weeks on something and release it.
Aaron
01:19:15 – 01:19:17
So That feels like you'd be happy there.
I will be a lot happier in that mode.
That's something too where long term I 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 kinda 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, you're 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, like, runs the commercial side, essentially.
Like, this is like Jason Cohen done something like this in a different way.
He stayed in the 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 from the business of selling things under the tail and brand.
Under something,
And you don't even mess with that.
It's like, whatever.
You once a quarter checking that person
to make sure things aren't good with you.
There right now that's ready to, like, parachute in and be, like, head of product, a toe, and and succeed at it and do it better than me.
Is it kind of product or even almost like a CEO or something like that, but, like or yeah.
Maybe Whatever.
Their job
though is to, like, make things that
make things commercial side.
Yeah.
Yeah.
There's tons of those people out there.
I mean, that's been pretty
name one of them.
Been doing.
Yeah.
Name one of those.
I 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.
Like, 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 the whole way.
Harder and smaller company?
I'm I'm sure this is making excuses here.
But to me, it's like, I can understand how, like, T Mobile can replace their COO with a different COO.
You know what I mean?
Right.
How that's like a I went to, like, business management school, so I'm good at this job.
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, like those people are out there.
I mean, obviously, you can find someone you can jive with and all those things.
Aaron
01:21:42 – 01:21:46
Get him, but Jason Code could come in and run the commercial side.
Right?
Yeah.
He would be.
Could he He would be capable of it.
Right?
But what would he do?
Like Could he not?
How how would how would the right new templates get built?
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 spot?
Right.
Or like I'm down here in the weeds.
They're like, not even programmers.
Right.
Yeah.
They're like, what do we do right.
To like increase revenue given that we have this big audience and we have these assets and this thing going on.
Right.
And then, oh, that logically, we should have this other line of business or we should do something.
Aaron
01:22:30 – 01:22:33
We should have $100 enterprise contracts.
You should have enterprise.
I'm thinking about it.
Aaron
01:22:34 – 01:22:35
Template.
Yeah.
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.
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
01:23:01 – 01:23:02
What does Jonathan do?
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, one on ones with people on the team.
Before, like, Peter took on a bunch of stuff, he was helping out with support.
He kinda came on as, like, life raft human life raft.
Aaron
01:23:24 – 01:23:26
Right.
I remember that.
Yeah.
So he's totally happy to just help wherever there's help to be needed.
You know?
Helped.
Aaron
01:23:37 – 01:23:47
I wonder There's a lot of options.
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 to say.
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.
Template 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.
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.
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 Yeah.
I would be like, I wanna make this easy, you know, in tailwind.
Aaron
01:24:43 – 01:25:00
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
01:25:00 – 01:25:11
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
Aaron
01:25:12 – 01:25:18
It's like you could still get maybe the benefit if you're trying to come in at the end and make it all Yeah.
Transactional.
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.
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
01:25:51 – 01:26:03
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.
Here's, like, here's our contract.
Aaron
01:26:03 – 01:26:11
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
Aaron
01:26:11 – 01:26:26
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.
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, you know?
Aaron
01:26:43 – 01:26:44
Yeah.
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 that's true.
The, the scale, like it's 1 to 1 with the number of hours you have to commit to it.
Right.
So you have to have more people to make more money.
And I, again, like this is all, this is all way these things.
Like tailwind could sell all kinds of stuff.
That's like how I feel about DHH.
You're very DHHS.
Like DHH could come out with a toaster.
Lots of people buy the toaster.
They'd be
Aaron
01:27:10 – 01:27:13
like DHH.
The toaster doesn't work.
You shouldn't sell the toaster.
I'd say this toaster sucks.
Why is there only one zipline?
What the hell is your toaster?
Only pay for it once.
Like, no one wants to buy
a toaster.
It's not a subscription.
Aaron
01:27:23 – 01:27:24
So Like, I've been selling
toasters for years.
Nobody wants to buy a toaster in their
want a cloud toaster.
They go to Starbucks.
They get the toast.
They don't get the toast in their house anymore.
Come on.
Aaron
01:27:36 – 01:27:38
3 initials.
D h h, and we're off
There you go.
But wait.
Why you gotta decide what you wanna do?
That's what I do think, like, my a plan, if I was you, I'd be like, hey.
I'm okay with how things are.
generally, like, okay with how things are.
Right.
And then, like, yeah.
And then it's like
yeah.
Parallelize things a bit more.
I'd like to be able to, like Right.
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.
It doesn't need to be a whole different system.
Aaron
01:28:08 – 01:28:09
Any of this then.
Aaron
01:28:10 – 01:28:14
People, take some stuff off your plate, play guitar, play Fortnite, and
Aaron
01:28:15 – 01:28:16
Do the stuff you wanna do.
And and keep that capacity.
That capacity could be very valuable.
Yeah.
You just don't know when it's gonna be valuable.
You know?
It's like, you don't know when you're gonna have this great idea.
Like, you didn't know 5 years ago, whatever, you'd be selling tailwind UI.
No.
It would all be great.
Mhmm.
Right?
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.
all that stuff.
In life.
We'll see,
like, what it is.
Still like next act.
Maybe.
I don't know.
Still 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.
but then it's just Here here here's
Aaron
01:29:01 – 01:29:06
what here's what you need.
You need more tinker time.
You gotta get catalyst out the door, and you need you need tinker time.
Time.
Aaron
01:29:06 – 01:29:11
feel like your best ideas having, like, observed from the outside or when you're tinkering.
Aaron
01:29:12 – 01:29:16
Like, I'm building kite tail, and you're like, actually, wait.
I'm not building kite tail.
I'm building tailwind.
That's like
kite tailwind.
It's crazy too.
It's like the Oh, yeah.
Yeah.
You need some more some more just
Aaron
01:29:22 – 01:29:23
f around and find out time.
Yeah.
We'll get there.
But, also, you know, it's like I think Adam started at the very beginning with, like, you feel too old for some of this stuff, and I feel like you're obviously not 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 was like, you have the, the young kids and stuff.
Like it's so hard, like, it just came out so much out of you.
Yeah.
Like Yeah.
It's just, like, even though the kids go to bed at, like, 7, like, you wanna tell yourself this fantasy story.
I'm like, okay.
At 7, I'm gonna be able to, like,
go down to my I'm gonna get, like, 3 hours
of work done.
It's like, no.
I can't do anything at 7.
You know?
Yeah.
Yeah.
Exactly.
Yep.
So it's like so in that way, you have, like, you have probably, like, an 8 8 years, honestly.
Like, honestly, you couldn't do something big in the next 8 years.
You absolutely could.
But at the same time, like, if you just give yourself 8 years and they're like, yeah, I'm gonna be doing awesome stuff with Tailwind, whatever, blah, blah.
And then, like, kids are bigger.
Yeah.
Brain capacity freeze up a little bit.
It's like, then maybe that's like the phase 2 Yeah.
Of like others new type of things.
But, like, it it is very hard because, like, just, yeah, just whatever.
Being a reasonable father to your kids is, like, a lot of overhead.
It sounds like I I have to leave right now because it's piano lesson.
You know?
There you got it.
There you go.
Alright.
Well, thanks for coming on.
I really appreciate it.
It's a perfect ending note right there.
Thanks for having me, guys.
It's always fun.
Have fun with piano lessons.
Aaron
01:30:47 – 01:30:48
See you.
Bye.
Alright.
Let's wrap up the show then.
Absolutely.
Thanks everybody for listening.
You can follow us at mostlytechnical.com, mostly tech pod on Twitter, and, mostlytechnicalpodcast@gmail.com.
Aaron
01:31:05 – 01:31:05
See you.