Hammerstone · Nov 17, 2021
<div>It's finally here.</div>
Aaron
Okay. We're back. Sean's having a little bit of computer issues today, so his audio is coming through his headphones instead of his mic, but it's not that bad, and we can deal with it. So speaking of issues, Sean, you've been working on bundling. How's that going?
I I
Sean
bet that's what broke my computer.
Aaron
That's Probably.
Colleen
Definitely.
Sean
Yeah. So I'm I'm I'm just down to the point where I need to bundle it up into a package that we can release on NPM, and then, yeah, it's time for, you know, you and me, Aaron, to link it up, make sure that I'm speaking the same language. Like, I think that I've got the I mean, I think that my blueprints that I'm generating are what you're gonna expect. Pretty sure they're identical to what I'm generating in the rail side, so, so we'll have to get that all synced up. And I think that it would be faster for us to do that not via the package.
So the the package does not really hold up on us, like, doing that work, if that makes sense.
Aaron
Mhmm.
Sean
So whenever you want, you and I could team up and make sure that that that works, figure out how we wanna do that. It's also thinking of, like, maybe we want to have a separate repo, which is basically just like our 2 projects pulled together to create Mhmm. Something so that way we can run integration tests on it. You know what I mean?
Aaron
Yep. That makes sense.
Sean
Which is a little bit crazy, but kind of like maybe what we should do. Yeah. I don't know. It's worth discussing, at least, if that approach makes sense, or if there's something simpler to do that we could do. But but yeah.
So then so that's done. Then the the bundling is, you know, should be easy, but it's not. I, like, I don't understand why it's a hard problem for me to just only build my code and not include all the other code, you know, that I'm pulling as dependencies. I don't I mean, it it is in theory. Like, if there's directives in, in webpack for me to say, like, exclude these things, etcetera.
And view CLI, the live the library that I'm using to, like, just create the project, does a whole bunch of stuff for me that I don't have to configure. So that's cool. But I have it set up the way it should be, and it's excluding most of these dependencies except for 1, and it's mysteriously just hanging around. So I'm just figuring that out. And it's just this one particular library.
Yeah. So it's it's weird. Like, I don't understand, like first of all, this library, I'm only using 2 functions out of it. It's, like, probably would not be that much for it to just be inlined. On the other hand, probably a lot of people use it.
It's this, like, time library. It's sort of the canonical library that people are using for time stuff now. So it makes sense for it to be a dependency that people pull in on their own. But on the other hand, it's also, like, kinda tiny amount of code, and I'm only importing these 2 functions. And in theory, it should do this tree shaking thing, and it shouldn't it could just inline it, and it would be small a small package to include.
So even if I did screw up the web pack, which I have, and it was included, it would be small, but it's not. So that's not working either. So, yeah, I don't I don't know. I'll figure it out, but it's stupid and annoying, and I don't understand why it's, like, just build build the library, build the code, and then don't include don't concatenate the other libraries unless I tell you to. I mean, I don't isn't that what basically you almost always want?
Aaron
Yeah. Basically.
Sean
So I don't know. Very frustrating. And I I've just been copy pasting magic incantations in, like, for each different library to get it to not include not concatenate into the the final build. Like, seriously, like each one has had its own little special thing I have to do. There's, like, this excludes thing in webpack.
It seems straightforward. You just put that in there, and then that should work. But, no. I had to go change something in my babel config in order to get one of them to not be included. Like, I don't understand why.
That makes no sense to me. It's it's weird.
Aaron
I know. It's very frustrating. Hopefully, this will be one of the benefits of being open source is someone can come along and say, like, you should change all this build step. Be like, great. Please change it for me.
Sean
Yeah. Yeah. I mean, in the end, I don't think our setup is gonna be that complicated. It's just, I just gotta get that one last kind of piece in, and then yeah. And then we're and then we're there, and I can push that out.
And then, yeah, I wanna do something crazy and see if I can get it to work in the rails code that our client is running just for fun.
Aaron
Oh, like as a smoke test?
Sean
Yeah. No. Smoke test would be I just yarn at it to my own project and then run it
Aaron
Mhmm.
Sean
There, instead of running from my own code. But the like, you know, that'd be the easiest thing. Just create another view client project, and then run it with the data that I've been providing. That'll be a fast test. But, yeah, it would be fun just to see it working with with, Colleen's stuff.
Swap out the Hotwire thing, put in the Vue client. That's kinda neat.
Aaron
Mhmm. That's pretty that would be very
Sean
to for fun. Yeah.
Aaron
Yep. Yeah. That would be awesome. Well, I am off all of next week, for Thanksgiving.
Colleen
Me too.
Aaron
So if any of those days work, for you, Sean, to do some integration stuff, then I might be able to set aside, especially, Monday, Tuesday would probably be easier.
Sean
Okay. Yeah. Probably not, but maybe
Aaron
That's fine.
Sean
I mean, I was telling you guys about all my work stuff.
Colleen
Yeah. Mhmm.
Sean
All the non developer work stuff ate into my developer time, and then I have commitments that I have to finish up for clients to get, like, some, you know, some of our important clients to get some stuff done code wise. So we'll see. But then, you know, certainly wouldn't be unreasonable for me to take a day off next week. I'm sure quite a few of us will be doing that. So that would be that would be awesome, actually, if I could get the work stuff, like, wrapped up, buttoned up, and then get a day off to do that with you.
That'd be sweet, but we'll see what happens.
Aaron
Okay. Keep me updated. I'll be I'll be around. I mean, we're not we're not traveling. We're actually hosting Thanksgiving here, and our office is closed for the entire week.
So Right. Yeah. I'll I'll be good. That's pretty big. I mean, that's pretty pretty exciting.
Sean
Yeah. So, like, where do you where are you at with, like, comfort level with soft launching? Like, once we just started working?
Aaron
Yeah. I'm ready. Let's let's integrate it, make sure that everything matches, and then Yeah. Start reaching out to people on Twitter.
Sean
We gotta double check on how I'm doing refinements and make sure that makes sense to you.
Aaron
Yeah. That's one open for me.
Sean
Decided I'm doing it, I think, what we decided together. And then the error data format, that's so easy to change and swap around. It's literally just, like we could just whatever makes sense, we'll just do that. But I I just put in what I thought probably was what we'd end up with.
Aaron
Yeah. I think that's
Sean
right. And then I did not do the deferred condition.
Aaron
That's fine. That one was very cool. I don't know if I don't know if the client has that one. And so, Collin, you may have never seen it, but it's very cool. It's like the option condition where they can say, like, you know, let's say, color is red, blue, green, purple.
But it is an a like, the options are provided, via AJAX. So they can start typing. It'll hit the back end, refine will do the query based on what they've typed and send back viable options for them. So if it's an option condition of, like, you know, 10,000 options or whatever, then we don't have to send them all down. So it's very cool.
Colleen
Nice.
Aaron
Yeah. I'm I'm ready. I think that's great. So we've got getting it. Yeah.
We've got the licensing portal set up through unlock.sh, which is incredible. So they will, I can set up fees and take billing and everything through there, and they handle the distribution. So everything on that side, I've got all set up. So, yeah, I think I think that's it. I think we're ready to go.
Sean
Mhmm. Yeah. Absolutely. So crazy. So if you know anybody that's interested.
Aaron
Yeah. I have a couple a couple people that have already reached out over the past, you know, whatever, 2 years, and they're ready to ready to try it. So I know. It's crazy. It's a big deal.
Sean
Cool, man. Yeah.
Aaron
Yeah.
Sean
They're gonna pay for it. Right?
Aaron
Yes.
Sean
Cool.
Aaron
Yeah.
Sean
Awesome. Getting that stranger money.
Colleen
I know. Yeah. That's great news.
Aaron
I know. It's gonna be great. We've we got our first license 2 years ago, and now we're ready for numbers 2, 3, and 4. You know? K.
Anything else on your side?
Sean
Mm-mm. No. Other than yeah. It's, like, tempting to I'm not gonna do this, but, like, the React version for just doing a builder version, it's like it's a fully formed in my mind. I just need to, like, poop it out in the code.
Like, I could do it at any point, but it's it's
Aaron
On that note, someone reached out to me saying they may want us to help them with a React version of it.
Sean
Yeah. Okay.
Aaron
So let me let me see exactly what he's looking for on that, and I may send him over to you. It was it was the last DM I had. It was like, hey. We'd love to pay you guys to build this out and react for us.
Sean
K. So That that makes sense.
Aaron
All this the way that you did the view stuff was so, like, you know, advanced Vue, like, basically not Vue, it's gonna translate super easily to React because you did all the composition stuff. Right?
Sean
Well, so, yeah, all of that stuff is above and beyond, like, just what I need in order to do the the builder version. But also, yes to what you're saying. Like, it's so much easier for my brain to think in React, and how I would do this in React, and, like, all of the the, like, statically like, the pure front end query builder code. Like, the basically, the declarative language for, like, the sorry. Domain specific language for building queries that you can you just write components out on, you know, like, that would enable us to do, like I keep wanting to call it spec search because that's what we used to call it, faceted search.
You know, that stuff, put that aside. That's easy for that's easier for me to wrap my head around in React than it was for Vue. And, like, building APIs for developers with the tooling that I have in React is, again, easier for me to wrap my head around. But just building the query builder component that accepts blueprint and errors and conditions, like, that is also easy and fully loaded in my brain and, you know, should not take more than I'm not gonna say, actually, because I'm gonna jinx myself. It should be easy.
Like, it should be pretty easy.
Aaron
That's great. Well, I'll see what this most recent DM from the React guy says and see if it lines up with anything we wanna do.
Sean
Okay. Yeah. Like, if they have a budget that they wanna throw at us and whether it's less than what we think we would need, that's fine. Like, it would be enough to, like, just prompt me to do it then.
Aaron
Mhmm.
Sean
That makes sense.
Aaron
Oh, speaking of budget, did, you ever get in touch with Matthias?
Sean
Yeah. We just couldn't, our wires just kept crossing, I guess. So Really? We we never really connected. I tried I tried to pull them in the email because I think Twitter DMs, both of us just, like, lose them.
Aaron
Yeah. Same.
Sean
But we didn't make it there. So
Aaron
Pity.
Sean
Yeah. We'll find somebody, though.
Aaron
Okay. Cool. Colleen, what's going on over there in California?
Colleen
You know, it's 65 degrees today, so I told my children they needed to wear pants because now that's cold for us.
Aaron
Mhmm. It's winter. It's the dead of winter.
Colleen
Basically winter. So we have fully acclimated when we decided it was cold. So yesterday was a big day on the client side. I spent hours, hours, the majority of my work day yesterday, talking to the client and talking to some database experts and trying to figure out how we're gonna handle the multiple database problem. And, Aaron, you are part of that discussion.
So we are going to I'm going to change a little bit the way the query is working. So it'll be interesting to see how it all how it all ends up. But I'm trying to get the We're
Aaron
we're we're ending up with multiple databases because they anticipate having tens of billions of rows in their events table.
Colleen
Right.
Aaron
And so they're pushing that onto a different provider than the rest of the application. And then the fun part is they want us to search through both at the same time, like be able to build filters against both sets at the same time. Right?
Colleen
Yep. So that'll be an adventure. I think it's good. I'm glad we have a path forward, and it's maybe not how we initially, designed it or had anticipated it being used. But I think it's gonna be fine.
I think it's gonna work fine. It's a great way to prove this proof of concept that we can do this. Oh, you got this guy and this this table in Postgres and this table in MySQL? Like, we can still make that work. Do that now.
So yeah. So but it was a lot it was a lot of talking to people yesterday, but I think I'm happy that we have a path forward, and I feel good about that.
Aaron
Yeah. It was weird for me because I I mean, at some point, I just had to say, like, I don't know.
Colleen
Like, I've
Aaron
I've never dealt with tens of 1,000,000,000 of records. So I real I really don't know.
Colleen
Like, I can
Aaron
tell you the theory, but I don't know.
Colleen
Like and I've talked I talked to a couple other people. Like, I have a friend who's really who's an super senior rails developer and a super senior database guy, and there's no answer. I mean, that's what I'm finding, right? Like, there's no one definitive this is the best way because there are so many factors in play here. And, you know, I spent an hour on the phone with him trying to, like, tease out, like, what is the best path forward?
And no one really knows. So we have 5 different people that we, you know, that I talked to yesterday who have different set of experience and, you know, different stacks and different database, Postgres, MySQL, like, different database expertise. Mhmm. And the answer is no one is quite sure. And so this will not break.
This might not be as fast as we were hoping or is our our initial design was gonna be lightning fast. Right?
Aaron
Mhmm.
Colleen
So we don't really know, but you don't know until you do it. That's kind of where I think we are. We know it's not gonna break. We know it's gonna work. And so we just gotta stop talking about it and do it because
Aaron
Right.
Colleen
We're not gonna know until we test it.
Aaron
And it it like, everything with databases, it depends so much on the shape of your data.
Colleen
Right.
Aaron
So you could have the same setup with 10 different data shapes, and it worked 10 different ways.
Colleen
Right.
Aaron
And so that makes it really, really tough. Did your database expert friend have anything, like, insightful that we weren't thinking about? Because that would be helpful for me to know.
Colleen
I don't think so. I mean, he talked a lot about with this level with this number of rows and this level of complexity, you really need to you really need to optimize it at the application level. Like, so I was trying to optimize it at the query level, and his point was you really need to optimize it at the application level.
Aaron
And so Explain the difference there.
Colleen
So I'm trying to say what is the best, the smartest, most performant query. And he said, you need to go back to your events table and said, what data do I need? When do I have like, do I have the right information on the events table indexed correctly?
Aaron
Oh, I see.
Colleen
That kind of stuff. Like, how can you can you So do a limit offset? Like, what can you do in real time when you're serving the data to make it appear quick.
Aaron
Gotcha. So put a lot of effort into the ingestion and storage of the events such that the querying can be efficient.
Colleen
So your query yes. So your query events table as efficiently as possible the way you build that table.
Aaron
Mhmm.
Sean
And then, like, build into your application logic, like, UI patterns, etcetera, that help to mitigate that that's not, like, a super fast query. And then probably also trying to figure out how to not blow up your memory stack, like because wouldn't it doesn't seem like that's a risk trying to do stuff at the application layer? Like, we we run a query on events, and it comes back with, like, a million rows.
Aaron
Mhmm.
Colleen
Yeah. You
Sean
know what I mean?
Colleen
And so talking to, you know, talking to my friend, that was kind of hit. I don't wanna say that was his point, but he was like, do you really need a 1000000 records at one time? Like, why would you do you really need to execute that query? Like, can you do, you know
Sean
With limits, I think.
Colleen
Limits. That's what he was talking about. He was saying, do you really need to pull a 1000000 records through at a time? Like, what's the purpose of that? And so that's more of a client specific question, but I think once we build it, we can then work with them to iron out those details.
What he does, he has an, analytics he's a CTO of an analytics company, and they do partitions. So they do table partitions in Postgres every 30 days. And so they, you know yeah. So so that was what he was talking a lot about how they use they partition their data. So point being, like, depends on what we depends on what database we use, but there will be strategies, I think, to make it work.
Aaron
Yeah. The every 30 days partition is pretty good. Because I would imagine most people, most end users are gonna wanna see stuff that's relatively recent. I mean, even if it's in the past year or whatever, you can still, after a while, drop off stuff that's older than a year.
Sean
So
Colleen
what yeah. What they do is they roll it up. So, like, after a year, then they roll all the data up so they don't keep, you know, the full events table.
Aaron
Oh, they don't even keep it.
Colleen
Yeah. They don't keep it past I don't I think he said a year. So then they roll it up because people but that works for his use case. Right?
Aaron
Sure.
Sean
Yeah.
Colleen
Because people wanna see stats going back x number of years, but they don't want contacts who viewed their page a year ago. Yeah. So I don't know exactly our client if if we are that flexible. But I do think if we think a little more, we being the client about what they really need, we can work to optimize it more, help them. But we gotta give them something to work with.
Aaron
Yeah. Yeah. I like the I like the partitions. I really I really think partitioning is a good way to go because it's managed by the database itself and not by us, which seems nice.
Sean
Mhmm.
Aaron
And the database can know I need to go to this one partition, and I can avoid these 10 others and not even, like, not even look there. It doesn't even matter because it won't be there. That's pretty awesome.
Colleen
Mhmm.
Aaron
Yeah. Yeah. Big day.
Colleen
Yeah. It was it was a big day. So it's all good things. It's just, you know, a change from, what we're originally trying to do.
Sean
So how's it gonna work with the query builder? So we're gonna allow them their users are gonna build queries.
Colleen
Yeah.
Sean
And then we're but their queries are gonna be so it's gonna be significant change under the hood, because we'll have to know, like, this particular clause or refinement, I guess, most likely, is gonna go through the events table, so then it's a separate query. Is that kinda how it's gonna work?
Colleen
Yeah. That's kinda how it's gonna work.
Sean
And then we give them, hey, look. You set it up with multiple tables. So then here's your query object. You figure out how to run it. Like No.
I mean, of course, we're gonna do the integration because that's what we're doing for them. So No. We figured out. But
Colleen
The plan and I'm still working on adding in these static filters. So I'm not I haven't worked on it yet today. But the plan is so right now, when we go through, you know, I want, oh, events with products that are red and products that are blue, and I want a contact with first name Colleen. Instead of returning the query, we will return a list of IDs of products that are red. So, it will be like select all events product IDs that match this list of IDs.
So we'll execute we we, Hammerstone Refine, will execute the query, return the IDs, and then feed those IDs into the parent query.
Aaron
So we could end up executing, you know, 6 different queries in an attempt to execute the one user intention.
Colleen
Right.
Aaron
So anytime we cross a database boundary so we'll be inspecting the models as we go, and the models the Rails models have their connection settings on them. And anytime we notice, okay, this interior query that, traditionally would have been run as a subquery by the by the database. This interior query is run on a separate database than this exterior query, so we need to execute the interior query and get a list of just Scalar IDs, and then that becomes the where in. Instead of a where in subquery, it's where in list. And we just do that all the way out.
Different, execute, different, execute, like bouncing back and forth between databases.
Sean
Yeah.
Aaron
Indeed.
Sean
Yeah. I mean, it's it's fine. Yeah. I just wonder if there's gonna be queries that they're gonna end up users will end up creating, which will be super duper duper slow. Like, that's gonna happen.
So then it's a matter of kinda like, if we're automatically letting them if we're automatically running all these queries. Yeah, that's that's a fun fun problem.
Aaron
Yeah. That'll be a problem.
Colleen
That's why
Sean
What's tell me about the static queries.
Colleen
Oh, that by static queries, I meant the nested queries. So, basically, I'm trying to add in a query like a refinement. I think we talked about it a couple weeks ago. So you know how you add refinements to, like, the inner the inner query? The subquery?
So I want to add additional filter queries to that subquery, which sounds complicated, but it's really not. I think I'm not I'm not explaining it well. So
Aaron
It's like when you you have a filter and a filter, and so you wanna say, show me users that have bought product, my favorite products, and my favorite products is a filter
Sean
Is a filter.
Aaron
That's super complicated that you built and then saved somewhere else.
Sean
Okay. Yeah. That makes sense. Alright. Does that change our blueprint?
Aaron
No. That'll still be just an option.
Sean
Fascinating. That's so cool.
Aaron
Yeah. Yeah. Because all all, like, all saved filters basically have an ID and a display. So it's, like, Colleen's favorite products, December 2021 is the display, and then the ID is, like, 12345. And it's just an option condition to the front end.
Sean
Nice. That's cool. Very cool. Yeah. I was wondering.
I was like, oh, do we need to coordinate on that? But no. Awesome.
Aaron
No. And Yeah. And no because Laravel doesn't have that. So double no.
Colleen
Double no.
Sean
Laravel doesn't have that? What do you mean? Like, it doesn't
Aaron
have We don't have that we don't have that ability yet. So we don't on our side on the Laravel side, we don't have the ability to say this condition is a, you know, filter in a filter condition.
Sean
Oh, meaning we just haven't built that out yet.
Aaron
Correct.
Sean
Yeah. Got it. No. That's I was wondering about that. Like, we, like, we know that that's a thing, that people want.
So it'll just be, like, the rails side just gets a little bit ahead of
Aaron
Exactly.
Sean
The Laravel side.
Aaron
Yeah.
Sean
Yeah.
Aaron
I'm gonna let Colleen and her giant team of designers and developers figure it all out.
Colleen
Figure that out.
Aaron
And then I'm just gonna copy it. Yeah. Because the design is the the the design is a real issue. Like, how do you build, you know, a filter in a filter? And so they'll get that sorted.
Colleen
Yeah. That's I think that's that'll be fun, but I think that's down the road a bit. I think the sequel is the biggest technical concern they have right now.
Aaron
Yeah.
Colleen
We actually have a vision for it, Sean, which you'll have to help me with, but probably not till not for a while. But the vision is, like, you're building out your filter, and then you have this, like, slide in.
Aaron
Yeah.
Colleen
Like like, you're saying, I wanna find all all contacts who viewed a product named red. So you'd but the the product named red is its own filter. So it would, like, slide in, and you could build it and, like, build it in line and save it. Anyway, don't worry about that. That's that's way down the
Sean
road. Cool.
Colleen
But it'd be cool. Right?
Sean
Yeah.
Aaron
Yeah. Yeah. And that's the, that's, I think, the answer to infinite refinements. Like, why are we not just, like
Sean
Making it filters.
Aaron
Making, you know, refinements and refinements and refinements. It's because this is the vision there.
Sean
Yep. So
Aaron
Yeah. That would And since since filters are stabilizable, you could then use your Colleen's favorite products anywhere you want in any other filter that you want. Yeah. And so it's kinda like you get
Sean
to build it once. Super, super cool. Yeah. That equals enterprise clients. Yeah.
Same thing with your querying multiple databases.
Aaron
Oh, yeah. I actually actually think querying multiple databases is gonna make it into Laravel because it's it's a thing. People do this. Yeah.
Sean
Yeah. Yes. Oh, man. So this is, like, very, very exciting.
Aaron
I know. This client was our biggest win by far.
Sean
Yeah. Yeah. I just could see we we're killing so many objections when talking when we're gonna, you know, if we start talking with any other enterprise clients.
Colleen
Oh, yeah.
Sean
Because we yeah. We've solved real thorny problems by the time you're done with this, Colleen. It's crazy.
Colleen
So it can we go back to what you just said, though, Aaron? You said it would just be an option condition. But what I'm looking at contacts that have viewed a product filter Mhmm. That's 2 options condition because viewed is its own options condition.
Aaron
So it's almost like a nested options condition. Condition.
Colleen
Maybe this is a unique case that we can talk about later.
Aaron
Oh, I see. So I think you can make you can control the clauses on your options filter. Right? So instead of saying so you'd say, like, contacts have viewed a product, and, like, your your I think your options clause there would be have viewed a product, and then your go ahead.
Colleen
We want that to be selectable. It's not just have viewed. It's have have clicked on, have whatever's in that table.
Aaron
And each of those are different clauses, I think.
Colleen
Right.
Aaron
Yeah.
Sean
I see what you're saying, Aaron.
Colleen
Right. Right. Right. But then you need have viewed a product. Now, I need another drop down that's like To
Aaron
select product?
Colleen
To select product filter. At least that's what I'm working on. So the product filter in this case, again, we can talk about this offline, isn't its own independent condition. It's actually tied to another condition.
Aaron
Okay. Will you have so I was thinking the clauses would be have viewed a product, have clicked on a product, have something a product, and then the option that they would be choosing from is the product filter.
Colleen
But that viewed is my through key, right, on the events table. So Mhmm. I can't I can't do that because I need to build up the I have to go through anyway, we'll look at it later.
Aaron
I see. That's what you're saying. Yeah.
Colleen
All work out, but I I was just just you said that, and I was like, wait. Did I miss that thing? I think it's actually like double option conditions. So the static I'm just gonna call it static filter, but, like, the pre created filter has to tie into that specific condition.
Aaron
I see. That makes sense. Yeah.
Colleen
But I think it'll still work fine. I think it'll be it'll be alright.
Aaron
Yeah. For sure. As we've learned, we we can make anything work. Yeah. I I see
Sean
what you're
Aaron
saying now.
Colleen
Okay. Cool.
Aaron
Speaking of squashing or quashing objections, we have a call with a new potential Rails client on Thursday. Right?
Colleen
Yeah.
Aaron
So this all happened publicly on Twitter, so I don't feel like we need to not talk about it. But I saw let's see. How did it happen? Oh, the auto the auto tweet from Transistor went out when I published last week's episode. Somebody replied and said, what do you guys do exactly?
And then, another guy that I'm Twitter friends with replied and said this you know, I've been listening from the beginning. This is what they do. And then Jesse, right, Jesse? Jesse Henley from Bento chimed in and was like, hey. I really need a query builder, and if you can solve this for me, I'll buy it yesterday.
It's like, oh, really? And he's he's bento is on bullet train. Right?
Colleen
Sure is.
Aaron
And he and Andrew he and Andrew are like best buds.
Colleen
Yep. So, this is great. I think this is great. Yeah.
Aaron
Yeah. So, I told him, I mean, publicly, all all of this, I told him, great. We are working with bullet train. We've we're working with a client that's got 1,000,000,000 of rows. Like, we're not quite there, but do you wanna talk?
And he's like, yes. I can talk tomorrow. Does that work? I was like, woah. I'm I'm going out of town.
I, you know, I think Colleen's asleep or something.
Colleen
So
Aaron
we're talking we're talking to him on Thursday.
Colleen
Yeah. So It's Thursday night our time because
Aaron
he's in Japan. Because he's in Japan. Okay. That's right.
Colleen
Yeah.
Aaron
So that's kind of exciting. And his deal is I think he uses the, I forget what it's called, but it's the jQuery query builder as the front end.
Colleen
Okay.
Aaron
And good news is, like, we can, you know, intercept. We can write middleware for our adapter to work or for our blueprint to work with with the jQuery front end.
Sean
I saw him mention something like what was it? Query builder? There's, like, a website. It was, like, query builder JSON. I think
Aaron
it's query builder JS, maybe, Or j s query builder.
Sean
Query builder JSON website. Uh-huh. Query builder dotjs.org? That thing?
Aaron
Yep. That's the one. Yeah. So you can see it like it's not totally dissimilar from what we're doing if a little bit, you know, more technically minded. And I actually did write I did write an adapter at one point between our blueprint and this.
And it's not perfect nor is it finished, but I did I did write one. So we'll just, you know, who knows if we're in a spot where we can help him. If he needs something tomorrow, you know, probably not, but we can at least talk to him and tell him the things that we've learned and, what we're doing with with the client. So that's exciting.
Colleen
Yeah. That's great.
Aaron
And you So what's the you and him speak the same language. So I'm just I'm gonna ride along. It's gonna be your deal. I don't I don't speak bullet train.
Sean
So when when Jesse was talking about was trying to figure out, like, what we do, you know, with the website. He's like, I don't that didn't help me. So, obviously, we need to do our website so that it's actually useful for this. So what would, okay, so I'm gonna throw this out there. There's a new React framework called Remix coming out.
Okay. And it is very clearly oriented towards content based websites. And I like everything that I'm seeing so far, and I want an excuse to check it out next week. And I was thinking of banging out our marketing site with it, but that would change us from your Laravel setup. But I would just do the marketing stuff.
Aaron
Full support. I do not Okay. I do not have any ties to owning the marketing website. So as long as you're comfortable, like, either editing or making it able for us to edit it
Sean
Exactly. That was that would be like, I'm gonna go play around with it. And Mhmm. If I can't set it up so that way it's easy for anybody to make a change, then it's not gonna work. Though that is currently the problem I have with the Laravel marketing thing.
Aaron
Mhmm. So I'm
Sean
like, oh, okay. I'm gonna have to get this whole thing set up and, like, figure out enough about Laravel to to make the changes, etcetera. It's probably not hard, but it it's like the same amount of work that it would be for you guys to figure out this thing if it's not Right. Straightforward. But it has file based URLs, which, like okay.
So I wrote a whole Rails thing, which lets me just write a markdown file, put it in the file structure where I want it to be in the URL structure, and then it turns it into markup and then serves it at that URL. Because I wanted to just be able to open up a text editor, open up a file, write markdown, save it, git commit as I go, use that to, like, save stuff on a branch for drafts or whatever, like, use git like I normally do, and then push it, and then have it just show up at the right URL. I think that Remix lets us do that, I think. The markdown piece, I'm not exactly sure yet, but I think that's workable. So anyway
Aaron
We we have that ability with our documentation part, but the, like, actual home page is just HTML. I mean
Sean
Yeah. Right.
Aaron
It's served by Laravel, but it's just HTML. It's a copy from a Tailwind UI thing.
Sean
It's documents. Are they on a sub a subdomain? I have both.
Aaron
No. They're not.
Sean
That's alright.
Aaron
I can't
Sean
figure that out.
Aaron
It's on a subfolder or directory. Yeah. I'm super not precious about the marketing site. I would love to not own that, but I'm happy to continue owning it if if I need to.
Sean
We would
Aaron
need to figure out the docs thing, but that seems that seems doable.
Sean
Yeah. Cool. Yeah. So that's gonna launch next week, so I'll mess around with it probably next week. I was hoping that would be my, like, Thanksgiving project.
Colleen
Nice.
Sean
Or me and Aaron getting it to work with the, the Laravel piece. That's my one my priority. But
Aaron
Yeah. Different kinds of brain work. Yeah.
Sean
We can sync up. We'll do that.
Colleen
Cool. Aaron, how about you? You seem a little tired today.
Aaron
Oh, just a little bit. Good. We, you know, went to Virginia last weekend, and it was great. The kids are amazing. My parents are amazing.
Jennifer's amazing. It just worked out like, it it worked out surprisingly well. However, just not a lot of sleep.
Colleen
Yeah. The whole excitement.
Aaron
Yeah. And, you know, you have, you know, Thursday night rehearsal dinner, and then Friday night wedding. And so we're out until midnight each night, and then the kids don't know that it's a wedding weekend. And, you know, they're sleeping in our room, not my parents' room.
Colleen
Right.
Aaron
So then they wake up at fortunately, it's an hour difference. So they woke up at 8 AM, which is better. But we've still gotta get up before them to prepare. And then you do the whole day, you know, of wedding activities and seeing the city. And so just and then you gotta fly home, which is miserable.
We left. We actually, the flight out, Jennifer and I woke up at 3:30 Dallas time,
Sean
because
Aaron
our flight was at, like, 620 or something. And, you know, we were walking through the airport with just, like, a hysterical number of bags holding, like, a yeti full of breast milk. We've got, like, 6 gallons of breast milk and a soft yeti, and it's like, is this the best idea? So it I mean, I have no complaints. It went amazingly well.
It's just it's just exhausting.
Sean
Traveling with kids that age is hard.
Aaron
It is real hard.
Colleen
It's so hard.
Aaron
It's real hard. I honestly I don't think we would have made it. We certainly wouldn't have had fun if my parents weren't there. There's just there's just no way. There's no way.
So that's where I've been. Trying to think of anything that pertains to us. I got a DM from the Indie Hackers account asking me if I wanted to do an AMA. Sweet. And I was like, sure.
Sean
Oh, yeah.
Aaron
Heck, man. Sounds great. Definitely. So they I assumed it's Cortland, and could be like a community manager or somebody. DM'd me, and was like, hey, I know you're bootstrapping and working and a new parent.
Do you want to do an AMA about it? And I was like, yeah, heck yeah. That sounds great. So I'll be doing that at some point, which is exciting.
Colleen
I was gonna say maybe after we have a marketing website, that would be kind of Maybe. I'll who knows? I know. I don't know if they want you to do it this week or if they were just like, no. Whatever.
Who knows? Cool, because that'll drive a lot of traffic to our Hammerstone site.
Aaron
Yeah. I will look. He sent me or they sent me a Calendly, and I will look and maybe try to do it later rather than sooner.
Colleen
December, if you can do it. Mhmm.
Aaron
I don't Yeah.
Colleen
Just a thought.
Aaron
Good thought. Good thought. So that's super exciting and encouraging. And that is about it. Last night, I took my, independent pursuit time to work again on Keith's stuff and feel like I'm making good progress there.
That'll probably be I'll probably spend some time next week, just finishing that up. And then, Colleen, you said you wanted to see some of that, so I may be able to show you some once I get once I get done. So, yeah, I think that's about it. I've got I've got a whole stack of new books that I can read.
Colleen
Oh, yay. I got mine too.
Aaron
All my yeah. Got all my MySQL books, and I'm just learning a freaking ton. And I think one good source of content for us on this database specific stuff is gonna be reading these books and then, like, turning these kind of academic, explanations into, like, rails and Laravel specific, like, here's how you would do it in the framework that you're using and not just, like, in theory, indexes work from left to right. It's like, well, here's how you would do it in in Rails to make it performant. Right.
These things are just full of great ideas. And it's like, why is nobody reading books anymore? I already did this bit last week, so I don't need to do it again. But it's been great, and I love it, and I'm super pleased with it.
Colleen
That's awesome. Yeah. I'm thinking, like, as we get more into it, and we will, throughout the course of this, have to be really good at databases. So I should also get some Postgres books because I think most Rails people do Postgres. So it'll be awesome.
We'll be, like, the dream team database dream team.
Aaron
I know. It's gonna be
Sean
so good. Excited that I'm not included in that.
Colleen
The database. Yeah.
Aaron
Well, I love it so much. So I'm happy. I'm happy to handle that one. If you wanna do remix or whatever, you do that. I'll read my sequel books and then we'll all be happy.
So I think that's I think that's all I've got. Unless anyone has anything else, I think we can call it.
Colleen
I'm good.
Aaron
Alright. Talk to y'all later.
Colleen
Bye, guys.