Episode

Hammerstone · Dec 8, 2021

(Finally) Exiting the Trough of Despair

(Finally) Exiting the Trough of Despair
Show notes

<div>Aaron and Colleen talk about the trough of despair and also numeric range optimizations, of course.</div>

Transcript
00:00

Aaron

Okay. Here we go. Just just, Colleen and Aaron today. Sean is traveling to work.

00:06

Colleen

He's in San Diego? Oh, he's there. Yeah. I'm gonna see him tomorrow.

00:10

Aaron

Oh, no way. This is the second time, I think, that he's traveled out there, and y'all have gotten to hang out. Right?

00:16

Colleen

I know. It's super awesome that his stage app brings him to where I live. It's nice.

00:21

Aaron

He actually he texted me, I think, on Sunday, and said waving from the DFW airport. And I was like, oh, man. I get I get the airport stopovers, and you get to actually hang out with him. So sucks for me. So what's going on?

00:39

What's going on in, I guess, client world?

00:42

Colleen

Yeah. I so this isn't actually client world, but I did get, the back end of the repo pulled out for Jesse for Bento so they could play a trumpet.

00:53

Aaron

I saw that.

00:54

Colleen

It was really interesting because it took me a lot longer than I thought it would, which was, a good it's not bad, but it was good exercise.

01:02

Aaron

It was against the explicitly stated goal that we wouldn't spend too long on it.

01:07

Colleen

Yeah. But, you know, I had that individual pursuit time on Thursday night. So, I did it during my individual pursuit time.

01:15

Aaron

Love that.

01:16

Colleen

I think it was I think it was a really good exercise to actually pull it out to see how much work was involved. I've ran into, like, a couple little things that we knew we were gonna run into, but I have forgotten. For example, our tests are our tests are right now database specific.

01:30

Aaron

Mhmm.

01:31

Colleen

So I spun up a new Rails app with Postgres because that's what I do as default.

01:36

Aaron

Yep.

01:36

Colleen

And then I dumped our code in, and I was like, oh.

01:38

Aaron

And all the grammar was different. And yeah. Yeah.

01:41

Colleen

And none of the tests work. So that was fine. Obviously, that's easy to fix. But it was just like little things like that Mhmm. That I ran into.

01:51

So it was really good to see that. And just some things I have added into the client's repo, like testing libraries and making sure I get everything out the way I want it to be. And so hopefully, I have given him enough information that they can get started. Did you watch those videos I sent him?

02:12

Aaron

No. I didn't.

02:13

Colleen

Okay. They're short. I sent him little overview videos. I also have an hour long video about track's pending relationship subqueries, but I didn't send him that.

02:21

Aaron

I I do. Send me that. I wanna watch that.

02:25

Colleen

No. It's just like me. It's like my stream of conscious. Like, I'm gonna I'm gonna walk through this, so I have it all sorted out.

02:33

Aaron

Wait. Where did you send these videos? Is it in the They're

02:35

Colleen

in the GitHub repo in the repo.

02:37

Aaron

Oh, okay. I was checking our DMs. No. I didn't see that. I will go watch those.

02:42

Colleen

Yeah. It was 9 o'clock at night. So they were they're a little stream of conscious. But, I hope that I'm I'm really curious to see what they're able to do with it. Now I am so familiar with it.

02:54

You obviously have this problem too that it makes total sense to me. And then

02:59

Aaron

Yeah.

03:00

Colleen

I'm trying to impart that information to a third party who has never seen it. And I'm really curious to see how that works out.

03:09

Aaron

Yeah. I really wanna see this 1 hour tracks pending subqueries thing that I think that would make me so happy.

03:18

Colleen

I feel like it's very, like, I'm just like, oh, and now we go here. Now we do this. But, I I it's nice to have it to reference when I get when I'm like, wait, what does this data structure do?

03:30

Aaron

Yeah. And when we hopefully one day write it in another language, it'll be nice to have that.

03:35

Colleen

Yeah.

03:36

Aaron

Recorded somewhere. Have you heard anything from Jesse?

03:39

Colleen

I have not. And then he said

03:42

Aaron

a couple days ago, like, oh, we're getting started on it.

