Episode

Hammerstone · Jul 23, 2021

Railsifying Refine, Torchlight, and the Myth of the MVP

Railsifying Refine, Torchlight, and the Myth of the MVP
Show notes

<div>Refine is getting more and more Rails-y, Aaron talks about Torchlight and the Hammerstone thesis, and we debate the merits of the "launch immediately" trope.</div>

Transcript
00:00

Aaron

Okay. We're live. How was, your meeting with Colleen just now?

00:05

Sean

Good. So so what we talked about was what we talked a little bit about, she's gonna need to roll off. Right? Because she took this full time job.

00:14

Aaron

Mhmm.

00:15

Sean

And she took this full time job at my company actually. So now I'm now we are work colleagues. So, you know, she's not gonna she's gonna eventually wanna roll off, but she feels very invested in seeing how it turns out this client. That. Because she wants to see, you know, how it's gonna go with their datasets and everything.

00:38

Aaron

Mhmm.

00:39

Sean

We did. We talked about how, like yeah. Basically, it's it's feature complete from our perspective. Like, we ported the Laravel version over and added a few new things that we knew that they were gonna want. Mhmm.

00:51

But sorry. I was drinking a carbonated beverage right before this. That's a mistake. So anyway yeah. So we're feature complete, like, as far as what we said we would do.

01:06

But, you know, obviously, we're around for, like, helping them with integrations, and I really wanna see how it works in real life and then see how that goes. So that means that she wants to roll off, so we need to roll somebody else on. So I'm talking with somebody to try and get them on board. So we talked about, like, what what we could give them. So give them to do that way if they have enough kind of meaty thing to work on to, like, wrap their heads around it.

01:35

And that's the challenge because there's not much left.

01:37

Aaron

Right. So I

01:38

Sean

think we're gonna have them, whoever we get work on doing the docs, and then she only had a few tests left that she didn't that she didn't do. It's kind of boring work, but it would help them get their head around it. And then

01:52

Aaron

for sure,

01:53

Sean

set us up for when this client wants something else, then we'll be able to do it. And then also when we launch this, we'll have somebody, you know, backing us up on the rail side with that with that knowledge.

02:05

Aaron

She had mentioned to me that she had a big, like, railsification of it in mind that she kinda wanted. And I I told her you should, like, you should be the architect on that and have this new person, like, be the implementer so that she can still kind of, you know, see her vision come to fruition. Was that talked about at all, or is that further down

02:29

Sean

the road? But that's a fantastic idea. I think what's going on with that is that she just I'm putting words in her mouth now, but I suspect I could talk with her later. Like, I suspect that she just really wants to do it. Yeah.

02:41

So because you guys That's what

02:43

Aaron

she told me. Yeah.

02:43

Sean

I had offered some other stuff to do today because I was like, I got I got a few things on my plate left, which she could do. There's no reason not.

02:52

Aaron

Mhmm.

02:53

Sean

But she was like, I don't know if I'm the right person for that slash I don't want to. I wanna do this other thing that I was hoping to spend today on. Yeah. Yeah. That's really cool.

03:06

Aaron

We talked a little bit, I guess, last week, just over Slack. And she was like, is it weird that I'm sad, like, to be leaving this project with you? And I was like, no. It's great. I'm so like, I'm happy that you enjoy it.

03:19

And we talked a little bit about how, like, the, like, the problem really gets in your head. Like the complexity of what we're doing, it really like burrows its way into your mind and you end up thinking about it a ton and it becomes like, it becomes like a lot of fun. And so I think she wants to see it through to, see it through to like proper railsification with the whatever is the DTL and stuff. And she has a vision now that she has, like, the whole framework in her head and also knows rails really well, she has, like, the vision for what it should be.

03:57

Sean

Yep. Yep. Exactly. Alright. Hang on.

04:01

Get a DM from a client.

04:04

Aaron

I also just got a DM.

04:05

Sean

What is this?

04:07

Aaron

No worries. So I'll cut I'll cut all that out. We were talking about Colleen and having the whole thing in her mind and wanting to rail supply it.

04:15

Sean

Yes. Which I think is great because I think that, first of all, our client is going to want things to feel more Railsy. I think they'll mostly be interacting I don't know. We I think that will include changes to the API that developers using this will, you know, interact with, I suspect. But I think that she also is talking about some changes to the kinda like the algorithm, and doing it in more of like a Ruby ish type way, which actually it's funny because it's like the same conversation that we've had with except on the JavaScript side where it's like the the flat blueprint thing is like it, like, it's very hard for me to wrap my head around that on the client side.

05:01

It's also, like, not the way we think about things in Ruby and stuff. So, like, she's got, like, a different data structure in mind. It will still not it will not change the blueprint format whatsoever from however we for an interoperability. But then in terms of, like, when somebody goes to maintain the code and read it, it will be more what they would expect to see from the Ruby side, and then it'll be the same. I I do stuff like that on the JavaScript side too.

05:30

