Email Outreach, GitHub Actions, and a Demo Site

June 15, 2022

Aaron got stranded in Dallas thanks to two cancelled AA flights. We're sending outreach emails and doing a bunch of ancillary product work.

Refine: https://hammerstone.dev/refine/laravel/docs/main
Torchlight: https://torchlight.dev
Aaron: https://twitter.com/aarondfrancis
Colleen: https://twitter.com/leenyburger

Transcript

Aaron
00:00:00 – 00:00:00
Hello, Colleen.
Colleen
00:00:01 – 00:00:02
Hello, Aaron.
Aaron
00:00:02 – 00:00:15
So you know how I was supposed to go to Boston Yeah. On Monday, yesterday? I did not go to Boston. I tried to go to Boston. So I was supposed to go to Boston for this tuple thing.
Aaron
00:00:15 – 00:00:28
Right? And Sunday night, I get to the airport. Well, Sunday afternoon, I get to the airport. My flight's at 3:45. So, you know, I leave the house at, like, 1:30, drive all the way over to the airport.
Aaron
00:00:28 – 00:00:46
It's the one that's far from our house. And I'm at I'm at the airport by, like, 2:15, just hanging out at the gate, and they start delaying it. I'm like, man, it's gonna be a late night. So they push it and push it and push it. 3:45 flight turns into 9:45 PM.
Aaron
00:00:47 – 00:00:50
And then they they just canceled it.
Colleen
00:00:50 – 00:00:51
Oh, man.
Aaron
00:00:51 – 00:01:05
So we waited for 6 hours, not to mention the time we showed up early, but 6 hours from original departure. And then they were like, we can't get the AC to come on on the plane, so we're gonna cancel your flight.
Colleen
00:01:05 – 00:01:06
Oh my goodness.
Aaron
00:01:06 – 00:01:22
Yeah. And so I was like, gotta be freaking kidding me. I'm gonna miss this big meeting. So I, you know, I wait in line forever, talk to a gate agent, and they're like, we've got you booked on a 10:15 tomorrow morning. You'll get there by 2 PM.
Aaron
00:01:22 – 00:01:38
I'm like, okay. That's not ideal, but I'll at least make it before the end of the day. So next morning, Monday, I show up at the airport, you know, 9 o'clock, pull out my computer to start doing some stuff. Right when I do, I get a text message from American that says, your flight's been canceled.
Colleen
00:01:39 – 00:01:39
Wow.
Aaron
00:01:40 – 00:01:49
Not even, like Wow. Not even delayed, not even gate change, just, hey, man. It's over. Ugh. You lose.
Aaron
00:01:50 – 00:02:15
Jeez. So I've never I've never had a flight canceled on me, which I understand is probably rare, but to have 2 Yeah. In a row trying to get to the same place for the same thing. So I I, you know, I wait in line for another 30 minutes knowing that they're unless I get on a plane in, like, literally 45 minutes, I'm not gonna make it in time to be useful. And I talked to a gate agent, and they're like, yeah.
Aaron
00:02:15 – 00:02:26
We've rebooked you through Washington DC. You'll arrive in Boston by 11 PM tonight. It was a one day trip. It was supposed to be a one day trip. So I just said Nope.
Aaron
00:02:26 – 00:02:30
Okay. Cancel the whole trip. I'm I'm going home. Wow. Yeah.
Aaron
00:02:30 – 00:02:43
So meanwhile, I'm, like, messaging Ben on Discord. I'm like, dude, I don't I I don't know what to do. I have I don't know what's happening. You know, I update them every time my flight got delayed the night before, and I was like, hey. It's gonna be a little later.
Aaron
00:02:43 – 00:02:52
I'll I'll keep you posted. And then I'm just at some point, I just gave up. I was like, dude, I don't know what to do. It's like, yeah. This is I wouldn't have expected I wouldn't have expected 2 cancellations.
Aaron
00:02:52 – 00:02:55
So kind of frustrating. Yeah.
Colleen
00:02:55 – 00:02:56
I'm sorry.
Aaron
00:02:56 – 00:03:08
Pretty yeah. Spent a lot of time at the airport. However, American did give me a voucher for $12 that I'm allowed to spend inside the airport, but not at Starbucks. So $12? $12.
Aaron
00:03:08 – 00:03:09
Yeah. Wow.
Colleen
00:03:09 – 00:03:10
So Go crazy.
Aaron
00:03:10 – 00:03:24
American. Never have I wanted more to get on Twitter and complain about customer service than I did last night. And to my, to my great credit, I didn't because nobody wants to see that on Twitter because it's super annoying. So,
Colleen
00:03:25 – 00:03:26
yeah. Wow.
Aaron
00:03:27 – 00:03:29
Yeah. That's that's my frustrating update.
Colleen
00:03:30 – 00:03:33
Yeah. What a bummer. Sorry to hear that.
Aaron
00:03:33 – 00:03:34
Yeah. Thanks. I appreciate that.
Colleen
00:03:34 – 00:03:43
So oh, there's a couple of things I wanna talk to you about. Can we start actually with talking about the emails you sent to people on our list?
Aaron
00:03:44 – 00:04:03
Yeah. We can. So I sent, last Friday, because I think Friday was my deadline, so I sent them on Friday. Got it done. So I pulled everybody out of, whatever it is, reform, and threw them into a sheet and started going down 1 by 1.
Aaron
00:04:03 – 00:04:09
I know I could've done it in Mailchimp, but I wanted to, like, actually send it from my account instead of some, you know, form thing.
Colleen
00:04:10 – 00:04:10
Yeah.
Aaron
00:04:10 – 00:04:26
So I sent them from my account, wrote up basically, like, hey. You signed up. You said you were, you know, view 2 or view 3 in Laravel. Like, just as a reminder, this is what I'm talking about, you know, query builder, yada yada. We're ready to go.
Aaron
00:04:26 – 00:04:48
We're fully ready. Can we hop on a call to see what your use case is and hopefully get you started? I didn't put I didn't put any links in. I didn't put, like, a, like, a booking link or anything because what I want them to do is, you know, email me back and say, yeah. When, you know, when's good, and then I can send them a link or, you know, jump through their hoops or whatever.
Aaron
00:04:49 – 00:05:08
But I think I sent 6 or 7 of them, and I just went in order of, like, when they signed up. So these are the people that signed up first, so, you know, the oldest people. Okay. No responses yet. I figure I'll wait until tomorrow, which is Wednesday, and, you know, send them a follow-up.
Aaron
00:05:08 – 00:05:21
It it was the weekend, so I don't expect too much. So no responses yet. I did get beyond those people. Somebody emailed me directly and was like, hey. I would love to use refine.
Aaron
00:05:21 – 00:05:35
Can can we use it? And so I emailed him back and said, yeah. Let's get on a call. I can walk you through how to do it, and we can get you set up. So I think he sent me that email yesterday, and I responded, and I haven't heard back anything yet.
Aaron
00:05:35 – 00:05:46
So of the ones that I reached out to, no responses. I did get the one inbound, and hopefully I can get on a call with them soon. So progress, I think.
Colleen
00:05:46 – 00:05:49
Yeah. That sounds like progress. Great.
Aaron
00:05:49 – 00:05:58
Felt. I I have to admit, it felt really, really good emotionally to write the words, like, we're ready to go. Do you wanna do this? Let's do this.
Colleen
00:05:58 – 00:05:59
Yeah.
Aaron
00:05:59 – 00:06:15
That that felt good. Yeah. So I think that's a good, like, that's a good win for us. You know, it'll be a bigger win when we start, like, closing sales, but just to be over the starting line feels pretty great.
Colleen
00:06:16 – 00:06:24
Yeah. Absolutely. So what's your thought on those personalized emails versus the whole list email? Because we haven't emailed them yet.
Aaron
00:06:26 – 00:06:31
You mean what's the thought on doing it 1 by 1 rather than sending that same email to everyone?
Colleen
00:06:31 – 00:06:32
Yeah.
Aaron
00:06:34 – 00:06:43
No super intelligent thoughts except that if we email that to 400 people, I might get a lot a lot of
Colleen
00:06:44 – 00:06:47
calls scheduled. Right. We're trying to we're trying to drip them in. Yeah. That's right.
Aaron
00:06:47 – 00:06:49
Yeah. I just I just wanna land 1.
Colleen
00:06:49 – 00:06:53
Yeah. Let's let's drip them in for now. It's early. That makes sense. Okay.
Aaron
00:06:53 – 00:07:03
Yeah. I wanna land 1. I want to, have a call with 1 and hopefully onboard 1 and then, like, just keep that going 1 by 1.
Colleen
00:07:03 – 00:07:05
So I like that.
Aaron
00:07:05 – 00:07:21
This week, I'll send you know, regardless of who responds, I'll send maybe 5 or 10 more. Yeah. So, you know, in theory, we're dripping the calls in. But if nobody responds, I'm just gonna I'm just gonna keep sending. Just gonna burn through the list eventually.
Aaron
00:07:21 – 00:07:22
But, yeah, that's the thought.
Colleen
00:07:22 – 00:07:26
Great. Yeah. That makes total sense. Good. That sounds good.
Aaron
00:07:26 – 00:07:33
What about, while we're on the topic, DM ing Rails people or emailing Rails people?
Colleen
00:07:33 – 00:07:42
Yeah. So I the 2 people who have already paid, working on setting up start dates with them. And then I sent 1 to
Aaron
00:07:42 – 00:07:45
Working on? Like, you've told them we're ready to go?
Colleen
00:07:45 – 00:07:53
Yes. Yes. Correct. Customer 1 is doing 6 week cycles. So he wants end of July, which makes sense.
Aaron
00:07:54 – 00:07:55
Shape up of them.
Colleen
00:07:57 – 00:08:06
In customer 2, I'm waiting to hear back from. I sent one cold one warm email cold email, warm ish, Someone who verbally expressed interest?
Aaron
00:08:07 – 00:08:07
That's warm.
Colleen
00:08:07 – 00:08:21
Warm. One warm email. Didn't hear back, which I'm a little confused about, but I will follow-up with him. One warm DM, where's they're considering. Got one inbound that I'm talking to right now, trying to set up a call.
Colleen
00:08:22 – 00:08:25
And I think that's it for this week, the people that I contacted. So
Aaron
00:08:25 – 00:08:26
That's pretty good.
Colleen
00:08:26 – 00:08:28
Yeah. It it was pretty good.
Aaron
00:08:28 – 00:08:48
I think, one thing we're gonna have to internalize as we do this is follow-up or die. Like, we're gonna have to not think, oh, they they didn't email me back. They probably don't want it. We're just gonna have to keep especially, these people signed for the ones I sent. These people signed up to hear about the thing.
Aaron
00:08:48 – 00:09:00
Right. So I shouldn't feel bad emailing them about the thing they signed up for. So that's something we'll have to internalize, like, just keep pushing until they say yes or
Colleen
00:09:00 – 00:09:14
no. I agree. I think that that and and, you know, contacting people both on email and Twitter and all the ways we get in touch with people, just keeping track of that. And, when we followed up with them, etcetera, etcetera, is really important.
Aaron
00:09:14 – 00:09:26
Yeah. Yep. For sure. And if you wanna start pulling people off of the, the early access lists, I have a spreadsheet where I'm keeping track of who I've emailed and when. When.
Aaron
00:09:26 – 00:09:31
Okay. And I'm, of course, skipping all the rails people. So if you wanna hop in there, you can use that as well.
Colleen
00:09:31 – 00:09:41
Okay. I feel like actually, I had 2 inbound, actually, now that I recall correctly. Yeah. That's that's good. I think that that's that's the move.
Colleen
00:09:41 – 00:09:41
Yeah.
Aaron
00:09:41 – 00:09:44
Where are the inbounds coming? Is it Twitter?
Colleen
00:09:44 – 00:09:45
Twitter.
Aaron
00:09:45 – 00:09:49
And it's just random, hey, I've been following or what?
Colleen
00:09:49 – 00:10:11
I mean, more details than that. A couple people like this is this is some people are just interested, generically interested. And so I don't necessarily have time right now for everyone who's just kind of vaguely interested. But, some people are are you know, if they're if you're actually interested in purchasing it, then absolutely. Like, those are the people I'm trying to schedule calls with.
Aaron
00:10:11 – 00:10:12
Mhmm. Great.
Colleen
00:10:12 – 00:10:26
Yeah. Twitter so far. So I think I mean, I think the move is to keep especially as we build out, like, some of the stuff for the rail side, like, just keep tweeting about it and and all of that. So that that seems to be good for garnering interest.
Aaron
00:10:26 – 00:10:47
Yep. For sure. And for this week so are you at the point where you're ready to send out emails to the early access list? Because last week, I think we talked about you're gonna reach out to the 2 people, which you did, and try to get start dates with them. Are you at the same spot I'm at where you can start sending emails to people who signed up?
Colleen
00:10:47 – 00:10:58
I don't think so. Here's the deal. So this is Tuesday. I'm out the second half of this week and all next week for vacation. I come back, and that's the 1st week of July.
Colleen
00:10:59 – 00:11:24
Or last week of June, 1st week of July, something like that. And so I'm gonna onboard our first customer that week. And, I mean, I don't really feel like we're done to the point that you're done, just because I think we are going to find it was interesting when we were on, remote Ruby on Friday. They were really interested in how does this integrate in my app. And that's what I wanna know as a developer too.
Colleen
00:11:25 – 00:11:28
And I still feel like on the rails hot wire side, like
Aaron
00:11:28 – 00:11:29
Mhmm.
Colleen
00:11:29 – 00:11:31
There's room for clarity.
Aaron
00:11:32 – 00:11:32
Mhmm.
Colleen
00:11:32 – 00:12:08
And so I think working through that with our first customer is gonna be really instructive, because I've been working through it with peoples who know how it works. So I think I'm really curious to see honestly, what I was thinking, Aaron, was I'm gonna see how it goes with him, And then maybe take a trusted Rails friend, and see how it goes with them. So I can get really good feedback on how to tighten that integration loop. Because right now right now the integration, right, we we have the stable ID and we emit events. So theoretically, like, you emit unstable.
Colleen
00:12:09 – 00:12:17
They can't submit the form. You emit stable. They can submit the form. But I've noticed with our client, there's a lot of confusion around the buttons. Yeah.
Colleen
00:12:17 – 00:12:28
So we we purposely don't include a button, So
Aaron
00:12:28 – 00:12:29
Right.
Colleen
00:12:29 – 00:13:01
When they have an apply or update or whatever button, there seems to have been some confusion about how to consume the stable ID, how to rehydrate the filter from the stable ID, and how to disable and enable the apply button or create button or whatever you want. And so I think the answer there is we might want to ship another stimulus controller with it that is an optional button. Like, that's kind of what I'm leaning towards. Yeah. And there's another thing you can do in the rail side where you can we have a turbo frame for, like, stored filters.
Colleen
00:13:02 – 00:13:24
So we have one for stored filters and one, like, database stabilized stored filters, and one that doesn't include that. And right now, you can use either or. And so if they don't want stored filters, they integrate 1 turbo frame. If they do, they integrate a different turbo frame. And then, of course, they have to set up the stored filter model in their database.
Colleen
00:13:24 – 00:13:35
So I just I feel like there's none of this is hard, but it's also, like, not a single drop in React component either. Right? It's there's a little bit of integration work. Yeah.
Aaron
00:13:35 – 00:13:36
Which is a
Colleen
00:13:36 – 00:13:43
So there's some integration work, and so I really wanna work through that with some other devs to see how people feel about it.
Aaron
00:13:43 – 00:14:18
Yeah. I'm on board with that. I think, part of our thesis is batteries included. And so, like and I think our main thesis is we can spend more time thinking about this stuff than you could afford to spend, because this is our whole business, and it's just a part of yours. I will say, I think it's gonna take a while to get, someone else on the books, and so I don't think it would be a bad idea to start reaching out to the list soon.
Aaron
00:14:19 – 00:14:36
Like, even though you're gonna be you know, you're scheduled in, whatever, July with client number 1. If you started reaching out now to other people, it's possible you wouldn't even schedule with them until after client number 1. You know what I mean?
Colleen
00:14:36 – 00:14:36
Yeah.
Aaron
00:14:36 – 00:15:00
So trying to overlap trying to overlap dead time, I think, can help here, especially as we're pushing up against, you know, August. So consider or rather, what do you think about sending out a couple of emails either this week or next week knowing full well, you're not going to schedule them until after client number 1. How does that feel?
Colleen
00:15:00 – 00:15:04
Yeah, I'm open to that. I think that's that's reasonable. That's a reasonable timeline.
Aaron
00:15:05 – 00:15:07
Okay. Do you wanna commit to that?
Colleen
00:15:07 – 00:15:13
Well, no. Because I'm off Thursday, Friday, and all of next week. So what's today? Tuesday?
Aaron
00:15:14 – 00:15:14
Tuesday.
Colleen
00:15:15 – 00:15:19
Okay. Yeah. Okay. I will commit to that. Can you share that spreadsheet with me?
Colleen
00:15:19 – 00:15:20
Like, just Google
Aaron
00:15:20 – 00:15:21
I can.
Colleen
00:15:21 – 00:15:26
And Uh-huh. Yeah. I'm happy to do that and try to get those people scheduled before I leave.
Aaron
00:15:27 – 00:15:35
Yeah. Just so we're clear. I don't think you need to get them scheduled before you leave. I think we just need to send the email and honestly, I bet nobody responds. And so,
Colleen
00:15:35 – 00:15:36
like, So that's done.
Aaron
00:15:37 – 00:15:38
You gotta follow-up.
Colleen
00:15:38 – 00:15:38
Follow-up.
Aaron
00:15:39 – 00:15:50
Yeah. And that's what I mean. Like, if we waited to send the email until you're done with client number 1, we're gonna have, like, 4 weeks, 6 weeks of dead time. Yep. So we might as well try to stack those.
Aaron
00:15:50 – 00:15:55
Yeah. Yeah. I'll share this with you. Remind me when we get off, I'll share this spreadsheet with you.
Colleen
00:15:55 – 00:16:01
Okay. I also think we seriously need to think about how we're gonna do a demo site. People need to be able to play with this.
Aaron
00:16:01 – 00:16:13
Like I agree. That's that's big time on my mind. And I think that's gonna be a great opportunity for me to also do, like, livestream stuff.
Colleen
00:16:13 – 00:16:14
Okay. Cool.
Aaron
00:16:14 – 00:16:19
Like, hey, I'm gonna set up a demo site for refine. I'm also gonna stream while I do it.
Colleen
00:16:19 – 00:16:19
While I
Aaron
00:16:19 – 00:16:32
do it. You can see me play around with it. And the good news is, it can all be open source because the paid package will come from the package provider. It won't be in the GitHub source code.
Colleen
00:16:32 – 00:16:35
Can't you just bundle open it? No. Okay.
Aaron
00:16:36 – 00:16:45
No. Yeah. Because it won't because it won't be on GitHub. People would have to open the repo and then install it, which would ask them for credentials. So.
Colleen
00:16:45 – 00:16:46
Gotcha. Gotcha. Okay.
Aaron
00:16:46 – 00:16:55
Yeah. So they can see all the, they can see all the connectivity and all the glue they would put refine into your app. If they wanted to go, you know, check it out.
Colleen
00:16:55 – 00:16:58
Yeah. So here's what I wanna talk to you about this.
Aaron
00:16:58 – 00:16:59
Okay.
Colleen
00:16:59 – 00:17:18
2 things that keep coming up and you and I have discussed both of these things. 1 is the demo site. 2 is an open source open sourcing part of it. It is my opinion that the demo site is like higher priority so people can get their hands on it and play with it. And then we don't have to sort out if we wanna do a part of it open source yet.
Aaron
00:17:19 – 00:17:48
Yeah. I agree with that. And I and I think the the open source part of it, we already we already put to bed a a few episodes ago instead, like, not even a discussion. What I when I say it could be open source, I mean, the demo site could be open source without exposing the proprietary stuff. But, yeah, I think, honestly, I think maybe the next most important thing for me to do beyond continuing to send emails, The next most important thing for me to do is to get a demo site up.
Aaron
00:17:48 – 00:17:52
And I think that's I think that's totally, totally viable.
Colleen
00:17:52 – 00:17:57
Okay. Yeah. I think that would be that would be great. That would be really that'll be really value added.
Aaron
00:17:57 – 00:18:26
Yeah. And, you know, if I play it right, it could be a lot of, like, sessions of live streaming. Because I could, like, do the basic stuff and get it get it up there, and then continue to live stream interesting stuff. Like, here's how you save a filter, here's how you would use a filter to drive an email campaign. Like, all of that kind of fun stuff would be good for streaming and good for demo purposes, so I could get it to serve double duty.
Colleen
00:18:26 – 00:18:27
Awesome. Love it.
Aaron
00:18:28 – 00:18:43
But then that means, of course, you would have to maybe do a rails side I if if we think the source is important. Right? Because if the source is not important, the demo is the same. It doesn't matter. It's doesn't matter what's driving it because we offer it in both.
Aaron
00:18:43 – 00:18:43
Yeah.
Colleen
00:18:43 – 00:19:01
I mean, my guess is yes. That the thing I feel like as we talk to more developer or at least as we've talked to more developers about this, they want to know how it works, how they integrate it. They like the, you know, they like the inheriting from a filter class. So I Yeah. People like that.
Colleen
00:19:01 – 00:19:02
Like, it feels great.
Aaron
00:19:02 – 00:19:10
When we were on remote Ruby, they were like, how do you integrate it? And you were like, oh, you know, it's a private channel, blah, blah, blah. And I was like, we give you a class and you extend it.
Colleen
00:19:10 – 00:19:12
And they're like, oh, that makes sense.
Aaron
00:19:12 – 00:19:12
Yeah.
Colleen
00:19:12 – 00:19:18
Yeah. That was a moment. I was like, oh, right. Like, we're talking to developers. Like, we can talk to developers.
Colleen
00:19:18 – 00:19:18
So They
Aaron
00:19:18 – 00:19:24
literally wanna know what do I do in my IDE with your thing. Yeah.
Colleen
00:19:24 – 00:19:34
So yeah. I think it will be I think that will be something I will wanna do too. I think the demo side up first is great, but I do think I'll do that in Rails as well.
Aaron
00:19:34 – 00:19:35
Yeah. Cool. Okay.
Colleen
00:19:36 – 00:19:40
So, I also wanted to ask you about GitHub actions. Tell me
Aaron
00:19:40 – 00:19:41
GitHub actions.
Colleen
00:19:41 – 00:19:43
About this awesome thing you did.
Aaron
00:19:43 – 00:20:00
The only way to debug GitHub actions is to just push a bunch of stuff to the repo over and over and over. I'm sure that's not technically true, but, boy, is that that the way that I do it. So Neil is using the front end. Right? He's got brand new front end.
Aaron
00:20:00 – 00:20:20
It's working. Glory, hallelujah. Here's the issue, though. I've been publishing a dev, like, alias NPM package from my local machine. So he'll like, if he tells me something wonky that he found, I'll fix it, and I'll just publish a new, like, Vue 2 dash dev.
Aaron
00:20:20 – 00:20:23
Right? And he installs Vue 2 dash dev.
Colleen
00:20:23 – 00:20:23
Right.
Aaron
00:20:23 – 00:20:50
Not ideal, but he and I are working together, and so it works fine. For like, to to publish these NPM packages for real, I don't wanna be doing it from my local machine because I don't wanna accidentally run the wrong command and publish a broken package that somebody auto installs on Deploy, and then we break somebody's site. Right? That seems like bad etiquette. So what I want to do is publish it from GitHub based on a GitHub release.
Aaron
00:20:50 – 00:20:56
Like, I wanna go to GitHub to create new release, view 2.0.1, whatever.
Colleen
00:20:56 – 00:20:56
Okay.
Aaron
00:20:57 – 00:21:32
So this weekend, I spent a bunch of time getting it set up so that we can do that exact thing. And part of the trick is we've got 3 packages inside this one repository. Right? So we're running this mono repo setup, where inside of the repo we've got Vue 2, Vue 3, React, and an internal core package where we share some stuff. And first of all, NPM, JavaScript bundling, everything is a dark art, which I super hate, and it's very complicated.
Aaron
00:21:33 – 00:21:49
And then beyond that, you add in the extra mono repo thing. So, like, we don't need to publish React every time we publish Vue. Like, that would just create a bunch of churn. When we fix something in Vue, we're publishing this no op in React, and people are like, why is the version bumped? Nothing actually changed.
Aaron
00:21:49 – 00:22:35
That seems dumb. So I got it set up where we can tag we tag the repo, because you can only tag a repo, you can't like tag a folder. You tag the repo as view slash 0.2.1 or whatever, and this GitHub action will take that tag. Notice that it's a view only tag, so it ignores React, And then it goes in and it sets the package dot JSON to the version that we put in the tag, because that's another thing. We wanna make sure that, like, when you call publish, the package dot JSON version matches your GitHub release version, so people can go to GitHub and look at the code and be like, well, I'm running this version, I need to inspect the code.
Aaron
00:22:35 – 00:22:59
Right? So the action will set the package JSON version, does all the bundling, publishes to npm, switches over to Vue 3, does it all again. And if you wanted to publish React, you just create a React tag. So you would do react slash 0.1.5 or whatever, and it would publish React to NPM. And so now anyone can tag a version, anyone.
Aaron
00:22:59 – 00:23:28
You you or I can tag a version, it's not dependent on our local machine publishing or anything like that, And NPM and GitHub's versioning is always gonna be in sync, which is really frustrating when it's not, because you wanna go look at the source code for a certain version, and it's just, like, not there. So after very, very much trial and error, we're now set to like cut releases and it takes no thought whatsoever on our part. And the whole thing is automated.
Colleen
00:23:29 – 00:23:30
That's amazing.
Aaron
00:23:30 – 00:23:47
Yeah. It was a freaking nightmare. But Yeah. You know, my thought process is, like, we're gonna be doing this a lot as we fix find, and fix bugs. I don't want to try to remember every time, you know, 4 or 5 or 6 different steps to do it, and I don't want it to be dependent on my local machine.
Aaron
00:23:48 – 00:24:07
And also, I really, really don't want to fat finger something and publish the wrong version and dork up everybody's site. And so Yeah. It's one of those things where it's like, good lord. Am I gonna spend 6 hours doing this? But then every time in the future, it's now like a one minute process.
Aaron
00:24:07 – 00:24:08
So it works.
Colleen
00:24:09 – 00:24:09
That's awesome.
Aaron
00:24:10 – 00:24:10
Yeah.
Colleen
00:24:11 – 00:24:28
Okay. I have to think about you'll have to show me how to do that on the Rails side. Because right now what happens is I upgrade the gem, then I I publish the gem to Gemfury, then I have to publish the NPM package still from my local machine to NPM, and I have to remember, like,
Aaron
00:24:29 – 00:24:30
to do them
Colleen
00:24:30 – 00:24:35
and, like, when to upgrade them and which one's which, and it is not it's not a good process. So Yeah.
Aaron
00:24:35 – 00:24:45
Everything you just said is bad and makes me feel nervous. Nervous. Yeah. Does the NPM package on your side live inside the same repo as the gym?
Colleen
00:24:45 – 00:24:45
It does.
Aaron
00:24:46 – 00:24:56
Alright. Yeah. Here's what we're gonna do. We're gonna set you up the same way, to where you cut a release on GitHub. It will push the gem to unlock.
Aaron
00:24:56 – 00:24:58
We need to switch to security to
Colleen
00:24:58 – 00:24:59
unlock. Yep.
Aaron
00:24:59 – 00:25:07
So it'll push the gem to unlock and simultaneously push the NPM package or the JavaScript package to NPM.
Colleen
00:25:08 – 00:25:08
Yes.
Aaron
00:25:08 – 00:25:12
All based on cutting a release on GitHub and a GitHub action.
Colleen
00:25:12 – 00:25:14
Yes. That's what we need to do.
Aaron
00:25:14 – 00:25:22
That that's what we'll do, because we just can't have that kind of administration overhead every time. That's not working.
Colleen
00:25:22 – 00:25:22
Oh, no.
Aaron
00:25:22 – 00:25:23
That's just not working.
Colleen
00:25:23 – 00:25:35
It only works because we only have one client on it right now. But, like, it's Yeah. It's even taught you know, I was talking to our contractor about it, and I was, like, writing down the steps for him. And I was, like, this is ridiculous. Like, this is not gonna work.
Colleen
00:25:35 – 00:25:36
Cool. Alright. Good.
Aaron
00:25:36 – 00:25:49
Yeah. Whenever whenever you're ready to talk more about that, let's do some pairing on that because my pain can pave the way. Sounds good. Yeah. That that'll be a good time to switch to unlock as well.
Aaron
00:25:49 – 00:25:56
Yeah. Because then all of our licensing payment and distribution is all in, unlock, which will, which will be good.
Colleen
00:25:56 – 00:25:58
Yeah. Definitely want
Aaron
00:25:58 – 00:25:59
that. Cool. What else?
Colleen
00:25:59 – 00:26:00
That's all I got.
Aaron
00:26:00 – 00:26:02
That's all I got too. All right. Talk to you later.
Me

Thanks for reading! My name is Aaron and I write, make videos , and generally try really hard .

If you ever have any questions or want to chat, I'm always on Twitter.

You can find me on YouTube on my personal channel or the Try Hard Studios channel.

If you love podcasts, I got you covered. You can listen to me on Mostly Technical .