03:44

Colleen

I feel like it was just yesterday or the day before. It was recently. So I haven't heard anything. But the great thing is I was gonna pull the front out. The reason it took so long is I was originally gonna pull the front out front end and the back end out and put them in a new Rails app and have a complete package.

04:02

Aaron

Mhmm. And I

04:03

Colleen

started to pull the front end stuff out, and it's pretty heavily entwined with the client work.

04:09

Aaron

Mhmm.

04:10

Colleen

And it's just a lot, in terms of the way the client is stabilizing. Because, like, what the client does with Hotwire is every time you you enter something in the text box, like, on a debounce. So not when you hit enter. Like, every time you enter something debounced, we're stabilizing we're providing a new stable ID. Oh, really?

04:33

Yeah. So what's hap so the JavaScript for it is like a lot. Yeah. So every time on the front end with the client now, the user starts typing. For example, in the text box, we stabilize.

04:46

I have an AJAX request that goes to stabilize that.

04:48

Aaron

Is it just URL encoded stabilization for Valorantica?

04:51

Colleen

That's why. It's URL encoded stabilization, and then the, then our stimulus controllers, our JavaScript, sends an event saying this filter has been stabilized, then the bullet train specific filter partial listens for that event and, does some does some more magic. And then when you hit apply, you just take if if your state has a URL encoded stabilized ID, you just push to that URL. So it Say

05:25

Aaron

that again. The last part, you just push to that URL? What is

05:28

Colleen

Of the stable ID. Yeah. We just you just the way they apply it is the way it is applied is it's not another round trip to the server. It's I already have the filter stabilized. It has not changed.

05:41

So apply is just, like, push state to force that filter to render on the page.

05:48

Aaron

Gotcha. Okay.

05:50

Colleen

And anyway, that isn't It's

05:54

Aaron

very specific.

05:55

Colleen

Yeah. It's like I was trying to pull it out, and then I needed, you know, all this other stuff, and he's not even using turbo hot water.

06:01

Aaron

Not even using yeah.

06:02

Colleen

And so I was like, this is a I'm spending too much time because oh my gosh. Trying to pull up like, all of the events that this that that's going on in the front end in our JavaScript right now. Like, there's a lot going on there in terms of the people who are listening to the events and pushing and, so it's almost it's actually, you know, almost working, but I didn't wanna send him to send him that one because I am not sure how much of that is client specific.

06:30

Aaron

Right.

06:31

Colleen

And so I wanna be I think I told you that. Do not share that repo with anyone. I don't think it's client specific, but I don't want to share it. And I, he doesn't care because he's not using it. He

06:43

Aaron

doesn't care.

06:44

Colleen

And it seems and it seemed more complicated than it was worth for, like, a basic query builder, that whole turbo situation. So back end's out. Good news is Sean can we can try and get Vue set up now Mhmm. Because it should theoretically just work. So that's cool.

07:00

Aaron

Yeah. That's super cool. That is what I have been doing is we got it integrated last week, and now I'm working on the couple of sticking points between the 2. And it's like, I've got it in a browser here. It's it's working.

07:17

Awesome. I know. It's super great.

07:20

Colleen

So great.

07:21

Aaron

And I'll tell you what, like, it is so nice to have both of them together in a little playground where I can make changes to both of them and, like, NPM will earn yeah. Node will run and compile everything again, and I don't have to, like, push and redownload. It's just like, oh, this is wrong in the JavaScript. I can change this. This is wrong in the PHP.

07:47

I can change this, refresh. Now it works.

07:50

Colleen

That's awesome.

07:51

Aaron

It's so fast and so amazing.

07:54

Colleen

Nice.

07:55

Aaron

So, yeah, I'm feeling really good about that. The thing I've been working on is getting so with, with the Vue front end, we want to be able to let the developers choose, like, what components are rendered.

08:20

Colleen

Okay.

08:20

Aaron

So, like, when they choose an equals, like, let's say, like, number equals, that equals clause has some component property has a component property attached to it so that we know what to render next to the clause, you know, for number equals the thing that we render next to it is a single number input For numbers between the thing that we render next to it is a double number input. So that you track

08:53

Colleen