So it's kinda just like the same thing, which is which is fine. I think, like, we got that portable data format. So it makes sense that you could take that and, like, just write a little thing to change it into what makes sense to you through your algorithms, and then you just run it through that. Yeah. So I think that's I think that's fine.

05:48

Aaron

Well, I would love to have her, like, railsify it. I don't know I don't know where that fits in, you know, our timeline or her timeline or if the client even cares about that. But at some point, to have her kinda oversee that and maybe have the new person

06:04

Sean

She's doing it today.

06:05

Aaron

Execute it. Oh, great. Fantastic.

06:09

Sean

And we're we're gonna we're gonna build a client because we talked about it. We're like Great. Is this build a client or not? And I think we I think it is because, like, they want to they wanted to they just want a port from, like, Laravel to to Ruby on Rails. And we've done that, but in such a direct way that it's not Yeah.

06:28

It's it's they're not gonna love it. And I just know, like, as much as invested as they are into the Rails ecosystem and doing things the Rails way and Yep. Having this nice Ruby centric world of view, then Mhmm. I think this is probably more like what they would expect. So we gotta make sure we do what they expect.

06:50

They haven't really interacted with the API much yet. It's gonna happen soon, probably in a few weeks. Yeah.

06:57

Aaron

Hopefully, you you would hope. I mean, it seems like a big feature they need to get on. And I would, I don't know. I would even argue they don't really want a port from Laravel. They just got lucky that we had already done it.

07:09

What they want is like like you said, the rails way to do this. So Yeah. We're getting there via a port, but that's they don't care about that.

07:18

Sean

Yeah. So I think, like, the most straightforward thing was to do a port. We did that. Functionality is there. Boom.

07:23

But now now Colleen's got it all in her head so she can make it, you know, it's gonna be much more maintainable because it like, we do own the IP, but I mean, they also have a license to this code and could do whatever they want with it. They could Of course.

07:36

Aaron

Yeah.

07:36

Sean

Run with it They could just work it out. Developers maintain it and do their own thing. And in that case, I'm sure they would much prefer it if we, you know, cleaned it up and did something that was easier for them to understand. So I think I think that it makes sense for us to to build them for that especially since I think I think it's reasonable that she gets it done today or at least close or at least an improvement or at least we'll know if it's possible. So so that's cool.

08:04

Aaron

I don't think we planned this necessarily upfront, but I feel like this is the ideal way to do it. It. Like, do a one to one port so that she and I are speaking the same language the whole time, and all the tests, you know, the Laravel test look like the rails test. We get everything working, and then she takes another step, and she's got all the tests as coverage, and she can change now she knows everything. She can change the style of everything instead of trying to, like, take those 2 steps at once and leave me in the dust while she has no idea what's going on.

08:36

Like Yep. This is perfect.

08:39

Sean

Yeah. I think so too. And then Cool. Yeah. So so, yeah, I'm gonna so that means I I felt like it made sense that she just do that because she was really you know, I don't know.

08:50

I could tell it's one of those, like, okay. I finally have my head around this. I got excited about how I oh, now I see how I could actually, like, do this in a way that, you know, makes sense, and I really wanna do it. I know that feeling.

09:04

Aaron

Yep. That's great.

09:05

Sean

So I'm like, alright.

09:06

Aaron

Follow that energy, man.

09:07

Sean

Just do it. So that's cool. And then so I'm working on I don't have much left, but it's more than I would ideally like to have left. The problem is, like, the implementation that I did, like we've discussed, they wanted Hotwire. I did this Hotwire thing.

09:23

I figured out a kind of a clean way to do it even though it's a bit of a stretch because it doesn't map very cleanly to this, like, form builder that we have essentially. It's a little bit of a stretch and like a front end framework would have been a better fit, but I figured it out and I got sort of this clean approach that works. The clean approach though uses a lot of forms. So, like, each criterion in our query is its own form, which makes sense. It's not that's that makes sense.

09:52

Like, when you look at it, like, each one looks kinda like a form. Then there's, like, one other one for the delete button, and then there's one, and that's and that's it, basically. So then as you type stuff, you, you know, make changes to the query builder. It submits this form via JavaScript, and then it just re renders the whole thing, and then turbo frames does its thing and only replaces the thing that changed because it's within that frame. So that's a really nice thing.

10:22

And so it basically means I have just like a little bit of JavaScript to connect, like, updates to the blueprint, right, to hidden fields SmithForm, done. So it's pretty simple. Problem is they've wanted to put it in 2 places so far in the app. They've wanted it integrated into 2 places, and both places were nested within a form. And so you can't have forms nested within another form, which okay.

10:47

I I mean, I guess I should have thought of that, but also, I don't know. Like, it does make sense with the way they want to use the query builder that it would be nested within a form and the way they think about things on the rail side. So the workaround has been well, in one case, I just rewrote their page to, like, pull my thing outside of the form, and it meant that the the the, form button was switched. The order was switched. So instead of being the first button, it was the the filter the filter builder button was the second designer there was like, why are you doing that?

11:24

Why is my end?

11:24

Aaron

You don't wanna know. Yeah. And I

11:26

Sean

