- No cut off date + multi-modal ChatGPT
- Generating AI voices with ElevenLabs
- Looking cool with New Ray Ban + Meta Smart Glasses?
- Making an epic screencast set up with Screencasting.com from Aaron Francis
- Who’s upgrading to the new iPhone 15 with USB C
- Traveling with international / regional esim cards from Airalo
- Betting against SaaS? Once from 37Signals
- Calculating customer lifetime value
- Not having to deal with churn
- Hashicorp and the Business Software License
- OpenTofu - open terraform initiative
Btw, Craftwerk is hiring!
CJ: Welcome to build and learn. My name is CJ.
Colin: And I'm Colin. And today we are catching up on a bunch of tech that has dropped recently. Sprinkle AI, LLMs, and some new stuff from Facebook.
CJ: Very cool. Let's get into it.
Colin: So I think when it first came out, you could ask it to get things and I don't know if it was a hallucination, but you could like give it a URL and sometimes it would give you data back. Like I told it to go look at my LinkedIn and I think it kind of hallucinated based on what it had already scraped before the cutoff date. But yeah, the big news now is that I guess there is no cutoff date for chat GPT. So I don't know when that happened or, or if you're going to see better or worse results because now you also have data that it's going to start teaching itself based on blog posts and stuff that people have been generating with ChatGPT.
CJ: Yeah. It was fun. The, that the article that you sent me or the sort of I don't know if it was Tik TOK or Instagram where Justin Jackson was like recording, showing a podcast recording that was generated. And a while ago, like several months ago, I listened to a podcast. It was like an AI news podcast that was generated by two AI hosts and they still sounded really robotic, but the one that you showed me was pretty legit. And this guy, Brad, the video editor that we used to work with at Stripe also recently sent me something just like. Kind of for fun. He was like, Oh, I was working on some videos of yours and needed to like change some words that you said. So I just generated some stuff just like for fun.
Colin: And with Justin's example, he said that it was only on 30 seconds of his voice that was used. So I've been playing around with this site called 11 Labs that does a bunch of AI generated stuff. And like, we just replaced the voicemail for our coworking space with it. Because we don't really answer the phone and it's like either spam, a scammer. Or it's a legitimate person who wants to come in for the day. And so we just made it more obvious. And I set up Calendly with Stripe and it was like, if you want to come in for the day, like the AI sounds very human. And it says to go to the website. And we just put that up on Tuesday and we've already had two people book through that, which was kind
CJ: no way.
CJ: That's awesome. Does it give you like, what, what is 11 labs doing for you? And is it kind of like a one time thing or is it hooked up? So now they handle all your calls or
Colin: So I hacked it a little bit. I, if you go to the website and we'll put it in the show notes, you can just type in, I think it's like up to, it's like a tweet amount of data like a sentence and just as like a demo. And what I did was I put what I wanted to say in there and it was longer than that. So I actually did a few of them and downloaded them and put them into Descript. And then I, I use Google voice. So we're, we're kind of like DIY hat. Like we don't have a Twilio IVR or anything like that. And so I. I had to play the voice on my computer and record it into Google Voice. And so now we just set Google Voice to always default to voicemail and there is no IVR. There's no phone tree. You don't get to hit two if you want to do a day pass or whatever. But it just, Tells you what you need to do. And if you are trying to get in touch with us for any other reasons, send us an email. And it's just something we have to do to kind of keep costs down. Like we just, every time the phone rings, I'm like either in a meeting or just like, Ooh, it's probably going to be a scammer that I just don't want to talk to. And so yeah, I mean, I think most of our members prefer the working with us on the internet anyway. And once they get here, then we get to have the human touch.
CJ: Yeah. It's very different from this home services stuff that we're doing. Like a lot of people who want their home painted want to talk to somebody on the phone. And so we're kind of having the opposite situation where we, we have to get on the phone with people like several times a day. And that is a problem that we've been trying to solve. And we've made some really exciting progress this week. Nick on our team is working on this thing where basically if you come to the website, you can sort of get an estimate by clicking a bunch of buttons and telling us some information about your, like the job that you want to do. And that will create this API call that goes to our back end and, you know, uses a bunch of data and calculator and gives you back some like structured data, but he's doing it from the chat. So like using the chat messages and then I think we're using anthropic to just extract the features from chat that would be useful in the API call and then building the Jason based off of like what people talked about in the thing so that you can Create the sort of estimate from what people said, which is, it's so cool. Like the, the direction and stuff is going, it's just insane. And fun.
Colin: What's cool about that is it's not really replacing anybody, right? Everyone's talking about how we're replacing jobs and things. It's like, do you just get to talk to more customers if you can get a summary faster, if you can get a quote faster, it's just making you more powerful and doing your work. And I could see it being like, okay, they had a text with us. They had an email. They filled out some form. We had two calls, but it wasn't with me. Just tell me like what this person wants done so that I have context before I give them a call is also just super powerful.
CJ: Yeah. My grandmother she, I don't know if I've told the story on the pod, but she was like trying to get ahold of some doctor and she called the hospital and was on hold for like three hours. And then Like the other line rang and she thought maybe it was the doctor calling her back and she like went to go pick up the other line accidentally hung up and then in a cry because she was just like so frustrated with Having to wait this long and I was like Grandma, that's not going to be like a thing in 12 months. Like people are not going to talk to you on the phone. Like you're going to talk to a computer that's going to seem just like a human and we'll be able to scale these just infinitely and trying to explain that to her was, it was tricky, but yeah, I think that's definitely the direction we're going, right? Like make it so that people can interface with your company and your data in whichever way they want. And then you can kind of like build these abstractions that make it so that you can. Automate processes without having to have, yeah, without having to pay someone to pick up the phone and answer questions that can be done automated.
Colin: Yeah. There's definitely a humanness that we can talk to a little bit with like this this other thing that just happened today, the meta smart glasses. Some people have been kind of lamenting the loss of human humanness or human connection and that you have this, Potentially this piece of glass between you and everything you experience, literally, like you know, what is the wandering around town and just wondering what a thing is versus like having this, you know digital assistant that's like trying to tell you what everything is as you're going. I didn't watch the announcement. I saw some stuff go by and like saw some screenshots and stuff. How did you follow up on this?
CJ: I just watched a few clips from the announcement and. I am really impressed. I was not into the Google Glass thing, but the fact that they partnered with Ray Ban and the glasses look dope and also like the camera that's in them is I think pretty close to the same 12 megapixel ultra wide camera that's like in an iPhone. Not the main camera, but like, it's a pretty good camera and it has, you know I think it has like the speakers and it has The Qualcomm chips and everything like I am blown away, especially at like a 300 price point. It's just mind blowing. So I am, I'm definitely intrigued. Like I know there's, there's like, I don't know, questions about how it's going to impact our like psychology and society and stuff. But just from like a tech perspective, I was pretty impressed and like excited. So,
Colin: I haven't seen the form factor for like batteries and battery life and all that. Like, are you holding like a little thing in your pocket that's your battery?
CJ: so the glasses case, Looks just like a glasses case, except it has like a USB plug in the bottom and
Colin: So it's
CJ: a button. Yeah, exactly. Exactly. So it'll be just kind of like, oh, and it's supposedly they have 36 hours of battery. I'm sure it's going to be like 10, but like that's what, yeah, exactly. You know, they're going to claim more than whatever. And I'm sure right now too, they're not promising that the. You'll be able to like, you get the all the AI features right away. They're like, it's going to come down the road and you'll be able to sort of upgrade and use this, like the new software as it comes out. But even just for the camera feature, I think it's pretty sweet. It's like not like mission impossible, but there's definitely spy movies where people had like, you know, cameras in the glasses, maybe like James Bond or something. And I'm like,
Colin: Well, Snapchat had glasses.
CJ: Oh yeah, yeah, yeah, yeah. But it's still, it's still like, I feel like the, the, they look cool too. They look like, like actual glasses that I would buy. Like, I don't know.
Colin: yeah. And they're not 3, 000 like the Apple vision pro, which I know is a very, very different product, but there's that, that kind of valley that we have to cross when you start pricing something that expensive. And even what you're talking about, like, I kind of just wish Apple would give us a webcam, like take the camera out of the iPhone. I know you can pair your iPhone as a webcam, but I don't, I like, I want my phone, not on my. Computer necessarily, like just give me a really good webcam because we've talked about this before. There's the opal and there's the logitech's and the brio's and the cam links with the DSLR and all that stuff. It's just like a lot of stuff that I don't really want to have to have. And it'd be nice to just throw up, you know, the new iPhone 15 camera with all of its crazy features and call it good.
CJ: 100%. Yeah, fully agree. I, when I started at craftwork, I tore down like all my dev rel gear, all my recording gear and like, put it away. And I was like, Oh, if I recording more videos, I'll just do it with no camera. And then I was like, Oh, I want to record this one video. So let me start getting some pieces, like bits and pieces out. And then I was like, Oh, I need my stand. And I need my like this, that, and the other. And now I'm like almost back to having like all my stuff. I don't have as many like lighting lights or whatever, but yeah, it would be amazing if they just had like a killer opal replacement.
Colin: Yeah. Well, and I was looking at screencasting. com. Did you see that come out?
CJ: that was launched. Yeah. That looks exciting.
Colin: Yeah, I might sign up for that because One I mean his his camera and lighting setup is just so good, but i've also seen what it looks like It's a lot of stuff on, you know, outside of the frame. But very cool if you're interested in creating really professional screencasts, what I like about what he's teaching is also just the tips and tricks around how to iterate and make, put out videos in a quick way. So, you know, how to think about your content and then. How to create these workflows so that every single one of you know, every 30 minute video or every 10 minute video doesn't take an hour to produce.
CJ: Are you, is there any news on the content slash video front for your current role?
Colin: It's something we want to do. It's still something we're looking at. We're focused a little bit more on docs and getting all that stuff figured out first. But yeah, text is easier. It's easier to update, easier to diff.
CJ: Yes. Totally. Totally. Yeah. Are going back to the iPhone thing. Are you gonna, what do you think about that announcement and you're going to upgrade?
Colin: Yeah, I guess we've had a bunch of tech updates since we last recorded. I'm rocking the 12. I think the phone's fine. But the USB C is tempting. My physical charger doesn't work. So I have to use a MagSafe charger. So like it's, it's on its last legs. I think I know some people who are still rocking the eight and the six, which is amazing that they're still supported and still work. Like my grandma still wants the home button, which I actually just discovered. I think the SE, iPhone SE still has a home button. So, which is good. Cause I think she would not, she would figure it out, but I don't think we need to go down that path with her. Like she wants the button. She wants to know when she can, you know, always press it and go home and stuff like that. So I think I'll probably upgrade eventually. How about you?
CJ: I upgraded my phone was like insanely old and broken. Like the back was shattered. The front was shattered and yeah, the battery life was abysmal. And so it's nice. I think it's basically the same phone. The, like the unboxing and update experience. Was the best I've ever had with Apple. Like it was literally just, I pushed like five buttons and then I have the exact same, like everything is the same. All the apps are the same. I was logged into like almost everything already. Yeah, swapping over the eSIM was super easy. It's fast. It's lighter than my old phone. So I'm really happy about it.
Colin: You probably don't even have a sim slot. Do you?
CJ: I don't think there's a SIM slot. There's like a, there is some sort of slot, but. I don't know what it's for.
Colin: Yeah, because they're I mean They're all unlocked eSIMs now Which if you travel internationally the eSIMs are just like huge unlock. Have you used that
Colin: Yeah, I guess we're kind of just rambling here today, but There's a, there's a few apps where you can just buy, like it used to be, if you're like going to Italy or going to Portugal, you'd have to like go find a SIM card at the airport or gas station. And now you can just be like, I'm going to be in Portugal, download a SIM card for Portugal, and it just shows up on your phone. And when you're there, you're online. So, you know, you got to be able to use, you know, transport or whatever you have your phone ready to go.
CJ: That's super cool. Yeah, I usually just leave it off and try to get Wi Fi wherever I can go.
Colin: Yeah, there's that too.
CJ: yeah. But yeah, I like it so far. I think I don't know. We'll see. We'll see how it goes. It's a phone. So. Yeah. What is what do we got going on here? Oh, I guess once, yeah. We talked a little bit about this a while ago, but kind of an interesting business model, right? Like
Colin: Yeah, you want to tee this up for everybody?
CJ: sure. Yeah. So 37 signals launched once. com. And the idea is that instead of the, like having these SAS sort of offerings where you have to kind of like. Always host and provide access to something and go give ongoing support. Instead, you kind of just give someone the code, they get to see it and buy it for one amount, one time fixed price, and then they own the code. And yeah, it is definitely like a lifetime trying to get like the lifetime value upfront instead of over the course of. Many months, but it's definitely flipping kind of the SAS, the concept of SAS on its head, because now you're, you no longer have to deal with things like churn and cost of acquisition. And I don't know, there's like a bunch of like stuff that goes into running a SAS that you kind of get to leave behind you, but I don't know, it's definitely very different.
Colin: Yeah, it'll be interesting because they have, I mean, over 10 years of, I mean, 15 plus years of SaaS data. So, I'd be curious to see what the pricing is. I think everyone's, like, up in arms with, like, SaaS is recurring and you can predict, like, once you hit a good flywheel, you can predict what you're going to be making. And churn could kill you, but also reasonably, once you really hit product market fit, like, you're not, Going to lose so much that you can't estimate hiring and paying yourself and things like that how much of this do you think is like 37 signals just like doing something very Out there to get attention though. That's kind of what it feels like It's like they like kind of created and popularized sass and then they're like we're gonna go the other direction
CJ: isn't it? Yeah. I feel like they are good at being loud about the stuff that they're doing. Because if you think about it, like there are a lot of things that work like this already, like the tailwind UI stuff, that's not a SAS thing you pay one time and you get access to the templates and the kits and the whatever. Another example is I think in terms of community mega maker was like a one time thing when I signed up, you just pay one time you get in, it's a big chunk up front, but like, then you're in another example would be like these, the the starter templates for jumpstart pro that's like a one time thing you pay money and then you get you get access to the code and yeah, I think there's
Colin: Do you get updates? Do you
CJ: do get updates. I don't know what all like the, the licensing and stuff looks like, but yeah, you, you kind of like get access to the GitHub repo and then you can continue sort of backporting and getting those updates. I don't know. I'm sure that I feel like 37 signals in the base camp product. They've, they've also done this like crazy thing where they rewrite the entire thing. They like rewrite the entire code base every so often. I don't know if it's every year, every several years, but every time they launched a new one, that would have been an opportunity to be like, okay, we launched a brand new, like, you know, version seven or whatever of base camp. Now you can buy that and download and install it. The other one that comes to mind is ScreenFlow, like this, this, the video editing software I use, they just give you a version and you can have all of the, the minor versions of that. Like you can buy ScreenFlow 10 and get all the minor patches or whatever, or the patches in the minors. But if you want ScreenFlow 11, which I think they release once a year, if you want the next one, you got to like pony up for another year's worth of a license or
Colin: This is like going back to the Adobe model before subscriptions. Right. And I, I get it like Adobe paying as much as we do. I don't pay for it anymore. But when I used to use all those tools, it feels like a lot. But then if you're, like, if you're a creative professional, it's like 50 bucks a month for everything makes sense and you don't have to worry about it. You don't have to worry about upgrading. I know that it doesn't work for hardware, hardware, right? So pebble is the thing that comes to mind for me. It's like you bought it once and they were really popular, but they got all their money at once and they had to pay for hardware. And then everyone wants the software updates and then the service went away and people can now self hosts rebel. Which is like a DIY version of the software. But I use a whoop band and like, I pay monthly for that. And I'm kind of happy to just because I know it's not going to go anywhere. I guess like Apple watches, you buy them once, but Apple's making lots of money on your AirPods and everything else that you buy,
CJ: And usually like for Apple, you have to have the the iPhone to go with it for it to make sense. And then, so it's kind of just like an add on or expansion revenue. Another one that comes to mind is Peloton, right? Like you have a big upfront cost to buy the bike. And then you also have a recurring cost. And so they've kind of like split it. So I don't imagine wanting to like rent the bike and, but I do feel fine, like paying the monthly fee for the, to get access to the classes. So yeah, it's, they're kind of like selling two different things there, but yeah, I don't know. It's interesting. I think one thing that I really like about the idea is that. For me, one of the hardest things to swallow with building a SAS and charging a recurring subscription is that you kind of are signing up for a commitment to those users that you're going to stick around and you're going to support them, especially if they start. Buying annual subscriptions. When I built that that little tool a while ago, the that little SAS product that did Facebook integration, I had some people sign up on, on annual memberships and I didn't even like. Like keep the thing for a year. Like I built it and I had it for like nine months and I sold it off to someone else and then like they ran with it, but there were customers that signed up for a year and I like wasn't even around after, after I sold it. And so it, it does, you feel, I don't know. I felt a lot of pressure, like, okay, if someone signs up and pays for a year, you gotta like support them for the year. Obviously there's ways around that, but the buy once and you get some code that's seems pretty attractive from the business side, at least.
Colin: and they haven't announced what products they're going to do this with, right? Like, are they going to do a CRM? And when you think about what it costs to have Basecamp or whatever, I don't know if we don't know, right? They just put out this statement. But like, I don't think people should expect that it's going to be 200, right? If it's business software for small businesses, it's not Salesforce, but it's The new base camp or high rise or whatever it is that they're going to do again, is it 20, 000 and you own it forever? And now business is just like, Oh yeah, we're going to invest in this thing. And we own the code and we're going to get the updates. And you can reasonably expect that if enough people buy that at 20, 000, you're, you've got a really strong business. And you come up with that number based on like how long the average customer. You know, sticks around times, whatever you would have charged for a monthly SAS. And, you know, like you said, get rid of churn and some of these other things that you have to do. And pulling all the revenue forward is also huge. Like you can hire, you can plan around having that versus like with SAS, you don't know when people are going to leave.
CJ: even with a SaaS, like you have to try to calculate the lifetime value of the customer and then
Colin: while you're while you're moving like you're on a train
Colin: to figure out how long the train track is and you're like, well, we don't really know We're just gonna keep putting more railing in front of us and hope the train doesn't go off a cliff
CJ: Totally. Totally. Yeah. I don't know. It's interesting. We'll see how it goes, but I would encourage people to just think about it, I guess. So are, I think you were, you were doing some Terraform stuff. At work, right? Was that like part of the calendaring thing or something
Colin: Just playing with it. We use some terraform templates for like Doing well, what do we do it for mostly for Google Cloud? Orchestration stuff. But yeah, I guess in this same vein is, are you kind of referring to the HashiCorp changes and stuff that they've
CJ: Yeah. Yeah. Yeah
Colin: Yeah, I guess this is a little bit different than the once model but it's similar to relying on your tools. And so HashiCorp is, I think they already have rolled out the BSL, the business software license and they're moving away from a Mozilla license. And so I just kind of wanted to throw this in here as, as an aside to so many companies. Building and relying on your tooling, whether it's software or open source code and how that looks. Because I, like, I'd be curious, what is the licensing for the code that you buy for once, right? I'm assuming you don't get to, it's going to be like some sort of proprietary license, most likely. Right. You're not going to be able to make, well, I mean, you will be able to make changes to it, but can you distribute those changes? Can you then sell plugins to this software and stuff like that? That will be interesting to see. The BSL was kind of contentious in the community because they just didn't feel as open. From my perspective, it seems like they did it to prevent like Amazon from just taking the code and saying, we now have. Our own version of Terraform using all the stuff that HashiCorp and all of the contributors did. But now there's this initiative from the Linux Foundation and a bunch of contributors called OpenTofu which is an open Terraform alternative, backwards compatible and like kind of neutral leadership.
CJ: Cool. Yeah, all all of the infrastructure stuff is just so terrifying to me and like I don't know. It's just so fiddly and just kind of like, intimidates me a lot and I find that kind of work very Frustrating, like working with NGINX or working with like setting up a Terraform thing and getting it deployed. And I'm like, just give me my Heroku or like, you know, just like, I just want like a nice tidy little sandbox for sell or whatever that I can deploy to. And I don't have to worry about, you know, certain services and their versions and their box sizes and the whatever, you know, and fallback conditions and certificates and all this other business. So,
Colin: this is the stuff that AI can take from us. Please, please take this away. And ChatGBT is actually pretty good at Terraform templates, like, because they're so role based, and I'd be curious to see if they've gotten better since the, the backdated The kind of date line has moved forward is that now all the new data that's in there should be able to help, but like, you can give it the structure and it'll be like, well, that doesn't have access to that, or like, I'll give it the error message and the terraform. And it'll be like, yeah, you totally missed this piece in this piece, because like in the case of Google Cloud, it also knows about the Google Cloud APIs and Docs. And so it's able to just say like, yeah, you totally missed this, like. Permission ACL or whatever. That's usually what it is. It's like permissions all the way down.
CJ: Yeah. Okay. Are you, when you say when you give it to chat, GBT, is that like in, you're talking about like in your editor with Copilot recently, or are you just like pasting it in or kind of like what's your workflow?
Colin: I actually don't have copilot in my VS code. I need to figure like we use coder at work. So we have like virtual instances and stuff. I know I can figure it out. I just haven't. Done it yet. And then, so I, sometimes I'll just pop open chat GPT and paste in anything that's like not sensitive. I'll just do like, this is what it looks like to deploy a box to GCP, regardless of who you
Colin: And then I also have my own personal GCP account that I'll like go do it myself on my own box, just to make sure it's like actually does what I want it to do. And then I'll replicate it at work.
CJ: Nice. Yeah, I find myself kind of jumping between the editor and the browser, like the chat GPT browser and just kind of like messing around. But I have also noticed, I don't know if it's just me hallucinating that now, but like, I feel like it's getting better. Like the autocomplete from co pilot, it has been just so freaking good the last couple of weeks, or I'm like, man, I don't know if it's part of the, maybe it was the change related to, Thank you. The cutoff or something, but it feels so good. Now, like, I don't know, maybe I'm also just doing a lot of stuff that is repetitive and conventional and not like too far off the beaten path. And so
Colin: I'll have to look at it again because I've mostly been writing markdown So not as much like I'm like, I don't want you to try to tell me what I'm about to write
Colin: we just Kind of speaking of things that we're working on this week. We just launched documentation around being able to Have premium apps in discord so you can have an app and then you can charge subscriptions for your app And it's all stripe under the hood, but you as a developer don't need to touch stripe so we do all the payouts and all that kind of stuff So that's still very new and only available in the u. s but that was like my first big documentation project was just documenting like What are the endpoints and how do you use this thing and what are the best practices and stuff like that. So, chat GPT is not going to be super helpful with something like that. At least not yet.
CJ: Yeah. Like you've, you've got to be the one who is creating the original content that will answer all future questions by chat about that sounds awesome. So like yeah, anyone building apps on discord can now collect money for
Colin: A little bit opposite of the one time purchase model, but if you want to build a SaaS on top of Discord, you can do it.
CJ: All right. Is there, do you have like. Business ideas that you could share or like app ideas that you could share with the audience that are like, Oh, people would probably pay for this if you built it.
Colin: Oh man, yeah, I mean, we kind of take that stance with most things like we would rather the community build the apps than us build them. So if it's something that you've used in Slack and you don't see it in Discord It's probably a good chance that it's a good one. I think the most popular one That's like kind of more of like a business case. This is called ticket tool and they will turn they'll like do ticket syncing and like case management type stuff and discord. So I know they're using the new premium app stuff, but yeah
CJ: Awesome. Yeah. I would imagine there's going to be a billion AI things that are like, look at your discord channel and then try to predict the answers to questions from customers or whatever.
Colin: I mean you guys used it at stripe you guys use discord for support but not in like a bot or ai type of way. It was very Human generated but could be could be interesting. There's a lot of answers in that discord that could help
CJ: And in IRC history, cause you can go back to like the beginning of Stripe time in the IRC logs and see like every question ever asked and answer ever answered in the public forum and use that to train. In fact, I tried this like 2019 ish and I had no idea what I was doing, so it didn't work, but you could theoretically.
Colin: in ai days.
CJ: Yeah. Yeah, you can get there. You can get there for sure. So your calendaring app, is that going to be the new hit app? The new hit premium app on discord.
Colin: I have not touched that in I guess it feels like months, but a few weeks now So we'll see that's still very much. Close to the chest app not available yet, but we'll get it working first, then i'll start thinking it's like do you want to charge a subscription to create events? In your calendar? Probably not. I think you have to, you have to pay me if you want to book some time.
CJ: Yeah, yeah, I mean, I, I guess maybe we did a little handoff then I've been doing a lot of calendaring stuff lately in our app. Yeah, we're building out a view so you can see all the projects that are upcoming breakdowns by like, you know, what project type. So we have certain teams that can do different kinds of stuff. If it's interior exteriors, we have like Gantt charts and all these resource calendars and all of the like drag and drops, dragging an event from one day to another day, or like extending it by dragging it, all the things that you would expect from Google calendar are just. So crazy hard to implement, but full calendar is this library that we're using. And so we're using like this react component and we have a couple of API endpoints for giving you the list of events and giving you the list of properties or like resources or whatever, and then. Those end points can be filtered based on a start and end and then full calendar just does everything for you so it's fetching like exactly what it needs and just so it's a little bit of rendering a little bit of CSS hacking and Yeah, it seems to be working pretty well. So that was pretty pretty fun to build
CJ: noop. Noop. Noop. Noop. Yeah, we use
Colin: out there's a whole team at Google that does this.
CJ: Not surprised. Yeah. We use the, the tailwind UI calendar view when our calendar was just static. And then when we were like, okay, this needs to be, you know, higher fidelity and more interactive. Then we're like, okay, what are some libraries that do this? So full calendar worked. And then
Colin: has a Tailwind, like, theme or something. That would be cool.
CJ: I don't think so, at least it's not documented, but they do have bootstrap and material UI. It's like, yeah, I think it's a bit of an older library, but. Works well, I mean, I think they could probably Benefit from an another theme, the tailwind theme,
Colin: that might be easier than me implementing all the other stuff.
CJ: yeah, it's, it's really not that bad. And like, there are tons of classes, so you can kind of say like, Oh, I want to modify the background color of the weekends or something. And so you can you can target like FC dash day dash sun or whatever. And that'll like, lets you get access to all the Sunday. Day cells or whatever. And so they have like tons of classes around that you can just target with CSS. And then
Colin: little counter to the Tailwind
CJ: it's opposite of tailwind for sure, but it lets you get like the same results of like, you know, styling it how you need to. Which yeah, works fine. And then this week has been super fun, bunch of API and webhook stuff. And inside of the jumpstart pro starter kit. There is a generator for making these little API wrappers so that you don't have to install like full gems for third parties. So you just say like rails, G API client, and then, you know, whatever third party. And I wanted to like extend that a little bit to make it. Generate even more. So I like this week I've been learning a ton about rails generators and just trying to like wrap my head around all the hooks that are built by the rail side versus the hooks that are built by Thor, which is the command line interface gem. And. So I wanted to like improve that, the API client generator for us so that we can move a little bit faster. And so I made like a little video of that. It'll be up next, next Friday. And then also I want to do it for enums too, because something that we do a ton in our. Application is like, we'll put a column in the database that is an integer, and then we add the enum field to the model and then add a couple of different, you know, enum values. But then in the form and in a couple other places, like we have to go in and change it from being like a number input or a text input to being like a select dropdown and like titilize the enum and like do
Colin: it. Yeah.
CJ: Yeah, exactly. And so I want to make it so that you can say like rails G model, and then instead of giving it a status integer, I want to give it status like integer enum or something, or maybe just enum and then have it generate the mod, like the, the model and the forms for us with. The, the defaults. And so, yeah, it was like deep diving into the rails code base this week, just trying to figure out how, like all that stuff works. And yeah, it's exciting. I think like generators and rails have always been one of those things that are kind of magical a little bit. Cause it's just like, how did that happen? Like it made 20 files for me, like controllers and tests and fixtures and all this stuff. And Yeah. So it's, it's kind of fun to demystify that a bit and make our team faster. And so hopefully we'll upstream that too, back into jumpstart. So other people who use it in the future can make their API wrappers faster. So
Colin: Nice. That's cool. Yeah, I played with generators a tiny bit, but they're super powerful. It's just a lot of templates and boilerplate and all of that.
CJ: Yeah. One of the things that's cool too, about jumpstart, how gosh, I'm becoming such a jumpstart fan boy is the Chris has added, I mean, like in the template itself, it has its own. Generator customizations, but there's a bunch of stuff in there that he kind of shows examples for certain patterns within rails. And you're like, Oh, that's how that works. Cool. Let me just. Make my own, or let me just extend that a little bit, or let me just tweak that a little bit. And then I feel like it's kind of like having a, a rails app with like a little bit there already. So you can see how other people might access different features and it kind of, it's, it's both sort of like a jumping off point, but also like a. A learning tool. Whereas when you just like rails knew something, you kind of have to understand a lot about rails to figure out, you know,
Colin: Right. Which is interesting because Rails, right, right, Rails was extracted from the OG Basecamp as like a tool for building apps and potentially businesses, whereas Jumpstart's like, yeah, here's your Rails, but also here's all these things that like over time we've seen. Everyone tries to do this. And does it 10 different ways. This is a jumpstart way. Or here's a way you could think about it. If you like it, use it. If you don't like it, do it your own way. And I feel like gems are always another way to, to customize all that stuff too. But yeah, that's pretty cool.
CJ: Yeah, it's fun. I don't know. Maybe the, the enum generator thing will be a gem first. But there isn't like proper support. There's like full support for enums in Postgres. So you can have like an enum data type in your database table. And in your database, like what's it called? Not, not your like. Not your SQL, but like the, the language that you use to change tables and stuff. I can't remember anyways, when you're doing like an create table statement or whatever, you have to do like a create enum statement and tell it here's the values. And then that almost creates kind of like a mini it's, I kind of think of it as like a mini table inside of Postgres that you're joining against versus just having like the integers in there mapped to something else. But one of the things that I'm finding is. We're using this other gem called blazer, which is kind of like this BI tool that lets you write SQL queries and. I want to add like a chat GPT integration where you can just use natural language to ask it questions and it'll send the schema and give you back SQL that will run. But the problem is that the SQL statements don't know about the, all the enum values because they're just numbers in the database. And so like, if you're looking at, for example, like the sales status on a project. It's just going to be a number between zero and 10 or something, but if you want to know, Oh, show me all the projects that are in the one state, then like, you know, or the lost state, then you need to know like, Oh, that's number two or number three. So like as part of the. Yeah, as part of the query. Yeah, you need to do like a bunch of these, you know, like the SQL statement will just have like case when, when it's one, it's like pending when it's two, it's delivered when it's three, it's one when it's four, it's hold or whatever, you know, kind of like figuring out all the different statuses. Which isn't as nice as just being able to say like where the status equals one as a string. So
Colin: inject those enums in the, like, prompt? Automatically?
CJ: yeah, so the usually the way that I construct the prompt right now, I'm doing it all like manually. So I'll just paste in parts of the schema that I know I want to write a query against into. The code like, or a chat GPT, and then I'll also copy parts of the model that have the enum things. And then I'll say, okay, this is, you know, from the model, this is my schema prepared to write a query. Then I just say like, okay, show me, you know, sales week by week, grouped by project type you know, split out the revenue this way or that way or whatever. And so I don't know, I guess I'm. Kind of convincing myself that I should have used string values for enums, but it's what I work.
Colin: That's a, that's another holy waller for a different day.
CJ: Yes. Yes. Yes. Yes. Cool Yeah, anything you're learning this week?
Colin: Kind of go back to the docs for a second. I'm playing around with some, like, text linting, like,
CJ: Oh Nice.
Colin: standardizing How we format our tables, but also like when you refer to a certain feature as uppercase or lowercase, is it consistent? So I found some blog posts from like Netlify and some others who do this pretty well And we're trying to work on a style guide there because right now we do PRs against our docs like we allow people to do PRs against the docs publicly and style is All over the place, which is fine. It'd be nice to lint on it and just that way they can fix it themselves instead of us, you know, punting it back in a review. And then it helps
CJ: you do? Yeah, how do you do? Like the code samples in the docs.
Colin: right now. They are just code blocks in Markdown. Like we have like an MDX. like component for code. But yeah, we're looking at eventually how do we like pull in each of those? Cause I think we've talked about like, how do you have the code samples? We have less code samples and more like just. Json responses and stuff in our tutorials we have some code samples, but we usually just link out to the github repo which then have tests and things but it'd be nice to have tests against the code samples when we try to do prettier against our markdown it like Formats the code and then also formats the markdown. And then like some of our MDX components, it does not like it breaks like collapsible menus and stuff like that. So we're playing around with that. And I would love to see us use markdocs. So that's also on the table, but kind of just like tooling around docs, which is really interesting. There's like ones that are kind of like grammarly too, where it's like, this doesn't quite read like it should. And that's all just for English. Like, I think it'll be interesting to see, like, do we translate all the docs? We, we released like our getting started guide in eight languages. But we've been finding the, the translations are difficult when you're talking about technical things and then writing the code and using English strings and things too, because they're written in English first, so
CJ: Yeah, is it so I didn't realize that the public could make changes to the docs So is there like a docs czar that kind of oversees all those PRs and tries to maybe like act as like an editor? Is that you
Colin: That is that is DevRel at least it is right now. So we can talk about this cause we just did it, but yesterday we had, we just went through, we had 50 open ones and we got it down to like 30 something. Some of them are people trying to document things that aren't released yet. So we keep those ones open until like the team's like, yeah, those features rolled out and it's done. We can talk about it. That does mean like with the premium app stuff, we just released, like it had to be done in my version of the docs. Like I have a fork that's technically public, but I do it over there. And then when I'm ready, I merge it in. So you know, we're not trying to hide it from the world, but there's no way for us to have like a branch that's private. Of the docs right now we could in the future, but yeah, so we we kind of look at them Some of them are things that we just don't agree with and that's we're having a style guide to point to and some linting around this will help so that it doesn't have to be like Sorry, we don't want your pr but we do want this one. It'll be more like okay cool This is technically missing or technically incorrect and then this the linting will be on the style take care of most of that
CJ: Yeah, that'd be awesome. That, yeah, I think maintaining docs is just really freaking hard. Like it's, it's, it's like legit, a very, very challenging problem, especially because there isn't a like solid standard for. The guides and tutorials side of things. Like everyone's kind of rolling their own still. And MDX and Markdoc both provide a framework, but like they don't provide too many Things there needs to be like, kind of like the jumpstart for docs, right. Or something, right. Where it gives you the text linter and the, all the code blocks and code generation and separate, like API reference versus you know, a client and SDK reference versus here's your guides and here's your tutorials. And does it have video? Does it not? It's like,
Colin: Yeah, well, and you guys were doing a lot of that at Stripe. Stainless is trying to do that with SDKs.
CJ: Mm hmm.
Colin: know, there's, there's a lot of new docs companies popping up. I remember, like, Readme was like the doc startup of their time, and they're still really big and really popular. But there's now things like Redocly and some of these other ones that are coming out. So it's, it's cool to watch.
CJ: Are you planning to go to RubyConf in November in San Diego?
Colin: I am not. Are you?
CJ: I am thinking about it, but yeah, maybe or like most, most likely RailsConf in May, but I think tomorrow or like this week is Rails world and I'm feeling some FOMO. I'm feeling some FOMO.
Colin: There's only like 200 people going to that. So there's a lot of FOMO.
CJ: Yeah, but it's all good. I wanted to mention before we close too, that we are hiring. We're hiring a craft work. We're hiring a full stack rails engineer and we're hiring a react native engineers. So hit me up. And then also I was thinking about trying that dynamic ad insertion from transistor to tell people that we're hiring.
Colin: You'd like to go for it, would do that. And then if you haven't plugged it in the, the Reno developers group yet, I would
CJ: Oh yeah, definitely. Yeah, for sure. Great idea. Cool. Yeah, I think that's a wrap. As always, you can head over to buildandlearn. dev to check out all the links and resources we mentioned. And yeah, we'll see you online.
Colin: All right. Bye friends. All audio, artwork, episode descriptions and notes are property of CJ Avilla, Colin Loretz, for Build and Learn, and published with permission by Transistor, Inc. Broadcast by