Aaron
00:00:00 – 00:00:07
Alright.
So tell me why we should use YNAB, which is a personal budgeting tool, for our business budgeting.
Right.
So YNAB YNAB is a personal budgeting tool, but the founder, Jesse Mhmm.
Uses it for his company.
So what YNAB is is essentially it's just cash based accounting.
So True.
Right?
I mean, it's the it's kind of the envelope system, which is basically cash based accounting.
So you don't record money until it's there.
And then the other advantage of YNAB and the way it works for me personally and in my business, which I also use it for my business, is that it forces you to budget categories.
So, like, and and over time, you expose your actual expenses.
Right?
So there'd be things so in a business, what I think matters the most for us is cash flow.
Like, far and away, the thing that we're gonna care about the most is cash flow.
So we run into a time where all of a sudden we get, like, a dip in cash.
If we know what our true expenses are, we can extrapolate that over several months, then we actually know, like, how good are like, how how good are we?
How much do we need to worry?
Right?
Aaron
00:01:15 – 00:01:15
Mhmm.
And so the way that you eventually uncover those expenses and, like, what your actual monthly outlay is is by, every time an expense comes up, like, oh, I gotta buy a laptop, you create a category for that thing, and then you create a monthly allocation that you have to put into that category every single month.
So, like
Aaron
00:01:36 – 00:01:37
So you're buying it ahead of time?
Yeah.
So you're basically, what it reveals to you is what you actually need to have every month versus what you'd put out every month.
Because what you put out every month, what you pay out every month, like, an actual dollars to people is potentially way less, you know, on one month than another month.
Aaron
00:01:54 – 00:01:54
Mhmm.
And it looks like these big swings.
Right?
You're like, oh, I didn't have anything, and then all of a sudden, I'd had to pay, you know, $8,000 for taxes or you know?
And that everybody knows, like, business people well, if you've had if you've been in business for more than a year or 2, you know that you need to sign a sign for taxes.
And I think everybody screws that up probably the first time.
But then taxes aren't the only thing.
There's other stuff too.
There's insurance payments that have to come up.
There's, and this is a lawyer sometimes, your accountant every year, your we gotta refresh your equipment.
You got a budget for going to conferences.
You gotta budget for education.
You gotta budget for your monthly SaaS outlay.
Budget for those annual SaaS things that you pay so you can have a discount.
Aaron
00:02:35 – 00:02:35
True.
So the nice thing about that is then, you know, the annual thing, it's I think sometimes it when you're, you know, kinda, like, broke, you're reluctant to do the annual thing.
So you're like, oh, it's gonna come up again.
Well, I have the money, you know, to keep doing that.
Well, this way, you pay it, and then you just set a category and say every month, this is the amount that I gotta put in there, and you're just paying a monthly bill.
And then when it comes up at at the end of the year, you just pay it, and then just every month.
So it's not there's never a big expense that catches you off guard.
And the other advantage that I've never used in the business, but that I do in my personal life, is that you and I will have to talk about it.
Mhmm.
So, like, it provides, like, a common, like, it it's it stores our financial information in an easily understandable way so that you and I can be like, you know, we've had these conversations, like, should we budget for Berry to do Mhmm.
Blah blah blah?
Well, we could have that in YNAB and then move dollars from one category to the other.
Once you have everything spent in your categories like, it's not actually spent.
It's just allocated.
But once it's basically spent, you know you're gonna spend it.
Then it's a lot easier to feel confident about making a budgeting decision for something like, should we just pay Barry to do the 5 hours of work for this thing?
And and then we can actually, like, look.
And if it's like, oh, well, we don't just we can't just cash flow it this month, so we're gonna have to pull from a budget, then we have to have a conversation of
Aaron
00:04:00 – 00:04:01
which budget
we pull from.
Budget.
Yeah.
Alright.
So that's
Aaron
00:04:04 – 00:04:12
So I am super on board with all of that, and it's just way easier to do it in YNAB than something like QuickBooks just because QuickBooks sucks so hard.
Yeah.
YNAB is just designed for that exact workflow.
Yeah.
And I've tried other things, you know, in the past.
I use Mint for a long time.
Those things are more like after the fact analyzing data that already happened.
Mynd app is making you spend the money now when it comes in.
So you put it into the categories.
Aaron
00:04:32 – 00:04:32
Okay.
Aaron
00:04:33 – 00:04:33
Let's try it.
Money comes out of it.
And then also, oh, for taxes at the end of the year, it's great because you're you're basically your own bookkeeper.
Aaron
00:04:40 – 00:04:40
Right.
Aaron
00:04:41 – 00:04:52
that's what I was gonna do in in QuickBooks was do the actual bookkeeping.
But if we can accomplish both of those things and why not just doing why not?
I mean, we've got, what, 2 monthly expenses right now.
Transistor.
Aaron
00:04:53 – 00:04:55
Google Suite.
So Yeah.
We don't even need to start using it now.
But, like, when when we do, let's you know, as soon as we start having more conversations, let's let's do that.
I mean, we already now we need to make sure we set aside money for taxes.
Probably, we should get our accountant, whoever that's gonna be, telling us what we need to pay for quarterlies and stuff like that.
So we should have that That's true.
Aaron
00:05:15 – 00:05:29
Speaking of, I filed you know, we we had no activity last year.
We had an entity, but no activity.
Right.
March 15th came.
I filed the free extension and everything, so we're we're fine.
Aaron
00:05:29 – 00:05:40
We just need to file the actual paper form that says we had no activity last year.
So I don't know if you want your accountant to do that or mine or what you want, but we're good.
Yeah.
Let's let's let's do it.
Okay.
And then have the conversation about whether we wanna hire mine or yours to do our accounting for next year.
I mean, I don't, I don't I don't care.
Aaron's awesome, my guy.
Aaron
00:05:53 – 00:05:56
I was gonna say thank thank you very much.
I am awesome.
It's very confusing.
I have too many Aarons.
My brother's name is Aaron too.
Aaron
00:06:00 – 00:06:00
I didn't know.
So all the time when I have to when I'm talking to Beth, I'm like, Aaron did this thing today, and she'll be like, which one?
Aaron
00:06:07 – 00:06:23
Hopefully, it wasn't me.
I bet it was me, though.
Okay.
Well, I'll have I'll have mine finish the 2020 in just filing a a blank return.
And then We can
price compare if you want.
I I think I might go like
Aaron
00:06:26 – 00:06:27
Let's just go with yours.
Aaron
00:06:29 – 00:06:33
Yeah.
Mine mine is fine, but I would prefer to just go with yours.
Aaron
00:06:34 – 00:06:46
Especially since you have to file the foreign because it's a Texas LLC and you're a Chicago or Illinois resident, you have to file an an extra form.
So let's just let him handle that whole thing.
Okay.
Yeah.
And he already was aware of, like, Texas rules and all that stuff, and he said he could he could do it if we wanted to.
Aaron
00:06:53 – 00:07:03
Okay.
Cool.
Great.
Well, I will make sure that we get the, 2021 filed.
I think we have until, you know, September, but I'll work on it this week.
Okay.
Yeah.
So I'd although I will say I doubt that's gonna be cheap.
We should we should talk cost.
Like, so he does cost me, like, $2,000 a year to do that.
He does all my he does payroll, and he does the taxes.
But I have been happy to pay him that every single year because I've had no issues with him.
Aaron
00:07:24 – 00:07:37
So my guy costs 7.50 for a 10.65, which is a Mhmm.
Partnership.
So it's also not cheap.
I mean, he'll file I had him file.
He's been filing my my individual income taxes, like our family income taxes too.
So he does the all of my taxes for 2 for
Aaron
00:07:44 – 00:07:48
Right.
So I don't know what the incremental cost would be for another entity, but
it's Probably similar to your guy.
Yeah.
It sounds like.
Aaron
00:07:51 – 00:07:56
It's not like mine is Barkin Basement.
So Okay.
Let's just go with Aaron.
You're Aaron.
Okay.
Aaron j domash ataol.com.
That's a sign of a really good account,
Aaron
00:08:03 – 00:08:11
I think.
That's true.
That is yeah.
It's an industry specific sign.
I was gonna say I maybe changed my mind, but no, you're right.
He's very old school and has the best Chicago accent.
He's great.
Love it.
Aaron
00:08:22 – 00:08:33
So we just had the, almost had the client's name.
We just had the client call, and our portion was, like, maybe a minute, maybe a minute and a half.
Yeah.
We didn't have anything this week.
Sorry.
Go ahead.
You finished finished.
Aaron
00:08:38 – 00:08:47
I was gonna say in everyone else's, they just each person probably talked for 10 or 15 minutes, which, you know, may or may not be necessary.
Only do they talk for 10 or 15 minutes, they're accomplishing these major feats of technology.
And I was like, that's one reason why I decided to not share my little UI progress this week, because because I was like, the juxtaposition of this compared to these other things I just saw happening Yeah.
Is too much.
Aaron
00:09:03 – 00:09:03
Yeah.
It's too much.
I can't do it.
Like, look, I added the ability to add custom prefixes to your query.
Mhmm.
Cool.
I mean, it's cool.
It is cool.
I also added groupings to the select drop down, and it was all really easy.
That was the thing that's cool.
It was super easy Yes.
For me to just drop it in.
It took took a couple hours, and that was it.
And then the couple hours were not related to, like, getting it into the front end.
It was getting, you know, the the prefix box to jam up against select 2 and, like, all the custom theming stuff.
Yeah.
It ran in bullet train and all that crap.
Aaron
00:09:37 – 00:09:53
So So you you kinda got to use refine as an application developer would instead of like a like a hammer stone developer.
At least on the back end, you were like, I wanna add a category, so I'm just gonna add some meta here.
So you found that to be straightforward?
I did.
Though I will say, I don't really understand.
So the thing about the meta, I know in theory, it's supposed to be like, we could throw this in there, and then the the client is gonna be able to do whatever they want with it.
Aaron
00:10:05 – 00:10:05
Mhmm.
That's true when we allow them to specify their own components.
Right?
Which we do with view.
Mhmm.
And we can with clauses, for example.
Mhmm.
But, like, this part was for in the Rails app.
Sorry.
In the Rails app, we can with clauses.
In the view app, we can you could specify, I forget actually what levels we've decided to allow them to specify components.
But so I guess that would be the thing, like, you would have in order to do the thing I did, you decided, I would like to have this drop down with meta, then you would have to create your own custom component, hopefully pull in the pieces that we have already made for you, add the meta to your condition and on the back end, and then do the thing you want with the meta, and then specify to load your component instead of, like, our default component, and then it would load and everything would work.
Mhmm.
So all that's beauty is on the, on the view side.
And in Rails LAN, with the Hotwire implementation, I don't know.
I just it was, like, hard coded, basically.
Aaron
00:11:10 – 00:11:29
Yeah.
And that's how it is at at Resolute, where I work, is we, you know, we own the front end, and it's just like Right.
It's just our deal.
And that's kind of the same that's kind of the same thing, for the client.
They just have the front end.
Aaron
00:11:29 – 00:11:40
And so, you know, you you're you're actually doing it, but it really is like an application specific thing.
And so they can just throw meta in and then know what they're expecting on the front end.
Yeah.
Right.
And and, yeah, that's what it would feel like if I was doing it by creating my own custom component and then specifying that.
I would just add the meta, specify my component in the condition, and then my component would load, and the I could do the thing that I wanted to do.
That'll be really nice.
Like, it's frankly a pretty good it's a pretty good experience.
The categories thing, like like, it's basically meta let me shoot horn categories in there.
Aaron
00:12:04 – 00:12:04
Mhmm.
But it's kind of fugly.
Right?
Because I have to put a category in every single condition.
So, like, if I want them to be in the, email broadcast category or whatever, I have to put email broadcast on every single one that wants to have that category.
And then I had to do some jump through some hoops, right, like, on the the rendering side too because I pulled
Aaron
00:12:27 – 00:12:28
to a higher level.
Yeah.
Weird because, like, I need to, like, pull it up, and then only these things go under here, and then what about the uncategorized ones?
So I had to, like, you know, I had to do computer programming and, figure that out, as you PHP guys would say.
Right?
I had to write a loop, do some programming.
But Yeah.
Aaron
00:12:45 – 00:12:54
That's interesting because you're right.
You're you're putting a, like, a first level item deeper into, like, the second level.
Yeah.
It's, like, getting spread out, which which is it's basically, like, hey, look.
I can, like, make this happen with meta.
That feels like it should probably be a first class thing.
Mhmm.
So I decided to just make it happen with Meta, and, actually, I should add to our Trello board.
Like, I really think that should be a first class part of conditions.
Yeah.
Seems so obvious that people are gonna want that.
Aaron
00:13:19 – 00:13:59
What we're talking about here is, like, in select, like, drop downs, you can have the excuse me.
You can have the opt groups, which is like a proper HTML tag, and that specifies when you have a drop down that has a ton of things in it, you can kinda categorize them and, like, say these 5 options belong to email broadcast, and these 5 options belong to user attributes, and it kind of breaks it up in the UI for you.
So, yeah, I feel like enough people are gonna want that that we should probably bake it in.
Yeah.
I agree.
And what I did was I just added it to our Trello board under I created a new column called, like, future features, and we'll just I can live there.
We we do not need to do that anytime soon because it works.
Right?
So, and then it'll just be, like, a nice thing that we can we can drop in.
Like, hey.
And sometimes I can create, you know, a category on every single condition for your filter, you can, you know, refactor it to do it this way, and it looks a lot cleaner.
So that'll be that'll be good.
I mean, it's gonna be you know, I say that, but, like, I may want it sooner because it's gonna be me doing it for these guys.
Aaron
00:14:33 – 00:14:35
Right.
Totally.
And so, we'll see how many categories I have to do.
Not all of their things will necessarily require that.
Some of them are more complicated than others.
Aaron
00:14:43 – 00:15:00
Well, here's an interesting question.
You're gonna have to write it, like, you're gonna have to write it all at some point.
Right?
You're either gonna put it on the option and say the category is this, or you're gonna write a category and say the options are this.
So, like, you know, one way or another, you're kinda having
to do it.
The alright.
So conditions.
So I'm, like, I'm grouping conditions, and I guess we could also do it with grouping clauses.
But Mhmm.
But that feels like, you know, it would be, like, in a block.
So, like, I would say Oh,
Aaron
00:15:14 – 00:15:15
I see.
Mhmm.
I would say, like, condition, like, condition category do, and then I mean, I don't know how we could do it in, like, a function call too.
Like, it doesn't have to be this block thing.
Like, essentially, it's wrapping the calls to create conditions, and then it would just automatically, like, put them in that category or just add that category to meta or give me a category in the filter, like, break conditions into because right now, I just get conditions as, like, an array.
Mhmm.
Aaron
00:15:41 – 00:15:41
Could be
an object by category.
By category.
Instead.
Right?
I'm making that I'm making that myself backwards from like the the meta, essentially.
Aaron
00:15:52 – 00:15:55
You're plucking the categories out and making it into an object.
Aaron
00:15:57 – 00:15:59
Okay.
Interesting.
Yeah.
I'll think about that.
That's a good idea.
Yeah.
So I threw that on there.
We can we can, sit on that.
Don't have to do it right away.
Aaron
00:16:07 – 00:16:08
Okay.
Cool.
But, yeah, that project's going great.
I am just frustrated that we didn't have a better update for this week.
It just it just is what it is.
You know?
I don't I I don't love these, like, show off meetings.
I don't think you know, once once we have, like, 30 employees or so, I don't think we'll we'll do this.
Aaron
00:16:27 – 00:16:30
It's not when we have 30 employees.
Yeah.
Aaron
00:16:32 – 00:16:33
What is for,
like, 30 employees for our side project at
Aaron
00:16:35 – 00:16:40
the Right.
What's the what's the drawback in your in your eyes?
Well, because it kind of pushes you to be like, okay.
What's this thing, and what's the thing I'm gonna show off this week?
To, like, always be, like, producing a thing, which that's not the right I don't love that model.
Like, I don't love that way of thinking for while I'm while I'm coding.
I mean, it's really important.
We gotta we gotta ship you gotta ship stuff that actually works, but, like, having, like, a pressure of, like, I need to do some so what it does for me is each week, I'm like, oh, I should do a few things that are showy.
Yeah.
So that way I can, like, have a thing to to demo.
But, really, there's, like, other important things.
So, like like, you know, Colleen I I was extremely tempted to push Colleen to do something different so that way we could have something to show off
Aaron
00:17:27 – 00:17:27
Yeah.
To peel her off from working on refinements and have her, like, put error do error validations in line.
Mhmm.
Or, you know, like, like, basically, accumulate errors and then send it back to me so I put them in line, and we could have that showing.
But that I decided, even though I really wanted to have a thing to show this week that it would be a mistake that we should actually just focus on refinements even though we would have nothing to show.
And I would just have to deal with the pain and, you know, wake up feeling anxious this morning.
Like, it sucked.
Yeah.
Yeah.
Aaron
00:17:59 – 00:17:59
But I don't
like that because it it really did push me to feel like I need to do something showy.
And I think I'm used self discipline and made the right decision, but, like, that that's the mistake, I think, to make employees, like, have to have to deal with that.
Depends on your culture.
Like, maybe there's maybe their culture is compatible with that and and he's fine with it.
Aaron
00:18:21 – 00:18:27
Yeah.
And it could be an accident.
Somebody could have shown early on and been like, hey.
This is what I'm working on.
And now it's like, okay.
Aaron
00:18:27 – 00:18:34
I guess this is what I'm working on, and now it's just now it's the standard as we we screen share every time.
Yeah.
Like, it's really important to show your work to the group so that people know what's going on.
Like, for example, now we know what that team is doing for the back end stuff, which we talked
Aaron
00:18:46 – 00:18:48
about before the call.
Important.
Super important to us, and we really needed to know that.
So you need that.
But then, like, is that the way to do it is to, like, make teams do demos every 2 weeks?
Like, that's I don't know.
I I there's definitely pluses to it for sure, because then, like, people need to, like, feel this urge to, like, continuously which they need to.
Aaron
00:19:08 – 00:19:12
Yeah.
That's the other thing is we'll never do it this way.
I don't personally need that external, like, push to get shit done.
You know?
But and in fact, it kind of makes me not want to.
Do you know what I mean?
It's like positive effect on me.
But but, you know, whatever.
I'm old now, so I've I've, matured enough to deal with that shit.
But I'd like, you know, that's a lot to ask of people.
Aaron
00:19:36 – 00:19:48
Yeah.
And we'll never build an application like this, and we'll never build an application this way.
And so, you know, for us, it doesn't really matter except that we're building it for them and we have to do it.
Yeah.
I will say, though, I mean, I'm to see it coming together, and, everybody has such a good attitude.
And it seems, you know, like, this could be easily something, you know, that could I I suspect they're gonna pull it off now.
Aaron
00:20:14 – 00:20:17
I think they might.
They're they're moving quick.
Yeah.
Yeah.
They hired a lot of the right people.
Aaron
00:20:20 – 00:20:21
Mhmm.
Because I don't know how many are internal and how many are, consultants.
Mhmm.
But I think they got a really good mix.
They pulled in the right people from their internal team and hired the right consultants and, like, make it some good seems I'm just I'm really impressed because it's a huge project, and they're they're cruising.
They're some really amazing engineers.
I mean, that meeting today, I was like, why am I even doing this job?
These these guys should just do it.
They're all way better than me.
That's
Aaron
00:20:49 – 00:21:08
Yeah.
Now now you know how I feel.
Yeah.
And it's like the project owner slash, like, found, you know, CTO founder of a company is in the code every day pushing stuff forward, and it's pretty, pretty impressive.
Like, he's open in PRs all the time.
Aaron
00:21:09 – 00:21:17
Yep.
It's pretty cool.
Also, Andrew is driving so much of it, which is amazing.
Yeah.
He's huge.
He was at the big old meeting with all the important people that they just did.
Aaron
00:21:21 – 00:21:22
Were you at that one?
Aaron
00:21:23 – 00:21:23
Okay.
Aaron
00:21:27 – 00:21:27
Did I ever
tell you I got pulled into, like, a meeting a board meeting for a Fortune 500 company when I was, like, in my early twenties?
Aaron
00:21:32 – 00:21:33
Oh, gosh.
No.
Well, no.
It's happened to me twice now, but one one was an accident, and this one one was on purpose.
The, the on purpose one was I was a consultant at Accenture.
I mean, I had put a ton of work into a project that made it very successful for this company.
And, my bosses I I started at the beginning of the project, so all of my bosses then were just senior partners at Accenture just randomly.
So all of a sudden, like, I was doing all this work for these senior partners, and so they all really liked me a lot.
And this is the the infamous $500,000 spreadsheet Mhmm.
That I that was they sold the that they sold to Comcast.
Right?
Aaron
00:22:10 – 00:22:10
So I
was doing that thing for them.
So they they loved that.
And then and then for the next project, you know, they're, like, pitching their next project to the to the board, basically.
And, they pulled me into that meeting, which was hilarious.
I didn't I I said only a few things, and then mostly, I was there to, like, wear a suit and look like a consultant.
That's what they told me.
And so, like, that, you know, apparently, some of them knew of me.
I accidentally met the CIO at a urinal.
That was, that's terrible.
Yeah.
Yeah.
Anyway, I don't I don't like that experience right now.
Well, neither the the urinal or the board meeting.
That was
Aaron
00:22:58 – 00:23:01
No.
No.
Especially not at 20 something.
No.
It was way too much.
Yeah.
I
Aaron
00:23:04 – 00:23:20
was one time on a call with the CEO of Veronis, and he asked me a specific question, and I was like, nope.
Don't like this at all.
Just one time, and, fortunately, that was all.
You, like, slowly warm up to that kind of stuff.
You know?
Like like, the meeting that we just did today, like, normally, I I a long a a while ago, I would have been terrified by that meeting.
Yeah.
Especially having to be like, we don't have anything to show this week.
But, you know, like I said, I still had a little anxiety when I woke up this morning, but, you know, it wasn't, it wasn't, like, crushing or anything.
I kinda got over it, like, after I woke up a bit.
But you get used to it, I guess.
I guess you get used to anything.
Aaron
00:23:54 – 00:24:08
Yep.
I talked to Colleen just before, and she's almost got, relationships totally done.
So once she gets I thought those were.
Yeah.
Yeah.
Aaron
00:24:09 – 00:24:10
Done.
So they're done.
I told everybody at the meeting they were done.
Aaron
00:24:12 – 00:24:30
They are done.
The thing that she's doing now is, like, the optimization.
So if you, you know, you query 2 different things on the same relationship, we'll put them together into the same subquery instead of running 2 separate subqueries.
Wait.
Okay.
Give me an example of a relationship query and
Aaron
00:24:33 – 00:24:57
You're querying yeah.
If you're querying users and you say users is like the main model, And you say, I want users where the manager's name is Sean.
Yeah.
Manager's relationship.
So you'd say, users where the manager's name is Sean, and then on a separate line, users that live in Chicago or users where the manager lives in Chicago.
Aaron
00:24:59 – 00:25:05
So you're hitting the manager relationship twice.
Once to see if your name is Sean and once to see if they live in Chicago.
Aaron
00:25:07 – 00:25:21
So instead of doing 2 separate sub queries, which is fine, but expensive, we can collapse those and put them into the same subquery because they're inspecting the same relationship.
Aaron
00:25:23 – 00:25:30
And so that's what she's doing right now, and that's what opens the door for refinements.
So, you know, what's interesting to me?
I barely now I'm like, wait a minute.
I thought refinements were gonna be, like, queries, like, user has events, which is already just a relationship.
So users have events that happened 4 days ago.
Isn't that just a relationship query?
Aaron
00:25:49 – 00:26:23
Yeah.
It is.
So the optimization that allows 2 different, relationship queries to be collapsed into 1 is also the function by which we apply refinements.
So the work that she's doing to optimize those relationships is integral to being able to have refinements whatsoever.
So they happen to both rely on the same thing, but they're they're separate, if that makes sense.
Okay.
So, like, what so, like, the thing I just said, so, like, users who had this, you know, purchase event
Aaron
00:26:31 – 00:26:31
Mhmm.
In the last 4 days, That's just a relationship.
Uh-huh.
We could do that now, apparently.
Aaron
00:26:37 – 00:26:45
We could do, yeah, user that purchased something in the last 4 days.
Yeah.
We could do that now.
Okay.
What's the thing that we that refinements will let us do then?
Aaron
00:26:51 – 00:27:16
Refiners will let us do, refinements will let us say users that purchased a hat 3 times in the past year.
Oh.
Yeah.
Seriously, what would be All all all on the same line.
Okay.
Yeah.
So if you didn't because you could do it with just so users who purchased hats.
Mhmm.
And then and you could do users who purchased hats in the last year, and then you could do another line who users who purchased 3 hats.
Aaron
00:27:39 – 00:27:44
But then your then your your query is totally different.
So you could say, like
Aaron
00:27:45 – 00:28:05
Show me users that purchased a hat.
Show me show me users, that made 3 purchases, and show me users that purchased something in the last year.
Like, you could you could approximate it, but you couldn't do it.
Like, you couldn't do show me users that purchased 3 hats in the last year or purchased a hat three times.
Alright.
That's mind bendy to keep wrap my head around, like, the query for because it would be yeah.
Like, okay.
I need I need to get purchases user purchases that happened in the last 3 years.
So, like, that exists.
Aaron
00:28:19 – 00:28:19
Mhmm.
And then so that would be like a subquery of, like, on purchase events that happened in the last 3 years.
And then those those would have to also be oh, and I also have to do a query on that to say that those purchases were hats.
Aaron
00:28:34 – 00:28:35
Bingo.
Yep.
So I have to apply 2 things to the subquery.
Mhmm.
Aaron
00:28:40 – 00:28:43
Okay.
And then you have to group it.
Events, like a purchase event that happened, within the last 4 days, users that have purchased event that happened in the last 4 days, that is only 1
Aaron
00:28:56 – 00:28:59
One row.
Thing.
Yep.
Easy peasy.
Yeah.
So if you wanna continue to add more, basically, where clauses to this thing?
Aaron
00:29:07 – 00:29:21
Kind of.
So refinements get gnarly because not only are they inspecting the table itself, so you're, like, saying, you know, select let's just say star select star from purchases where item equals hat or whatever.
Right?
Aaron
00:29:21 – 00:29:33
That gets you hats.
Then you wanna say and, you know, created at is in the past 3 years.
So now you have 2 kind of 2 bindings in that query.
Aaron
00:29:34 – 00:30:02
But then to be efficient and to be able to look across all users that have done that, you have to group it and then add a having.
So you say select select user ID from purchases where, you know, item equals hat and created at is in the last 3 years, group by user ID having count greater than 3.
Aaron
00:30:04 – 00:30:22
And so you have to be able to build all of that and then run that as a subquery.
Yeah.
It's insane.
And this was this was when I told you months ago that I was watching a women's soccer game and was like, oh, dude.
I got it.
Aaron
00:30:23 – 00:30:26
That's what I got.
And it works it works great.
So so then now if that has to happen in Elasticsearch
Aaron
00:30:37 – 00:30:38
I don't know.
Yeah.
I mean, does Elasticsearch do subqueries?
And then, yeah, do is it even possible for us to write our code such that
Aaron
00:30:45 – 00:30:56
I'll tell you what Elasticsearch doesn't do is sit inside of a My SQL query.
Like, you can't do a My SQL query with an Elasticsearch subquery.
Can't do that.
Aaron
00:30:58 – 00:31:16
It's either all all in Elastic, or it's all in MySQL, or you're combining the 2 in memory, which is a bad idea.
Like, you're you're pull you're pulling results back into the application and then rerunning a separate query, which is not what you wanna do.
Well, yeah, I mean, that that might be what they but that's that's gonna be, like, the limitation.
Aaron
00:31:23 – 00:31:30
Right.
Then that's the discussion we'll need to have with them is what's your data and where does it live, and are you aware of these limitations?
Mhmm.
Mhmm.
Yeah.
And, like, so how and also how much of the work that we're doing on the refinements can be ported?
Are we just gonna redo it again except in Elasticsearch?
Aaron
00:31:45 – 00:31:50
Yeah.
Basically.
Basically.
Instead of aural nodes or whatever they're called, aural nodes.
Right.
We just write it again.
Aaron
00:31:52 – 00:31:54
There'll be elastic nodes.
Yeah.
Right.
Okay.
But that seems but she's gonna yeah.
But she does it once, and then she said she's using using abstract syntax tree for the blueprint.
So then she could take that.
And instead of doing AREL, which is apparently how you pronounce that k.
Aaron
00:32:09 – 00:32:10
Fisked it twice then.
Colleen taught me that.
I've been saying r
Aaron
00:32:14 – 00:32:15
l forever.
I've been saying
r l too.
But if you take instead of pumping out ARL nodes, she could do whatever the Elasticsearch thing is.
Hopefully, they give us something like that as well or whatever they choose to use.
It looks like it's looking like Elasticsearch.
Aaron
00:32:29 – 00:32:38
Yeah.
And if if Elastic really does have a rock solid SQL to Elastic API, we can just live with the Arel.
Is it Arel?
Aaron
00:32:39 – 00:32:46
A roll.
We can live with the a roll nodes and then feed them into Elastic and let Elastic convert the SQL to Elastic.
Mhmm.
Mhmm.
That'd be sweet.
Aaron
00:32:49 – 00:32:52
That would be sweet.
Who knows if it's possible?
Yeah.
Aaron
00:32:58 – 00:33:01
But we're moving we're moving right along.
I think it's gonna work.
Yeah.
So since we're kinda in, like, a dead space with features for them, I was thinking, actually, I might peel off some work on the view thing, because I feel like I could go really fast on that at this point.
Yeah.
Like, really fast.
That would be awesome.
So many times.
I think I might.
I'm planning on doing that, actually.
Aaron
00:33:20 – 00:33:31
Oh, I forgot to tell you.
Somebody DM's me on Twitter about wanting to use the the Laravel version and wanting to pay to help get it finished out.
Are you serious?
Yeah.
We're not even trying.
Aaron
00:33:35 – 00:33:35
I know.
This is why I'm like, I'm not so worried about this particular product in spite of you know, how we had to fail with the Safari Yeah.
For, torchlight thing.
This one isn't I don't I'm not worried about it.
Aaron
00:33:46 – 00:34:03
Yeah.
He says, higher is is a Twitter DM higher and loving the look of your query builder.
We have a massive DB, which this would could be epic for.
Would you like our team to give it a test on something big?
And so at this point, I'm thinking he just you know, he wants it for free, whatever.
Aaron
00:34:03 – 00:34:07
And I'm like, hey.
Thanks for reaching out.
We would love that.
I'll be honest.
Our timeline is uncertain.
Aaron
00:34:07 – 00:34:27
We're super focused on rails right now.
We've got a client that's, you know, paying us to build it out.
Are you in a rush or sometime the next 2 months would work?
And he said, we're all developers are always in a rush.
Offering some financial support would be in the cards also what do you have now?
Aaron
00:34:28 – 00:34:34
And then I kinda went from there and told him what we have, and he said, well, let me know if it helps move you forward.
So
So it's a it's a Laravel project?
Aaron
00:34:38 – 00:34:43
Yeah.
Yeah.
I don't wanna give them away, but it's a it's a Laravel project.
Aaron
00:34:45 – 00:34:57
Yeah.
I know.
I I listen.
I don't I don't think we should like, that's flattering.
I don't think we should do it right now.
No.
I know.
I don't you're right.
We have to say enough.
Aaron
00:35:01 – 00:35:02
Yeah.
Aaron
00:35:03 – 00:35:04
That's okay.
To
put the explicit.
That's okay.
Aaron
00:35:08 – 00:35:17
Yeah.
It's, like, that's exciting and that's great feedback, but it's just just we don't have the bandwidth to do that right now.
Pod I'm smashing my head on surfaces right now.
I wish it was much faster.
I know.
Oh, it's painful.
It's so painful.
Alright.
Well, that does I'm gonna focus on the view thing because maybe who knows how close how much I could get done just tomorrow, you know, like well, I've got yeah.
Like, this weekend, like, the rest of today and see what I can do.
Because I'm really there's nothing I keep, like, kinda I keep looking at the Hotwire stuff and, like, well, I can't I can't really do I'm, like, waiting on Andrew for stuff.
I'm waiting on Colleen for stuff.
I gotta I gotta just do other things.
You know, I'm like, I don't know how I can't I'm just, like, fiddling with you guys.
Aaron
00:36:00 – 00:36:05
Yeah.
Once once you start fiddling, you gotta take a while to do something else.
Like, oh, added prefixes, you know?
I mean, like, it's a thing I was gonna need to do, but it was, like, pretty low priority.
I'm, like, doing these very low priority things, which probably you could even live without.
You know what I mean?
So I gotta, yeah.
Alright.
Alright.
Well, that that makes me feel like I wanna move over to doing the view thing, and we'll just reach out to them whenever that gets done and see if they wanna give it a shot.
Aaron
00:36:30 – 00:36:31
I think that's I think that's right.
Aaron
00:36:33 – 00:36:38
No.
That was supposed to be like, huzzah.
We're doing it.
I didn't mean to put pressure on you.
No.
No.
No.
It didn't feel like pressure.
Okay.
It didn't feel like pressure.
It's just like I really wish we could move faster.
I'm we're only doing what we can do.
Aaron
00:36:49 – 00:36:52
Yep.
So And we're honestly not doing great.
Aaron
00:36:54 – 00:36:56
We're we're doing fantastic.
Yeah.
Oh, god.
I can't wait to launch this, though.
I still don't think it's gonna be, like, you know, epic launch, tons of licenses sold, like, right away, but, like, I do think it's gonna be fun.
Aaron
00:37:11 – 00:37:29
I think it's gonna be fun, and I think it's gonna be I think it's gonna be something.
Yeah.
I mean, especially if we I don't know if we've talked in a while about pricing, but if we sell them for 500 or a $1,000 a pop, we don't Yeah.
We don't need epic launch.
We just need launch.
Mhmm.
Mhmm.
Yeah.
It should be a I think it should be $1,000 a month or, I mean, a year.
Sorry.
For, like, a year of a license.
Yeah.
I agree.
29.95 or whatever that is.
For a license and that you know, that and when we do launch, we're gonna need to have, like we're gonna need to slap some language on there about, like, a, SLA for, like, support contract.
Aaron
00:37:54 – 00:37:54
Mhmm.
So you could buy support too.
That we gotta do that because we need to be able to set boundaries on people.
Like, I wanna offer support in, like, a Slack channel.
Just yeah.
Sure.
Like, we got support in a Slack channel.
Come in, and we'll try and help you out.
But then we gotta be able to say, like, hey.
This is, like, too much.
You know?
Like, you gotta buy our support contract to, so that way we could set some boundaries around that kind of stuff.
Aaron
00:38:17 – 00:38:36
Yeah.
Because I feel like that's gonna be a hard balance to strike when people want things, and you're like, well, that would that would be good for everyone, but that's just not on our road map right now.
And I I I don't know how we're gonna navigate those waters.
Well, we're not we're not even close to there, but
Aaron
00:38:39 – 00:38:41
It'd be interesting to talk to Andrew about.
Yeah.
We gotta have a support contract, though.
I mean, that's what all these little things do anyway.
Right?
So that's not nobody's gonna be surprised by that.
Yeah.
You do you like like, high charge, you buy a license, and then so that gives you updates for a year, and then you buy the sport contract if you want, like, their, like, quick support or whatever.
Aaron
00:39:03 – 00:39:04
Mhmm.
And, actually, I don't know if they offer any support for free.
If you just get their knowledge base, and that's it.
Mhmm.
Like, our docs are really good.
So we could honestly maybe we go and we say, like, you know, you got our docs, and you I don't know.
I really the thing is, though, here's the trade off of that approach is that I really like the Slack channel thing because you get feedback.
And in early days, that's just, like, so useful Yeah.
To get I agree.
Like, how people are using it.
So I feel like, you know, early days at least, we could offer the Slack support, and then as it gets busier, like, grandfather that out.
Aaron
00:39:41 – 00:39:55
Yeah.
Yeah.
That's gonna be interesting because especially if big companies wanna pay, you know, $5,000 for a year long support contracts, like, I'll I'll take that.
Yeah.
It was we have to have it as a choice because of that.
Like, I learned that even with my little info products.
What did I do?
I added, like, a just willy nilly added a $500 team license for my book.
So you buy it for, you know, like, 20 people or something in one go.
And then, you know, like, it took me about 2 minutes to add that to the landing page, and I probably made $1500 from just 3 peep 3 organizations that just did that.
Like, the so, you know, the ones you gotta, like, have the options.
Yeah.
And if there if we if if we price it right, then it's like, yeah, we could subcontract out support.
You know?
I don't we were not gonna have Collie around forever.
Aaron
00:40:40 – 00:40:42
I I don't know.
I I hope we do.
Aaron
00:40:45 – 00:40:59
I mean, even if even if we keep her around on a hourly basis, I I hope we keep her.
That's why that's why I'm trying to pay her as soon as she invoices us because I'm like, please love us.
Please stay with us.
Yeah.
Yeah.
It's it'll be tough.
But yeah.
Oh, well, cross that bridge when Yep.
Aaron
00:41:18 – 00:41:27
Yep.
We'll get there eventually.
Alright.
Anything else?
Mm-mm.
Aaron
00:41:27 – 00:41:28
Alright.
Just call it there then.