it a lot? Yeah. Yeah.

08:54

Aaron

So what I've been working on right now is the system to register all of those components. So that let's say they have a date picker that they really like, and they don't want to use the one that came with the view to front ends that we provide. I want them to be able to just swap out the date, the single date, and the date between so that they don't have to reinvent the whole front end. They can just say, actually, I wanna use this date component instead of your date component. So that's what I've been working on.

09:30

And then, of course, like, if they have custom custom clauses, they need to be able to specify what component to use so that the user can input their data. And it's great because, like, most of their custom clauses, whatever, you know, whatever they should be, we'll be able to be satisfied by the components that we already ship. Because we ship, like, text input, number, date, double date, select, you know, you can do with drop downs. So hopefully, even if people are writing custom clauses and comp or clauses and conditions, they won't have to write any custom front end. They can just utilize ours.

10:17

So, yeah, it's really, really great. And I'm super pumped with where we're at right now for, for like the first time in a really long time. I'm like, this is it, man. Like, we're going to do this thing. There's there's been a, there's been a big old lull there in the middle while you guys were working on client.

10:37

And I was like, man, we're never going to get there, but we're back, baby. I feel like

10:42

Colleen

we're going to get there. Yeah.

10:44

Aaron

I'm super pumped. It's awesome. I love it. It also helps that I got the first proper integration done. So we are for Keith, it's done.

10:55

Like, I handed it over to him.

10:57

Colleen

Well done.

10:57

Aaron

So it's it's a little different because he's not using the front end, which is, you know, fine. He already has a front end. Yeah. So it's not quite the full deal, but it's still, like, I've set him up in our distribution system, which is unlock does dot sh for anyone that wants to distribute private packages. I've set him up in there with a license.

11:17

He's like composer requiring it. Like, it's the real deal. There's no, like, side loading, SIM linking, or anything. So I got him like set up fully up and running and I handed him his project back and it's

11:31

Colleen

That's amazing.

11:32

Aaron

Yeah. I feel Yeah. There's a couple a couple of, I don't, I mean, they are big wins, but they're big emotional wins to be like, okay, like this frigging thing works. And, like, when I handed it over to Keith, I was like, okay. Here's, like, here's what we got.

11:52

I think, like, I think it's pretty good. There's still more work that you'll need to do because you have the domain knowledge of your app and you'll need to like finish out some of the fiddly parts. But this is like, this is what I've got. This is how far I got. What do you think?

12:09

And he was like, this is unbelievable. I'm so moved. I never thought I would be moved by code. And I was like, ah, thank goodness. Because, you know, of course, I felt like, oh, it's not good enough.

12:22

But he was like, no, this is this is ideal. So super pumped. Also really glad to have that project off my plate because I was very busy with it. And Yeah. It's nice to have some free time back.

12:38

Colleen

Yes.

12:39

Aaron

Feeling much better.

12:42

Colleen

Nice. That's great news.

12:44

Aaron

I know. Man, the the the low, like, while you're just grinding Yeah. And you're not like, you haven't released, and you're just grinding, and you're like, am I an idiot? Like like, is this am I very stupid? Is this never gonna work?

13:05

Am I, like that part is that part's real tough. I don't love that part. Yeah. And I know that the answer is like, oh, just release before you're ready. But, like, that's kind of

13:19

Colleen

It's interesting. So I was talking to a friend of mine at the indie hacker meetup here. Mhmm. And he has been in the startup space for a long time. And he we were talking a lot about Laravel, and he was talking a lot about what you have been telling Sean and I from the beginning, which is it's not an ecosystem in which you want to release just release something that's not very well done.

13:46

And, we talked about it for a while, but but, like, he

13:48

Aaron

That's interesting.

13:49

Colleen

Totally agreed with that assertion that, like, within the Laravel ecosystem specifically, that's not a good move.

13:59

Aaron

Well, that makes me feel better. That's interesting that that was his perspective as well. That makes me feel better. Yeah. I mean, I like you said, I agree and have been saying that, and it's, I think, doubly tough because of the nature of what we're building.

14:17

One is it's very, it's very technically difficult, and so it's hard to be like, oh, just like we'll just ship it and we'll fix it later.

