Aaron
00:00:04 – 00:00:10
Thanks.
This is week 1.
This is the end of week 1.
So a week?
I'm sorry.
You've been in there all week already.
Aaron
00:00:12 – 00:00:17
Yeah.
I moved in, Sunday afternoon so that I could start Monday morning in here.
Aaron
00:00:19 – 00:00:32
Yeah.
It's been, it's been great so far.
Couple of things I had to change.
One of which is unfortunate.
I need to get a new or different, air conditioning unit.
Aaron
00:00:33 – 00:00:59
The one I have is, a single hose or a single vent, and so it creates all it does is exhaust, and then it just takes air in from the room.
And so it creates negative pressure and also doesn't introduce any fresh air whatsoever because just recirculating the air that's in here and cooling it and then exhausting bad air.
So Nope.
Nope.
No good.
Aaron
00:00:59 – 00:01:12
I have one of those air quality monitors and the c o two and other stuff is just just rises and rises and rises because it's just recirculating the same air.
So that kind of stuff that
That new wood, which is probably off gassing all kinds
Aaron
00:01:14 – 00:01:24
of stuff.
Yeah.
It is.
So all the all the wood plus the teak oil is just off gassing a ton of stuff.
So I just keep the French doors open all day.
Aaron
00:01:25 – 00:01:40
So I've ordered a dual a dual hose AC that'll bring fresh air in from outside, treat it, and then put it out in the room, and then also exhaust bad air.
So that kinda sucks because it's expensive, but it's not gonna work any other way.
No.
That's the way to go.
Yeah.
That'll be worth it.
Aaron
00:01:44 – 00:01:54
Yeah.
Should've known that ahead of time, but I've never built a shed quarters before, so I didn't.
So Cool.
Yeah.
But it's nice to be out It
Aaron
00:01:54 – 00:02:06
Nice to be out of the house.
Nice to, like, have a dedicated place to work.
Nice to, like, walk outside and come to work instead of just wander into the spare bedroom.
So it's been great.
Your spare bedrooms have already cluttered and stuff lately too.
Aaron
00:02:09 – 00:02:28
Yeah.
Cluttered with baby stuff and unopened boxes of baby stuff and that kind of thing.
So this has been fantastic because I've got cabinets and shelves and can, like, actually put stuff away.
So, yep, I'm loving it.
I hope it doesn't sound too echoey.
Aaron
00:02:28 – 00:02:33
It is a, you know, cave of plywood, so, hopefully I sound okay.
It's not too bad.
It is a little more live than your other room, but it's, it sounds good.
Aaron
00:02:38 – 00:02:44
Yeah.
As I get more stuff on the walls, hopefully some of that will be, alleviated.
Alright.
Well, my nap was successful, so I feel a little more awake.
Aaron
00:02:53 – 00:02:56
Yeah.
Living the life of luxury, Friday afternoon naps.
Actually, I I hate taking naps, but I I always have to, like, convince myself.
Like, you have to take a nap, man.
You have to do it.
Otherwise, you're not gonna get anything done today.
That's Yeah.
And that's definitely true.
I was, like, just not getting anything done this morning and realizing, like, if I don't take a nap, I won't accomplish anything today.
It just feels like such a waste of time, which, of course, is, like, would be nice.
Like, it's whatever whatever is going on in my brain when I'm that busy that I don't wanna take a nap Mhmm.
Really means that I probably should say, like, just relax.
Like, I got too much stuff happening, you know, because my brain doesn't wanna let go of whatever's going on.
It's like, no.
Must keep working.
Aaron
00:03:42 – 00:03:48
Is this a result of the 70 hours you did last week and probably the same this week?
It's part of it, but not not actually no.
It's mainly we have a new tenant because I own a 2 flat.
I own a 2 flat in Chicago, and I have the we live in the first unit, which we've been here for 10 years, and just now I'm like, why did we choose the first floor unit and not the top floor?
Aaron
00:04:11 – 00:04:14
So that means somebody lives above you?
Yes.
Yeah.
They live above us, which has never been an issue.
Like, our first tenant, there were a couple of girls, and they would get dressed and stuff.
They had a, like, kind of a later schedule than we did, and they'd get dressed to go out in high heels and stuff.
That was somewhat, you know
Aaron
00:04:34 – 00:04:34
The youth.
Annoying.
Yeah.
But that we kinda they were only there for a couple years, and it wasn't too bad.
Like, it was they're kinda up there.
They do that, and then they'd leave, and it was no big deal.
And then for, like, the last 7 years or so, we had the same guy, and he was just quiet and was on the same exact schedule as we were, and we we just never noticed him.
So I just forgot that it could be a thing.
So then the new tenant, they're kind of a big person, and they also set up their office right above our bedroom.
Oh.
So and they are a night owl.
Like Oh, really?
Very, very late, and they work all night.
They're a lawyer, and they just work and work and work.
And so they're rolling around on their chair.
They're getting up, and we have old squeaky floors.
So I'll be like, oh, I could sleep through, like, the chair noise.
That's fine.
That doesn't bother me.
But then, you know, they get up and they walk around.
It's like,
Aaron
00:05:35 – 00:05:35
oh, dude.
Yeah.
I've been just waking up and waking up and waking up for, like, 2 weeks now.
Kinda caught up to me, I think.
And we gotta Oh, man.
I've been trying to solve it, you know, with, like, noise machine and earplugs and stuff, but that's it's just the kind of noise is just cuts through that stuff.
I mean, I don't really notice it.
Like, I know I'm waking up because I just feel kinda crappy and a bunch shattered in the morning.
And I can sometimes remember, like, waking up and then hearing squeaking floorboards and stuff.
You wake up at, like, 3 in the morning to squeaking floorboards above me because they're still working.
Yeah.
So we're like, I'll probably gonna have to reach out to them and solve that because I'm I'm gonna lose my mind.
Yeah.
It's, like, the second second nap in 2 weeks, I think, which is kinda weird for me.
Aaron
00:06:23 – 00:06:25
Oh, man.
That sucks.
I'm sorry.
It's alright.
I mean, we'll work it out.
We will totally work it out.
Eventually, we had it's a little bit shittacular at the moment.
Yeah.
That they're they're really nice tenants.
They're very quiet.
They just happen to do that, and it's not they're not doing anything wrong at all.
We just have to sort it out.
Aaron
00:06:45 – 00:07:06
Yeah.
Your first problem was renting to an attorney.
You should never rent to attorneys.
I have a friend who's an attorney, and he's, a very emphatic typer.
And, like, he, like, makes his point by how hard he's typing as if that translates into the document.
Aaron
00:07:06 – 00:07:06
Time
we had trouble sleeping, Beth was like, did they wake you up all night by, like, their typing noise?
Aaron
00:07:13 – 00:07:19
Yes.
Exactly.
Loud.
Yep.
Yeah.
So I think there's some things I could do to, like, fix the squeak in the floor, which and then I'm gonna offer to buy them a carpet.
Aaron
00:07:26 – 00:07:27
That's that's smart.
You know?
Like, give them a budget, and they can buy one, whatever they like.
And then I'm gonna try, like, insulating.
There's, like, the noise panels on the ceiling you can put on.
So I'm gonna try that, see how it goes.
Aaron
00:07:40 – 00:08:07
If it's primarily it sounds like it's primarily squeaking, but if it's chair rolling, you might buy them some, roller blade wheels for their chair instead of the hard plastic casters.
I got some of those on Amazon.
They're like legit roller blade wheels, but made for office chairs.
And so they're the the a little bit softer rubber, and they roll much nicer and much quieter.
I got them because, you know, I'm in the shed and it's a wood floor.
Aaron
00:08:07 – 00:08:08
So
good.
Alright.
I will, add that to our list of things we'll try.
Aaron
00:08:13 – 00:08:15
Yeah.
I can I can send you the link?
Aaron
00:08:18 – 00:08:18
Yeah.
Yeah.
So hammerstone stuff, my only goal today is to get it get some tests running on the front end piece that I wrote for the client.
That's my goal today.
That way I can, you know because right now, it's a little bit I feel like the Hotwire approach has made it feels like a little bit like Spaghetti Code to me
Aaron
00:08:40 – 00:08:41
right now.
Like, I like the Hotwire stuff, and I'm already working on it at my day job.
We're gonna do some stuff with it, and it fits really just there.
And then yeah.
And then I've just poked around with it, and it really seems like it's gonna be it's gonna be awesome in a lot of situations, but this is just not one of them.
It's bizarre to do it with this, query builder.
So it feels quite a bit, like, spaghetti code right now.
It's that's so I'm, like, our batchable?
Yeah.
If I may and, like, if I make changes, like, I gotta update all of these things.
And Mhmm.
So I wanna have the test coverage so that I can, like, try to clean it up a little bit.
Because right now, I'm like I don't know.
Yeah.
So, anyway, I want the test coverage so I can feel free to change it up, and then I'll be able to go faster.
Because right now, every time I'm trying to make changes, it's, like, slowing down.
Aaron
00:09:37 – 00:09:50
a at a very high level, where did you end up keeping the state?
Because we had this conversation about Mhmm.
Hotwire expects it to be a persisted object in the database, but we don't have that.
So where did you end up putting it?
Right.
I ended up putting it on the client.
Aaron
00:09:56 – 00:10:01
Okay.
So you keep you keep a JSON blob on the client, and you send it back and forth and back and forth?
Well, I send depends.
Like, some parts of it, I send the whole thing.
Some parts of it, I just send a chunk of it because I'm only render rerendering a chunk of what I'm doing.
Aaron
00:10:11 – 00:10:18
Oh, that's right.
So you're only rerendering, like, a single row or a single group of the filter, not the whole thing.
Yeah.
If you think about it, the query builder is kind of like a simple pattern.
It's, user well, you take take the blueprint, render the query based on the blueprint.
Every time the user does something, modify the blueprint, rerender the template so it reflects the new thing that they just added.
And that's you know, fits really well in Vue and React and stuff.
No problem.
In this, it's like, okay.
So in order if I wanted to make it follow that pattern, I think the Hotwire pattern would be they would want me to do that all on the server, and then the client is just kinda dumb and just would say, like, okay.
You you updated the clause, so you're gonna, like, do a put to this URL with this these form params or whatever.
Mhmm.
And then that's gonna give you back your template.
And all your client's doing is just, like, sending the thing to a server, and then doesn't even have to do that.
Like, the hot like, well, I guess it is.
Right?
Like, that's what turbo streams and frames does.
Like, it just, poof, puts it back in.
And then, like, a really dumb way to do it would be, like, send the blueprint the whole blueprint, rerender the whole thing with every single request, and just boop rewrite it.
I kinda do that for parts of it, but it's a little little slow, and you end up with some kinda UI jankiness, like losing focus on fields and stuff like that.
And then the question is, like, okay, yeah, for example, like, it's a text field.
I'm typing in text.
At what point do I update the blueprint and recall you know, have this little thing, like, rerender?
Because I need to I'm storing this data if it's stored on the server or in the URL or, like and that's the other thing is, like, where does the state live if I'm doing it on the server?
Schedule am I just sending whole thing in the URL every single time?
It just stays in the cookie.
We talked about that, how it's like, that would just maybe fill up all
Aaron
00:12:12 – 00:12:12
it
would be ridiculous, the number of these blueprints that would exist and just be hanging around.
Aaron
00:12:17 – 00:12:23
Because they're they're meant to be, like, they're meant to be ephemeral until you're done, basically.
So what I'm ended up doing is, like, I'm jumping through a bunch of hoops just to render markup on the server instead of doing it in the client.
Like, that's which is the opposite.
Like, that's the whole they hate like, the whole Hotwire thing is because they hate, like, having stuff rendered on the client.
Right.
Because they got all their templates already written, they don't wanna have to, like, figure out how to go back and do all that.
But now I'm doing the same thing, just the other direction.
Like, it's I'm like, wow.
You know what?
Maybe I should invent some way to, like, just render markup on the client.
That would be that would be nice.
That's But it's cool.
They won't have a dependency to add, and it it's fine.
You know, like, it it'll just work with rails out of the box, rail 6.
Aaron
00:13:04 – 00:13:08
Which is great.
So And it works with bullet train, which is which is great.
Yeah.
So it's going well.
I've just made I've made a little bit of progress on it this week and last weekend in terms of functionality.
Like, some of the functionality in that demo I did was a little bit kind of faked out.
Like, it wasn't actually working.
So I've I got all that stuff, like, actually working and, yeah.
So it's it's going good.
And then I'm gonna write the test, and then I think I'm gonna try to I don't know.
I I feel like I'm gonna try to get a couple more of the simple conditions that we have done.
Like, get and I wanna try get select 2 working with it.
Select 2 is, like, a common, like, select drop drop down.
Yeah.
It has, like, type type ahead
Aaron
00:13:58 – 00:14:00
and select many and all that kind of nice stuff.
Right.
It's a jQuery plugin, but most people have jQuery.
And then also, I don't think it's a plugin, actually, but it's it needs jQuery.
And most people have jQuery still in their stack, especially if on rails projects.
And then bullet train does have it and uses select 2 already.
So it'll kinda blend in well there.
Aaron
00:14:18 – 00:14:31
Yeah.
So this is I mean, like we've talked about before, we're just making decisions for this client only at this point.
And if we decide later, select 2 needs to be pulled out or whatever, who cares?
But we need to get this job done, so that's a great idea.
That's what I'm thinking.
Yeah.
Because, like, for our view thing, I wrote our own select, you know, drop down that's custom and looks all nice and stuff and will let us do whatever we wanna do.
And I I wanna keep going that way with the view component, but here, I just want I'll just use select 2, and they'll be happy.
And then date condition, I'll just use some whatever date picker he's using.
I could just write, like, a stimulus wrapper around Yeah.
Any of these things that he's got going.
And so I'm gonna do that.
That's gonna be kinda like my goal this week until Colleen gets to the point where we can integrate.
And then then, I'm gonna make that my number one priority because I wanna have an update that's like, here.
Look.
Here's the back end.
Here's the front end.
Here's the code we wrote for the back end.
Here's the code we wrote for the front end.
Aaron
00:15:12 – 00:15:13
You know?
It actually selects record
Aaron
00:15:14 – 00:15:29
Yeah.
Yeah.
I think that's gonna that's gonna be an a huge breakthrough for, like, the our perception to the client or the client's perception of us and also for the speed between you and Colleen.
Aaron
00:15:30 – 00:15:47
Like, once once those two things are working together, I think it's gonna make things a lot more clear, especially for Colleen.
And I only say that because you've done this, like, 10 times now, unfortunately.
But, yeah,
she tell you.
It does make me feel so much better every time she's asking questions about it.
I'm like, it wasn't not just me.
Aaron
00:15:55 – 00:16:01
No.
Yeah.
Absolutely not.
Yeah.
And she said she's close.
Aaron
00:16:01 – 00:16:16
I mean, not close to being done, but close to having, like, the round trip ability done.
She's got, I think, basic one level conditions and and, you know, no oars yet, but that's huge.
That's a big deal.
Yeah.
Yeah.
Yeah.
Exactly.
So if we can get that gel and then we'll go fast from there, I think.
Yeah.
It's gonna be good.
Aaron
00:16:25 – 00:16:29
Yeah.
I think so too.
Good.
You feel good about it?
I do.
Yeah.
You got any other hammer stone things?
Yeah.
I got one other thing after your after you go.
Aaron
00:16:37 – 00:17:08
Yeah.
I got a couple of hammerstone things.
We'll stay on query builder or refine as the product name is is known.
So we talked, I think, last week, and I think it was on the podcast about, basically being able to, like, refine conditions in line.
We would say this thing has happened this many times between this date, doing that all on one row, because that's something they wanna do.
Aaron
00:17:08 – 00:17:37
Like, you know, this person opened this email, you know, this many times between January 1st February 1st.
We've talked about that last week.
I figured out a way to do that that takes advantage of our numeric condition and our date condition.
And this is the refinements thing, that we talked about and actually works in SQL.
And so it does it basically does like a sub select.
Aaron
00:17:38 – 00:18:13
It depends.
Sometimes it uses a wear and sometimes it uses a wear exists, you know, just depending on your models, and then refines it down by count and by date.
And then we still get all of the validations from our two conditions.
We get all of that for free, but it all plugs into a single row instead of like because the problem was, you know, if they say where opened this email and then on another line, do open this email between these dates.
And on another line, do open this email, you know, 5 times?
Aaron
00:18:13 – 00:18:39
All of those are separate.
When it comes down to SQL, all of those are separate statements, and so it doesn't compute.
Like, it's not accurate.
It's 3 separate things instead of one thing that says this thing, this many times between these dates.
And so getting it all on a single condition line and being able to refine it down like that is going to be extremely powerful and not something we had.
Aaron
00:18:39 – 00:18:41
And so I figured that out this past weekend.
Does it you said numeric and date conditions.
Does it only work with those 2?
Aaron
00:18:46 – 00:18:53
So those are the only, those are the only means by which you can refine a condition.
Aaron
00:18:55 – 00:19:25
If you have an option condition, like, if you have, like the email's a good example.
They opened, you know, a particular email.
That that is the option condition, and you can select, you know, whichever email you want.
And then you can refine it by number of times and by date parameters.
So, I mean, in theory, it works it works on any it works with any condition, but those are the only ways you can refine it.
Aaron
00:19:25 – 00:19:45
We can potentially refine it in other ways, but I haven't seen a use case.
And so and so I don't know how to how to build it.
Like, I don't know how we would refine a numeric condition by an option condition, if that makes sense.
I don't know how we would do that or why anyone would do that.
Okay.
What's an example?
Like okay.
To say what's a basic numeric condition example?
Aaron
00:19:50 – 00:20:11
Basic numeric condition would be, let's say, age.
Age equals 32.
I don't know what kind of refinement you would do on that to say age equals 32 between 15 times.
Like, that doesn't make any sense to me.
Uh-oh.
I understand.
Right.
Do you
Aaron
00:20:14 – 00:20:14
see what I mean?
Because if you wanted to do, like, age is 32, and they're tall, dark, and handsome, then that would be, like you just do that as a second confusion.
Aaron
00:20:22 – 00:20:24
Fine to do that on separate lines.
Exactly.
And that makes perfect sense.
Yeah.
Okay.
Aaron
00:20:26 – 00:20:27
Yeah.
So you don't need to give them the ability to do that in one line.
No.
And why would you?
Aaron
00:20:33 – 00:20:55
Right.
It's when you get to things that are basically has many relationships, like a Yeah.
You know, contact has many clicks or contact has many email opens or whatever.
That's when you wanna say, I want the name of the email to be FUBAR email, and I want the time that they opened it to be between February 1st February 28th.
Those have to be on the same line.
Aaron
00:20:55 – 00:21:12
Otherwise, the sequel comes out wrong and your results are bad.
So that's what I'm talking about when I say refinements.
If it's a single attribute, like is tall or age is 32, there's really nothing to refine.
So
Yeah.
Something can happen on has many Yeah.
Aaron
00:21:17 – 00:21:18
Exactly.
Unless you wanna have had, like, infinite refinements, emails that have many messages, that have many tags.
Aaron
00:21:29 – 00:21:50
Yeah.
I think there, you can collapse that into top level, like email dot message dot tag, And then do your refinements on that.
So, I think I think we can already handle that, but we would have to see real data to be able to tell it that for sure.
Got it.
Got it.
Yeah.
Yeah.
It sounds really it seems like awesome.
Aaron
00:21:57 – 00:21:58
Yeah.
I'm super pumped about it.
Will let you do these very deeply nested
Aaron
00:22:02 – 00:22:02
Mhmm.
Queries.
Yeah.
Yeah.
I was like, we saw somebody was posting that they're trying to build one of these things.
And I'm looking at it, and I'm like, oh, ours is better.
Like, it's actually at this point, it's it's gonna be better than whatever you're gonna wanna build by yourself, which is kinda like the magic threshold.
Yeah.
Like, you can do far more than what you're probably gonna be able to come up with on your own, and it looks better.
Aaron
00:22:30 – 00:22:35
And it's gonna take literally 1 tenth, 1, 1 hundredth of the time to do it.
Yeah.
Like, almost no time.
It should Yeah.
It's almost like a drop in with, like, just a little bit of writing
Aaron
00:22:41 – 00:22:41
Yeah.
To create your filter object and then works.
Aaron
00:22:44 – 00:23:00
I know.
I love seeing now, obviously, I have a keen eye for these things.
And so anytime I see one in the wild or on Twitter or something, I'd look at it and think, can we do that?
And, like, most of the time, if not all of the time, yeah, we can, like, we can handle that.
We can definitely do that.
Aaron
00:23:00 – 00:23:16
And that that's a great feeling.
Mhmm.
So, yeah, I'm feeling pretty pumped about that.
Colleen and I need to have a a long talk about those nested attributes, nested relationships because those get those get pretty hairy.
Yeah.
Are you doing it for the Laravel version already?
Aaron
00:23:20 – 00:23:26
Yeah.
So I've got the refinement part, which I don't know if we wanna call them refinements because the product is called refine.
I like it.
No.
No.
No.
That actually makes sense.
Aaron
00:23:29 – 00:23:29
Okay.
I was thinking like, oh, we're geniuses to call it refine because, look, you can do these refinements.
Aaron
00:23:36 – 00:23:53
Great.
I'll I'll act like it was planned then.
Yeah.
So I've got I've got the refinements implemented in Laravel, and we already had, like, related attributes.
So if you wanted to say, like, you know, user dot manager dot first name, you could already do that.
Aaron
00:23:54 – 00:24:40
And that's the part that I wanna we'll need to talk or I'll I will need to talk with Colleen about, because the refinements the refinements operate on those relationships, and getting those relationships right is a little bit gnarly.
Because we do one thing, like speaking of things that most people wouldn't do, we do one thing with related attributes that makes, the SQL way more performant.
So if you had, like, user.manager.name is Aaron and user.manager., you know, created at or hired at is a certain date or whatever.
By default, like, those are 2 different rows.
Right?
Aaron
00:24:40 – 00:25:18
There are different conditions on different rows with different inputs and all of that.
By default, if we were naive about it, we would execute 2, subqueries.
1 for the name equals Aaron and one for the hired at equals, you know, 2020 or whatever.
But what we do is as we're going through the filter, like, as we're going through the blueprint and building up the query, we hold those relationships open until it's time to, like, until it's time to basically run it.
And so we can intelligently look and say, oh, look.
Aaron
00:25:18 – 00:25:53
This like, these two conditions are both operating on this relationship.
And so we're gonna collapse those into one single subquery so that we're not running 2 SQL subqueries, we're running 1.
And, like, that helps us not thrash the database unnecessarily.
And so it's kind of intense because as you're looping through the blueprint, we're holding these relationships open for an indefinite period of time until it finally is time to close them down and commit it.
But it makes it really performant.
Aaron
00:25:53 – 00:25:55
It's just really hard to pull off.
Yeah.
That's not so complicated.
Aaron
00:25:59 – 00:26:18
Yeah.
It's not super fun, but once you get it, then it's kind of thrilling.
So that's all I have on refine.
And one other thing is we you'll notice we launched a open source Laravel package this week as hammerstone.
Aaron
00:26:19 – 00:26:20
Yeah.
I
did really track how that went.
Aaron
00:26:22 – 00:26:42
Yeah.
Yeah.
It went it went fine.
I don't think it I don't think it, changed the world, but I think it's good to have that kind of stuff out there.
So what it is is it's called airdrop, and what it is is, it's basically a way to help speed up your deployments.
Aaron
00:26:43 – 00:27:11
So if nothing because when you deploy, you build assets and, you know, when you build assets, you have to, you know, transpile and bundle and tree shake and minimize and concatenate and all that stuff.
Especially if you're, you know, if you're using a modern JavaScript framework or you're using Tailwind CSS, you gotta do the purge CSS.
You you gotta do a bunch of stuff.
Right?
Including installing node modules and everything.
Aaron
00:27:12 – 00:27:54
So what this package does is it calculates a hash of all of your inputs required to build your final production assets.
And then if it already has a set of production assets that match that hash, It'll pull them down off of s 3 and replace them and lets you skip your whole build step.
And so it's really nice when you're making a bunch of back end changes and you're deploying multiple times a day and you're trying to get it through.
CI and it's like, every time you push a change, it's taken 3 to 4 minutes to build and minimize assets and stuff.
And so it just keeps a hash and pulls down if it is available.
Aaron
00:27:54 – 00:28:13
And if not, it builds as normal.
So we released that this week, and that's good.
I think it will slowly get some adoption, but it's good to have it, like, good to have a second thing on our website with some docs and everything.
So it's out there.
Yeah.
It's already started to get some links to our site and,
Aaron
00:28:17 – 00:28:29
yeah, exactly.
And so I went around and submitted it to all the Laravel, you know, news sites and everything.
So we get some links and get some content for Google.
And so cool.
Did you
submit it to any newsletters?
Aaron
00:28:31 – 00:28:41
I didn't submit it to any, actually, I submitted it to Laravel news, which is an website plus newsletter.
But I didn't submit it to any, like, specific newsletters.
Yeah.
Some of them, But yeah.
Like, that's I would always do that with my articles back in the back in the day when I was pushing content.
Aaron
00:28:52 – 00:28:52
If you
wrote something and, like, the so a lot of the newsletters that I subscribe to well, most of them are all Peter Cooper's newsletters.
Aaron
00:28:59 – 00:28:59
Okay.
And you could just email him directly, I think.
Although, I I don't know what he's doing these days.
That's that's what I used to do.
Aaron
00:29:05 – 00:29:05
Mhmm.
And then, but he's got a section for open source projects
Aaron
00:29:09 – 00:29:10
Really?
In most of his newsletters.
Yeah.
And they just give you a link.
Aaron
00:29:14 – 00:29:19
Okay.
I will look for some of those.
I'm only aware of a very small number,
probably.
News, that might already be a Peter Cooper.
That might already be one of his
Aaron
00:29:27 – 00:29:37
No.
It's 2 other it's 2 other guys.
So I need to look around a little bit wider.
Those are just the 2 that I know, but yeah, that's a good idea.
Yeah.
So I have alright.
You got anything else?
Aaron
00:29:42 – 00:29:43
Because I got one Nothing else.
Aaron
00:29:44 – 00:29:45
Tell me.
I want us to consider paying for editing for Full Stack Panic, the podcast, and then
Aaron
00:29:52 – 00:29:56
I'll stop.
Okay.
Tell me more and tell us what Full Stack Panic is.
Fullstack Panic is a podcast that I started, like, a year ago for it's for developers, and it is targeted around the feeling or the problem that we all have of struggling to keep up and feeling like none of us knows, like, we're always behind and that we and that we're always in danger of losing our jobs because we're becoming dinosaurs, and it happens super, super fast, because tech stacks change super, super fast and and that feeling and, like, how to deal with it, how to build your career around that and and navigate that challenge, which is kinda unique to our industry.
Aaron
00:30:46 – 00:30:46
Mhmm.
So I did a series of podcast interviews with people like therapists and, salary negotiators and coaches, stuff like that.
And I stopped because I stopped the business, so, therefore, I didn't have the money to keep dumping into it.
It was, like, it was, like, $500 a month to pay for the the editing.
Okay.
And I did, like, 4 ups a month or something like that.
And, yeah, it was just too much.
Aaron
00:31:19 – 00:31:21
And what was the business it was leading into?
Fullstack Panic?
Yeah.
Fullstack Panic is not so much leading into a business as it is to my sort of, like, personal life mission, which is to help other people have better jobs.
Aaron
00:31:36 – 00:31:37
And so it was it was
Aaron
00:31:39 – 00:31:43
Lead gen for, like, your courses and training and all of that stuff.
Yeah.
I mean, it it it wasn't it wasn't even that.
It was more like a longer term, like, I'd sort of refocused on realizing that that's something that is important to me.
So it was just Okay.
Doing that.
Aaron
00:31:56 – 00:31:57
Got it.
But it started at developers, and, I think, you know, if I did another season I already have recordings done to do, like, another season.
I just ran out of editing juice.
Like and I have no time to do it, so I have to pay somebody to to do the editing.
Okay.
So you're proposing
Aaron
00:32:16 – 00:32:29
you're proposing that this become a hammer stone venture, and we bring it in as full stack panic by hammerstone and use hammerstone money to do the editing and that kind of stuff.
Is that right?
Well, yeah.
I mean or we could just hammerstone's a sponsor.
That's either way, it's fine.
It could be a hammerstone thing too.
I kinda like that, actually.
It is it is its own site and everything right now
Aaron
00:32:42 – 00:32:42
and its
own branding and stuff, but we could we could link it up, yeah, and make it a hammerstone, like, link from a hammerstone thing, make it a hammerstone product.
Sure.
Yeah.
That makes sense to me.
Aaron
00:32:54 – 00:33:29
Well, I'm on I'm on board I'm on board with spending our hammerstone money to get it edited and whatever.
I think the key is gonna be what's the easiest, not the easiest.
What's the, fastest and least painful way for us to do that.
Because like you said, you don't have time.
So if it's literally just, like, get it edited, get the ones you have done edited, and I guess, record, like, a sponsor at the beginning of hammerstone or whatever.
Yeah.
So me.
It's super low key commitment on my end if it's not if I don't have to do the editing.
Aaron
00:33:38 – 00:33:38
Mhmm.
So the like, this, we do this.
This doesn't this is fine.
This doesn't eat up basically any of our time.
Aaron
00:33:46 – 00:33:46
Mhmm.
It's just
like a really quick, like, you do some quick thing with Descript and then upload it.
Mhmm.
It's a little more work because we have kind of low expectations for our Right.
For the show quality for this.
The full Psych panic podcast is meant to be, like, a little bit more produced, not super nice, but, like, a little more produced.
Yeah.
So when I was doing it and I had the budget, I was I had it down.
Like, it was, like, maybe an hour and a half per ep, including actually, like, recording like, doing the interview.
So and I would do those like once a week.
I mean, it was, it was real minimum, in terms of my my own personal investment.
I just don't have the time to do the editing Mhmm.
Which is why I was paying somebody to do it, and then I didn't have the money, so I stopped.
Aaron
00:34:29 – 00:34:54
So the whole thing came to a halt.
Well, I'm on board with it being using hammerstone money to do full stack panic.
Now how we, you know, how we integrate it sort of best boosts hammer stone.
I don't really know.
But, I mean, you've got some great, you've got some great interviews with some great people, and I think it's, I think it would be good marketing if nothing else to get Yeah.
Aaron
00:34:55 – 00:34:57
Your your slash our name out there.
Yeah.
So, I mean, I think it would be I could just re edit all the old podcasts to add sponsored by Hammerstone thing.
Aaron
00:35:07 – 00:35:07
Mhmm.
And then edit all the new ones that I already have recorded.
Launch that as, like, a season 2, you know, all the hammerstone stuff.
We'll have, like, created by hammerstone logo or something on the full psych panic page.
And then, yeah, and see where that gets us.
So, like, the podcast thing, I feel like it's a long term play.
I was slowly gaining subscribers.
I had, like, a couple hundred, you know
Aaron
00:35:39 – 00:35:40
That's great.
Listeners.
Yeah.
And it's also another reason to an excuse to email my list, which would be an excuse to start warming that up and then calling that list.
That way we have
Aaron
00:35:51 – 00:35:52
Right.
You know what I mean?
Like, this that's something I need to do.
We can use that asset eventually to talk about our products.
Yep.
But then, also, the podcast thing is awesome because it's it's a when you have a kinda nicely produced podcast with, like, good guests, it's an excuse to invite other guests who are
Aaron
00:36:10 – 00:36:10
big time,
often useful connections to make, you know?
So that's so we'll see.
Like, that gets us, but I think it's a kind of a minimum investment and we have a little bit of cash now.
So it seemed I was like, maybe maybe we should consider that.
So it sounds like for for that.
Aaron
00:36:24 – 00:36:26
Super on board.
Do it.
Aaron
00:36:28 – 00:36:35
And you already have, presumably, you already have an editor that you know and has worked with it, and it sounds like you just need
to start stuff.
Yeah.
I do.
Yeah.
Exactly.
Aaron
00:36:39 – 00:36:42
Cool.
Yeah.
I say go for it.
Aaron
00:36:44 – 00:36:52
As long as it's not gonna make you even more stressed or tired.
Some sounds like it's something you enjoy.
The actual, like It is.
Interview parts.
Yes.
I do actually enjoy those.
And I have been just, like, feeling so bad that I had all these interviews just sitting there
Aaron
00:37:01 – 00:37:01
No.
That feeling.
Just waiting.
I'm like, I really wanna do this, but I have absolutely no time or money to do this right now.
So, that would be awesome.
And I can probably have enough content for a season without even having to do interviews.
So, you know Great.
Aaron
00:37:18 – 00:37:25
Good idea.
Resurrect that thing.
Definitely.
You had cover art made for it after all.
It's like a real podcast.
Yeah.
And actually, I had the guy draw a version of the T Rex with a mask on so we could do COVID edition.
Aaron
00:37:32 – 00:37:37
Yeah.
That's funny.
Yeah.
The cover art's this adorable T Rex.
What is he is he holding?
Aaron
00:37:37 – 00:37:40
He's holding something.
Or he has a t shirt on.
Laptop.
He's got a laptop, and he's got, like, a CSS is awesome t shirt.
Aaron
00:37:44 – 00:37:46
Yeah.
The one where it overflows the box.
Aaron
00:37:50 – 00:37:51
Cool.
Good idea.
I'm for
it.
Okay.
Cool.
And then I can't wait to figure out other marketing.
Like, I think Reddit ads are gonna be useful for us and stuff like that.
I can't wait to start working on that stuff.
Aaron
00:38:05 – 00:38:21
I know it's going to be nice.
I, I tweeted this past week about how hard it is to get something off the ground and how everything you have to do is a fractal of more things you have to do.
And that's
Aaron
00:38:22 – 00:38:27
Every every little thing is like, well, that depends on this, which depends on that, which depends on this.
Well and also everything you do is always like a crappy version of the thing you need to do.
Yep.
So it's like, well, I could spend infinite amount of time on this
Aaron
00:38:36 – 00:38:38
Mhmm.
But I
need to do this other thing, and it's just as important.
So I can't do that.
So I have to do kind of, like, as best I can on this landing page and then get this, you know, set up over here.
It's ridiculous.
Aaron
00:38:54 – 00:38:56
Forever and ever and ever till the heat death of the universe.
Well, then that's the fun part.
Like, it's stressful to get it started, but then once it starts Exactly.
It's just, like, infinite tweaking.
And to me, I don't mind that.
That's Yep.
Aaron
00:39:07 – 00:39:19
No.
It's definitely the inertia at the beginning where it's like, I don't have a system in place, and so I can't I can't just run something through the system or I can't improve the system.
Everything that I've done business wise or anything, honestly, I've noticed this for coding projects, for house projects, for anything.
The most important thing is to have it end up being a complete thought as best you can.
Like even if it's wrong, it's important to have it represent like, represent a complete thought.
So, then I believe that gives you, like, some sort of abstraction that your brain can latch onto and then fix and go from there.
Yeah.
But if it's not a complete thought, if you're, like, blah, just, you know, like, hurry up and just, like, cram this thing and get it.
So there's that's the threshold.
It's like, it doesn't have to be perfect, but it needs to be a complete thought, I think.
Totally.
That's that's kinda been, like, my heuristic for how much work I should put into a thing.
Aaron
00:40:23 – 00:40:41
Very good heuristic.
It doesn't yeah.
It doesn't have to be a perfect thing, but it has to be complete.
The level the level of perfection varies, but the level of completeness needs to be equal to 1, totally complete.
Mhmm.
Aaron
00:40:42 – 00:40:51
Yeah.
And that's what we've been struggling with for so long is getting the first complete version done for refined.
Yeah.
Yeah.
Well, that that is different.
That is a different mistake kind of mistake, I think.
Aaron
00:41:00 – 00:41:07
I mean Yes.
Regardless of if it was a mistake, that's the thing.
Like, people keep saying, you know, just launch a crappy version.
And it's like, it's not Well,
there is not a crappy version.
Aaron
00:41:09 – 00:41:16
Yeah.
It's not a complete anything.
Yeah.
Like, maybe when we launch it, it will be crappy.
I don't think it will, but it will be complete.
Aaron
00:41:17 – 00:41:21
And that's the thing that's hard.
It's like, there's nothing to launch until the first version is complete.
Well, yeah, if it doesn't do anything, it's
Aaron
00:41:24 – 00:41:25
not a thing.
Do anything.
Yeah.
And that's yeah.
I mean, that's that's where we're at with, like, Colleen, and at least I had, like, a demo to show the client.
You know?
Like, here's the front end.
Hey.
It looks let's go look like this.
The Hotwire stuff works.
But we don't have a thing yet.
Like Right.
And because we're not talking to the back end yet.
We got
Aaron
00:41:46 – 00:41:48
There's no round trip whatsoever.
Yeah.
So we'll get that, and then it should go pretty fast from there.
Aaron
00:41:53 – 00:41:54
Yeah.
I think so.
Alright.
Wrapping up there for today?
Aaron
00:41:56 – 00:41:59
Yep.
I think so.
Cool.