Performance review season, OpenAPI, Twilio, and calendar app

Show Notes

In this episode of Build and Learn you'll hear CJ and Colin discuss the following:
  • CJ's weekend project of installing new kitchen cabinets. They share the DIY process of customizing and installing inexpensive cabinets from Lowe's.
  • Running and training tips, including focusing on "zone two" aerobic base training. Colin shares his goals to rebuild his running foundation and get faster this year.
  • How performance reviews work at their companies, the process of self-reviews and peer feedback, and how 5:15s "five fifteens" help document accomplishments.
  • CJ is building API documentation using OpenAPI spec and integrating Twilio APIs into his product. He realized he needed both Twilio's legacy and modern APIs.
  • Colin is working on a Google Calendar integration for Discord, allowing users to schedule meetings in Discord voice channels. He discusses the challenges with Discord's permanent voice channel URLs.
  • Interviewing and pair programming with candidates using Tuple. They wish for ephemeral URLs to avoid overlaps.
  • Strategies for ramping up on and understanding a new codebase, like tracing the flow of a request. An LLM tool for summarizing codebases could be useful.
  • Encouragement to get outdoors, avoid burnout, and "touch grass"!

Full Transcripts

[00:00:00] Welcome to Build and Learn. My name is cj. [00:00:06] CJ and I'm Colin. And today we are back in the hot seat. How's it going, cj? [00:00:11] It's good. We had fun this weekend. We, when we first moved to New Hampshire, the second we moved in, I broke my ankle and, in the kitchen. We've had this like buffet set of cabinets that have been sitting there. Basically since we moved in, we like went to a secondhand store and got this because our kitchen is very tiny and didn't have enough like counter space or cabinet space and so on. [00:00:34] Friday afternoon, Nicole was like, I. I've made a decision, we're gonna install some cabinets. And we spent the weekend like running around to different Lowe's places and we just bought some like standard kitchen base cabinets and, uppers for this one spot in the kitchen that we, wanted to do a little remodel for. [00:00:52] But it was tricky because there's these baseboard heaters where we have, like forced hot water that heats the upstairs of our house. And [00:01:00] It was like, do we get uppers and then mount them above the baseboard heaters or do we get base cabinets and slide 'em right up to the heater? [00:01:07] Or do we get custom cabinets or whatever? And this is, we just wanted like a temporary solution with more storage than what we have right now. And so. It was kind of a fun project on Sunday where just like we bought some basic cabinets and then got out all the saws and everything. We're just like hacking up these cabinets from Lowe's and trying to build a little channel in the back. [00:01:29] I'll put a before and after photo in, the show notes, but it was a really fun project that was very much a FK. So this weekend, yeah, we got into some, Some trouble building some cabinets, so that was tons of fun. [00:01:42] Nice doing the di DIY, build and learn. [00:01:45] Yes, exactly like the physical build. [00:01:48] yes. [00:01:49] What's going on in your world. [00:01:51] It's good to get away from the computers and things. yeah, just, been pretty low key weekends, just trying to get back into [00:02:00] running, so I've been doing that. trying to get away from the computers as well, That's going good. [00:02:04] Do you have any like events coming up, in the near, near term? [00:02:08] It's funny 'cause all the like fitness experts and everyone these days are talking about zone two running and all that stuff, which is like. if you've been running as long as I have, like it's like a common know known thing. [00:02:20] So just doing a lot of zone two running, which you know, is really staying in literal heart rate zone two and not focusing on how fast you're running and start to develop that aerobic base. 'cause most people will do hit and all these like high intensive things and they just blow right out of. From starting straight to zone 3, 4, 5. And then they, it's if you think of it as a base of a pyramid, you don't have a strong base when you don't have that zone two. So because I haven't been as consistent with running, because I also hurt myself, I'm trying to check the ego at the door, get back into it, slowly build up that base, and then, this spring summer I can start to get faster [00:03:00] again and see some of the, some of those returns come to me. [00:03:03] But I've got some races at near the end of the year that I've signed up for to keep my motivation in check. So [00:03:09] keep me, accountable to the fact that I gotta show up to a race day. [00:03:13] Nice. Yeah. Yeah. The, so it's funny that you're talking about zones too, because in on the bike we use a different set of zones. It's not heart rate zones, they're power zones. So it's based on the wattage output of the, stationary bike. And so a zone two run it's probably like some percentage of your heart rate or something. [00:03:33] Yeah. [00:03:33] your max heart rate. [00:03:34] Got it. Nice. I assume there's like a lot of similarities, but yeah, building that aerobic foundation gives you like a really solid place to build from. When you do eventually want to go faster, I would imagine. [00:03:45] totally. [00:03:45] I wanted to try to get back into like at least a little bit of running slash jogging and so we got the Peloton tread because it's freezing here and icy and you can like it's, today we woke up and it was 20 something and we, when it's below, [00:04:00] I think it's when it's below 27 degrees or something, we don't wanna take our dog out because then they get issues with their paws and everything. [00:04:05] And We spend a lot of the winter inside and so we were really excited to have this, but it has never worked. It, we got this thing delivered. Yeah. And they tried to set it up and it has like a firmware update, like failure and it's just never worked. We've had like techs come out and Peloton finally just said okay, we're gonna replace the entire thing in April, which is like four months away. [00:04:28] So it's just sitting here like collecting dust and laundry now. You [00:04:33] I know. By the time we, we get a working one, we're gonna be able to go outside. So it's like completely defeats the purpose for, this winter. But, yeah, I'm hoping to be able to like at least get into a little bit of jogging or something someday. [00:04:47] But [00:04:47] Nice. [00:04:48] yeah. Very cool. [00:04:49] shifting into tech things, I put this in our notes just because I thought it was an interesting job post, but, I'd be curious to hear what you think, would [00:05:00] this be attractive to you as like someone, if you were looking for a job, [00:05:04] is the number of stars and the growth at which stars happen on a GitHub repo for an open source developer tools company? [00:05:11] So this is actually from super base. And they were comparing like the growth of their stars, which first of all like their stars up and to the right since 2020. Like amazing and just like from zero to 60, in the last two years. And they're trying to compare themselves to Mongo and Cockroach and timescale and just showing that they're a little bit older, which in some ways is. [00:05:34] Is good proven tech, the things like that. [00:05:36] they've been in the market longer, things like that. But, is that something that would appeal to you? Is that something that you'd respond to if you were like, in the market and looking I just thought it was, the hockey stick caught my eye for sure [00:05:49] I feel like it in one way is very much a vanity metric. For instance, who knows if timescale slash timescale DB is the main repo? [00:06:00] People are actually checking out, or is it like timescale, db dash rust or something? Or cockroach dash rust. And same thing with Mongo, right? Like maybe more people are using or starring MongoDB slash Mongo Ruby. [00:06:12] So in that way I think it's a little bit disingenuous, to compare companies like this at the same time, like it is one signal that shows the popularity and like the growth, Also, it could totally be gamed, right? You could just spin up a bunch of bots that go and star things to get attention. [00:06:30] along these same lines, when I was talking about, bucket, this like side project, I'm working on buckets. A lot of people were like, oh, you should try out Josh Pickfords. Maybe I. Thing and everyone was pushing maybe. And Josh was like, I'm open sourcing it. And so now it's up. And he got really excited 'cause there's like tons and tons of stars now on maybe in fact, so excited that hired people back on the team and like restarting the engine to go build maybe. [00:06:56] And at the same time I'm like, okay, that is definitely like one [00:07:00] good signal of breathing life into a project. In terms of using this as a, one of the metrics that would determine whether or not I wanna work at a company, I don't think I would, uh, like base it on stars now picking between, JavaScript libraries or picking between Ruby Gems or something. [00:07:18] I would definitely take the stars into consideration, but yeah. What's your take? [00:07:22] I think it depends on how you use GitHub stars. do you use them often yourself? Do you use, I think you can even have categories of stars now. So like I mostly use them, not necessarily for things that I'm actively using. I use them as more of like things that I like. [00:07:38] I have a Discord category and I star a bunch of Discord libraries and things that I find. I've got APIs as a category and if I find cool tools. Even if I'm not using them, I'll star them. It doesn't mean that I'm using them. It does not mean, like you said, it's a vanity metric. I've seen it. [00:07:55] I thought it was cool. It got a star. Does not mean that. That means I'm a user though.[00:08:00] [00:08:00] Yep. Another like thing to think about too, like I, I never use stars at all, except for when people are asking for stars on their repo. And so this is another thing that like maybe Superb Base did a campaign to try to encourage users to go and star the repo. And like of course you're gonna have Giant up into the right if you ask people to do something that is literally free and signals, something. [00:08:24] it's at the end of YouTube videos where people, when say, people say and subscribe. This is a great place to interject and say, if you have a moment, we would really appreciate it. If you go to your podcast player, open it up and give us a five star review. We really appreciate those reviews. [00:08:38] They help us, get out the word to other people who might also like this content. it's the same thing, right? By making the ask people are, they feel like, oh, hey, this is a really low investment way that I can contribute to some organization or repository or whatever. I don't know. It's, [00:08:54] I mean I could even see open a AI or someone being like, we'll give you this many credits if you go [00:09:00] star our repo. And it's like [00:09:01] very easy to game that. [00:09:04] totally. Yes. Yes. It's I think if you, for Yelp or for other review sites like Google Reviews , if you give them some incentive to leave a review, then in their algorithm, they'll smash your reviews, basically, or hide them and make it so that, that those reviews don't actually count [00:09:19] I don't know. it's a metric, but, yeah, I would much rather see like revenue, [00:09:24] how much money we're making. [00:09:25] Exactly. Yeah. And this isn't a beat up on super base either. I think it's just, it was an interesting tweet that went by. So thought [00:09:33] we'd talk about it. [00:09:34] Yeah, I think super base in particular would be a really dope company to work for. It seems like they have tons of fun and they've got a cool brand and I love Postgres. based on like many other things,Thor works there, which would be fun to work with. Thor again, but yeah, like outside of, yeah, outside of that is I don't think Stars is a great way to pick a job. [00:09:52] Nice. I think the only other thing going on, we got, at least at Discord, probably most companies, performance [00:10:00] review time is coming up. [00:10:02] Ah, perf season. [00:10:04] this is my, first one since I've been at Discord. so I'm it's one of those things where it's like even doing this show, we don't always talk about all the things we're talking about working on at work, and sometimes I can't talk about what I'm working on, but just like having to rack my brain for all the things that I have worked on. [00:10:20] and so I do have a notion doc of where I try to keep a list of projects or screenshots of things that I've worked on with folks. And, praise, kudos, whatever it is just plus one for that. I'm still like learning what it looks like to do performance reviews here, so I'll learn that next week. [00:10:36] But we're in the thick of it. [00:10:39] Yeah, I'm interested to hear all the details too around who gets to review who, and you write your own performance review and then that gets submitted as a packet, and does it impact your compensation and does it impact like your manager's compensation or like how do all those things fall out? [00:10:55] And then, this is definitely not a thing that I've seen at startups for [00:11:00] sure. It's like only at like much bigger companies, from what I can tell. And it definitely seems like something that came from like Fang, Google and [00:11:07] Oh yeah. [00:11:08] whatever. It feels being in startups, the work is very much the focus. And when you get into these larger companies, just the size of them requires this, like meta not the company, but this meta work, [00:11:20] machination of what? Like you have performance reviews because you have so many people and so many teams and so many departments. and especially with like things like. COVID and remote work where some people I've heard of some like remote QA testers where their job was to automate things and so they actually had two full-time jobs. because they're like, yeah, I mean, the work I. My job was literally to automate myself out of a job and they had two jobs. [00:11:50] and they did that for a while until it was just like, it was a little bit difficult to hide the fact that they had two jobs when they had like sometimes meetings at the same time [00:11:59] or.[00:12:00] [00:12:00] Things like that. that is not something I recommend for anybody. Like our goal is not to live, to work that much where you have more than one job. [00:12:08] get your work done, go build some cabinets, get your [00:12:10] Yeah. [00:12:11] go outside touch grass. But, yeah, I think it's just, you know, when you get that big, you gotta have some sort of meta. Work. I feel like everything from equity and performance reviews and expenses and all hands, it's just such a different beast, than startups. [00:12:31] Totally. Yeah. I can shed a little bit of light about the way that performance reviews worked at Stripe. it was a process where you write your own packet, your like self review. And each time that we had a performance review cycle, the, like HR leadership would give you like three questions to answer or two questions, and it would be something like. [00:12:50] Write a bulleted list of the things that you did that aligned with this value or like with these core values of the company. And then write the three [00:13:00] things that you're gonna do for the next period of performance. and then you would have to collect reviews from peers. So you'd have to, go to three peers, maybe one that's on your team, one that's not on your team, and one that's like a little bit higher up than you or something, and try to like, encourage them to write about you. [00:13:19] And so there were some tactics where you could say oh. Would you mind writing a review for me? Here's the bulleted list of all the stuff that I did this cycle and,stars next to the part that I'm like really proud of or whatever. and then you also had like your manager's feedback coming down, which, yeah, like none of that should be super surprising, but it always got messy too. [00:13:42] if you switched managers or you switch teams and you're, or you're trying to level up or you're trying to switch, like maybe your role or something like, it always got gnarly. but one, the one thing that I thought was the most valuable with relation to performance reviews, is these things called five fifteens. [00:13:57] I can't remember if we've talked about these on the show, but. [00:14:00] They're supposed to take 15 minutes to write, five minutes to read, and usually you publish them at five 15 on Friday and it's what did I do this week? And so whether that's like looking through videos you published, or articles you wrote, or,tons of meetings that you had or interactions with customers or, Writing out, here's all the different, like code that I wrote. Here's all the different prs and what they did. so that can be really useful to go back and like scavenge for, building up, yeah. The list of things that you're proud of, [00:14:31] yeah, [00:14:32] It's like your own personal newsletter. [00:14:34] exactly. Yeah. In fact, yeah, totally. [00:14:37] I've started taking to Our internal five fifteens, they're all like, just in notion. And I'll have what am I working on? And then I'll have an outside of work section where I'm like writing about the stuff I'm excited about outside of work. And I almost feel like that would actually be a good blog post. [00:14:51] And sometimes like I, I am like, man, I should just post this, somewhere externally. But it, a lot of it isn't like tech related sometimes, so I don't know. [00:14:59] Oh, [00:15:00] it's a lot like this show. [00:15:01] Yeah. True. Yeah. Yeah. [00:15:04] Or what are we working on? What are we learning? What are we doing outside of this show? [00:15:08] True. Yeah, totally. It's that, it is, that, it's like the written version of that, so might have to repurpose that. but yeah, I really love doing that because I think sometimes it's, you'll get to Friday and you're like, gosh, what the heck did I even do this week? And then you look back and you're like, holy smokes. a lot got done there. This was like a really productive week. sometimes it's good to look in the rear view and I did enjoy at performance review time, looking back at wow, look, the previous six months there's just like this mountain of like tasks and maybe some big meaty ones in there or something that popped up. [00:15:39] But, [00:15:40] Yeah. The thing that I'm going to, I still need to sit through like the session on like how performance reviews go, but it sounds like ours are very similar with the principles and then looking forward. for me it's more of just I just do a lot of things because they need doing. and like I'm used to that and [00:15:58] [00:16:00] I'm not doing it to then write it down in a document to then talk about later. [00:16:04] And so there's a lot of things that, especially with Dere, where the work is not always very visible, sometimes it's literally like managing conversations with external developers or, making sure that like we document something before we release something. [00:16:21] So [00:16:21] that if it hadn't been done, it would've been a bigger deal. [00:16:24] But it got done. So it was a, it was not a deal at all. [00:16:27] And so those kinds of things I'm trying to keep in mind of and try to size them and just not necessarily diminish their significance. 'cause in some cases they were small, but they prevented like a lot of downstream work [00:16:39] or downstream problems. [00:16:42] It also shows like how proactive you are and. A lot of people aren't that way. They're just like, I'm just gonna do what people tell me to do. And like that yeah. Doesn't work very well for moving up, I would say. and if you're thinking of, oh hey, I can see this. Being a problem [00:17:00] down the road. [00:17:00] And so I'm just gonna do it real quick and it won't take me much time and it's also gonna benefit us long term, but like maybe to you, it's not a huge deal, but it actually saves the company. Like those are the people that you want on your team, right? [00:17:13] and there's a fine line between being proactive and being like having anxious attachment [00:17:19] Yes. [00:17:19] being worried about the future all the time. But, [00:17:21] Yes. [00:17:22] yes, that's what, that's why we get outside. [00:17:25] yeah, exactly. Yeah. Cool. What do you, what are you building on this week? Over the last couple weeks? [00:17:31] yeah. So I dropped this one in here from a few weeks ago to talk about, and this was the open API spec. So I can't remember, I think we've talked about this on the show several times with relation to docs, but finally got it up and running in rails and. We have, we, we use mini tests 'cause that's what ships with Jumpstart Pro. [00:17:48] And so most of our tests are written in mini test. I'm, I've become indifferent about mini tests versus R Spec. However, all of the tooling for Open API and using it with [00:18:00] Rails is I. Built with the expectation that you're using R Spec. and so I added R Spec. So now we have both mini tests and R spec, so that we can write all of our open API spec tests and it is pretty sweet. [00:18:14] You get that like R swag UI and the R swag web thing where you can run example tests and all that. And so that, yeah, it's exciting, but. I wish, I definitely wish there was a solution for mini test and furthermore, I wish there was a solution where you just say, here's my Rails app. give me an open API spec for it. [00:18:32] And you don't have to go and build all the specs, which it's really quite onerous, . Unless you do a bunch of like meta programming, there's a lot of places where you have to hook in and say, okay, this endpoint has security and it's using this type of security and it's, it con like it expects this JSO and it is gonna give you back that JSO and whatever. [00:18:50] I'm like, I, there's, I wish I could just configure a lot of it top level and maybe you can, and I gotta spend some time getting into it, but that was cool to get up and running, [00:18:59] and then you also [00:19:00] don't have as many explicit types and things either for Peram and, [00:19:05] Yeah, I think you actually have to, you have to go through one by one and say what type every peram is, which is yeah. [00:19:11] Whereas if you're using like TypeScript or Python or something with types, then you [00:19:16] can type everything out and generate it that way. [00:19:19] But the, pros and cons of Ruby. [00:19:22] Yep. Yep. [00:19:22] Yeah. Or I guess this is what SOBE is for. [00:19:25] Yeah, exactly. also doing a bunch of work on our Twilio integration. So I like went down the path of using. The conversations API and then I pulled back and was like, that seems way too complicated. Let's go down the legacy route. So went down the legacy route, integrated that, and then realized that oh, actually we do want like threaded conversations with multiple participants, so now we're gonna going back to the other side. [00:19:50] And the deeper I got, the more I learned that you actually need both. Like you need the old legacy messaging. API. To send these like transactional emails that are [00:20:00] coming, like from the application, from the system that are like, Hey, your booking was scheduled. Here's a link to your, to save this in your Google Docs, whatever. [00:20:09] Like those kinds of messages should come from the application and use the legacy messaging, API. Whereas if you're building a system where two people are gonna have a conversation between maybe sales and the customer or support and the customer that ought to use the customer API, because. The customer. [00:20:26] API has much better support for switching between different contexts and also, managing multiple participants. So you can have,you can send a text message to the customer and their assistant and you can also have, those messages come from lots of internal users to those conversations. [00:20:44] So lots of learnings there. And, yeah, it's a little bit more, I. More, complex than I expected. So still building the Twilio stuff. [00:20:53] nice. [00:20:54] Does Twilio call this the legacy API or are you calling it the legacy API? [00:20:59] They [00:21:00] don't call it the legacy API, they, I think they call it the messaging, API, I call it legacy because the API version's 2010 or something, and so it's. [00:21:08] it's the OG product. [00:21:10] Yeah, the OG 2010, like the web hooks for it come in with no event type. They come in just like super bare bones. The body, the from. Phone number, the two phone number and an id or something like very basic. [00:21:22] And then the new one, the conversations, APIs, like you have to have a conver, like a chat service object set up. And this messaging service has like multiple conversations. And those conversations can have like users with multiple different roles. And depending on your role, you can add or edit messages. [00:21:39] And then, yeah, it's supposed to work well with Twilio Flex, which is their kind of [00:21:44] call centers and [00:21:45] Yeah, exactly. Yeah. They're like embeddable UI thing. But yeah, I was just sent a link today to take a look at Bird. I dunno if you've heard of Bird before? No. Okay. [00:21:58] No. [00:21:58] Yeah, I gotta get into the [00:22:00] docs for it, but it's an alternative to, to Twilio in terms of engaging customers. [00:22:05] so some other option for sending text messages I guess. But, interesting. [00:22:10] Yeah, we'll have to, we'll have to dig in. [00:22:14] Yeah, I think we talked about on the show, but what I think is fascinating is that so many of the companies that existed in 2008 to 2012, the new startup opportunities for anyone out there listening is those same startups again, [00:22:31] Twilio is huge now, and it's not necessarily cheap anymore. It wasn't. [00:22:36] It's not, SendGrid is part of Twilio now, right? [00:22:40] Yeah. [00:22:40] way around? Yeah. [00:22:42] Yeah, it's all like insanely expensive too. Like they've all moved up market instead of supporting startups, they're all supporting like enterprise and you get on the [00:22:52] more money you take, the [00:22:53] more money you raise, the more money you have to keep the machine going [00:22:56] and so the next small thing [00:23:00] can take it away. And it sounds like, I don't, I haven't looked at Bird yet, but I imagine they're trying to eat Twilio's lunch, it sounds I would guess, yeah, I don't know. We'll have to take a look [00:23:08] Intercom started that way and now Intercom is the very thing that it like tried to supplant. [00:23:14] starting another web chat thing. Granted I don't think that I ever like using those things, but if you wanted to do that, there's an opportunity for the new startup. Low cost, It's tool for [00:23:28] Yeah, when I was at Stripe, I wanted, or like I pitched and I wanted to have like easy mode stripe because I think Stripe also needed to add a lot of different complex features to support bigger and bigger companies. And, Also to support payment methods from like around the world. And things just got like more and more complicated, right? [00:23:47] And if you're just in the US and you're only selling to US customers, I think that there is like a very oiled down, simple version of the API where you could still use just like slash charge, and you give an amount and like the [00:24:00] card number and then it just works. [00:24:02] There's definitely, a pattern, right? To all these companies where they start out small and they're serving small businesses and then they grow and it just becomes this enterprise behemoths, but [00:24:12] Yeah, whenever you raise money, you are setting yourself on that path of getting as big as you can, [00:24:18] true. Yep. Yep. [00:24:20] you realize that it's not gonna work with a bunch of people running free Heroku servers everywhere. [00:24:27] Yes. Yeah. [00:24:28] then you become the villain the longer, longer you live. [00:24:31] Yeah. Yeah. [00:24:33] very cool. I have picked up working on the Google Calendar Discord bot again [00:24:39] Nice. [00:24:40] Nice. But from a different direction. [00:24:42] I discovered it is possible. So like now when you go into Google Calendar, the UI, and you create an event. You can turn this off. I think if you're in like a workspace, like a Google suite where you're paying for Google. but you can create a meeting that's a Google meet and if you've used [00:25:00] Zoom, you can do a Zoom add-on that lets you add a Zoom link instead. And so now I'm going the other direction of, from Google. How do you create a meeting that will take place in a Discord voice channel? And so you actually see Discord show up in Google Calendar as join Discord voice. I. The challenge with that is that for all other tools like Zoom and things like that, they can generate a unique identifier. [00:25:26] There isn't, like in Discord, we have the general voice chat or build and learn voice chat, whatever it is. We don't have an infinite number of uniquely identifiable rooms, so you have to do a little bit of scheduling, which thankfully Google Calendar already does the scheduling. So it's a matter of How do we map voice channels to resources in Google Calendar? [00:25:48] so in Google Calendar you can create like a list of rooms. Physical or virtual or whatever, and you, that way it prevents you from like double booking a room. So I'm trying to figure that out because there's no easy [00:26:00] way to say this voice channel ID is this room in Google Calendar resources. [00:26:06] So like technically you can book multiple rooms right now. That or multiple, voice channels and overbook. But the nice thing is the goal is I want to get a reminder from the actual bot that like, Hey, you have a meeting in a minute, and then it should have, the link to the voice channel as like a first class link instead. [00:26:26] I was like, when I was first building it, I was just shoving it into the where, [00:26:29] like the meeting location, [00:26:31] Yep. [00:26:32] which works. I think Zoom does that by default too, is that they'll. They'll stick it in the location so that you have it and then stick it in the notes and all of that too. So [00:26:41] that one was really interesting 'cause I actually. you can, it's really cool. Like it's all using Google Script editor. So like you're creating Google add-ons in their script editor and then you're allowing Yeah, there's like a bunch of config files for who can run it and when you off with it, is it running as you or is it running as an admin [00:27:00] or [00:27:00] service account, things like that. [00:27:02] yeah, [00:27:02] do you have to build like a UI on top of that to pick which Discord server and then like from that Discord server, like which channel or like how does that work? [00:27:12] That would be a nice way of doing it. I'm building it right now with the assumption that we already have in Google calendar a list of all of the servers and rooms. [00:27:24] Got it. Okay. [00:27:25] instead of buildings and conference rooms, [00:27:28] right? [00:27:28] So those are our equivalent. [00:27:30] And so Google Calendar won't let you book the same room twice. I just need to map the Google Voice Channel to each room, and that might just be A-J-S-O-N, [00:27:41] key value pair for now. [00:27:42] alternatively you can implement OAuth, so I could, on the Google Calendar side, OAuth into Discord. [00:27:49] I haven't seen, I know there's like a way to do cards and UI and stuff like that, but I haven't figured out how to do all of that yet. 'cause I don't think, you don't necessarily know if you go pick a channel, [00:28:00] you don't know if it's full or not. [00:28:01] we kind of wanna rely on the room selection as the way to do it. and there's like some metadata you can add to rooms, but only administrators can see it. So like we can't use that in the API to actually get the IDs and things [00:28:15] like that. But, yeah, it's just cool to manipulate a product that I didn't know we could manipulate. [00:28:22] Yeah. That's super cool. [00:28:23] so you could always add like a craft, icon into Google Calendar. [00:28:29] Totally. Is it? Yeah. Like the other like direction that I would imagine might be an option, I don't know. It would be like to have some sort of proxy service where it would be like, okay, the link is always at some unique link. And then when you click on it, if there isn't a voice room already with that. [00:28:49] Id you just spin one up, like the first time that someone tries to join it and then everyone else on the call joins through the proxy,build and know, some random [00:29:00] id. You click on it and it actually, behind the scenes makes an API call to Discord to set up a voice channel for you and then connects you through that to, I don't know, like you'd have to build up some like caching, [00:29:11] it would be, or like a feature request to Discord is that we should have these, I don't even know what the right word would be, but I. Temporary unique IDs for voice channels. [00:29:25] So 'cause we're just, they're permanent URLs today. [00:29:29] which worked for hanging out, but it would work more like zoom where each one gets its own ID and it's ephemeral, [00:29:35] right? [00:29:35] Once the meeting's done, it's gone. It doesn't [00:29:38] hang around. but that's also not what we do. So I don't know that we would ever do that. and I also don't think that most Discord users would want this. I think it's something that we're gonna probably, I'm doing it for me. We'll see if other people want to use it. [00:29:49] If we pick it up as a, as an internal tool or something. [00:29:53] Nice. We've been doing a lot of, interviewing for Rails candidates and. The way that I interview right now [00:30:00] is by pair programming on stuff using topple. And so usually we'll go through, they'll create the calendar event using a Calendly link, and then, after they book, I'll go and create a topple link and drop that in the location. [00:30:17] But yeah, similarly, I wish there was some sort of topple add-on where. I could say, or I maybe even an integration with Calendly. Where, or SA Savvy Cal. I'm using Savvy Cal. Not Calendly savvy, [00:30:30] There's so many [00:30:30] whatever. Yeah, just like some integration with the calendaring system that, oh, when someone books, it spins up a new Tupper link for you, and then you both just go to the tupper link for that session. [00:30:41] And then after the call, I would like it to spin down and be an ephemeral thing. And In the topple ui, they like let you regenerate to get a new, unique link. But, I don't know, it, it would be weird if you're like on a call with a candidate and another candidate popped on or something, just 'cause Yeah, your URL doesn't, but then I'm also like [00:30:59] [00:31:00] like [00:31:00] if you create a link really far ahead of time. [00:31:05] Then that might change in between when you create it and when you use it. So it's a little awkward because the candidate is oh, I've got a call coming up, but I don't actually know. Is it gonna be Zoom or Google Meet or whatever. And then, an hour before I drop the Tup a link on, they're like, oh shoot. [00:31:19] Like topple. I don't even have that installed. And they gotta go through the process and, so [00:31:23] you would want it to generate it when you book it [00:31:26] and keep it reserved until it's been released. [00:31:29] Yes. Yep. [00:31:30] Yeah. So it would work like Zoom. [00:31:32] Yeah. [00:31:33] Yes. Yep. [00:31:34] Interesting. [00:31:36] I'm sure Tuple would love to hear that feedback. [00:31:38] Yeah. [00:31:39] Yeah, because [00:31:40] I'm sure that you're not the only one who runs into that. [00:31:43] yeah, we can add them on here. Also, like we're getting a bunch of new users for Tupo because they're, we're forcing them to use it for these pair programing interviews. [00:31:52] hey, that's, that's a sign of a viral product. I think [00:31:54] that's a win for them. [00:31:56] It works great because I what, like the format that I've [00:32:00] been trying to use for these interviews is I wanna work on something that's like actually a real task that we need in our actual code base to see instead of, reverse a length list or whatever, I wanna do real work and also I try to pick stuff sometimes that I like, am not familiar with. [00:32:16] And so it is, it's new for both of us. And It feels more like a two-way street where it's not just me,putting them under the microscope and being like, oh, is this person good? It's like both of us learning together, Googling, using chat GPT using, co-pilot and trying to solve a real problem and what that interaction looks like. [00:32:33] Which is, I think, a little bit closer to day-to-day. [00:32:36] Yeah, [00:32:36] But, yeah, it's still, I was gonna say, it's still a little awkward when they, like when. Your environment is different than what they're familiar with, so [00:32:48] totally. I think that's something I've been learning more and more where I don't even know if there's a word for this,feeling, but like you. Even in, in a new code base, you feel like a stranger in a [00:33:00] strange land and there is a day at which something just clicks and you're like, I know how this works now. [00:33:05] Yeah. [00:33:06] And until then, you're like, just like moving stuff around, seeing what happens. And you're like, what if I do this? And you're like, oh, I didn't realize that job got kicked off when this happened. and sometimes you can't fully see all the things that are happening. And I'm starting to feel that way more with the code base for our developer docs where I'm like, I now know what happens and what things are being fired off, how we're generating the docs, all that kind of stuff. [00:33:30] But. I wonder if there's like a documented behavior there of like a process of learning where you go from the unfamiliar to familiar and you get that light bulb. 'cause you always as, like, when you're teaching things, you always hope for that light bulb for somebody else. it's a good feeling. [00:33:45] Little dopamine, you also learn something. You got a new skill. [00:33:48] Do you have any things that you try like that you do when you jump into a new code base that are like, oh, like every time. I'm gonna try to learn by reading the logs or I don't know, poking around [00:34:00] Or do you try to read all the code top to bottom or, yeah. Do you have a certain approach? [00:34:04] yeah, usually it's gonna be like code tracing. so like with the docs one as was just like, 'cause we generate them so it's like unclear. It's a lot of Meta, go get this stuff and operate on it, and you're not actually seeing the things that you're using. [00:34:18] So it's in [00:34:19] our case, maybe it's marked down, maybe it's open, API spec, stuff like that. but like when I was, in a rails code base, you can Get a sense of like, where everything is in its, it's in, its in right drawer. we go look into the jobs folder, the controllers folder. What models do I have? [00:34:34] What database? oh, look at the schema. Potentially. [00:34:37] in other projects it's a lot more challenging 'cause you gotta figure out like how did they decide to set up their drawers, [00:34:44] and this project and where's everything at? but yeah, for me it's oftentimes just like trying to do that trace of if I was the code, where do I start from? [00:34:52] Where do I go next? Where's the control flow? And then, can I comment some stuff out to short circuit it [00:34:57] it stop, and then add my own thing into [00:35:00] it and keep going. is there a build process happening somewhere? [00:35:04] Are there artifacts? All that kind of stuff. [00:35:07] Nice. Yeah. Like [00:35:08] a task dependent, oh, I've got a task now I'm gonna go try to tackle that and [00:35:13] and like, [00:35:13] Start from the beginning and kind of work your way through, okay, the request comes in here, and then you follow it through the entire process to, to where it lands. Yeah. I like that. [00:35:21] I think that's like super effective, especially when it's a huge code base and you're like, no one's gonna go home and read that over a, glass of brandy in the bathtub with some nice waffles or something. [00:35:32] Yeah, it's almost like a, it's like a tracing die. It's like you are the tracing die though. So it's, [00:35:37] I'm sure that there are tools out there for this. but if you're new, you may not know how to use all those tools, I'm assuming all the observability tools are useful for this. And you can go look at Datadog or one of these like tools that gives you stack traces, but if you don't know what all the things are. You're like, oh yeah, it,that's what's happening every time there's a request, but what are those things? [00:35:57] Yeah, for a [00:36:00] while, one of the things I would do is change the. Code linter to something that's like completely different. And then try to go through and open up every single file, look at all the different like code, like the white space changes that were happening and what is the new style or whatever. [00:36:15] And I would throw away the pr, but oftentimes I'd just go in and rip it all up and change all the double quotes to single quotes or something just to try and force myself to visit as many of the code files as possible. But. when I tried doing that with the Stripe code base, it was just like, way too big to even consider doing something like that. [00:36:34] yeah, I don't know. there's like different approaches for sure, but, [00:36:37] CJ has relented the whole Stripe [00:36:40] Yeah, it is okay, let's take this robocop and just delete the whole thing and then,walk ourselves through the whole code base. But there, yeah, I bet there's probably like a product coming soon from some LLM where you're like, here's my code base. [00:36:54] Tell me what parts of this are interesting. Or Here's my code base and a bunch [00:37:00] of recent request logs. Tell me like. The most used like hot paths and what's interesting about them or something. So I don't know, [00:37:10] Yeah, I imagine, I mean there's always been security check tools and stuff, but I imagine a lot of them have AI assistance now for detecting, all the common vulnerabilities and [00:37:22] a lot of the things that used to use Hacker One for, it's like you can just add to CI step and watch for those things. [00:37:27] totally. [00:37:30] Cool. I think we've got some more we can chat about, but I think let's hold off on that until next time. [00:37:35] And yeah, tell everyone to go outside. Touch grass, [00:37:38] Yeah. Yeah. Go outside, touch grass and then you can head over to Build and to check out all the links and resources that we, talked about today in the show notes. [00:37:49] You can see your, before and after cabinet [00:37:51] photos. [00:37:52] right. Yeah. [00:37:52] hold you to that. We'll put that in the show notes as well. yeah, that's been it for Build and Learn. Thanks guys.[00:38:00] [00:38:00] See you next time. Bye friends. [00:38:07] ​ 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