was like, just trust me. I had to do it. And then the other workaround was in Andrew's case. We're just popping it into a modal in bullet train. So that gets around that problem.

11:37

And they could do that in other places. They could pop it into a modal. But I think what I gotta do is I gotta take a look at like doing it a different way without forms, which is kind of only one other way to do it. And that is I've got the, like, right to the source attributes of the, like, frame that's being updated. Which is weird, but that is the only kind of way to get around it, I think.

12:05

Or I maybe use patches.

12:09

Aaron

Interesting.

12:09

Sean

I could look into using in there the patch thing. Maybe. But over overall, I still have to, like, make a change. I have to, like, sub patches won't work. Right?

12:19

Because, like, they have to do the and the way how it works is, like, if somebody has to do something, like, you can't it doesn't work with, an AJAX request. You have to submit a form or write to a source. Like, that's how the page updates. Because it's assuming you're taking it works beautifully when you're taking, like, a crud app designed with Rails that's, like, form based, and then you add this on top of it for the interaction. Works great.

12:47

Aaron

But for everything else.

12:48

Sean

For everything else. Yeah. So like, it's pretty cool, because I could submit a form and it could send some patches and update different parts of the page. That's great. I still have to submit a form.

12:56

There's gotta be a form. And that's my problem. I can't use that. So then I'm gonna write to a source, and then I'm not sure that patches would apply the way I would expect if I'm writing to a source inside of another. Turboframe, I'll have to check it out.

13:11

But either way, at that point, I'm writing to a source. I might as well just update the little frame pieces that I need to. So anyway, overall

13:19

Aaron

Basically doing it manually. Yeah.

13:21

Sean

It it's not a great fit. The technology is not a great fit for the query builder. I'm just, like, making it work. But yeah. So I gotta do that.

13:32

I still gotta add the inline errors because Colleen added them to the the model, and I just gotta add them to the form. And then they have one other little bit of UI that they want, which is, like, kind of like an English only, like, plain text, view of the filter. So instead of you know, like, the filter builder kinda reads like English sometimes, like, if we have it set right. You know, like, show me products show me customers who bought products in the last 5 days, and that reads in the form format, but they would just want that to be in just, like, text.

14:00

Aaron

Yeah. That makes sense.

14:02

Sean

So I'm gonna do that. And then there's a few, like, fiddly UI things that I gotta that I gotta work out, which are, again, weird side effects of the Hotwire thing. So I gotta get those dialed in a little bit. Yeah.

14:18

Aaron

And then and then we still have not heard a thing from their data team, have we? No. Besides the last meeting Colleen and I had with them. Goodness gracious.

14:27

Sean

I mean, I think a lot of their stuff is gonna be in a regular Postgres database, but then they have these other things which are huge, like their events table. Right. Right? Like every single thing that anybody does on any of these any of their users do on any of these pages. It's huge, massive, billions of records, I would imagine.

14:49

So that's like its own special beast that they're designing, which is not compatible with our SQL query format that we spit out. So it's like, there's probably some way to do it, but it's like, they had to take like the SQL and then turn it into some JSON format, which they can run on whatever, you know, high like

15:09

Aaron

Timescale thing.

15:10

Sean

Exotic database that they're using. But yeah, they haven't talked to us about it in a while. I don't even know what's happening with that. No idea.

15:19

Aaron

As long as we continue to make ourselves available, I feel good about that.

15:23

Sean

Yeah. Yeah. I mean, hey, we're ready, man. We'll, it's up to them to really derisk it. Like, I I think we've pointed out plenty of times, like, yeah, we're generating SQL.

15:32

Like, if we need to do something else, we kinda need to know what we're doing. They haven't told us, so okay. That's that. Yep.

15:39

Aaron

Yep. That is that. I feel good about where we're at. Great. Okay.

15:44

How do you feel about the whole thing just besides Hotwire, just like in general?

15:49

Sean

Oh, great. Yeah. I think, I'm I like we have we have what we wanted at the end of this. Like, we have a product. We could

15:58

Aaron

I know. We could

15:59

Sean

sell it on rails. You know? Like, it's

16:01

Aaron

We have a product and we have money, which is crazy.

16:04

Sean

Yeah. It worked out. It's like what we want.

16:06

Aaron

Worked out.

16:07

Sean

Yeah. So here we are. And then you've been doing such a great job keeping the the buzz live over on the Laravel side that will have somewhat of a launch over there, I think

16:14

Aaron

Mhmm.

16:15

Sean

Which is cool.

16:16

Aaron

Yeah. So I feel I'm glad to hear that because I feel pretty good. I feel pretty good about it. It's obviously been a long road, but I don't, I don't think I would, I've I'm happy with how we've done it. I don't know if I would do it differently because we learned so much from a second implementation.

16:37

You know, in a first, like, I guess a second client implementation because I did it first and then that we brought it all back to Laravel, all those improvements. And, like, the Laravel product is better now. We have a rails product now. We have money. I've had time to do some open source stuff.

16:54

Like I feel pretty good about it. I feel like we're, we're doing the thing we set out to do.

16:59

Sean

