สำเนาบทสนทนา 🔗
WEBVTT
00:00:00.160 --> 00:00:03.279
Hey, it's Jason, host of the Code with Jason podcast.
00:00:03.520 --> 00:00:04.480
You're a developer.
00:00:04.639 --> 00:00:06.240
You like to listen to podcasts.
00:00:06.400 --> 00:00:07.759
You're listening to one right now.
00:00:07.919 --> 00:00:13.599
Maybe you like to read blogs and subscribe to email newsletters and stuff like that.
00:00:13.839 --> 00:00:14.960
Keep in touch.
00:00:16.079 --> 00:00:23.440
Email newsletters are a really nice way to keep on top of what's going on in the programming world.
00:00:24.239 --> 00:00:26.879
Except they're actually not.
00:00:27.199 --> 00:00:36.479
I don't know about you, but the last thing that I want to do after a long day of staring at the screen is sit there and stare at the screen some more.
00:00:36.640 --> 00:00:40.240
That's why I started a different kind of newsletter.
00:00:40.320 --> 00:00:43.679
It's a snail mail programming newsletter.
00:00:43.920 --> 00:00:44.479
That's right.
00:00:44.560 --> 00:00:51.679
I send an actual envelope in the mail containing a paper newsletter that you can hold in your hands.
00:00:51.840 --> 00:00:59.280
You can read it on your living room couch, at your kitchen table, in your bed, or in someone else's bed.
00:00:59.359 --> 00:01:02.159
And when they say, What are you doing in my bed?
00:01:02.399 --> 00:01:04.879
You can say, I'm reading Jason's newsletter.
00:01:04.959 --> 00:01:06.159
What does it look like?
00:01:06.640 --> 00:01:12.640
You might wonder what you might find in this snail mail programming newsletter.
00:01:12.879 --> 00:01:20.480
You can read about all kinds of programming topics like object-oriented programming, testing, DevOps, AI.
00:01:20.719 --> 00:01:23.760
Most of it's pretty technology agnostic.
00:01:24.159 --> 00:01:42.000
You can also read about other non-programming topics like philosophy, evolutionary theory, business, marketing, economics, psychology, music, cooking, history, geology, language, culture, robotics, and farming.
00:01:42.239 --> 00:01:46.239
The name of the newsletter is Nonsense Monthly.
00:01:46.560 --> 00:01:50.560
Here's what some of my readers are saying about it.
00:01:50.879 --> 00:01:57.120
Helmut Kobler from Los Angeles says thanks much for sending the newsletter.
00:01:57.280 --> 00:02:00.879
I got it about a week ago and read it on my sofa.
00:02:01.120 --> 00:02:06.480
It was a totally different experience than reading it on my computer or iPad.
00:02:06.719 --> 00:02:12.159
It felt more relaxed, more meaningful, something special and out of the ordinary.
00:02:12.960 --> 00:02:18.879
I'm sure that's what you were going for, so just wanted to let you know that you succeeded.
00:02:19.199 --> 00:02:20.800
Looking forward to more.
00:02:21.919 --> 00:02:31.520
Drew Bragg from Philadelphia says, Nonsense Monthly is the only newsletter I deliberately set aside time to read.
00:02:31.759 --> 00:02:44.240
I read a lot of great newsletters, but there's just something about receiving a piece of mail, physically opening it, and sitting down to read it on paper that is just so awesome.
00:02:44.479 --> 00:02:46.159
Feels like a lost luxury.
00:02:47.360 --> 00:02:57.919
Chris Sonnier from Dickinson, Texas says, just finished reading my first nonsense monthly snail mail newsletter and truly enjoyed it.
00:02:58.240 --> 00:03:03.120
Something about holding a physical piece of paper that just feels good.
00:03:03.520 --> 00:03:04.479
Thank you for this.
00:03:04.639 --> 00:03:06.240
Can't wait for the next one.
00:03:06.560 --> 00:03:16.319
Dear listener, if you would like to get letters in the mail from yours truly every month, you can go sign up at nonsensemonthly.com.
00:03:16.960 --> 00:03:20.159
That's nonsensemonthly.com.
00:03:20.719 --> 00:03:22.159
I'll say it one more time.
00:03:22.400 --> 00:03:25.599
Nonsensemonthly.com.
00:03:25.759 --> 00:03:29.520
And now without further ado, here is today's episode.
00:03:50.000 --> 00:03:52.479
Hey, today I'm here with Joe Masilotti.
00:03:52.560 --> 00:03:53.280
Joe, welcome.
00:03:53.599 --> 00:03:55.120
Hey Jason, how's it going?
00:03:55.680 --> 00:03:56.080
Good.
00:03:56.240 --> 00:04:05.280
So you just started in the not too distant past, you started a podcast with our mutual friend Colleen Schnettler.
00:04:05.360 --> 00:04:06.960
Tell me about this new podcast.
00:04:07.360 --> 00:04:16.879
Yeah, so Colleen and I met at RailsConf Portland three, four years ago?
00:04:16.959 --> 00:04:18.160
I don't even remember now.
00:04:18.399 --> 00:04:20.079
And we hit it off right away.
00:04:20.160 --> 00:04:24.240
And we've actually been chatting almost every week since.
00:04:24.480 --> 00:04:27.759
We have like a weekly accountability call.
00:04:28.079 --> 00:04:31.839
And it morphed into more like business strategy.
00:04:32.000 --> 00:04:37.040
We're both independent consultants, developers, marketers, founders.
00:04:37.600 --> 00:04:43.279
And we realized that a lot of what we're talking about could be really interesting to share with the world.
00:04:43.519 --> 00:04:46.399
And Colleen has already done a bunch of podcasts.
00:04:46.560 --> 00:04:49.759
I've been a guest, so I was excited to try something.
00:04:49.920 --> 00:05:05.839
So now the the angle on it is to like solo founders trying to developer focused, make it work in the in the age of AI and how we are being affected by AI, but also how we're leveraging AI.
00:05:06.160 --> 00:05:18.720
And less about like tips and tricks and more of this is like this is what it's like for real businesses, real founders, uh going through this metamorphos that we're going through right now.
00:05:19.120 --> 00:05:24.000
Yeah, it's a time of great economic and technological upheaval.
00:05:24.319 --> 00:05:26.000
Things are changing.
00:05:26.399 --> 00:05:28.160
Nobody knows what's going to happen.
00:05:28.399 --> 00:05:35.519
I don't think anybody even really knows what is happening right now, uh,
Load full transcript
let alone what will happen in the future.
00:05:35.680 --> 00:05:39.839
Um, but I think the one safe thing to say is that things are gonna be different.
00:05:40.000 --> 00:05:43.680
We don't know how, but they are, I mean, they're already different.
00:05:43.839 --> 00:05:44.079
Yeah.
00:05:44.240 --> 00:05:48.480
Um, the the job market for developers is different than it used to be.
00:05:48.720 --> 00:05:54.319
Um I think it's different for business too, both in positive and negative ways.
00:05:54.480 --> 00:06:02.879
And the question that I've been asking myself, and it sounds like you and Colleen have been asking yourselves as well, is what do we do?
00:06:03.199 --> 00:06:06.079
What are the best moves in this new world?
00:06:06.560 --> 00:06:08.000
Yeah, exactly.
00:06:08.240 --> 00:06:13.040
A big a big angle on it is like we don't have bosses, we're our own bosses.
00:06:13.120 --> 00:06:16.480
Uh, name of the podcast is permission not required.
00:06:16.720 --> 00:06:19.519
Idea being we don't have to ask anyone for permission.
00:06:19.600 --> 00:06:34.720
Like, we are our own bosses in this case, and that comes with a ton of freedom to explore whatever we want to explore, but also at a ton of risk, where if we make the wrong decision, we cannot provide for our families anymore.
00:06:34.800 --> 00:06:39.120
You know, it's like it's not like, oh, the business goes under, I'll get like whatever uh I'll get severance.
00:06:39.279 --> 00:06:43.839
It's like, no, that that is the end of the revenue stream for for our family.
00:06:44.160 --> 00:06:58.319
So that is just like this interesting take on all of this, where so much is riding, so much is on the line right now, you know, and figuring out how to a make it work and hopefully thrive, you know.
00:06:58.399 --> 00:07:05.279
That's that's the goal, but it kind of feels like a lot of people are scrambling, and uh I'm one of them right now.
00:07:05.600 --> 00:07:11.680
Yeah, yeah, and the risk is real, like it's not just a remote possibility, I don't think.
00:07:12.079 --> 00:07:27.360
Um because I'd you know, people are getting laid off, people are out there and not finding work, and and it's it's not exactly the same for consultants and employees, but it's just two points on a continuum.
00:07:28.000 --> 00:07:39.920
You know, um freelancers and agencies and and these these sorts of workers are facing a lot of the same challenges as employees.
00:07:40.079 --> 00:07:46.240
It's it's hard for a job seeker to find a job, and it's harder for agencies to find work.
00:07:46.399 --> 00:07:56.160
Uh clients expect more out of the agencies now because they know about AI and they believe that AI can make people more productive.
00:07:56.879 --> 00:08:06.319
So I I imagine I haven't talked with many like freelancers or consultants in in in the last little while, but I assume you're dealing with a lot of the same stuff.
00:08:06.639 --> 00:08:07.360
Oh, yeah.
00:08:07.519 --> 00:08:25.839
It's been it's been a big point of it's taken up a lot of brain power over the past couple months of where does my consulting business fit in in this new world where code has become a commodity already, you know, let alone what it's going to be in three months.
00:08:25.920 --> 00:08:28.240
Like code is practically already a commodity.
00:08:28.399 --> 00:08:39.440
And I've built a consulting business on building mobile apps for people, where my deliverable at the end of the day was written down as code that you now can put in the app store.
00:08:39.919 --> 00:08:49.840
And a lot of my the last couple of weeks, a couple of months has been me figuring out how do I break out of that and go a level higher.
00:08:50.159 --> 00:08:55.200
And how do I no longer like I was always delivering more than just code.
00:08:55.360 --> 00:09:00.879
I was helping you with, you know, app store review and dealing with Apple and advising on which native features to build.
00:09:01.120 --> 00:09:06.879
But instead of selling that, I was selling code, and now I'm swapping that.
00:09:07.120 --> 00:09:11.200
It's more about like I will help you figure out what to build.
00:09:11.440 --> 00:09:17.360
You need a mobile app, talk to me, like let's figure out what features you need to build, how to get into the app store.
00:09:17.519 --> 00:09:18.799
Do you need in-app purchases?
00:09:18.960 --> 00:09:21.440
How to save 15% on fees?
00:09:21.679 --> 00:09:37.360
Like, I was always doing that, but now I'm actually leading with that in my positioning and my branding and my offering because that is what people have more value in, or think they have more value in, because like they could just spit up the app themselves.
00:09:37.519 --> 00:09:39.120
You know, that's what that's what I'm hearing.
00:09:39.279 --> 00:09:44.080
And they can spin it up, but they're still coming back to me and being like, now how do we get it in the app store?
00:09:44.320 --> 00:09:48.720
Because Apple wrote us this email and denied us, and I don't know how to how to fight this.
00:09:48.799 --> 00:09:53.519
And it's like, okay, well, I've done this 25 whatever times, like I'll help you.
00:09:53.679 --> 00:10:06.559
Uh, so it's been interesting for me, especially, where I'm like off I'm doing the same stuff, but I'm totally swapping how I market it in this in this new world.
00:10:07.200 --> 00:10:11.919
I want to get a little clearer on what we mean by code is now a commodity.
00:10:12.320 --> 00:10:15.120
I I like partly agree and partly don't.
00:10:15.360 --> 00:10:27.519
And there there are some terms that are fuzzy, like uh we might use the terms like coding, programming, engineering, all that stuff interchangeably.
00:10:28.320 --> 00:10:33.440
Um, but there's like distinctions that can be made among those and stuff like that.
00:10:33.679 --> 00:10:48.320
So like uh an LLM can write code and it can get it to work, but that's not really the same thing, of course, as system design, and
it's uh certainly not the same thing as product design.
00:10:48.559 --> 00:10:48.799
Yeah.
00:10:48.960 --> 00:10:56.000
And so there's still some like um valuable human discretion and taste and stuff like that in there.
00:10:56.159 --> 00:11:12.720
So I sp I suspect that what you mean when you say code has but become a become a commodity and tell me if I'm getting this wrong, but I suspect you mean like that lower level where it's like you decide what you want, and then the LLM can write the code.
00:11:12.799 --> 00:11:18.639
You're still the programmer, but the code part is is abstracted away, you don't have to do that anymore.
00:11:19.279 --> 00:11:22.480
Yeah, yeah, I think that was a really good distinction you made at the beginning of that.
00:11:22.639 --> 00:11:37.679
The difference between code and engineering and code and product and code and strategy, like the physical typing of keys on the keyboard is has been commoditized, has been given over to the robots, and if not now, it will in the next couple of months.
00:11:37.840 --> 00:11:40.000
Like I'm pretty confident about that.
00:11:40.240 --> 00:11:45.120
Just and I don't even say like across the world, I mean for my workflow.
00:11:45.360 --> 00:12:07.200
Like I am letting the the robots do the actual hands-on keyboard stuff, and I'm reviewing it and I'm architecting it, and I'm coming up with like how to build those things because I've done it so many times and I know what should be done, but I'm not typing you know, def function and like you know, that kind of stuff anymore.
00:12:07.279 --> 00:12:11.840
Like I'm less in my editor and more in like the review diff viewing phase.
00:12:12.159 --> 00:12:13.919
Same, exact same for me.
00:12:14.159 --> 00:12:30.559
What do you think is the likelihood that AI basically ingests all the same stuff as what's in your book and it like knows as much as your book does, uh, it has all that same knowledge and even more.
00:12:30.720 --> 00:12:33.360
What do you think is the likelihood of that happening?
00:12:33.919 --> 00:12:43.840
For across the world for the every developer, um low, I would say, because it's still relatively new and the models haven't caught up with it yet.
00:12:44.159 --> 00:12:45.440
No, I just mean eventually.
00:12:45.679 --> 00:12:47.600
Oh, eventually, a hundred percent.
00:12:48.080 --> 00:13:00.159
Um, I mean, like, for me, my workflow, and I encourage anyone who has purchased any PDF of a book, like feed, give that to the LLM as a resource as you work on those type of things.
00:13:00.399 --> 00:13:02.000
I've written that book, right?
00:13:02.159 --> 00:13:04.720
Um, Hotwire Native for Rails developers.
00:13:04.799 --> 00:13:09.360
I've written it, but I wrote it now when I actually started writing it over almost two years ago.
00:13:09.679 --> 00:13:12.480
And I have forgotten some of those things.
00:13:12.639 --> 00:13:21.840
So what I do whenever I kick off a Hotwire Native project or a mobile app, I will have that as a text-only resource for the LLM that they can consume.
00:13:22.000 --> 00:13:30.159
And it's like, not only am I getting my own knowledge, I'm amplifying it because the LLM kind of knows the rules that I already know how to build these apps with.
00:13:30.559 --> 00:13:34.639
Yeah, Joe, I just realized that I am a stupid idiot.
00:13:34.799 --> 00:13:44.639
Um, because I wrote my book, Professional Rails Testing, with, you know, it's hundreds of pages of exactly the way I think things should be done.
00:13:45.519 --> 00:13:58.159
And uh LLMs, to be frank, I think are shit at writing tests because they're they're going off of the examples they see in people's repos, and those examples are not very good examples.
00:13:58.399 --> 00:14:00.720
And I I've gotten frustrated with it.
00:14:00.879 --> 00:14:04.240
Um, and it never occurred to me just to give it my book.
00:14:04.879 --> 00:14:05.519
Yeah.
00:14:05.759 --> 00:14:06.159
Yeah.
00:14:06.320 --> 00:14:06.960
It's huge.
00:14:07.120 --> 00:14:11.840
Well, first of all, you can't say that you're stupid and then finish that sentence with the book that I wrote.
00:14:11.919 --> 00:14:14.720
Let's just let's just put that down for sure.
00:14:14.879 --> 00:14:17.360
Um, that requires some level of competency.
00:14:17.519 --> 00:14:20.159
Um, but yeah, it's like a huge breakthrough.
00:14:20.399 --> 00:14:24.639
And yeah, us for for us authors, it's distilling knowledge we already knew.
00:14:24.799 --> 00:14:41.679
But if you're an individual out there and you're working on uh a code base that needs a bunch of new tests or is like starting up the testing, and you own Jason's book on testing, toss that into the LLM as a resource, and now you have Jason sitting by you that you could ask questions to.
00:14:41.919 --> 00:14:53.440
It's like the ultimate chat with PDF app that has everyone has built, you know, and launched at the beginning of the AI surge, where instead of you're just like chatting with it, you have the author sitting next to you.
00:14:53.679 --> 00:15:05.279
And and that framing is huge because you get a point of view that is more knowledgeable than you, that has like seen it, has been around the block a few times, but it's in your code base.
00:15:05.440 --> 00:15:10.080
So you could have it say, Okay, chapter three has this, these like concepts.
00:15:10.240 --> 00:15:13.279
How do I apply those concepts to this code base?
00:15:13.840 --> 00:15:28.000
And now you're like not only getting better results, but you're also learning what is being architected because it's coming from the book, and and that's been a huge level up for me in just like learning things.
00:15:28.639 --> 00:15:29.519
Interesting.
00:15:30.000 --> 00:15:36.879
I'm I'm gonna do that as soon as I can after this, put put my book in there and see see what happens.
00:15:37.360 --> 00:15:49.679
Um yeah, something that I think about sometimes is like what what's the AI gonna get good at and
what is it not gonna get good at anytime soon?
00:15:50.159 --> 00:15:58.480
And and and my estimation of how smart it's gonna get, how quickly, keeps going up.
00:15:58.799 --> 00:16:03.600
I keep realizing that I've underestimated how good it can get, how fast.
00:16:04.159 --> 00:16:13.600
The level it's at right now is already it it it's not like ten times as smart as I thought it would be by now, but it's definitely smarter than I thought it'd be by now.
00:16:13.679 --> 00:16:15.840
I'm I'm impressed by what it can do.
00:16:16.639 --> 00:16:31.600
I rarely run into a AI wall, like where the where the I'm using Claude 100% of the time, uh where Claude can't do something, or it's like gets stuck or can't figure it out.
00:16:31.679 --> 00:16:43.600
And like sometimes I'll you know, it'll hit a roadblock and I'll have to direct it or guide it in a way because I've done this thing a hundred times, but it's rare that Claude is like, sorry, can't do that, or you know, whatever.
00:16:43.759 --> 00:16:45.840
Like, this is wild.
00:16:46.159 --> 00:16:51.759
Um you're familiar with CI, you're you know, building Saturn CI, you know how all those workflows work.
00:16:52.000 --> 00:17:09.440
I have this little tool that I'm working on right now that does um automated iOS app builds, where essentially you click a button, it pings your server, does some stuff in your Rails app, and then kicks off a GitHub build, GitHub action build that packages the app, uploads it to test flight for you.
00:17:09.599 --> 00:17:12.319
And like there's 17 webhooks involved with that.
00:17:12.400 --> 00:17:19.279
It's talking to App Store Connect, it's doing your you know PA identification, signing certificates, it's doing all that.
00:17:19.519 --> 00:17:28.960
And the LLM has has like orchestrated all of that when all I was saying was like this is the end goal, let's walk through the plan.
00:17:29.200 --> 00:17:33.839
Let's figure out oh, Apple doesn't have a webhook to like let me know when a build is ready.
00:17:34.000 --> 00:17:35.279
Cool, what are our alternatives?
00:17:35.440 --> 00:17:38.960
Let's do polling, let's do um like a manual refresh.
00:17:39.200 --> 00:17:54.559
And just like keeping momentum going has been so huge in that where it doesn't get stuck very often, which is to go back to what you said before, like I keep underestimating how awesome it can be.
00:17:55.119 --> 00:18:11.039
And I think that the last frontier for me, well, the next frontier, because I'm sure there'll be a new one, is more of the visual design space, where I still can't get Claude to do good design for me.
00:18:11.200 --> 00:18:20.880
I still can't get Claude to um make stuff look and feel good that isn't disconnected from like the rest of the app.
00:18:21.039 --> 00:18:28.880
And and I think that hopefully Wathen, you know, Adam Wathen is like figuring that out with the UI.sh stuff that he's working on over at Tailwind.
00:18:29.279 --> 00:18:38.079
Um but that is still like something that I I'm I do by hand still, I guess is the right way to put it.
00:18:38.480 --> 00:18:39.599
Right, yeah.
00:18:40.000 --> 00:18:47.359
Yeah, but I can't think of any reason in principle why AI can't eventually get good at that.
00:18:48.240 --> 00:18:48.799
Yeah.
00:18:49.440 --> 00:19:00.319
And and something that is uh I I've noticed that seems different between now and some months ago is this the level of apparent like common sense.
00:19:00.640 --> 00:19:28.559
Like before it seemed like AI had like no common sense, it was basically just a sophisticated database where it was like, hey, do this, and it just knows a bunch of stuff, so it can write the code for you, and that's great, but it didn't it if um if it ran into a problem where the solution was obvious or whatever, um it wouldn't necessarily be like, oh, this is true and this is also true, so clearly I should do this.
00:19:28.720 --> 00:19:35.039
It didn't really have that, but now it does, like it makes sensible decisions on its own.
00:19:35.839 --> 00:19:36.880
Counterpoint.
00:19:37.119 --> 00:19:41.519
I saw someone ask all of the latest models the other day.
00:19:41.759 --> 00:19:45.200
Uh the car wash is 50 meters away.
00:19:45.359 --> 00:19:46.960
Should I walk or should I drive?
00:19:47.200 --> 00:19:53.119
And every single LLM responded with that you should walk to the car wash.
00:19:53.279 --> 00:19:56.240
And it's like, you know, who knows how fabricated it was.
00:19:56.319 --> 00:20:12.799
I didn't go and test it, but it's like stuff like that that we're so deep and we're so like entrenched in what AI can do that when you ask it questions like that and take a step back that like the every person is asking, you're sometimes people are like, this is stupid.
00:20:13.759 --> 00:20:16.400
Of course I should drive I need to drive to the car wash.
00:20:16.480 --> 00:20:17.680
Like, what are you talking about?
00:20:17.839 --> 00:20:21.359
And we're like, oh no, that's a logic, that's not a logic question.
00:20:21.440 --> 00:20:27.839
You shouldn't ask an AI that and um we'll see how long it takes to figure out the car wash problem.
00:20:28.240 --> 00:20:32.240
Yeah, that's interesting because it's what you might call an ill-formed question.
00:20:32.319 --> 00:20:35.119
Uh it doesn't have enough information in it.
00:20:35.279 --> 00:20:40.400
Um, and what the AI should say back is why are you going to the car wash?
00:20:40.559 --> 00:20:48.079
Like, do you do you work there and you have to pick up your paycheck or something, if that's how paychecks even work these days?
00:20:48.319 --> 00:20:51.759
Um or are you getting your car actually washed?
00:20:52.000 --> 00:20:53.680
And I'm actually gonna do that right now.
00:20:53.839 --> 00:21:00.640
Um the car wash is five minutes from my house.
00:21:00.960 --> 00:21:04.160
Should I walk there or drive?
00:21:04.480 --> 00:21:08.079
I'm gonna see if these people on Twitter are uh just trying to
pull me.
00:21:09.200 --> 00:21:11.200
I need to get my car washed.
00:21:12.000 --> 00:21:14.559
Like I'm going to the car wash to get my car washed.
00:21:14.720 --> 00:21:16.079
Should I walk or drive?
00:21:16.559 --> 00:21:17.599
Oh, interesting.
00:21:17.759 --> 00:21:26.079
Because I remember seeing it and I thought that that part wasn't in it, but there's a good chance that I just there's a good chance that I just didn't read it very carefully.
00:21:26.400 --> 00:21:28.000
Well, what is what is your what is your prompt?
00:21:28.319 --> 00:21:31.119
Let's uh let's let's live test the AI.
00:21:31.599 --> 00:21:32.559
Ha ha ha.
00:21:32.960 --> 00:21:34.720
The answer was drive.
00:21:34.799 --> 00:21:36.240
You need the car there anyway.
00:21:36.559 --> 00:21:38.000
Hey, there you go.
00:21:38.319 --> 00:21:38.559
Yeah.
00:21:38.880 --> 00:21:39.680
Who were you asking?
00:21:39.759 --> 00:21:40.880
Or what are you asking?
00:21:41.440 --> 00:21:45.119
Um Claude Opus46, I believe.
00:21:45.359 --> 00:21:46.240
Yeah, okay.
00:21:46.640 --> 00:21:47.279
Yeah.
00:21:47.680 --> 00:21:48.720
Yeah, interesting.
00:21:48.799 --> 00:21:54.799
Yeah, and I wouldn't put it past these fucking Twitter people to uh to just give us something fake.
00:21:55.039 --> 00:21:55.440
I know.
00:21:55.680 --> 00:21:57.680
That's the other thing about all this AI stuff.
00:21:57.839 --> 00:21:59.759
There's so much BS out there.
00:22:00.880 --> 00:22:01.519
So much.
00:22:02.400 --> 00:22:03.759
It's it's it's wild.
00:22:04.079 --> 00:22:06.799
It's better just to not pay attention at all.
00:22:07.200 --> 00:22:14.720
Anyway, um, I'm curious about this product that you're working on, Purchase Kit, and how long have you been working on it?
00:22:14.880 --> 00:22:15.839
What is it?
00:22:16.079 --> 00:22:21.200
How are you involving AI and not involving AI and all that stuff?
00:22:21.680 --> 00:22:31.680
Yeah, so Purchase Kit is a full solution to uh in-app purchases for your iOS and Android apps.
00:22:32.000 --> 00:22:45.599
So you have an iOS or an Android app in the App Store, let's say it's built with Hotwire Native, and you want to start charging people subscriptions or in app, you know, like consumables, you need to use in-app purchases to follow Apple and Google's guidelines.
00:22:45.759 --> 00:22:48.400
And they're just like a pain in the butt to implement.
00:22:48.640 --> 00:22:50.960
They don't interact well with your Rails app.
00:22:51.200 --> 00:22:56.079
The data lives on Apple's servers or Google's servers, so you never know who's subscribed and when.
00:22:56.240 --> 00:23:08.799
And Purchase Kit will do all of this for you with like a series of different packages and endpoints and SaaS tools, uh, all and then put all the data of the subscribers in your Rails database.
00:23:08.960 --> 00:23:11.920
So you can do the queries on like how many people are subscribed.
00:23:12.079 --> 00:23:13.920
Okay, this customer, what plan are they on?
00:23:14.079 --> 00:23:16.079
Should they be show them the paywall or not?
00:23:16.240 --> 00:23:21.279
And it all lives in your Rails database instead of distributed across three different servers.
00:23:21.599 --> 00:23:26.640
So is this specifically for people who have a Rails app and a mobile app?
00:23:26.880 --> 00:23:27.440
Exactly.
00:23:27.599 --> 00:23:27.839
Yeah.
00:23:28.079 --> 00:23:28.400
Got it.
00:23:28.640 --> 00:23:41.440
It is a gem, an iOS package, an Android package, and then like a SaaS that sits on top of it that connects the platform I call it, that connects all the moving pieces together.
00:23:41.759 --> 00:23:51.359
And the platform itself is like, you know, dealing with webhooks from Apple and Google, passing webhooks along to your Rails server, writing stuff to your database via the gem.
00:23:51.839 --> 00:24:02.799
It's a lot of cord, it's like a coordination tool that means you can add in-app purchases to your app with like four or five lines of Ruby and no native code.
00:24:02.960 --> 00:24:16.880
Instead of hundreds of lines of Ruby, you know, hundreds of lines of iOS, hundreds of lines of Android, um, and all with the stuff that makes it robust, like exponential back-off for webhook failures.
00:24:16.960 --> 00:24:20.480
And if whose server goes down, how do we resolve that?
00:24:20.640 --> 00:24:24.960
And webhooks out of order, like all that complicated stuff you don't want to have to deal with.
00:24:25.119 --> 00:24:36.240
It's it's what I've built for clients, like four or five times, and this is the productized version of that to make it easy for anyone to add in app purchases in like an afternoon.
00:24:36.640 --> 00:24:39.440
And where are you at from a business perspective?
00:24:39.599 --> 00:24:43.839
Are are you working on getting your first customer or are you already past that point?
00:24:43.920 --> 00:24:44.720
Where are you at there?
00:24:45.200 --> 00:24:47.279
Yeah, working on getting my first customer.
00:24:47.359 --> 00:24:57.279
Um, outside of like me using it for my I don't call it internal tools, but like my public-facing stuff will use Purchase Kit to do a net purchases.
00:24:57.359 --> 00:25:00.480
So it's being used, it's just like not no one's paying for it yet.
00:25:00.640 --> 00:25:10.480
Uh, which has been really interesting because almost all of my products in the past are very quick, like, oh, I need that thing, let me buy it.
00:25:10.720 --> 00:25:12.960
And then I'll use it later.
00:25:13.119 --> 00:25:19.839
Like my bridge component, I have a library that adds native features to your Rails app for running on iOS and Android.
00:25:19.920 --> 00:25:22.000
And it's like a one-time purchase, a couple hundred bucks.
00:25:22.079 --> 00:25:26.079
It's if you need those features, you buy the thing and you you integrate it later.
00:25:26.400 --> 00:25:34.480
Purchase Kit is very much like a long sales cycle, which I never really thought about when I was building it.
00:25:34.799 --> 00:26:01.279
Where I've had onboarding calls with multiple people where we've like gotten it set up in their app and it's working in the sandbox, and now they're ready to buy, but they are working with Apple to like figure stuff out, to figure out uh where the in app how much the in-app purchases should cost, which regions it should be available in, like all of this stuff that is outside of the product that like slows down the sales cycle.
00:26:01.440 --> 00:26:02.799
Um, and I'm impatient.
00:26:02.880 --> 00:26:05.519
Like, I just want someone to hit buy and start paying me.
00:26:05.839 --> 00:26:08.799
A, I want to validate it before before I put more time into it.
00:26:08.880 --> 00:26:12.880
But B, it's like, come on, you know, move faster, people.
00:26:13.039 --> 00:26:21.359
And and then this is this is new to me because like I said, everything that I have ever built has always been this like they see it, they buy it, they use it in like a day.
00:26:21.519 --> 00:26:26.000
And purchase kit has been it takes a couple weeks for someone to even consider it.
00:26:26.079 --> 00:26:33.920
And then like I have to have an onboarding call and then a sales call, and it's like, is this what I want to be building and spending my time on?
00:26:34.160 --> 00:26:40.720
Um, you know, if I was at 10k MRR, that's a different story, but like to get it off the ground has uh has been has been tough.
00:26:40.880 --> 00:26:41.680
Has definitely been tough.
00:26:41.920 --> 00:26:43.119
Yeah, interesting.
00:26:43.440 --> 00:26:50.480
And are are there existing products that are kind of analogous or is this like a unique novel thing?
00:26:50.799 --> 00:26:53.119
There are unique there are uh existing products.
00:26:53.200 --> 00:26:55.839
Uh Revenue Cat is the big one.
00:26:56.000 --> 00:27:03.440
Uh the difference is that all of the tools around in-app purchases are focused on mobile developers.
00:27:03.680 --> 00:27:08.640
They're like, make in-app purchases easy from a mobile developer perspective.
00:27:08.960 --> 00:27:13.519
So what the the features that they offer are like dynamic paywalls.
00:27:13.680 --> 00:27:19.200
Oh, go on our website and configure your prices and like show a paywall that's all native code.
00:27:19.440 --> 00:27:22.720
There's nothing for Rails developers except Purchase Kit.
00:27:22.880 --> 00:27:26.880
And the big distinction is that the feature set is very different.
00:27:27.119 --> 00:27:38.079
To build a dynamic paywall where you're showing different prices to different users, you render an HTML page to your customers, just like you do in a pricing experiment that would link to Stripe.
00:27:38.240 --> 00:27:40.079
That problem is not something I need to solve.
00:27:40.240 --> 00:27:41.839
Rails does that for us.
00:27:42.079 --> 00:27:49.200
But the problems that do exist are like how does the Rails app tell the iOS and the Android app to make a purchase?
00:27:49.440 --> 00:27:54.240
How does
the iOS app tell the Rails app that the purchase was made and like validate receipts?
00:27:54.319 --> 00:28:04.400
So I'm solving very different problems because it's built for Rails backends and Rails developers, not for iOS and Android developers.
00:28:06.960 --> 00:28:19.440
Is there anything that you could imagine something you could learn at some point that would make you decide, nope, I'm I'm not gonna pursue this this product, I'm gonna go do something else?
00:28:21.039 --> 00:28:32.640
I think that so I have a a lead right now that wants to use Purchase Kit, but is migrating would be migrating off of Revenue Cat, which is really exciting.
00:28:32.720 --> 00:28:39.920
They're doing like 40k a month into that purchases, so it's it's non-trivial, you know, it is their business.
00:28:40.319 --> 00:28:51.759
And what would make me not pursue this anymore is if when we get down to the migration, if I realize that I have overlooked 90% of the surface area.
00:28:52.240 --> 00:29:02.319
Like, sure, this product works for the clients that I've worked with in the past, but actually, when it becomes a SaaS and it's self-serve, there are all these other problems I didn't think about.
00:29:02.559 --> 00:29:05.119
That is where I probably would throw in the towel.
00:29:05.519 --> 00:29:09.759
And they're not code, they're not answers that can be solved with code.
00:29:09.839 --> 00:29:19.599
It's like, oh, well, you know, we have to deal with compliance, and that's gonna require our a custom contract, and like we have to deal with where the data lives.
00:29:19.680 --> 00:29:26.720
It's like all of those things that I like don't want to deal with, that's where I would say, all right, you know what, this isn't gonna, this isn't gonna work.
00:29:26.960 --> 00:29:31.200
Um I it's gonna take a while to get there though, because I need to talk to a lot of people.
00:29:31.759 --> 00:29:40.000
I feel pretty good about it because like again, I've built this solution for five, six clients in the past, and this is the exact architecture that they follow.
00:29:40.079 --> 00:29:41.680
It's just generalized.
00:29:42.160 --> 00:29:44.480
Um but I was always in there with the code.
00:29:44.559 --> 00:29:46.960
If something broke, I could change their Rails code.
00:29:47.119 --> 00:29:53.119
Now I only have a gem to deploy, and I have to rely on people updating their gem, like for security updates and stuff.
00:29:53.279 --> 00:29:55.680
So it's a very different problem.
00:29:56.880 --> 00:29:58.240
Yeah, interesting.
00:29:58.480 --> 00:30:08.240
Um with Saturn CI, there's a there's kind of a comforting aspect of it where it's not a novel kind of product.
00:30:08.400 --> 00:30:08.720
Yeah.
00:30:08.880 --> 00:30:10.559
It's just a CI platform.
00:30:10.799 --> 00:30:16.799
If you know about GitHub Actions and Circle CI and all that, you understand what my product is.
00:30:17.039 --> 00:30:30.559
And there's the the comforting thing is if I'm not getting sales, that can only mean one thing, and that can only mean that I'm just not doing good enough at it yet.
00:30:31.440 --> 00:30:32.000
Yeah.
00:30:32.400 --> 00:30:41.759
Um it it can't be because the product is the wrong thing or something like that, because there's already people being successful with CI products.
00:30:41.920 --> 00:30:42.160
Right.
00:30:42.240 --> 00:30:47.440
Um so it can only be a lack of effort or doing the right things and stuff like that.
00:30:47.599 --> 00:31:04.640
But I've worked on products before where it was a novel idea, and it's like tormenting because it's like, am I not getting sales yet because I'm just not doing the right stuff, or is it because this product is doomed to failure and nothing I could ever do could make it work?
00:31:05.119 --> 00:31:06.799
Yeah, that's a that's a tough one.
00:31:06.960 --> 00:31:18.079
And now that you can build one can build things so much more quickly, it it becomes this trap of, well, this didn't work for like three weeks, so should I just try something new?
00:31:18.400 --> 00:31:20.480
Versus, well, no one even knew about it.
00:31:20.559 --> 00:31:23.440
You had a hundred people check out your website and you gave up, you know.
00:31:23.599 --> 00:31:26.000
So where do you find that balance?
00:31:26.720 --> 00:31:34.079
Um Yeah, I I do want to ask, like, the Saturn CI stuff, uh, are you running on a Linux box?
00:31:34.240 --> 00:31:38.000
Like, what is the actual can you run on a Mac box?
00:31:38.160 --> 00:31:39.680
Like, why how does that all work?
00:31:40.160 --> 00:31:59.039
The runners are hosted, so there's not a way to run your own runners, you just use mine, and the way that works is I just have a giant VM on Hetzner, and it uses Kubernetes for the orchestration, and it runs that way.
00:31:59.359 --> 00:32:00.000
Nice.
00:32:00.160 --> 00:32:01.039
That's really cool.
00:32:01.200 --> 00:32:07.119
That's that's still something that I have not experimented with at all, like Kubernetes, Hetzner.
00:32:07.359 --> 00:32:12.640
I mean, with the recent Heroku news, I'm I'm I that might change soon.
00:32:12.799 --> 00:32:19.119
Um I'm slowly migrating stuff off of Heroku, but I'm just going to render because it's the most familiar.
00:32:19.279 --> 00:32:35.839
Uh but I'm spinning up a new product right now that I need a Rails website and a demo server, and like those are 25 bucks plus a month each, just to have a Rails app running before it hits the memory issue, you know?
00:32:36.160 --> 00:32:41.599
And having those on a single Hetzner box feels a lot better.
00:32:41.759 --> 00:32:52.960
I just like haven't spent the time to learn all of the stuff that I need to learn and come all and all that, and then it's I'm really just delaying the inevitable because I know that's coming soon.
00:32:53.279 --> 00:32:58.799
Yeah, and obviously uh AI can really grease the wheels for you.
00:32:59.039 --> 00:32:59.440
Mm-hmm.
00:32:59.599 --> 00:33:00.079
Mm-hmm.
00:33:00.640 --> 00:33:02.480
It's like, do I want to do that though?
00:33:02.640 --> 00:33:04.640
That's like that's what all this has come down to.
00:33:04.720 --> 00:33:15.920
It's like AI can do anything for me, but is that what I want to spend my time prompting and validating and testing and managing and maintaining in the long run?
00:33:16.240 --> 00:33:23.359
And having something on render is a very much of a on a on a on a platform as a service, I should say, is a safety blanket.
00:33:24.160 --> 00:33:38.000
Yeah, it's kind of like the this AI stuff with regard to productivity, it's kind of like the industrial revolution where people predicted that people would just start working like a five-hour work week or something like that because you can be so much more productive.
00:33:38.160 --> 00:33:39.440
And that's not what happened.
00:33:39.599 --> 00:33:46.799
People still use up all their available time to work, they just accomplish more during that time.
00:33:46.960 --> 00:33:49.039
And that's exactly what we're seeing with AI.
00:33:49.119 --> 00:33:53.440
It's not as though people are working less, they're working the exact same amount, maybe more.
00:33:54.079 --> 00:33:58.559
Um and they're just producing more output.
00:33:58.720 --> 00:34:00.480
I don't want to necessarily say value.
00:34:00.640 --> 00:34:08.559
Some people are creating more value, some people are just generating a bazillion lines of code, and whether that's more value is is dubious.
00:34:08.880 --> 00:34:12.079
Um, but it's that's interesting to see how that plays out.
00:34:12.639 --> 00:34:15.039
I am 100% falling into that trap.
00:34:15.280 --> 00:34:26.559
I am working so much more the past couple of weeks than I have in the past, and producing so much more, like you said, lines of code.
00:34:26.800 --> 00:34:28.719
Is there the is there value in this?
00:34:28.880 --> 00:34:29.920
I don't know yet.
00:34:30.079 --> 00:34:37.119
I'm excited to find out, but my output has been off the charts the past couple of weeks.
00:34:37.440 --> 00:34:39.599
And I don't know if that's a good thing.
00:34:40.000 --> 00:34:41.039
I'm curious.
00:34:41.199 --> 00:34:46.960
So I had this episode with uh Gail Lackman McDowell.
00:34:47.679 --> 00:34:49.280
Yeah, I think I got that name right.
00:34:49.440 --> 00:35:13.920
Um, the author of uh Cracking the Coding interview um a a few dozen episodes back, and and we talked about the irony that like the job market, the the job application process is kind of destroyed now because people get spammed with AI applications and stuff like that, and you're the real applications just get lost in this sea.
00:35:14.559 --> 00:35:23.679
Um and so it's really hard for job seekers now, and basically what we are having to do is go back to just networking.
00:35:24.559 --> 00:35:32.159
And in this hyper-technological age, uh the personal relationships are actually more important rather than less.
00:35:33.280 --> 00:35:50.159
Um and I think that's true with a lot of stuff, and with Saturn CI, that's that's been my like initial that's like my first layer is like going to first to people I know, people I already have a relationship with, and and going after those people.
00:35:50.320 --> 00:35:59.119
And then once I kind of went through most of those, now I'm like meeting new people and making new relationships and stuff like that.
00:35:59.519 --> 00:36:06.000
I'm not prioritizing like some kind of automated mass marketing and stuff like that.
00:36:06.400 --> 00:36:14.480
So I'm I'm and and I don't necessarily mean like bad stuff, I just mean like blog posts and and that kind of thing.
00:36:14.559 --> 00:36:19.360
Like I'm working on that now, but I only just started that like quite a ways in.
00:36:19.599 --> 00:36:28.719
Yeah, and I'm curious for you, what are you doing for sales and marketing, for your consulting, for your products, whatever you want to talk about?
00:36:28.880 --> 00:36:32.880
Has anything changed for you and now that we're in this different world?
00:36:34.079 --> 00:37:02.880
I think that the approach is the same for me, for my consulting business, and that is share as much as I possibly can, give away as much as humanly possible, paywall the things that are only the highest of leverage and the highest of value or the deepest of you know content, and and hope that pray that inbound leads will come.
00:37:03.519 --> 00:37:08.880
And that is what's worked for me since I've been independent for like going on six years now.
00:37:09.119 --> 00:37:16.239
I think that I've tried cold outreach, I've tried, hey, you know, do you want to do a mobile app or or stuff like that?
00:37:16.400 --> 00:37:20.800
And I don't think I've ever had a single client from that kind of stuff.
00:37:20.960 --> 00:37:30.480
Every single one of my clients has been responding to a newsletter, seeing my blog post, talking to me after a conference talk, uh, hallway track type stuff.
00:37:30.800 --> 00:37:35.519
And I'm starting to realize that I keep fighting that.
00:37:36.000 --> 00:37:46.000
I keep trying to do cult, do outreach, and like find new clients, or like tell the world that I have opportunity to work with them, and like it never works.
00:37:46.159 --> 00:37:47.679
So why do I keep trying?
00:37:47.920 --> 00:37:57.599
So I'm leaning into the fact that if all of my leads are inbound and they find me through X, Y, and Z, do more X, Y, and Z.
00:37:58.239 --> 00:38:00.559
And X, Y, and Z are content.
00:38:00.960 --> 00:38:06.480
So that's making sure I have something interesting to post every single day on Twitter.
00:38:06.800 --> 00:38:11.519
Having a newsletter article on sub on my Substack every single week.
00:38:11.679 --> 00:38:19.280
Uh, I now have a podcast that's coming out every single week, so like getting notifications in Apple Podcasts or Overcast or whatever.
00:38:19.599 --> 00:38:21.440
The book, of course, is huge.
00:38:21.519 --> 00:38:24.880
Uh I try I'm gonna try to speak at a conference at least once a year.
00:38:25.199 --> 00:38:30.159
All of these things I I've been doing forever.
00:38:30.400 --> 00:38:36.159
But now I'm looking at them as these are not one of the ways to make money.
00:38:36.320 --> 00:38:39.440
These are the only ways to bring in new clients.
00:38:39.679 --> 00:38:47.679
So I should be doing if I want to make have a successful business and make more money, I should be doing more of the things that bring in leads.
00:38:47.840 --> 00:38:50.719
Like, you know, when I think about it that way, it's so simple.
00:38:51.039 --> 00:38:54.480
Uh I feel like I I'm just like always trying to find like the easy out.
00:38:54.559 --> 00:38:56.800
It's like, what if I send like 10 cold emails and I get a client?
00:38:56.880 --> 00:38:57.519
That'd be so easy.
00:38:57.599 --> 00:39:01.519
It's like, no, just write, just write an article and you'll get someone in two months.
00:39:02.079 --> 00:39:02.880
Yeah, yeah.
00:39:02.960 --> 00:39:10.079
Well, uh a lot of um developers are neurodivergent, uh autistic, ADHD.
00:39:10.239 --> 00:39:15.199
Uh I think I'm well, I know that I'm autistic and probably ADHD also.
00:39:15.679 --> 00:39:23.199
Um, and I've fallen into this trap, as so many people do, of like, okay, I did something and it worked.
00:39:23.360 --> 00:39:24.320
What do I do next?
00:39:24.400 --> 00:39:26.079
What's what's the different thing that I do?
00:39:26.239 --> 00:39:30.079
I have to do something new and I'm always like chasing novelty.
00:39:30.800 --> 00:39:37.679
Um and I've kind of uh figured out how to uh push back on that and not succumb to it so much.
00:39:37.840 --> 00:39:42.079
It's like, wait, if I did something that worked, I should do that same thing again.
00:39:42.320 --> 00:39:47.280
And it's like not it it doesn't tickle that part of my brain that like has an itch, you know.
00:39:47.519 --> 00:39:57.199
Um but you have to like go I have to go against my natural inclinations, uh which is which is hard.
00:39:57.760 --> 00:40:04.079
I have ADHD, um, was diagnosed not long ago, like only a couple of years ago.
00:40:04.239 --> 00:40:08.320
So it's still uh it's still pretty new to me.
00:40:08.639 --> 00:40:13.039
And the the novelty thing is something that I'm constantly fighting as well.
00:40:13.199 --> 00:40:14.400
It's like this worked.
00:40:14.639 --> 00:40:15.760
Try something new.
00:40:15.920 --> 00:40:17.679
It's not good, keep doing it.
00:40:17.920 --> 00:40:20.880
Um my writing is a really good example of that.
00:40:21.039 --> 00:40:26.159
I cannot write in the same editor for more than like a few months at a time.
00:40:26.400 --> 00:40:28.639
I need to change my editor, and I've leaned into that.
00:40:28.719 --> 00:40:30.400
So it's like, okay, cool, I have seven editors.
00:40:30.480 --> 00:40:36.239
I have Typora, I have MacVim, I have notes, I have text edit, and it's like I just cycle through those.
00:40:36.320
--> 00:40:38.000
I write in Substack directly.
00:40:38.159 --> 00:40:43.440
I cycle through those every couple of months because it's novel and it feels new and exciting.
00:40:43.599 --> 00:40:45.760
Right now I'm on a voice recording kick.
00:40:45.840 --> 00:40:55.280
So when I'm out on a walk, I have my little mic, you know, hooked up to my chest and I record the content from my blog post, and then I transcribe that, and that's my first draft.
00:40:55.440 --> 00:40:57.920
Because that is novel and exciting to me right now.
00:40:58.079 --> 00:41:00.639
In another week, I'll be back to pen and paper.
00:41:00.719 --> 00:41:01.920
Like, who knows?
00:41:02.159 --> 00:41:11.840
Um, and those are the things that I can switch up that like are okay to have the novelty because the end result is the same, it's a polished piece of work.
00:41:12.159 --> 00:41:22.480
But the novelty in where my focus lies or what is working for my business, those things that are working need to be doubled down on.
00:41:22.559 --> 00:41:30.480
And it's so easy to say and so hard to do that, yeah, end of sentence.
00:41:30.719 --> 00:41:32.320
Like that's all I got.
00:41:32.800 --> 00:41:34.159
Yeah, it's so hard.
00:41:34.400 --> 00:41:40.000
Um, and I've been trying to get some blog posts out on the Saturn CI website for so long.
00:41:40.159 --> 00:41:42.960
I think I have like one blog post finished.
00:41:43.119 --> 00:41:53.599
I used to crank out a blog post like every week, um, but for some reason it's harder now, and maybe it's harder because it's uh it's connected to a product.
00:41:53.760 --> 00:41:57.440
It's not just like writing a blog post because of whatever.
00:41:57.679 --> 00:42:09.920
Um, I feel like it I maybe I'm holding myself to a higher standard because I feel like it has to be good because it has to um drive traffic.
00:42:10.480 --> 00:42:19.760
I'm I'm not sure what the hang-up is, but I keep starting blog posts, and then I'm like, oh no, this is like too ambitious and broad scoped.
00:42:19.920 --> 00:42:25.360
Let me let me try something that I can finish within a reasonable amount of time instead of like three months.
00:42:25.599 --> 00:42:29.199
Um and then I start a new one and I'm like, oh no, this topic sucks.
00:42:29.599 --> 00:42:30.880
Start a new one.
00:42:31.199 --> 00:42:37.679
It's uh pretty it's pretty hard, but yeah, I'll I'll I'll get through it.
00:42:38.159 --> 00:42:42.800
I think that that is part of the writing process that is that is good friction.
00:42:43.679 --> 00:42:47.519
Uh it's something that you could have published that first post.
00:42:47.599 --> 00:42:51.920
You could have like wrapped it up in a crappy way and and not actually hit your point.
00:42:52.159 --> 00:43:06.880
And is having two blog posts on the blog now better than having like two, or sorry, having four now that are all kinda meh versus having two that are really good and really get your point across in a couple of months?
00:43:07.039
--> 00:43:12.559
Like, you're with blogs you're and and content like that, you're you have to play the long game.
00:43:12.800 --> 00:43:15.360
Writing a post is not going to bring you a customer in a week.
00:43:15.599 --> 00:43:16.960
This is just not how it works.
00:43:17.119 --> 00:43:19.679
It's gonna bring you a customer in like six months.
00:43:19.920 --> 00:43:26.880
And if you're looking at that timescale, it doesn't matter if you publish now or in two weeks or in even three weeks.
00:43:27.119 --> 00:43:30.639
Like earlier the better, yes, but to a degree.
00:43:31.039 --> 00:43:39.039
And especially in the age of like generated content, like quality is so much more important than quantity.
00:43:39.360 --> 00:43:42.880
So I'm not like I think that's good friction.
00:43:43.280 --> 00:43:58.800
That's another thing that makes it harder, uh, because it used to be that you could just write a tutorial on some like here's or or or just like here's an explanation for how this uh configuration setting in Capi Barrel works or something like that.
00:43:59.039 --> 00:44:01.039
But now it's like Why would I read that?
00:44:01.119 --> 00:44:03.360
I can just ask AI when I need it.
00:44:03.519 --> 00:44:06.719
Um, so that kind of content doesn't make as much sense anymore.
00:44:06.800 --> 00:44:22.800
What does make sense, of course, is like opinions, things you you like take a stand on something and say, like, hey, I think this uh that that's the kind of stuff that's a lot more valuable that you're not gonna get from an AI, at least not yet.
00:44:23.679 --> 00:44:33.840
I I'm a sadly uh to admit, like I'm on Hacker News probably ever I'd say every day, and I and I always click through five, six articles a day.
00:44:34.159 --> 00:44:38.960
I finish close to zero of those articles that I click through on.
00:44:39.199 --> 00:44:45.440
And it's mostly because they feel like such an endeavor to work through.
00:44:45.599 --> 00:44:52.639
They're so long, they're like, you know, 2,000 words or something, and yes, attention and all that stuff, you know.
00:44:52.960 --> 00:45:04.079
But I read a couple posts, or I read a post the other day that was, I think like 250 words, and it was like there was no preamble, there was no like, hey, I'm this person writing about all this stuff.
00:45:04.159 --> 00:45:08.719
It was just like, here's what I'm thinking, here's why that worked, and here's why it maybe didn't work.
00:45:08.800 --> 00:45:10.159
And then it just ended.
00:45:10.400 --> 00:45:21.280
And it was so refreshing to read an article without having to like take a break from it and like check Twitter or just like, you know, attention go, you know, things going off, or like whatever.
00:45:21.440 --> 00:45:24.320
I was able to just like sit down and read that article start to finish.
00:45:24.400 --> 00:45:26.800
And I left and was like, oh, interesting take.
00:45:27.039 --> 00:45:28.239
And I moved on with my life.
00:45:28.320 --> 00:45:35.280
And I feel like we're moving towards that where it's like a hundred percent human, the articles like that.
00:45:35.440 --> 00:45:39.039
Here's my opinion on something, here's some thoughts about it, end.
00:45:39.440 --> 00:45:46.880
And it's not 2,000 words uh of a preamble that at the end is really just like, oh, and by the way, you should buy my product.
00:45:48.079 --> 00:45:50.480
And I'm curious to see how that works out.
00:45:50.880 --> 00:45:52.159
Yeah, interesting.
00:45:52.400 --> 00:45:56.639
I have a handful of posts like that, probably a good amount of posts like that, actually.
00:45:56.880 --> 00:45:57.199
Yeah.
00:45:57.440 --> 00:46:07.920
Um, but it's okay, so my target is to to for to to write my blog posts and then post them to the Ruby subreddit.
00:46:08.800 --> 00:46:14.639
Um, because that is that is where they can become visible and get traffic.
00:46:14.800 --> 00:46:24.320
And I know that Peter Cooper looks at the Ruby subreddit to get his content for Ruby Weekly, and so that often gives me a boost.
00:46:24.639 --> 00:46:38.719
Um and so when I start to write a blog post, I'm like, okay, what can I write that will be sufficiently relevant to Ruby that I can post to the Ruby subreddit and not get yelled at by the moderators and stuff like that.
00:46:39.039 --> 00:46:39.679
Yeah.
00:46:40.000 --> 00:46:40.159
Yeah.
00:46:40.559 --> 00:46:43.280
And it is it's hard.
00:46:43.599 --> 00:46:50.880
Because most of the most of the thoughts I have are like technology agnostic principles.
00:46:51.360 --> 00:46:51.679
Right.
00:46:52.719 --> 00:47:02.480
And so I I I feel like I almost have to uh do something contrived in order to make it relevant to Ruby or Rails or whatever.
00:47:02.639 --> 00:47:04.400
That's that's part of my friction.
00:47:05.920 --> 00:47:22.400
I think that a lot of that comes also down to what your goal of those content pieces is, and being more explicit with yourself about is this a blog post to raise folks' awareness and become more comfortable with Jason?
00:47:23.039 --> 00:47:33.440
And maybe that leads to trusting him more, and then in the future I will hire him as a consultant or an advisor, or is this like I'm trying to build my audience?
00:47:33.599 --> 00:47:38.559
Or is this I'm trying to sell and become make folks aware of my product?
00:47:38.960 --> 00:47:43.920
And those are very different goals, and I know I struggle with this a lot.
00:47:44.000 --> 00:47:52.000
It's like I have an article and I'm like, okay, I want this to bring in clients, but also make people aware of this product and also trust me.
00:47:52.079 --> 00:47:54.960
And it's like, if I try to do all of those, the article flops.
00:47:55.039 --> 00:48:04.079
But if I try to just like focus on one, or or at least keep my guardrails up, that's like the point of this article is to just build some trust around my name.
00:48:04.320 --> 00:48:12.400
There's no CTAs, there's no like links anywhere, it's
just like here's what I'm thinking, maybe someone will read this and resonate with it.
00:48:12.639 --> 00:48:24.320
Those are the articles that I have the most fun writing, and those are the articles that usually end up doing like the rounds more so than the ones where I have a specific ask in them.
00:48:25.599 --> 00:48:29.519
Yeah, for me it's a hundred percent for Saturn CI.
00:48:30.239 --> 00:48:43.360
Um, and I don't need anything terribly specific out of it, other than people to land on the site and look up at the URL and see SaturnCI.com and maybe be like, oh, what's what's this website?
00:48:43.440 --> 00:48:44.639
What's this thing all about?
00:48:45.199 --> 00:48:46.559
Yeah, that's all I'm shooting for.
00:48:46.639 --> 00:48:48.480
It's a pretty low bar.
00:48:49.039 --> 00:49:06.719
Um yeah, and a big part of it is just attention, spending time and attention on the thing and not letting yourself get distracted by again novelty, just making yourself focus and do the thing.
00:49:07.199 --> 00:49:07.679
Mm-hmm.
00:49:08.239 --> 00:49:08.800
Yeah.
00:49:09.119 --> 00:49:11.119
How uh how is Saturn CI going?
00:49:11.199 --> 00:49:16.800
Like, are you you have you have folks that are using it, folks that are paying for it and stuff?
00:49:16.880 --> 00:49:18.480
Like where where are you in that journey?
00:49:18.800 --> 00:49:20.960
I have a folk who's paying for it.
00:49:21.360 --> 00:49:21.920
Nice.
00:49:22.159 --> 00:49:38.800
Um, yeah, and then another so that is a solo developer, um, and then I have a an actual business um that I used to, I mean, not to not to make it I I don't want to say that this paying customer is not an actual business.
00:49:39.039 --> 00:49:46.800
Um but I have like a bigger, more established, uh older business um getting onboard onboarded onto it also.
00:49:47.039 --> 00:49:49.119
It's a company I used to work for.
00:49:49.519 --> 00:49:55.360
Um and it's also, at least in this particular case, an extremely long sales cycle.
00:49:55.840 --> 00:50:02.320
It's been in the works for I don't know, four or five, six months, something like that at this point.
00:50:02.719 --> 00:50:06.320
And it's kind of a high switching cost and all that stuff.
00:50:06.639 --> 00:50:07.199
Oh yeah.
00:50:07.519 --> 00:50:09.760
So that's that's taking a long time.
00:50:10.000 --> 00:50:23.679
Um, and then in parallel to that, I'm just talking with as many people as I can and trying to get people to to um try it out, and I'm doing demos for people and stuff like that.
00:50:24.239 --> 00:50:31.519
Um so yeah, it's going about as I was gonna say as well as one could hope.
00:50:31.599 --> 00:50:41.280
It's I could hope for a lot more, um, but it's going decent it as decent as I could reasonably expect, maybe is the way to put it.
00:50:42.480 --> 00:50:48.239
Yeah, and you're not relying on that to be your sole source of income to support.
00:50:48.800 --> 00:50:49.599
Absolutely not.
00:50:49.920 --> 00:50:50.239
Yeah.
00:50:50.400 --> 00:50:58.880
So there's like less pressure to to make that sale and then beg someone for money and stuff when you're doing your your your your main revenue stream outside of it.
00:50:59.599 --> 00:51:00.000
Right.
00:51:00.159 --> 00:51:05.840
I've mentioned many times that one of my principles is don't bet more than you can afford to lose, because I've done that before.
00:51:06.079 --> 00:51:14.239
But in this case, there's no time pressure other than the like psychological time pressure that I choose to impose on myself.
00:51:14.639 --> 00:51:15.360
Right, right.
00:51:15.519 --> 00:51:16.719
Yeah, that makes sense.
00:51:17.039 --> 00:51:34.880
I feel like with folks getting less and less or more and more uh disenfranchised with GitHub in general, uh having an alternative for running actions and CI and stuff uh is more and more appealing to people.
00:51:35.360 --> 00:51:42.559
Um it's the switching cost that I imagine is probably the hardest part of all of it for potential customers.
00:51:42.880 --> 00:51:52.000
Yeah, yeah, and there's kind of an aspirationslash intention that I have of gaining sort of a critical mass, at least in the Ruby community.
00:51:52.320 --> 00:51:54.159
Because I feel like you've done that.
00:51:54.400 --> 00:52:03.039
Like in in general, in the Ruby community, say you if if you say to somebody like, hey, who's the hot wire native guy?
00:52:03.199 --> 00:52:05.679
They're gonna be like Joe Masolotti, duh.
00:52:06.320 --> 00:52:07.920
Like a lot of people know that.
00:52:08.159 --> 00:52:11.760
Um, and even if they say, like, hey, who's the Rails testing guy?
00:52:11.840 --> 00:52:13.360
They'll they'll say me.
00:52:13.920 --> 00:52:20.079
Um but what I don't have yet is uh Saturn CI having the recognition like that.
00:52:20.159 --> 00:52:35.440
Like I'm curious, uh, if if I ask you, Joe, um what's the like prominent Rails uh admin panel app that's been like do you do you know which one I'm talking about?
00:52:35.679 --> 00:52:37.840
Yeah, like Avo and Yeah, yeah, exactly.
00:52:38.159 --> 00:52:38.639
Yeah, yeah.
00:52:38.800 --> 00:52:56.559
So Adrian has done a a great job of like getting that critical awareness of Avo in the in the Rails community, and so I feel like that is something really good to aspire to, to have that it it's kind of like a binary thing, like either you have it or you don't, almost.
00:52:57.039 --> 00:53:02.719
You could view it either way, but yeah, I feel like that's something worth having.
00:53:04.559 --> 00:53:05.519
I agree.
00:53:05.760 --> 00:53:12.480
Uh I am cautious about that in general.
00:53:12.800 --> 00:53:15.280
Um, and I'll give you two anecdotes here.
00:53:15.519 --> 00:53:23.119
I am known as the Hotwire Native guy right now, which has been great for my branding and positioning as I'm doing Hotwire Native projects.
00:53:23.440 --> 00:53:31.519
I am starting to level up from that and trying to be like the mobile app guy in the Rails
ecosystem.
00:53:31.840 --> 00:53:39.199
And I'm slowly starting to release, you know, more high-level content, more around mobile apps, less around Hotwire Native specifically.
00:53:39.360 --> 00:53:46.480
Hotwire Native is still a tool that I will reach for, but like if your company wants to do React Native, great, I can do React Native.
00:53:46.559 --> 00:53:50.159
I'm not gonna say no to it just because it's not hotwire native, right?
00:53:50.639 --> 00:53:57.199
And breaking out of that mold, I know will be challenging and is already starting to be challenging.
00:53:58.239 --> 00:54:03.119
What I so that's just like one thing that has been interesting for me.
00:54:03.599 --> 00:54:12.559
What I caution you in is if you're trying to change like Jason Sweat's byline, right?
00:54:12.719 --> 00:54:26.159
Which is essentially, you know, the Rails testing guy to be the Saturn CI guy, you better be confident that Saturn CI is going to be what is bringing you the most revenue and going to be the core of your business.
00:54:26.400 --> 00:54:44.559
Like, if you lose the the test, the Rails testing guy, and you are the Saturn CI guy, but Saturn CI is bringing you in 2K a month, and you no longer are getting consulting gigs or like getting job offers that you want because you're no longer known as the Rails testing guy, that is scary to me.
00:54:44.719 --> 00:54:47.920
Like I feel unc I feel anxious about that for you.
00:54:48.239 --> 00:54:57.360
And it's something it's so it resonates so in like my core because I'm always struggling with consulting versus products.
00:54:57.760 --> 00:55:05.119
And consulting pays the bills, but products are so fun and they energize me and they bring me so much joy.
00:55:05.360 --> 00:55:12.079
And how do I balance like what do I share versus who I am versus how I make money in the world?
00:55:12.320 --> 00:55:17.840
Um so that I I that's a little bit of a ramble, but like, do you do do you get what I'm saying there?
00:55:17.920 --> 00:55:18.960
Am I getting my important thing?
00:55:19.119 --> 00:55:20.000
Absolutely.
00:55:20.800 --> 00:55:21.360
Yeah.
00:55:21.679 --> 00:55:26.960
Well, luckily, you know, you and I haven't talked in a little while, so you might not be aware.
00:55:27.199 --> 00:55:31.519
I I sold my soul and I now have a job at a big company.
00:55:31.679 --> 00:55:38.800
And so I I don't need to worry about consulting anymore or being perceived as the Rails testing guy or anything like that.
00:55:39.280 --> 00:55:49.840
But right now, like that's just right now, and you've had how many years of of building that persona up that is it is like just hand in hand with with your name?
00:55:50.079 --> 00:55:52.880
And you know, jobs are great, but they don't last forever.
00:55:53.039 --> 00:55:54.880
And what if you do want to move back into consulting?
00:55:54.960 --> 00:55:59.599
And now you're like, you're only not only, but like Saturn CI is what you're not.
00:55:59.760 --> 00:56:04.559
You know, it's just like I always look at careers as a very long-term game.
00:56:04.719 --> 00:56:17.199
Uh, like maybe I get a full-time job next year for a little while, maybe I continue to do consulting, maybe I go back to it, but um jobs are easier to change than it is around like your whole persona online, I think.
00:56:17.519 --> 00:56:18.559
Very good point.
00:56:20.000 --> 00:56:36.960
Yeah, and that's another question of like if you have a product, to what degree do you want to attach your name to that and have those two things be kind of synonymous versus like getting the name of the product out there and you don't really worry about whether your name's so connected to it or not?
00:56:37.119 --> 00:56:38.880
I I think it's kind of inevitable.
00:56:39.039 --> 00:57:00.480
Like, yeah, I you know, I'm just guessing, but who knows if Adrian Marin like uh consciously chose to like have his name out there, Adrian Marin, rather than just trying to get Avo out there just because it happens to be Adrian giving the talks at conferences and stuff like that, like naturally we're gonna be like, oh yeah, Adrian.
00:57:00.719 --> 00:57:06.079
Um, so maybe it comes kind of comes with the territory or whether whether that's your intention or not.
00:57:06.320 --> 00:57:06.800
Mm-hmm.
00:57:07.360 --> 00:57:25.280
Yeah, it's a tough one, and it's one of those existential things where it's like when it's tied to your identity, even if you pretend that it's only your work identity, I still feel that identity when I'm not working and when I'm out or like at non-tech meetups, it's like, well, what do you do?
00:57:25.360 --> 00:57:29.039
Well, oh, I'm the hot wire native guy in the Rails community, and they're like, Well, what the hell does that mean?
00:57:29.280 --> 00:57:35.599
It's because I have like that is my identity, even if it is only supposed to be my career identity.
00:57:36.079 --> 00:57:45.920
So I don't know where I don't know like what the point is of that, but it's just it's a it's a it's hard, it's easy to conflate the two, I guess.
00:57:46.320 --> 00:57:54.000
Yeah, yeah, and for me it's it's kind of hard to decide what I want my identity to be.
00:57:54.159 --> 00:57:57.920
I've I've been working on my next book for a long time now.
00:57:58.719 --> 00:58:06.639
I'm I'm now calling it uh software design from first principles, and it's gonna have nothing to do with Ruby or Rails.
00:58:06.880 --> 00:58:09.679
And it's like, where does that fit into everything?
00:58:10.159 --> 00:58:14.880
Uh maybe it doesn't, but maybe I don't get to pick, you know?
00:58:15.440 --> 00:58:22.079
Maybe that that goes out there and if that book, well, if if the book is not successful, then who cares?
00:58:22.159 --> 00:58:24.000
Because it's not gonna change anything.
00:58:24.480 --> 00:58:28.880
But if it takes off, then it's like, oh, now people know me primarily for this book.
00:58:29.039 --> 00:58:31.920
I didn't exactly pick
that, but okay.
00:58:32.800 --> 00:58:39.440
Yeah, letting the the the masses decide who you are versus like setting in stone for yourself.
00:58:39.679 --> 00:58:41.599
I I think it's always a mix of both.
00:58:41.760 --> 00:58:42.320
I really do.
00:58:42.400 --> 00:58:45.360
I don't think you can have it all one way or the other.
00:58:45.519 --> 00:58:48.960
Like I think that you're you want to be the Saturn CI guy.
00:58:49.199 --> 00:58:52.239
Well, the your audience has to uh agree with that.
00:58:52.320 --> 00:58:58.239
Like I'm trying to be the mobile app guy, like maybe I'll always be known as the Hot Wire Native Guy, no matter how much I try.
00:58:58.400 --> 00:59:02.800
It's always gonna be a push and pull of those identity things.
00:59:02.960 --> 00:59:04.960
Like it's it's it's culture, right?
00:59:05.119 --> 00:59:12.800
It's not yeah, you can have it in your byline, but it's really the culture of what people reference you and call you and think about you when they when they when you hear your name.
00:59:13.519 --> 00:59:16.000
Um unfortunately, we're just about out of time.
00:59:16.159 --> 00:59:18.800
I want to make sure to mention one other thing first.
00:59:18.960 --> 00:59:26.639
Um, RubyConf 2026 is happening July uh 14th through 16th.
00:59:26.719 --> 00:59:27.760
I should know these dates.
00:59:27.840 --> 00:59:31.199
I'm the co-chair of the uh RubyConf 2026.
00:59:31.280 --> 00:59:33.760
Uh it's happening in July in Las Vegas.
00:59:34.000 --> 00:59:38.079
Um I don't know if you're thinking about going, Joe, but I I I hope so.
00:59:38.239 --> 00:59:42.480
And by the way, our CFP has just recently opened.
00:59:42.639 --> 00:59:51.840
Um and so, dear listener, if you're interested in uh submitting a proposal, Joe, if you're interested in submitting a proposal, our CFP is open now.
00:59:52.079 --> 00:59:58.320
Um, but in any case, I hope, Joe, that we can hang out at a conference in person sometime soon.
00:59:58.480 --> 01:00:04.559
Um before we go, anything you want to share with people in terms of links and stuff like that?
01:00:05.199 --> 01:00:10.000
Uh yeah, I first off, I I will be submitting a proposal.
01:00:10.400 --> 01:00:12.800
I'm very excited to make it down to Vegas.
01:00:12.880 --> 01:00:17.039
I'm in Portland, Oregon, so it's cool to have another West Coast conference.
01:00:17.440 --> 01:00:29.119
Um and I'll be submitting something in the you know, mobile app, Rails, Ruby space, still kind of figuring out what that's gonna be, um, if it's hotwire native or if it's adjacent or something.
01:00:29.199 --> 01:00:31.920
Um, so I'll definitely be submitting something soon.
01:00:32.239 --> 01:00:37.119
And in terms of links, uh, I have everything on masilotti.com.
01:00:37.280 --> 01:00:43.679
I got my newsletter, my podcast, uh, the hotwire native stuff, my book, all the products we talked about.
01:00:43.760 --> 01:00:46.960
That's all there, and um that's the best place to reach me.
01:00:47.199 --> 01:00:47.760
Excellent.
01:00:47.840 --> 01:00:52.079
Uh well, Joe, we'll put that stuff in the show notes, and thanks so much for coming on the show.
01:00:52.320 --> 01:00:53.599
Yeah, thanks for having me, Jason.
01:00:53.760 --> 01:00:55.440
Good uh fun talk as always.