14:25

Colleen

It's like,

14:26

Aaron

oh, this is gonna, like, this could potentially cause some real pain for our users if we're, like, returning things that aren't true. Like, that's a bad deal. And then the second thing that's tough is, there's, like, eternal state built into our application. So, like, once a filter is stabilized and out there in the world, especially with, like, URL encoded filters, there's no getting it back. Like, you can never get it back.

14:57

You can break it. You can migrate it, but you can't ever just be like, okay. That one's invalid. Like, you just have to, like, have contingency plans for, okay, what if I change an ID? What if this filter name changes?

15:13

What if this condition goes away? Because people are gonna come back to their bookmarks, and suddenly everything's broken. So Yep. Anyway, life is hard, but I'm feeling so so much better.

15:27

Colleen

Oh, I'm glad. That's

15:28

Aaron

Yeah. Super encouraging. And we've got go ahead.

15:33

Colleen

Oh, no. Go ahead.

15:35

Aaron

I was gonna say we've got Dave working on React.

15:38

Colleen

Right.

15:39

Aaron

And I think he's starting today.

15:41

Colleen

Okay.

15:44

Aaron

So I think we decided gonna give him, a chunk of, like, 50 hours and see how far he gets and then reevaluate. He's already gotten so far just like dorking around on his own. So I'm pretty pleased with

16:00

Colleen

I feel like and then I think that might I think React and rails is gonna be really good together. I think the turbo is maybe not the best fit the way this has been, done. But I feel like the React rails is gonna be be really solid. And a lot of people aren't aren't on the turbo bandwagon yet because it's so new. So there's that as well.

16:21

So I think that, I think this is gonna be cool. What I

16:25

Aaron

think the only thing that could make our client engagement better is if they had been using React from the beginning. Yeah.

16:33

Colleen

It definitely is interesting. They The way

16:35

Aaron

They have legit reasons for using for not using React. But, like, in a perfect, perfect world, they'd be using React.

16:42

Colleen

We would

16:43

Aaron

have that.

16:43

Colleen

We'd have that.

16:44

Aaron

But we'll get it. We'll we'll get it anyway, so we'll we'll be fine.

16:47

Colleen

What's your soft launch plan for Laravel with our your list?

16:50

Aaron

So Our list. So next week, provided I get this component stuff done, which I am pretty sure that I will. Next week, at some point, I'm gonna reach out to a couple of the people that have expressed the most interest

17:06

Colleen

Okay.

17:07

Aaron

And try to just basically hand hold them through the process.

17:12

Colleen

See how it goes?

17:13

Aaron

Kind of yeah. Kind of 1 on 1, like, alright. We're in the DMs. Like, what are you is it working? Is it not?

17:19

Like, what are your errors? What are your questions? So that'll start next week, provided this gets finished. And then after that, I don't really know because, so if I onboard, you know, 1 or 2 people next week, that puts us into, do do do. So today is 8th.

17:45

If I reach out to them next week, let's say on 15th, And I spent a couple of days working, getting them integrated. The week after that is the 20th through 24th.

17:58

Colleen

Yeah. So no one's looking that week or really the next week because Or

18:02

Aaron

next week.

18:03

Colleen

So you're really looking early January before, you know.

18:08

Aaron

Yeah. And so this is a question. There's there's some notion that, like, nobody's really working that week, but there's also the notion that, like, nobody's really working that week. So I can do, you know, I can do a bunch of work. Like, are there people out there who are like, okay.

18:26

Finally, everything's quiet. I'm gonna do some fun work. And would this qualify as like, I wanna try this out and see how it goes.

18:35

Colleen

It might.

18:37

Aaron

But the yeah. It's tough because it costs $1,000.

18:39

Colleen

Yeah. I feel like the answer my my gut reaction there is the answer is no because no one's just buying it for their side projects. People are buying it for work That

18:48

Aaron

is true.

18:48

Colleen

And they're taking a week off work. So I think it's

18:50

Aaron

good to be wants to, yeah.

18:51

Colleen

Work yeah. No one wants to do regular work. Regular work

18:55

Aaron

Heck no.

18:55

Colleen