Yeah, it was a good call. I don't think I'd redo it. I think we did it the way we could. I mean, then hiring Colleen was obviously the only Yeah. I hoped it was possible because of her.

17:12

And then

17:13

Aaron

Yeah. For sure.

17:16

Sean

Yeah. I'm I'm looking forward to having it off my plate. You know, it's like Of course. In US, like, every week I have to figure out something for this client that I gotta do. I tried to hand off I handed off our meeting last week to Andrew

17:30

Aaron

since we had just done the bullet

17:31

Sean

train integration. I was like, I mean, that's our update. So could you show him like the bullet train integration and then just didn't go? I'm trying to like step away.

17:39

Aaron

Yeah. Did you get any, did he circle back and tell you how that went?

17:44

Sean

No. He didn't. No? But it's fine. I think that they all got other stuff going on.

17:51

Like we will know when they start doing query builder stuff because our DMs are going to blow up.

17:57

Aaron

Yeah. Yeah. That's true. Yeah. We don't we don't need to poke that sleeping bear right now.

18:03

Sean

No. But that means, like, that's why I am, like, I gotta get somebody else up to speed. So that way, when that does happen, you know, like, we can, like, triage and then hand it off. Yeah. Because I think did I say this last week that I'm taking another job?

18:21

Did I say that?

18:22

Aaron

You did. Yeah. You kind of you kind of explained what you had thought it would look like, and then you DMs me with some potential updates. So do you kinda wanna go into how that shifted a little bit?

18:34

Sean

Yeah. It did I mean, it's overall, it's like my job is the yeah. That conversation continues with my boss, and it's going really well. And I'm very excited about the new sort of, like, role that I'll be doing. And, yeah, the thing that we're still, you know, sorting out is, like, the title and what it is.

18:58

But I think that that that doesn't matter to me at this point because the job is exactly what I want, and I very much am I have never ever been in alignment with the mission of a company the way I am here, and then also that I very much like the people that I work with. I think I have an amazing team, and it's not like I'm at some nonprofit. I actually get paid, you know, a real developer salary. It's pretty amazing. So I'm very excited to, like, take on more responsibility and ownership there.

19:37

It makes so much sense to me. And then also career wise, it makes sense to me because it's a good step away from the individual contributor Mhmm. Spot that I've kinda been in forever, which I definitely want to like, we talked about this a little last week too. I I am seeing I see programming more and more as a means to an end. Frankly, it would be kind of, like, awesome to have a job where I'm not programming.

20:03

And then once again, programming can be this fun thing that I actually like to do, and it's not like my grind that I have to have to do. So that could be awesome. As it stands, our company is so small. There's no way that I'm not programming, which is totally, totally fine. But anyway, yeah, I I am very excited about, you know, pretty much everything about it.

20:26

Aaron

Well, that's fantastic. I'm glad, even if it changed a little bit, I'm glad it still sounds like almost entirely positive, which is great. Mhmm.

20:38

Sean

Yeah.

20:39

Aaron

Good. Well, things in Shanland are pretty good.

20:44

Sean

Yeah. What about what about Texas?

20:48

Aaron

Good. We the past, I think, the past 3 nights, the babies have more or less slept through the night.

20:57

Sean

Wouldn't you say that different people have different definitions of sleep through the night?

21:02

Aaron

Yeah. I've I've definitely learned that. So the what's happening is we put them down. We feed them at, like, 6:15, 6:30. Put them down at 7:15, 7:30.

21:14

They go to sleep. We don't wake them up at 10:30, but we feed them again at 10:30, like, in their swaddles, in the nursery, with the lights off, everything. And then put them down, you know, at 11 when they're done eating. And then the past 2 or 3 nights, we have not fed them again until 7 AM in the morning.

21:35

Sean

That's sleeping. We've had Beautiful.

21:37

Aaron

We've had maybe, like, 3 or 4 times where they've, like, woken up and you go over and you kinda, you know, soothe them and they go back to sleep. So that to me is just totally game changing, and it's been, oh, it's been so nice. And Jennifer and I switched up the way we do shifts. It used to be like, if you're on duty, you start kinda after the 10:30 feed, and you go until the middle of the night feed, which used to be, like, 3, 4, or 5, whatever. And as those got later, it was like, you're basically on duty all night, and it's possible that they're fussy all night and you just don't sleep.

22:18

So now we do, like, 4 hour, 4 hour. Every night, we just switch 4 hour, 4 hours. So nobody gets, like, a real bum shift. Like, if your 4 hours are bad, you know, at least you've got 4 hours of sleep coming up. So that has been amazing.

22:35

Being able to sleep a little bit more again is just it's the best. So that's been really good. And then stuff in the Laravel world is is going really well, continues to go really well. I I put out a couple I put out a blog post yesterday about how Laravel does database locking, which I found just extremely interesting and super clever. And I just like was reading the source code and saw how they did it.

23:11

And I was like, that is insane. And so I wrote, I wrote an article about it and posted it and other people found it super interesting. And so I'm trying to do like, I'm trying to be out there more and more, and it seems to just continue to continue to work. And so that's really encouraging still to, like, have a little bit of momentum going. So that that's been really nice.

