Role Reversal & Summer Catchup
Show Notes
- CJ update
- Tahoe Time / Family Time
- E-Bike with Dad
- Boat / Plane flight simulator
- Colin update
- Spending time on the coworking space
- Summer camping
- Role reversals and announcement
- We have new jobs!
- Context switching
- Colin: product & engineering → developer relations
- CJ: developer relations → product & engineering
- Fewer guard rails, much less narrow focus, wearing more hats, more autonomy, freedom and responsibility
- CJ is now at Craftwerk
- NextJS
- T3 stack
- MySQL with Planetscale
- Drizzle ORM
- Zod schema validation
- Back office/Admin CRUD app in Rails
- Colin is now at Discord
- Currently onboarding and learning
- Building a Google Calendar app to get fully up to speed on all the areas of the developer experience
- Other happenings: RailsWorld is happening later this year in Amsterdam
- Tickets sold out in 45 minutes
- Speakers announced this week
- Must download calendar app for MacOS folks: Fantastical
Full Transcripts
Colin: Welcome to Build and Learn. My name is Colin.
CJ: And I'm CJ and I hope you all enjoyed that little summer break that we just took. I know that I definitely needed it and got a lot of traveling in. Colin, tell us what you did over, over this several weeks where we weren't recording.
Colin: I think it was just good to take a step back from the show and, and not worry about where each of us were how our schedules would line up. And I got a little bit of summer camping in. I. Had a birthday recently, so we tried to organize that. It's, it's pretty difficult to get like lots of adults to all show up to the same place at the same time these days 'cause everyone's got their own things going on. But we were able to get some people to come out to the lake. And so just trying to schedule as many of those, whether it's like weekends or long weekends where I can find them. It doesn't necessarily have to be camping, but trying to get away from the computer as much as I can while the weather is awesome outside. How about you?
CJ: Similar. Yeah. We had I think it was maybe like two-ish weeks in Kings Beach in North Lake Tahoe, and then we had two-ish weeks in Reno. And similarly we had, there was like a couple events where some of our adult friends got together, but it was mostly just like different groups of family coming in and out and lots of different trying to build those core memories for the kids and have experiences and go on hikes and beach days and. We had some really cool, fun, fun things. My my aunt and uncle took us out on the, on their boat on the lake, and so we got like a nice boat day. It was kinda like breaking in the boat and the water at that time, this was early June, the water was still like, you know, low sixties, so it was frigid and you didn't actually want to get in and you're wearing, I guess, sweatshirt on the boat, but it was still tons of fun. And then
Colin: A sweatshirt in the water too.
CJ: Yeah, I did jump in. I was like, I can't go you know, out on the lake and not go in the water. Like I don't know. So that was fun. And then my uncle has a plane and they he has to like redo these. Sort of like certificate points or something, or like certain training that you have to do every six months. I think you have to do a certain amount of training under different conditions basically to make sure that you're staying fresh with like your instrument ratings. And so usually you do that with a flight simulator and there is one at the Truckee Airport. And so Logan My son Logan, who's like super into airplanes right now, was it was kinda like a surprise for him. Like, let's go check out the flight simulator and like, practice flying or whatever. And so he got to like do takeoff and landing and fly around in the flight simulator. So that was like a really, really fun highlight of, of the trip. And then yeah, my dad, I, I don't know, like if you see these around town or like what your opinion is of e-bikes, but like New Hampshire, I wasn't seeing them like anywhere. We get to North Lake Tahoe in Reno and there's just people ripping all over the place on these e-bikes. And so my dad has just been, he's been commuting. He has like one of those like super beefy whatever, e-bikes, and he commutes back and forth I don't know, 15, 20 miles. And so I got to like, Try out a bunch of e-bikes, but do you have, do you have an e-bike? Like are you part of this e-bike gang? You are. Oh, man. Okay.
Colin: Yeah, I have a, I have a wing bike, which is, it's kind of, looks more like a city bike, but it's, it's electric. And then actually just got my girlfriend one too, 'cause she likes the idea of going. Out on the bikes, but she usually likes to, once we hit some hills or we go like a longer distance than like somewhere I want to go. It's nice to have the motor. But yeah, I mean I see like you can hear that little worrying noise and you turn and look and someone's just like bombing down the hill, which I love to see that over more cars. We've been having a lot of Like car traffic accident issues outside of the coworking space lately. We're trying to get the road and like intersection redone by the city, but we're doing that whole navigation of like, who do you talk to at the city to, to get this changed? Because this is just like, You know, we have to find enough data to prove that there's like an inordinate amount, number of accidents that are happening there, and that it's a pedestrian safety problem. But you know, more bikes, even the e-bikes. I mean, I think the e-bikes get a little bit of a bad rap when they're e mountain bikes. On trails because you've got hikers and other cyclists, and then you have some e-bike come through and just, you know, running into people. Usually with mountain bikes, it's, it can be based on your heart rate, which is kind of cool. So like, when you're going up a hill, if your heart rate goes over a certain threshold, it'll kick in the assist and then it'll bring it back down. Well, as your heart rate goes back down, which is pretty cool.
CJ: That is awesome. I had no idea. I thought it was just kind of like the ones that I've ridden. It's either like thumb throttle, like, okay, if you want more cyst, you just thumb the throttle or like the harder you're pedaling the faster it'll like assist you. Then I, the one my mom has is like, there's like three settings and they're hilarious. They're like snail turtle and they're like super turbo boost or something like
Colin: The rabbit.
CJ: Yeah, exactly. I'm like, whoa. We're going super turbo mode right now. And it's just, you know, this like old school kind of beach cruiser that happens to have like electric assist on it. And then, yeah, I got to, so I went to Charlotte for my first sort of time in person at HQ to see the team and one of my coworkers there Omar, he has the super 73 bikes, which are like, it's, they're so sweet. It's basically a motorcycle, like it is, like you can unlock it or you can do like something on your phone that basically changes it from like a class two to a class three. Bike or something, and you have to say like, yes, I'm not, I'm on private roads and this is, you know, I'm, you know, being safe or whatever. And then it I think it goes up to like 50 miles an hour or something just ridiculous. Which it definitely
Colin: much battery as you have at least, right? It's like how long can you do that for?
CJ: Yes, yes. So anyways, it's, it was like a, it was a super fun start to the summer, just like getting into all that. But where did you go camping?
Colin: Yeah, we just went to the, for like the National Forest above Reno. Trying to find, I mean, right now, I don't know if you've seen this or anyone listening has seen this, but like, And it hasn't slowed down. Once Covid happened, everyone kind of went outside, like everyone bought RVs and tents and camping stuff, and everyone, you know, we couldn't go on regular vacations and stuff, so people went to Airbnbs and they went camping and it hasn't stopped. Like every campground is still just. out. And so I found this one, it's like two hours away, which I think is like just outside of most people's, like willingness to drive for camping. And so there was like nobody there, like we could pick whichever campsite we wanted. We could, you know, re-up, we were supposed to go this weekend, but then I realized it's just like two back to back weekends was gonna be a lot. But you know, we've talked about it on the show as much time as we spend sitting in front of these little screens. I'm just trying to like, make a conscious effort to when I go home, not then sit in front of, you know, more gaming and more screen time. Even if I want to. It's like, okay, you get to do that maybe later after you go ride on the E-bikes or go run a run or do something like that. And actually back to your flight sim thing, there's the, I'll have to share some videos, but there's this YouTube couple who has a helicopter and I'm like so obsessed with it and. I started looking into it and they actually did some rundown videos on like what it costs to own a helicopter. And it is pretty insane to the point where I was like, maybe I can just find like a really sweet, like PC with Microsoft Flight simulator and like get some of the flight SIM stuff and just like, 'cause I, I like the idea of it. I don't know if I would enjoy owning my own or having like a. I think a lot of people with airplanes and, you know, things like this, they have like a co-op of people that they own it with so that you share the costs and the hanger time and all that. I, or I'll just keep watching them on YouTube. I'm not sure, but
CJ: Yeah, I think it.
Colin: sim is the answer there.
CJ: Yeah, I have a, a couple friends who do the flight sim thing, and some of them have just like the full on setup where you're in the chair and you've got the yolk and you have the pedals and you have like the whole thing at their house, which it seems like super intense.
Colin: Way cheaper than a helicopter though.
CJ: yes, yes, way cheaper than an actual helicopter. But the other thing I was looking at, like entry level Cessna airplanes. That are surprisingly affordable. Like I just imagine this was something that was, you know, completely impossible and way out of a price range that would ever be, you know, something that a normal family like ours could afford. And, well, I mean, whatever. We're, we're very privileged and we, when I saw the numbers that were less than 100 k to get into, like, you know, something. I was like, what this is, that's how much it costs to like buy it and then obviously there's like a bunch of fees after that, like hangar and like fuel and maintenance and Yeah, exactly. Like you have to get it checked out all the time 'cause you don't want any issues to ever happen. So obviously like the maintenance is way higher, but yeah, I never looked into helicopters though, like that sounds way more expensive. Just 'cause it's so much more specialized.
Colin: I think it's, it's more expensive and more dangerous is the other thing. Like doing the sim is obviously not dangerous and I would imagine that this is where like VR was supposed to be supposed to shine, right? Like Flight Sims having be able to like replicate. A full cockpit without having to buy all the stuff. Seems like a cool thing, but then you still want to have like the actual physical controls and stuff. So we'll see. It's still just like a fascination. I don't know if I'll, I'll go down the flight sim rabbit hole or not, but we'll see. I'll keep everyone posted on the helicopter.
CJ: Sweet. Yeah, my so The kids were gifted a gaming pc. They're like Master Manifesters. I don't know how they do this, but they're like, we wanna switch. We wanna switch. They were like super hyper-focused on getting a Nintendo switch. Nicole and I were like, you're not getting a switch until you, you know, earn enough money from businesses that you create to generate. And they were like, we're going a different way. And they just like, were gifted a switch. And then same thing with this gaming pc. Like they were researching all these different tools and components and whatever, and we get to Reno and My cousin's boyfriend is like, Hey, I have this gaming PC just like laying around. Do you want it? And we're like, what the heck? And so it has like, you know, super legit components and everything. It's got 30, 80 t i and like all of this like really cool, fancy l e d, like, you know, 64 gigs of ram, like all this stuff. And so we wanna do flight sim on that, but yeah, I think the lesson is like, yeah, totally, totally. So,
Colin: I don't even know. I haven't caught up. Like I've been a Mac person for a while. I used, I got my start in PCs, used to build my own, knew all the components. I have no idea what anything is these days, like video card names. And I know NVIDIA's doing quite well right now with AI stuff, but like, Everyone's just like, just throw a bunch of numbers and letters out, and I assume it's a video card of some kind these days, but I mean, some of those like fit in a briefcase these days. They're like, you
CJ: Yes,
Colin: like at least a foot wide.
CJ: I know. Well, they're like, oh, you need a SAG bar? And it's like, oh, you need a SAG bar, because your, your graphics card is like bigger than anything inside of your case, like, yeah.
Colin: And then you gotta have enough power and yeah. Good, good. Space heater for the office when it's running in the winter, but, so it sounds like we've got up to a bunch of stuff. I think the other big news is that both of us in the time, right before our little summer break We have new jobs. New jobs, and in a really funny twist, we both have kind of like switched roles. So
CJ: freaky Friday.
Colin: CJ's now doing my job and, you know, we're not, we didn't take each other's jobs, but so I moved from. more like product and engineering role and a startup to working in developer relations. So now I am working at Discord helping out on kind of the apps and bots sides of the house. So anyone who's building stuff on top of Discord. So starting to work with the team there to build out our developer relations arm.
CJ: Awesome, awesome. Yeah. I am now doing product and engineering work at a company called Craft Work, very small startup. So yeah, that's like another freaky Friday thing where like Colin went from small startup to big company and I went from big company to small startup. And so yeah, I was like the first engineering hire other than the C T O and we're building out. A bunch of back office tools and products for home services companies. So it is very different. We are both just like yeah, completely in new, new ponds, which is, which is cool.
Colin: Yeah, I already find myself wanting Kraft work in Reno. So do you wanna tell everyone what Kraftwerk does?
CJ: Yeah, so craft work, right now we are doing interior, exterior, and cabinetry painting. We're bringing a lot of technology to solve home services. Like if you. Right now, if you own a home or you're trying to get some work done on your house, you know how painful it is to try to find someone to come out. And oftentimes they're gonna come out and give you a quote, and then maybe you hear back from them a few days later with the actual quote after they come to your house. And then just the, the whole process is pretty arduous. A lot of it happens over text message and paper and checks. And so we're trying to bring that into, The modern day with amazing automations and tools and being able to request an estimate. Based on just photos of your house. And so we've got some really interesting stuff in the works there, but also just kind of having having an experience that you would expect in the modern, you know, with all the things, the conveniences of the modern society that we have with DoorDash and Uber and Airbnb where you can just kind of book stuff online and then have you know, a trusted person, show up to your house, do the work in a high quality way, and then You're, you're off to the races. So that's the goal. We are growing wicked fast. See that Wicked? That's like New England creeping into my, creeping into my, into my vocab there. We're growing wicked fast. We got into Y Combinator, which is pretty interesting. As a home services company, we are not like, you know, a SaaS product and we're not some sort of like AI tool or payments platform. So it was kind of interesting. That we, yeah. So that, that, but that's been a, a, a really awesome sort of experience is we're able to network with other companies and kind of figure out how we can work together with the other folks that are in the batch. And then also just learn from the all the advisors about how we can continue to grow this successfully. So,
Colin: That's awesome. Yeah, I mean I actually forgot to mention my we, we've been focusing a lot on our coworking space too. This summer, and one of the things that we had was that like we got tagged by graffiti like years ago. And it has been such a pain just to like, I'm like, I'll just paint it myself and then time goes by and I just haven't done it myself. And so I'm like, now I want to have someone come out. And it is so challenging to get somebody to come out. And I don't blame the, like the folks who. Can get it done. Like I can do the job, it's probably not gonna be done. As well as like a professional painter. There's so many things in that world that you can go deep on that like make it a really good job, but it's not necessarily like they're, they're really good painters. They. Also have to run a business, which they don't necessarily have the time or desire to do. So having that service like this that allows them to just focus on doing like amazing painting and is, is awesome. I love that. And yeah, if you've had to try to find a contractor to do almost anything right now, it's, it's challenging. So I love the idea of like this marketplace for it. And in a way it's like this move from like, there's like a bundling and unbundling that happens where things like Angie's List. Is like, here's a whole bunch of people who could paint your house. Good luck contacting all of them and figuring out who's gonna actually paint your house.
CJ: Yeah, we're kind of the opposite of that. Like all of the, the crew and the paint leads and the operations manager, all the painters, they all like work for craft work. And we kind of everyone goes to the same training. A lot of people have 15, 20 years of experience. If you go on Instagram too, like some of the. Jobs are not just typical, you know, come into my house and paint my walls or you know, paint the deck or whatever. There's some really, really awesome, like high gloss, just these mind blowing Yeah. Jobs where like, oh my gosh, it looks like the ceiling of this dining room looks like a pool, like a swimming pool. It's like this super high gloss, like light blue color that just is sort of mind blowing. So If you're interested in kind of some of the, the more fun advance, also like people order some really interesting stuff. There was there's a, I guess this trend of people wanting glitter walls. I dunno if you've heard of this, where like the wall has like, it's like painted and then like covered in glitter and it kind of looks like almost like an ocean wave. And then I don't know how it like actually is done or like if they lacquer over the top or whatever, but like
Colin: this gonna be our, is this gonna be our thing where like there was the, the whole trend of millennials and stuff like pulling up carpet to find wood floor and like Gen Z or whoever comes after Gen Z are gonna be like, oh my god, grandpa had like a glitter wall
CJ: Yeah.
Colin: we have to paint over.
CJ: Yes. Yes. Like talk about accent wall, right? Like if your, if your wall is like just a glitter, a giant glitter wall. But
Colin: So you're building, you're building stuff to support and make all that happen.
CJ: Yeah, so we're building out we have a next jss front end that is like used for the marketing site. It's pretty cool. It uses the T three stack, which is A T R P C. It's a turbo repo. And we are using planet scale with MySQL and TypeScript. And so like just learning a bunch about TypeScript, I hadn't used it really like deeply or properly. We're using the drizzle o r M, which is a little bit off the beaten path in terms of like, it's not prisma basically, I mean, By off the beaten path, I just mean it's not Brisbane. So that was kind of interesting to, to get into. We're using Zod, which has been kind of cool to learn. These were all things that were, seemed like buzzwords that I would hear on Syntax fm, you know, WEBO and Scott Delinsky are talking about. And then like finally getting to play with them myself and be like, oh, whoa, that is really cool to have your front end validation and your backend validation or sharing the same sort of types and schemas and error messages and things. And then I s not convinced. Well, maybe convinced. I don't know. I, I, like, I feel very, very productive with Rails. And so there was this major CRUD app that we needed to build for all the operations stuff and like managing different projects and handling communications and payments and all this. And I was like, this is gonna be a huge undertaking to build it all from scratch without like, The high speed, high productive benefits from something like Rails or Django or Laravel. And so I was like, please, can we use, please, please, please. Can we use Rails? And so,
Colin: in, in your hands, right? It's like you've used it for so long, so like, sure, you could do it in these other stacks, but it's not customer facing. It's, I. Something that you want to be, you want it done yesterday, so that makes
CJ: Yeah. So we've just been like, over the last, I would say like six weeks, just hammering on building out a ton of stuff in that backend. What's cool too is that like with Rails, it's so easy to expose the APIs with J ss o n, and then we're just consuming those from the next JSS side. So like the few thing Yeah. Or vice versa. Exactly. Exactly. So We are tending to move stuff out of next jss and into rails like for the data management just because it makes more sense for us, but like the next JSS front end for when you go and submit an estimate. It's this beautiful customer experience that's like really finely tuned and. Tested and we've got like all this stuff set up to really like make sure that the customers are having the best experience and that's all backed by like j ss o n that's being fed from the Rails app. So
Colin: Is there any like discussion or, or like concern about having too many languages or too many technologies and things like that? Like, like when hiring happens in the future? I.
CJ: I think that we obviously want to. Optimize. It's, it's a, it's a tricky balance 'cause you want to sort of optimize for productivity, but you also wanna optimize for having enough candidates like, you know, job candidates who might be in the pipeline that will know the stuff you're working on. So I think right now looking at the, I think it's rails, devs.
Colin: Yeah.
CJ: The Rails dev site. There's like plenty of rails developers that are on the market. And then I don't know. I, I think like when I'm using Rails and being productive with Rails, I feel like there's, it's a, it's hard to make the argument, you know, that we should use something else and move slower just so that we can hire people who might know that thing later.
Colin: It's funny that you say slower too. 'cause Well, it's like the idea of like, more like, would you be looking for a Rails developer who also knows next and all this like T three stuff, which probably, I'm sure they're out there. Like you've, you've been learning it, but it's, it makes it look like that unicorn, you know, tech ninja, the job, you know, stereotypical job posting where you have to know all these things to get a job here and, and it, it sounds like you guys could easily have. Some Rails engineers, some T three engineers, things like that. I mean, this is also kind of on our agenda, but like the, the success of selling tickets at Rails Worlds will speak to the fact that Rails, as we've said many times on the show, rails is not dead. And I think tickets for Rails Worlds sold out in 45 minutes which is. Pretty awesome and great to see that like more, more conferences in the rail space is just gonna help you know, when you guys are ready to find, you know, and grow the team.
CJ: Yeah, totally. And there's so many, so we, we started with Jumpstart Pro, which is Chris Oliver's like starter kit. And then we've, every time I turn around there's like, oh, we need this feature, or we need that feature. And it's just like, oh yeah, we just drop in a gem, configure it like this, and we're off to the races. Whether that's auditing. Calendaring Notifications. Yeah. Payments. Like all of this stuff. There's so many well baked libraries in the Rails ecosystem that like, it's pretty easy to trust. Like as long as you kind of like do your due diligence about which specific one you're gonna use, like you can pretty much trust something. So yeah. What's the tech stack like over at Discord?
Colin: Yeah, it's it's pretty interesting, like internally we actually use quite a few languages, but externally, like in the developer relations role, developers can build bots in any language. So, Something that we've kind of talked about before with like, we, you know, we talked about how Stripe made their SDKs and things. All of our SDKs are our third party. And we have no fewer than 10. Like, I don't know what's, I'm still sorting through, like, I'm very new at this job, so I'm like kind of getting the sense of the, the lay of the land and what has been done before. The person I work with has been doing DeVere by themselves with the engineers. So like, the engineers have been wearing multiple hats and they've been doing a great job with like the resources that they had, but it's like, there's like, you know, two rust libraries. There's a few Python ones, there's a ruby one. There's a, there's like a Julia and a Lua library. So there's all these SDKs that developers can build. A bot, an app. In any of those languages. And the thing that I've been getting doing more of is more like CloudFlare workers or Google app what was it like Google Cloud Run? So being able to kind of this like Lambda style type of hosting where you don't have to worry about running VMs and things like that. So you could build a bot and then deploy it in JavaScript or Ruby. In Lambdas with like a p i gateway, or you can do that with, you know, whichever server stack you're, you're doing. And traditionally, a lot of people use the Discord gateway. So like the, the job is a little bit interesting that we have rest APIs, but most of the developers are using like a web socket gateway to actually receive messages on, on a connection that you have to like, keep alive and you have to keep listening to it. And so just navigating all of that, so I'm working on a Google Calendar bot for like, that sits in your discord and tells you when you have a meeting and all of that. So very similar to the one that if you've ever used the Google Calendar Slack app. So this one's kind of like my own little pet side project, just to like get my head around all of the things that we offer and all of the challenges that developers run into so that I can then go back to the team and say like, this is. Either not possible or it's not well documented, in which case then I'll be writing new docs for that. So yeah, it's going well.
CJ: Nice. For the, like the libraries that are out there. Do you have a sense of the usage? Like is it like the node one is used 50% more
Colin: Discord, JSS is the most used based on, I. I think we, I mean even just based on like GitHub stars, I think it's the most I don't know about actual, like requests, but I get the sense that like most of our apps, like, or like apps when it's bots or apps are. Python and JavaScript. So like, there's definitely a long tail of people running like Lua, crystal, all those other languages. But but you can do it. I'm sure you could somehow probably do an app in R if you really wanted to.
CJ: totally. Yeah. So at Stripe we there was this feature inside of The s the official SDKs. And then there was, there's like a, a thing that we exposed where people could set app info, which was basically like a little bit of information about where the request was coming from. And we kind of just appended that to a user agent string. And so the idea was like, oh, if you're using version X of a, of a library that is an official Stripe library, we can track and see like, oh, this is how many requests are coming from each different version of each specific library that we maintained. And then we encouraged the third parties to add that because if we saw that there was a community owned library that was. Just had like outsized usage, like then we would have an incentive to go and sponsor them with GitHub sponsors. And so we could figure out like, oh, which community library, you know, is doing the most volume and like, how can we help them be more successful? And so oftentimes we would try to like give them access to. Betas early. We would also try to like give them heads up for stuff because we knew the usage. And I think that's like, it's kind of tricky especially 'cause I think there's some communities that are probably more likely to star in GitHub, right? Than other communities. They might just like, oh, I'm gonna like download the thing. But like, it's hard to know like, how much is this thing actually being used And also like some languages, Just like the, the workflow for some languages make it look like, oh, that library has been downloaded a bajillion times. But really it's just because like, okay. Yeah. It's being downloaded on your local machine every time you start the server or something. Or maybe it's being downloaded your machine and
Colin: It's like in the CI step. Yeah,
CJ: exactly. So like maybe it's not actually being downloaded that many times or, you
Colin: N p m and n p m usage in Stars is definitely not like that good of a, a signal, but like I star stuff to remember it later. I don't necessarily do it because I'm using it, so I, I've been like using the GitHub has like folders now for stars, which is nice. So I've got like my Discord stars and my open a p I Stars and all these different things,
CJ: That's cool. What is the, what was it like to integrate with a calendar like Google Calendar AI or a p i? I've never like played with that one yet. I.
Colin: Yeah, it's been good. Like this is where I was like, I think running into OAuth is always the, the, the pain. But now I can do, like, I'm just replicating exactly the commands that the Slack one has. So like, you'll be able to do like slash gal today and it'll show you all the things that you have today. Because it's calendars, I still haven't sat through like. What hap like I don't actually know if Discord gives me your time zone or not, so I might need to have like a setting that you get to define your time zone so that I can always keep everything in your time zone. But like u t C wise, it's easy to say like, these are the next things coming up in your day. Right. It's just a point in time. So there is a little bit of the like cool working with calendars. The most complicated thing is that the Slack one will tell you like two minutes before your meeting and you cannot subscribe to events on that. You have to do that yourself. So if I know that you have 10 meetings today, which sounds awful to have 10 meetings, but let's say, let's say you have four meetings today. One of them changes. I don't want to just schedule four like CR jobs or four scheduled events. I need to also be monitor. I do get a notification from Google anytime the event changes. So if it's been canceled, it's been moved, it's been whatever. So I would have to like constantly keep a list of scheduled alerts that are like scheduled jobs, but then. S so I'm still figuring out like what's the most efficient way to do that. It's like, is it really efficient to check every minute to see if there's an event that's happening in two minutes, or schedule them and then Unschedule reschedule, push them around. So I'm trying to figure that out in a way too where, like if we're using Redis or something, like if your Redis dies, do you lose all your schedules and, and things
CJ: Mm. Yeah. Yeah, because you wanna persist. I, yeah. I think when we, we ran into a similar problem with at my vr when we were trying to manage events related to, I. A booking, like, oh, the cus like the guest is gonna check in on the first and they're gonna check out on the third. But you wanna schedule like a message that's like 48 hours before. It's like the welcome message with your, this is the door code and the wifi password and whatever. And then you want to schedule a message like after that's like, give me five stars. And then everywhere in between, right? Like you might want to have something happen five days before and 1 24 hours after check-in and, you know, 24 hours before checkout, you wanna remind them, like do the dishes or whatever. And so I definitely remember this whole thing of like, what happens when the event changes and what happens when like yeah, it's fired at a different. A different time or whatever. And so we're actually, I mean, that's like a, a problem that we need to solve at Craftwork too, right? Yeah. Like, you know, before we go to a project, we wanna send someone in a prep email that's like, oh, here's a bunch of stuff that you'll probably want to move out or cover or whatever, so that we can get in and, and paint. And like also at the end, you know, Hey, please give us a. If you, if you enjoyed it, like we, we'd appreciated a review or, you know, here's some before and after photos of your job, like so.
Colin: for some of them I've seen like the job, let's just say it did move. You still keep the scheduled job and the job itself checks to see if the job is still valid or not. And so instead of un. Maintaining a list of all your job IDs and when they're supposed to go off, you can just fire them all. But if they're no longer valid in the window that you want, They just end, right. They don't do the step that they need. So yeah, it sounds like you're gonna be doing lots of like business process logic stuff, right? Where it's, you know, if, when this thing, when this step is done, we have these other steps. What's the next step? What happens if a step is canceled or, you know, there's a lot of state going on there, which is interesting. Some stuff that we ran into at Penny Drop too.
CJ: Yes. Yeah, totally. I think the way that we solved it at my vr, if I remember correctly, was we literally just had a job that ran every minute. And so every single minute we would do a query that's like, is anything supposed to go out right now? And then if so, then we would fan out and schedule those things to be delivered. And most of the time it was no, it was like, no, no, no, no, no. And then every so often we'd have a cash hit that was like, oh yeah, actually you're supposed to send this guest email. But
Colin: Well, in 99% of events and calendars start at the hour, the half hour, and the 15 minute mark. So you'd obviously still wanna check all the minutes in between. For me, with a p I limits, it's like, do you. Constantly just maintain a list of all the events that a person has today, or do you go every minute and check Google, which then you'll run into a p i quota problems pretty quickly. So,
CJ: Yeah. I think the idea on your end of like, oh, I'm gonna keep just the database of the events and then use webhooks to keep updating that, and then
Colin: chron every minute.
CJ: exactly. Chron every minute, see if one is due to notify or whatever, and then fire it off. Yeah. I don't know. It's fun. It's like a fun little fun little problem. What are you, what are you building it with?
Colin: I'm doing it in JavaScript. Yeah.
CJ: Okay. Very cool.
Colin: So I'm hoping to move it to TypeScript to also get familiar with TypeScript. We use TypeScript for a lot of stuff, and so I haven't used it in like other than like sample apps and small tutorials and things. So get the types.
CJ: And have you heard of this company Ingest I N N G E S T? They do we use them for background jobs with our next jss app, and they're pretty pretty new little startup, but they have like some pretty solid background jobs, stuff that works pretty nicely. It like calls back to your functions that are in next jss.
Colin: Wow, this is like. Everything but it's new is old or whatever that phrase is. Yeah. This, this is cool in jest, we'll put this in the show notes, but Yeah. We used to use a company I worked at a long time ago, we used to use iron io or iron workers, and it sounds very similar, very like. You fire off, you know, your, your scheduled job and they take care of making sure that it ran and you don't have to take care of it. Thankfully, there's a lot of this stuff, you know, everything from CEL and Lambda and you gotta go build it yourself using those, those things. But the one that I've been most impressed with is so far has been the CloudFlare stuff. 'cause I've always thought of CloudFlare as like, just like, CDNs and stuff like that, but you can actually run your workers at the edge and you get a key value store. So doing off and storing that stuff, you know, in, in the key, key value store has been pretty nice. But I don't think I wanna store all the events for a person in that key value store. So that's, that's the tricky thing that I need to figure out is whether it's Postgres or something that's gonna be the event store. And
CJ: Mm-hmm.
Colin: yeah, it's kind of fun. The, the interesting thing about this project is that the most of the work, and the challenge is not on the discord side. It's purely on the calendar side. And I think that's the same for if you wanted to integrate with Asana, if you wanted to integrate. It's like, Once you have the skeleton for sending and receiving and doing all the stuff with discord, it's then what does the thing actually do on the other side? And that's the calendar, the asana, the craft work, a p i, whatever it is, it's like, you know, slash discord. Send me a, send me out a paint quote.
CJ: Mm-hmm. Yeah. Have you, I think, I can't remember if you were using Linear at, were you using linear at Orbit or,
Colin: No, we were, what were we using? JIRA and Notion.
CJ: okay. Okay. I've really liked the workflow with Linear in Slack where like someone reports something you do like slash linear, what's the issue? And then. It's like so simple. Like the modal that pops up is like really clean and simple and
Colin: to check that out.
CJ: yeah, give it a shot. It's it's pretty nice.
Colin: Like historically, most of the apps in Discord are not work apps. This
CJ: right? Yes, yes. It's like
Colin: is it, and then like, do you want your linear sending you a message in Discord? Or like if your team doesn't use Slack, then you might. But yeah, this idea of using discord for work, I think is, is more new. So we use Discord at Discord, so that's why we want this. Right. And I selfishly I want it 'cause I have definitely been late to meetings because I'm used to, like, for years I would just, Slack would tell me I have to be somewhere and I would go. And for some reason Google Calendar, like local desktop notifications, I'm just like blind to them, so.
CJ: Yeah. At Stripe, someone had built like this I think it was called like Google Calendar Bar or something like that. It like, put it in your Apple status bar. It would show you like, this is the next event that you have coming up. And then I think it did do like push notification, like,
Colin: I have that with Fantastical, which is really, really cool. Well, it's, it's the best calendar app. Also put that in the show notes like
CJ: Yeah,
Colin: it's a paid calendar app, which is hard to, but it like super powers when it comes to calendaring. So
CJ: nice. Okay. Very cool. Awesome. Yeah, I, are you going to try to go to Rails World or
Colin: So it's sold out. So I don't have, there's no tickets. I don't know how much we will be like, as far as, like, if it was my own personal thing, I might be able to go next year. But we'll have to see. I don't know. Like we don't, I. I'm still figuring out like what conferences do we go to, how do we do that? Things like G d C we've been to in the past, it makes a little bit more sense for Discord, for game developers and stuff, building stuff in Discord, but, or like, we now have Discord on PlayStation and things like that, but Rails I think is a little bit of a, like, you wouldn't build a, a bot or an app probably in Rails. Maybe it was Sinatra and some of those other things, but. I guess you could, you could do it in Rails still. It's just do a Rails, a p i app instead. So we'll see. I think it, it would be, Fun to go. I think the speakers were announced for this year and it's cool to see who's, who's going. There's a very strong 37 signals contingent. Obviously Chris from Go Rails is speaking, which is awesome to see. Shout out to Chris. A bunch of people I met at Rails Comp this year are also speaking, so have fun in Amsterdam and curious to hear. Maybe we'll find somebody who does go and get them to come join us on the show afterwards.
CJ: Yeah, totally. That'd be fun. I think, I mean, I'm hopeful that we'll be able to make it to some of these rails conferences coming up. That one was like, just the timing of it was rough.
Colin: Yeah, I think they, it was also a very small set of tickets, so like it sold out, which is awesome. But it was, it's a small conference on purpose. It'll be interesting to see where it moves in the world. Like I think, I wouldn't be surprised. We, we still need to get Amanda Perino on here to talk about it, but I think they were gonna like go Europe and then like Australia or something.
CJ: Whoa, that'd be cool.
Colin: I think that would really affect like attendance. So I'm sure there's lots of Rails devs in, in Australia and New Zealand and things, but we'll see.
CJ: Yeah, totally. Right on. I think that's a good spot to wrap it up. So
Colin: for, thanks for listening to our little bit of a rambles and an update, some job updates, some tech stacks, and we'll jump into some more. Just kinda, it sounds like we both have enough stuff going on that we'll be able to start sharing updates on our adventures and CloudFlare workers and building out rails apps for new startups. So thanks for tuning in.
CJ: As always, you can hit over to build and learn.dev. We'll drop all those links for things we talked about. And that's all for this episode. Thanks so much for listening, and we'll see you next time.
Colin: See ya.