On their on their vacation.

18:57

Aaron

No freaking way. Okay.

18:58

Colleen

So I think realistically yeah. I don't think so. So don't feel disappointed if people are like, yeah. We'll do it in January.

19:05

Aaron

Yeah. I don't care about that right now, man.

19:07

Colleen

Low priority.

19:10

Aaron

Yeah. So I think that may be it then. Just try to get, you know, I'll reach out to several people and as many that wanna take me up, before Christmas, I'm happy to to work with. I also want to specifically try to not work over Christmas because I worked so much over Thanksgiving on Keith's stuff, which is a whole another, you know, philosophical question. I'll save for later because we've only got 18 more minutes.

19:40

Colleen

Okay.

19:41

Aaron

I don't know. I'll tease it. Here's the question, Colleen. As as the happiest person in in in the Slack, here's the question. And we can't talk about it now because we don't have enough time.

19:54

Colleen

I know.

19:55

Aaron

Here's the question.

19:55

Colleen

You gotta go.

19:56

Aaron

How much how much does it make sense to sacrifice now in terms of like time so that you can reach escape velocity later and suddenly have all the time in the world, you know, quote, unquote, versus how much does it make sense to just work the 9 to 5, boring, but you're not like sacrificing Thanksgiving break and weekends and individual pursuit nights. You're just freaking getting a paycheck and hanging out. Right?

20:36

Colleen

Right.

20:36

Aaron

Because the sacrifice only is only valuable provided you reach escape velocity, because if if you don't reach escape velocity, then you would have been better off just working a 9 to 5 and like dorking around in your free time. Right?

20:59

Colleen

You're right. You're not wrong. Yeah.

21:00

Aaron

Think about it.

21:01

Colleen

I'll think about it. We'll talk about it next time.

21:03

Aaron

Yeah. Dear listener, come back next time. Hopefully, you'll talk about it.

21:08

Colleen

You'll have all of your life questions answered.

21:10

Aaron

I hope so. As as my guru, I need Colleen to tell me. The other thing that I want to talk about is this numeric optimization.

21:21

Colleen

Okay. Tell me, Tim

21:22

Aaron

Horton up with, tell me about it. So been reading, excuse me. I've been reading these sequel books, right?

21:31

Colleen

Yes.

21:31

Aaron

And I actually just got 2 Postgres books because I probably need to know more about Postgres because I know nothing about it. Yeah. So I've been reading these sequel books. And one of the, clever things that they're talking about in terms of indexing is when you use, like, a, let's say, number is between 110. Right?

21:58

What MySQL is gonna do is it's gonna do, like, a range scan, which is, you know, can be can be index, assisted. Right? So if you have an index on that thing, it is index assisted. However, it is faster and more performant in many cases to say instead of number between 110, to say number n and then do the parenthesis and put 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Right?

22:34

Colleen

Okay.

22:35

Aaron

So that's called a a multiple equality versus a range.

22:39

Colleen

Okay.

22:40

Aaron

Right? So the multiple equality in my SQL is not evaluated as, like, a equals 1 or equals 2 or equals 3. Like, it's that's not how it works. That would suck. That's no good.

22:55

It's evaluated using it's it's a multiple equality, so it gets to use the indexes. So it's lightning fast.

23:05

Colleen

Okay.

23:07

Aaron

The other benefit is, let's say you have a multipart index. Wherever and it's like column a, b, and c. And if you are searching on column b, so it's right there in the middle. A, b, and c is your index. Column b is in the middle.

23:25

You're searching on column b, and your criteria for column b is a range. So you're like a equals 1, b between 110. So column B is a range. It can't then take advantage of the third part of the index column c, wherever it reaches the first range condition, going from left to right, it stops. There's something called like loose index scanning, but it's just, you know, it stops.

23:54

So you can't use the whole index. It stops when you reach the first range. So all that being said, I realized for cases like our numeric condition and potentially our date condition, if it's a date without a time, I realized that are you still tracking with me?

24:20

Colleen

Yeah.

24:21

Aaron

Okay. You had the furrowed brows. I couldn't tell. I realized that, in a numeric condition, if you don't allow floats, so it has to be integers because if it's a float, then the range is infinite. Cause you can just keep going smaller and smaller decimal points, right?