23:40

And then the other thing that we didn't get to talk about last week that I kinda wanna talk about a little bit today is the torch light syntax highlighting stuff. So while I was on paternity leave, that kind of unexpectedly, like, took off, within our, you know, little community. A couple people, I gave them, like, early access to it. I gave them just, like I made some tokens for him and said, here here you go. Like, good luck.

24:10

There aren't any docs yet, but, you know, you can try it. And to my surprise and delight, they started tweeting about it. And they were like, hey, I'm using this new thing. Y'all should all use it. And so then my, you know, DMs started blowing up.

24:26

We're like, hey. Can I get a token? Hey. How do I use this? And, the biggest one was probably Laravel News started using it, like, took it from, hey.

24:38

Can we give it a shot to, hey. It's live in production in maybe 3 hours, 2 hours, something like that. Meanwhile, meanwhile, I'm on paternity leave and feeding children every 3 hours and not sleeping and that, you know, the service is not ready. There are no docs, and everybody's like, great. I love it.

24:55

It's live in production. Take a look. Like, what are you doing? I wasn't ready for this, but it's a good thing. Like, it's a forcing function, and, you know, now it's out there.

25:05

And I did finally set up an early access list, like a proper, you know, put your email here, using reform, which is another, you know, bootstrapper product, which is awesome. And we've got like a 130 people on the list right now. So I will finish. I'll probably finish the docs today or this weekend just enough, publish those, and then send out send out a batch of, early access invites to to some people and, you know, see see what they think. So

25:41

Sean

Super cool.

25:42

Aaron

Yeah. It's been it's been kinda wild. It's really between Torchlight and Sidecar, I feel like I'm just kinda being pulled along by people who really like the idea and the product. And it's really it's a lot of fun.

25:58

Sean

It sounds like also where you have developed a little bit of a road map for a refined launch.

26:07

Aaron

Tell me what you're seeing. Like, what what what's the road map you see?

26:11

Sean

Well, I mean, you're you're kind of doing a launch for Torchlight. You sort of True.

26:16

Aaron

Yeah.

26:16

Sean

Like, everything that you've done, you're building anticipation. You have a landing page, which is rock solid. I saw you got a lot of good feedback about that. So it's doing its job. And then you have built up a launch list of people to launch to.

26:37

And, you've made connections kind of in the community with people that are, you know, hyping it with you.

26:44

Aaron

Early fans. Yeah.

26:45

Sean

Yeah. And then you've got Yeah.

26:47

Aaron

That's I I agree. I was just curious because it's a lot I think it's harder for me to see from the inside exactly what all has happened. But, yeah, I think I think that's a a great roadmap that we can follow. I think I think the like, I feel like building in public is kinda cliche, and I don't know. I I feel like building in public has helped a whole lot.

27:13

Like, I have been tweeting out screenshots and challenges and wins and losses with torchlight and, you know, being being an indie with a full time job and stuff like that. And people really, like I feel like that has been a good a good way to get, like, get people's attention at the very, very top of the funnel. Like, hey, look at, like, look at what I'm doing. I'm gonna be talking about it. It's gonna enter your consciousness, and you're gonna go check it out.

27:48

Of course, it has to be backed by the landing page and the early access list and a, you know, a real product, but I feel like that is that I know I see now why people are doing that so much. Like talking about what they're building all the time.

28:01

Sean

I think that if, well, 2 things, one that if it's the, the right audience. So if you're building in public and your audience for building a public is bootstrappers, but then your software is for hair salon.

28:19

Aaron

Right.

28:19

Sean

Yeah. You know, like, stylists. Yeah. It's useless. Utterly useless.

28:24

Aaron

Just, yeah. Just you get a lot of people that want to follow along, but no customers.

28:29

Sean

Right. So awesome. I now am but I mean, useless for sales, not so useless maybe for feeling like you're in a community.

28:36

Aaron

Right.

28:37

Sean

So, you know, has has a point. But then the other thing is it's also useless for a long term growth of a product. It will be helpful for an initial spike, which is super good and important, but then it's not a long term growth channel. Yeah. At least I I don't I don't think it is.

29:06

I think you can make it a long term growth channel, but then probably turns into a job you don't want. Right. Yeah. At least that was my experience with SketchUp CSS and and the Angular escape plan and that stuff. It was, like, very exciting to write things that connected me with famous people in the community that I was super I was so excited about that, and that also made a lot of sales for me.

29:30

But then the sales would go up and then down, and then we'd be like, what's the next thing you're gonna do, Sean? What's the next cool thing you're gonna write about, Sean? What's the next cool thing that's gonna connect with everybody? And then I started to resent that whole process. Treadmill?

29:46

Yeah. Exactly. It's this content treadmill. So anyway yeah. That's my I know you know that.

29:52

I was just for podcasting.

29:53

Aaron

Oh, no.

29:54

Sean

No. Yeah. That's my that's my general feeling about that stuff.

29:57

Aaron

No. You're you're intimately acquainted with with this process. I think I I hope that so I feel like we're kind of as Hammerstone, we're kind of, like, building this universe of of things with with refine and torchlight and maybe some, like, documentation stuff and all of this stuff around, you know, the developer experience and that kind of stuff. Sidecar is in there as well. And I feel like each of them helps the other and kind of feeds the other, which is just wonderful.

30:40

Like, every time every time we write an open source package for Laravel people in the Laravel world use it. They read the docs on the hammer stone website Underneath the pretty code highlighting, they see code highlighting powered by torchlight, which takes them to torchlight. Over on torchlight it says hammerstone product, which points them back. And so I'm hoping that with some of these, like, avoiding the content treadmill by having, not evergreen content because that's not what it is, but having tools that continue like, their life continues on in usefulness. Like, the the initial hurdle is big, granted, but then the main the maintenance hurdle is a lot lower than writing a new, you know, 4,000 word article every month or something.

31:31

Right? People are continuing to use Sidecar, and it's continuing to actually pick up Steam instead of, like, we launch this blog post and then, you know, the the ride is over.

31:42

Sean

Yes. Exactly. I think you're so right. So

31:45

Aaron

yeah. I'm hoping that that can be like you talk about a a roadmap. I'm just kind of, you know, crystallizing it here now, but I'm hoping that can be kind of a continuing roadmap. And what I wanna wanna stay away from is, like, we have 50 open source packages, and they're all kind of like middling and maintenance heavy. What I would like to stay towards is we have, you know, 5 open source and, you know, 3 paid or whatever.

32:13

The open source are really good and they're kind of meaty, but we don't have 50 little guys that are sucking up a long tail of our time and attention, that kind of thing. So that's kind of the balance I'm trying to strike is like, do open source just enough, but not, but not too much.

32:31

Sean

Right. I, I, I think that's exactly what's happening too. I'm thinking back to like our original scheming about this, and this is basically what we were thinking, you know? Yep. Yep.

32:42

So it is actually, it is actually working, which is exciting.

32:47

Aaron

Yeah. Yeah, it is. And just kind of another random topic. One of the things I've been thinking about, and be curious your take on it, is, you know, I see all the time, like, just push something out the door. Just like Yeah.

33:04

Just just get it out there. Don't worry about anything. You're gonna it's gonna be crap. Just launch it. And I'm like, I I understand I understand the sentiment behind it.

33:17

Like, don't fiddle with perfection until you never launch it or launch something that nobody wants. Totally get it. Great. I wonder if we've swung too far into, like, just launch anything you can as soon as you can even if it's crap right now and iterate on it. Because I personally feel like some of the stuff that we've put out and are going to put out does so well because it's thought through and polished and complete.

33:46

Like, we have a full set of docs for sidecar, and sidecar does these really nice things, like sets up all of your credentials in AWS so that you don't have to do it because that's miserable. And so I I wonder if we've swung too far as, like, a, you know, bootstrap or indie community to just launch immediately. Can you build it in 12 hours when it's like, wait. Wait. Wait.

34:07

Woah. Woah. Hang on. Do something really, really well and then put it out there. But I don't know.

34:13

What do you think?

34:16

Sean

Yeah. I agree that we have swung too far in the direction of the MVP. Right? That was the thing

34:24

Aaron

he

34:24

Sean

used to say. Get your MVP out there because, but I think it's obviously it's like you said, it's because we're, people are afraid to launch their stuff. And so sometimes Be included.

34:39

Aaron

So I'm not going to that.

34:41

Sean

They'll, they'll use the, the excuse that their product is incomplete to avoid facing the fear of launching the product. I think that it's rude to other people. It's sort of inconsiderate to launch an incomplete product and just expect that it, that they're gonna like, you know, be, be fine with it. So there's there's degrees here though, because the the it is also rude and inconsiderate to not launch a thing that's, you know, incomplete to people that want it because there are sometimes people that are like, hey, I would like whatever you have right now, and it will be good to me. You know?

35:32

And there's so there's a time and place for that. Like, our friend, Michelle, who is writing a book, who is afraid to prelaunch it. I was talking to her about that, and I was like, you know, like, it's kind of inconsiderate to people to not want to quote when all these people are like, please give me what you have already. Mhmm. And they'll know like that it's incomplete and that, but they, but they want it.

35:56

So that's a different story, but usually the people that are needing the advice to like launch it already, they need to launch it because they need to realize that people don't want it sooner.

36:11

Aaron

Yeah. Brutal. Accurate.

36:15

Sean

Yeah. And so, like, for us, you know, okay. Refine's taking forever for us to launch either version, And I probably like you, I would imagine both the same wish it was going faster

36:30

Aaron

Mhmm.

36:31

Sean

To be like it launched as a product. But at the same time, I recognize that patience in this in this case is the right thing to do, because we were able to say yes to this other opportunity, which is we were just talking about earlier, set us up for bigger things that we can do. Mhmm. And Yep. And I don't think that we have the problem of validation.

37:01

Aaron

I don't. I agree.

37:02