24:44

In a numeric condition that doesn't allow floats and you know the bounds of the data, we can transparently optimize the user's intent of show me numbers between 110. We can transparently optimize that to show me numbers in 1, 2, 3, 4, 5, 6, 7, 9, 10.

25:07

Colleen

Right? Yep.

25:08

Aaron

So that's great. So we can do that for between clauses. But we're kinda hosed on less than, greater than, not equals, not between. Right? So what I added was, the ability to define the minimum and maximum bounds of the numeric input.

25:29

Colleen

Okay.

25:30

Aaron

So let's say you're setting up a condition for, like, you know, users age or whatever, you can say that the minimum is 0. Like, you know that it's it's not negative one.

25:46

Colleen

Right.

25:46

Aaron

So if you say the minimum is 0 and the maximum is, I don't know, 120, 80, whatever. Not only does that validate the user's input on the front end, so, like, you're not gonna get garbage in. So it'll validate that it's between 80 and, 0 and 80, but we can also then use that as one of our bounds for numeric optimization.

26:13

Colleen

Yep.

26:13

Aaron

Right. So if we say like in our, in our app at work, like we have to choose a year for certain things, and we only have data going back to 2018. So I can say the minimum you can choose is 2018. The maximum is we'll do this year plus 1. Why not?

26:30

And so now we have what? Five values? 18, 19, 20, 21, 22. So when the user says, oh, I want anything after 2018, I can convert that from a range to a multiple equality because I know the bounds of the universe. And if they say I want anything that's not 2021, even on a not equals, I can convert that to a multiple equality and just take the 5 that I know exist and take out the one they're not looking for and use those 4.

27:02

So I can and and it's great because we have this issue where not only is our app living or our library living in an unknown environment, but then it's being used by users. And so even the developer doesn't really know exactly how it's gonna be used. And so if we can apply these transparent optimizations when the data fits, I think we're gonna be able to really increase a certain number of queries, you know, not all of them, but we'll be able to offer these optimizations and tell the app developers, like, listen. We've done everything we can. We've probably done everything you can too, and it's gonna be as performant as it can be.

27:44

Colleen

As possible. Yeah. Yeah. That's cool. I like that idea.

27:47

Have you started doing that at work? Have you played around with it?

27:51

Aaron

I've played around with it on our work data, and I've implemented it in, Hammerstone's version of refine.

27:58

Colleen

Okay.

27:59

Aaron

The work the work version of the filter builder is completely independent because of my employment contract. So I'm not using this optimization at work.

28:09

Colleen

Got it.

28:09

Aaron

But I tested the, SQL on work data, if that makes sense.

28:14

Colleen

So how are you defining those bounds? Is that

28:18

Aaron

So it's just another in in our world, in Laravel, it's just another, fluent method on the condition. So just another attribute on the condition. So I would say numeric condition, name is age, men is 0, max is 80.

28:37

Colleen

Got it. Cool. I like it. That's great.

28:39

Aaron

Thanks. Awesome. Cool. Right?

28:41

Colleen

Yeah. That's super cool.

28:42

Aaron

And I realized we could also do this, potentially on dates provided there's no time data.

28:48

Colleen

Okay.

28:49

Aaron

So, you know, on on the columns, you can have, I forget all their names, date, date, time, time stamp, all all that garbage. The ones that are proper dates with no times attached to it, those are finite. Right? With time, it's not really finite because it's continuous. So with dates, it's finite.

29:11

So if it's a date column, and we know the bounds, and it makes sense. We don't, you know, if, if the range is a 1000000 items wide, we're not going to do that. We're just going to use the engine to do that for us. Yeah. We can also perform that optimization on dates.

29:29

I think that'll be less useful because I think most people are using, timestamps where they have the date and the time that like the thing happened. But why not? It's free for the app developer.

29:41

Colleen

Yep.

29:41

Aaron

Like, if it works, it's a bonus and if it doesn't, you're right back where you were.

29:46

Colleen

So. Nice. I like it.

29:48

Aaron

Interesting. Right?

29:48

Colleen