Sean

Right? Yep. So if we don't have the problem of validation, then why are we why are we rushing? Other than there are other people that would come up with maybe, like, you know, come up with a competing product. Sure.

37:16

Though that's, like, that's totally possible, but also we we both know how hard it is. So it's like Wow.

37:24

Aaron

Hard. Yes.

37:26

Sean

Yeah. So, you know, fine. Eventually, there will be competitor for this. So but then that's totally fine. I'm not I'm not really sweating that.

37:37

But yeah. I mean, there's, like, a timeline. We we can't just, like, put it off forever, but we have limited resources. We have to, like, balance it with, like, our own sanity. Yep.

37:47

And we're not procrastinating because we're afraid of launching. We're not procrastinating. Like it's like very strategically deliberate. And we have, I don't feel uncomfortable. Like, I the product is validated.

38:02

We've been paid tens of 1,000 of dollars to build it and have had lots of people expressing interest in buying it without even remarketing it whatsoever. So I think that that's just like, and, and also like I, just our own experience with seeing other places using like, even at my job, my boss is, like I was telling him about it and he was like, oh, okay. I think just give me a demo. Like, he wants a demo of it so that way you could see because it would make sense. We could just drop this thing in there.

38:37

There's tons of times where clients where, you know, our clients are asking for like different reports and be able to see different things and we could just let them build their own.

38:45

Aaron

Do it themselves. Yeah.

38:46

Sean

Do whatever they want. Yeah. So anyway, in conclusion, yeah. That's I totally agree with you. Like, that we've swung too far and that there were lacking the nuance in that conversation of, like, well, why are we telling people to push it out and launch it?

39:00

It's because they need to validate, and there's other ways to validate other than like putting out a shitty product. I think that's that's my take on it.

39:11

Aaron

Yep. I think you're right. I think we've lost the context of why we were as a, as a group telling people to launch early in the first place. It was, so you don't build something for hair salons and then finally launch and then find out people at hair salons don't want to use software. Like that.

39:30

That was the, I feel like that's the original story. I remember from micro comp, like, right. Don't spend 2 years building hair software before you talk to or get someone to use your software.

39:41

Sean

Right.

39:42

Aaron

And now it's just like any idea you have, it should be done in 12 hours and you should tweet the whole thing. It's like, well, that's a little bit too far the other way. So glad you feel that.

39:55

Sean

Dan I know now that I feel it now that I've done this enough times with enough products and enough companies and my own products and etcetera, like I really do think that building a product to validate an idea is just dumb. Like, you don't you do need

40:10

Aaron

to the hardest way to do it?

40:12

Sean

Yeah. Absolutely. You do you don't need to build a single thing to know that, like, people are gonna buy it. You could probably find if it's a thing, people will pay you to build it. I mean, and that's so obvious to me now.

40:25

And I've seen that happen with other people too so many times. That happened with us on this project. Right? Like, I think, and then, and then realizing that it's really like this ongoing converse. A product is like an ongoing conversation with your customers and people that are going to use it.

40:44

It's not, it's never ending. And like you could start the conversation before the product exists. You could start learning and understanding like well before. And then it's just not that hard to connect the dots between like, will people pay for it or, or not? So I'm saying this, and then we'll see we launch, and then nobody wants to nobody wants to buy it.

41:03

I will eat my words. That's not gonna happen. Not gonna happen.

41:07

Aaron

It's gonna be great.

41:10

Sean

Yeah. I still think that it won't be like a huge swarm of license purchases at first.

41:18

Aaron

What okay. So this is interesting. What do you think is huge? When you say you don't think it'll be huge, more than let's do it. Let's do it over under.

41:26

When we first, like, launch it, you know, what do you think in the first month we'll sell in in Laravel licenses?

41:37

Sean

Half a dozen.

41:39

Aaron

Half a dozen. Okay.

41:41

Sean

What do you think?

41:43

Aaron

I think in the 1st month, we will sell I think, double that. I think we'll sell a dozen.

41:52

Sean

Okay. I mean, we're both kinda in the right order of magnitude, I guess.

41:56

Aaron

Yeah. I don't think we'll sell a 120, but No. And honestly with if we sold half a dozen, I'd kinda be like, okay. This is this is working.

42:06

Sean

Yeah. Oh, no. Half a dozen half a dozen is a 100% to me success. I wouldn't call that not a success at all. That's an absolute success.

42:17

Aaron

That's a good spot to be in when

42:18

Sean

But I still think like it's

42:19

Aaron

that launch is good.

42:21

Sean

And then we're figuring out our long term, you know?

42:25

Aaron

Then we're figuring out repeatable channels and stuff. Yeah.

42:28

Sean

I think word-of-mouth will be important, and we have to figure out how to get the word-of-mouth you know, getting people to know that it exists. So that way, when it's time to build a thing like that on your project, you can remember, oh, yeah. I could use refine. I think that work you're doing on the open source projects is like bright in line with that.

42:48

Aaron

So I think that'll help.

42:49

Sean