Yeah. It's super cool.

29:50

Aaron

I'm curious if there are any other things like that out there. Because, like, the breakthrough I had was, why doesn't MySQL do this? That was my question. And the answer is because MySQL doesn't know MySQL doesn't know the bounds of the data. Right.

30:06

It knows what's currently in there. Mhmm. But in terms of, like, business requirements, it doesn't know the logical bounds of the data. And so it it just it can't make that optimization because it may do it wrong.

30:20

Colleen

Mhmm.

30:21

Aaron

So yeah.

30:26

Colleen

Awesome.

30:27

Aaron

Cool.

30:28

Colleen

Very cool. Yes. Yeah. Very cool.

30:30

Aaron

Super pumped.

30:31

Colleen

Yeah. Nice.

30:32

Aaron

Yeah. I was pleased with that one. Alright. I've got 7 minutes before proper meeting. What do you got?

30:39

Colleen

Well, also, I'm trying to get the query builder working with sample client data, like, a bigger set. I don't I can't obviously do a 1000000000 records, but with the the bigger set of data. Because we've been leaning really heavily on our tests, which are great, but, you know, spell out the SQL. So I think that'll be a big win to be able to show them the data query builder working on their data. What you said earlier about grinding it out and, like, just kind of Mhmm.

31:15

It's, like, mostly done. And the client wants these amazing optimizations, which are gonna be so great, but it's a lot of stuff. And, I feel good about it. I feel like all of the really hard, like, is this even gonna work? Details are worked out.

31:31

So now it's just execute. But there's a lot there's a lot to execute. And there's a lot, yeah, there's a lot to execute for these guys. And so, hopefully

31:41

Aaron

gotten to show them the sizzle yet? Like, have you shown them, look, this works, and now we're talking optimizations? Are we still

31:49

Colleen

No. Because they the reason the reason that is the reason I don't have anything cool to show yet well, hopefully, if I get that sample data in Mhmm. And get it working on that, that'll be a little bit better. But, the cool thing that they really wanna see are the safe filters reapplied elsewhere.

32:07

Aaron

Right.

32:07

Colleen

And so

32:08

Aaron

Which is super cool. Yeah.

32:09

Colleen

Which will be super cool. And the back end is getting really close. But, it's not quite done. And the front end is really the challenge there for me is is how because I'm gonna have to basically, like, for example, if you wanna get if your, like, nested filter is a product, and it's related to contacts and you're on the contact filter, I'm gonna have to somehow examine all of the relationships on the contact model,

32:38

Aaron

Mhmm.

32:39

Colleen

Sort through the available filters. I haven't figured and then provide them in a drop down. That's what I think I'm gonna do. That's my plan. So there's, like, just lots of stuff like that.

32:50

It's, like, how is this exactly gonna work?

32:52

Aaron

Mhmm.

32:53

Colleen

And it's gonna be so great, but it's still it's it's still a lot of a lot of things, to finish up there. So

32:59

Aaron

And you don't have like that, the same thing I'm feeling. You don't have like that emotional win of having shown them, like, look, this works and it rules. So there's still this, like, what who knows what they're thinking? But what you're thinking is, do they doubt that this is ever gonna happen? Do they doubt me?

33:22

Am I an idiot? Like

33:24

Colleen

That's exactly what I am

33:26

Aaron

You don't you don't have that win of, look, this freaking thing works. Let's talk improvements and optimizations, and that that is the trough of despair.

33:36

Colleen

That is a 100%. Like, Eric, that's so funny because you you hit it on the head. That's exactly the state I'm in right now. So I'm like

33:45

Aaron

Listen, if you wanna talk feelings, I'm your guy. I God. That's exactly how I feel.

33:51

Colleen

Oh, man. So yeah. So Alright.

33:53

Aaron

Well, I gotta go. You

33:54

Colleen

gotta go. That's okay. Alright, man. It was good chatting with you.

33:57

Aaron

Alright. Talk soon. Talk to

33:57

Colleen

you later. Bye.

Details
Show
Hammerstone
Date
Dec 8, 2021
Role
Host
All podcasts
Podcasts
Newsletter

Every week: the best things I've found and what I've been thinking about.