Yeah. To me, everything is really lining up. It seems it seems really good. I do think yeah. I'm so excited to get to that point where we start working on that stuff.

42:56

You know? Mhmm. Like, I'm my hypothesis right now is that integrations is gonna be, like, our best channel, but we'll see. Yeah. We'll see what happens.

43:05

Aaron

I think it'll be integrations, agencies. Maybe integrations and agencies will be, I think, 2 of the top one. Like, if we can get in with 5, 10, 15 agencies and they have, you know, 5, 10, 15 projects each, I feel like that'll be really good because it is a very common problem like we've talked about. Yeah. But, yeah, integrations will be huge if we can pull that one off.

43:31

Sean

Yeah. Well, like, the bullet train integration. Right? Like, so so you already have somebody that's buying software to increase their development velocity. And now I want to add this feature for my customers and I can just click a checkbox and pay us a $1,000 and it's done.

43:47

Like, that's why I think the integration thing makes a lot of sense. Yeah. I'm I'm, like, wondering about our pricing. How do you are you feeling confident about our pricing still?

43:57

Aaron

Yeah. I do. I honestly think it makes it feels less like an open question on the rails side, because, you know, the integration if we're talking integrations, bullet trains, $1,000. Right? Or 9.50 or something.

44:13

And on the Laravel side, Laravel Nova is $99 And so it's like, well, there's a, you know, there's a disparity there.

44:23

Sean

Yeah.

44:24

Aaron

But I wonder if I don't feel like pricing it monthly makes sense, but maybe like, I don't know, denominate or showing how much a month it is. Cause how much a month it is is like less than an hour of a freelance time a month. Yes. And so I I feel really good about the value we provide for a $1,000. I feel like the value we provide is tens and 10.

44:48

Obviously, we're being paid that much. Yes. You know, 5 figures, of 1,000 of dollars. So I feel I feel really good about it, but I think that will I think that's part of what's gonna lead to selling between 612 at the beginning, is people are gonna look at it and filter out like, oh, I really need this right now. Or, oh, it's $1,000.

45:12

I will, you know, look at it again when I really need it.

45:15

Sean

Exactly.

45:16

Aaron

Which is fine. It's fine for me because that, like, we don't really want a flood in the beginning because we want to be able to talk to those 5 or 6 people and be like, what'd you run into? What was good? What was bad? What do we need fix?

45:30

That kind of stuff.

45:32

Sean

Yeah. Yeah. So that's for me. So for me, the pricing is the one thing that I'm like, I don't know because, and not because again, I'm right with you. The value for a $1,000 it's a no to me as a business owner, it would be a no brainer if I was going to like do this feature, build versus buy and I could just, you know, pay a $1,000 and done.

45:55

I just dropped this in and like a few lines of code and I've got my filter, my query builder. Yeah. That's absolute no brainer price wise, because you know, you look at it and as soon as you see what it is you're gonna have to actually build, you're just like, no. There's no way. It's gonna cost you so much money to have a developer do that for you.

46:14

There's different lines you could draw, though. Like, you could say like, well, I don't need this full query builder. I just need this one report, so we're just gonna bang out this one off For sure. Thing.

46:22

Aaron

Yep.

46:24

Sean

And then it starts to make more sense. Having conversations with my boss made me realize that, like, there's there's definitely a way to show people that, like, this is a feature that you can add to your app, but that is very valuable. Like, there's some people that don't even realize, like, I could do something like this. So that it's not obvious that you could even do something like this. And then when you do see what you could do, you're like, Oh, that would be useful in so many different ways.

46:59

Aaron

Yeah.

47:00

Sean

And then I wonder if the pricing aligns with that. And also we're anchored in Laravel by Taylor Otwell's $100, you

47:10

Aaron

know Empire. Yeah.

47:14

Sean

Yeah. I mean, a $1,000 is like you're running a real business.

47:19

Aaron

Yeah.

47:20

Sean

You know, at least 1 or 2 people are pay paying their bills with whatever this business is and

47:25

Aaron

Yeah. This is not, at least a start, aimed anywhere near, like, the indie hacker bootstrap or

47:33

Sean

No.

47:34

Aaron

Now your your plans are $9 a month, and you're gonna turn around and pay us a 1,000. I just don't think that I don't think that's gonna happen right now, which again is great. I'm fine with that.

47:46

Sean

Yeah. Yeah, totally. Well, that'll be part of us, like discovering and figuring out this market will be that pricing thing.

47:52

Aaron

Yeah.

47:52

Sean

That'll be a big that's the big that's a big question in my mind. I think it's right to try that first, but yeah.

47:58

Aaron

Yeah. I think so. Yeah. I'm totally open to backing it off to 500 or whatever, making it up in volume. But, yeah, start at a1000, see what happens.

48:07

Mhmm. Anything else?

48:12

Sean

Mm-mm. Nope. Nothing else.

48:14

Aaron

Okay. Well, let me go ahead and call it there. Sounds good?

48:17

Sean

Cool. Alright.

Details
Show
Hammerstone
Date
Jul 23, 2021
Role
Host
All podcasts
Podcasts
Newsletter

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