We share our personal experiences and emphasize the importance of diverse teaching methods and creating content even when the subject might have been covered elsewhere. Mentioned were unique projects like an offline Wikipedia on a tablet and a hacked Casio watch that serves as a two-factor authentication generator. The session ends with considerations on video creation and the challenges of live streaming.
- Hackers Inc Fitness Episode - https://hackersincorporated.com/episodes/losing-70-lbs-getting-in-shape-and-15-minute-workouts
- By Mody Tutor - https://www.mybodytutor.com/
- My Fitness Pal - https://www.myfitnesspal.com/
- Sendgrid - https://sendgrid.com/
- Resend - https://resend.com/
- Rails Conf Webhook Workshop - https://github.com/colinloretz/railsconf-webhooks
- diataxis - https://diataxis.fr/
- Cloudflare Docs - https://developers.cloudflare.com/
- Crunchy Data Postgres Sandbox - https://www.crunchydata.com/blog/learn-postgres-at-the-playground
- Pragmatic Thinking and Learning - https://www.amazon.com/Pragmatic-Thinking-Learning-Refactor-Programmers/dp/1934356050
- The Dreyfus Model - https://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition
CJ: Welcome to build and learn. My name is CJ.
Colin: And I'm Colin and this week I thought we could chat a little bit about learning. we'll talk about the second part of the build and learn, as it's been something that we've been both learning a lot of new things lately. So we'll dig into that. But first we have some fitness check ins to do. How's that going?
CJ: I think the accountability thing has actually been going really well. Right. We have this Facebook group of dads who send each other pictures of their food. I feel like, you know, early Instagram days where everyone was just taking pictures of their food and posting it online. It feels very much like that, but, it's been really good at making sure that I. I'm eating healthy because I'm not going to, if I eat like a donut or muffin or ice cream, then I definitely feel guilty about it because yeah, I have to take a picture of it and send it to them and be like, I ate this. so it's like literally everything you're putting in your mouth, you take a picture and you send it to them. Sometimes it's hard. And I'll take a picture of my half empty plate and send it. But, It has been, yeah, I've been learning a lot in the fitness realm about vitamins and supplements and like all of this stuff for, trying to balance, different hormones and try to like, recover quicker and feel less sore. And, we've been exercising a ton just for. I don't know, a ton for us is like 90 minutes a day. I mean, I think I saw some video of you just like running through the mountains, like across these Sierra Nevada, Sierra Nevada mountain ridgetops. Just no problem. Colin's out for a 10 mile run. And I'm in my house on my little stationary bike riding 45 minutes and feeling like I got a good workout. But,
Colin: all counts. It all counts. that was an exception for me. I don't normally go out and do that, but that was
CJ: where were you? What was that? Yeah. Tell me the story. What, like.
Colin: Yeah, that was three and a half hours. That was, from, that was Mount Rose summit. So it was like 12 miles, I think, but very, very, a lot of vertical climbing.
CJ: Yeah. Colin's being humble right now. Go check out his Instagram and there's, or it, was it a story? Cause it
Colin: I think it was a story, but no, I mean, I hadn't done this since like 2019. So I was destroyed after this. I can just barely walk normally again today. So I don't recommend like you should definitely ease into these things. And honestly, I don't do 90 minutes a day. that's like back to our last episodes, like. Consistency trumps like these big like herculean things. So I'd probably be better at doing the 90th day and not do something, hurt myself, do something, be too sore to do anything else. but yeah, my friend was like super well trained up for a bunch of trail runs and I thought I would be able to hang with him. and I, I kind of did, he, he finished a good half an hour before I did. but. Yeah, it was, it was fun. But I think, it's good that you're getting out there. The, the Hackers Incorporated podcast with Ben and Adam, they just did a fitness episode and Adam really extolled the like, how well just taking pictures of your, what you're eating and sending it. Like he has a, he has an app that he pays every month for that. I think it's like 300 bucks a month for my body tutor. and they're checking in. It's accountability. It's mindset. It's, uh, you know, did you, what's, what are you grateful for gratitude, you know, and, and they really, he did focus a lot on, I would definitely recommend people check out the episode. I think they get a little, the opposite of body positivity. It's a little bit hard to listen to some of that episode just because a little fitness bro toxic, I think, but, like, yeah. You know, listening to this, I don't think everyone who's listening needs to lose weight and needs to have this, we know that life comes at you hard, that you've, people have got kids, people have got work. For me, it comes from a place of, sitting, Is the new smoking and like the amount of time we sit in front of computers. It's like awesome that we get to do this, but I also need to balance it with just being healthy and, being able to, play with my niece and run around and not bend over, get off the couch and not be able to move. so I would. Check it out. Obviously take some of the things that Adam says. I understand how he got there. I understand he's wanted to do this for a long time and probably had some, some negative self talk and things like that built up around it. But, I would just say like, we're not coming from that place necessarily. I think everyone has a goal that they want and that's fine. There's nothing wrong with that. But, we all don't have to look like, actors and actresses who get paid to look that way.
CJ: Right. Do you, so like along the lines of learning about fitness, do you, are you still sort of learning or are you mostly no, I know this, the several sports that I'm into and I participate in those on a certain frequency and that makes you feel good. Or do you seek out. like articles to help you improve with certain things or what's your current setup for your fitness lifestyle?
Colin: Yeah, I think this is one of those things where you can learn and learn and learn, but then you just have to do it. So like I have an Instagram folder that I save fitness stuff into and it's like routines and all these things. But the problem is there's more things in there than I do. And if I just stuck with one of them, you're going to see results. And so like, usually I just run. but I have a really light like kettlebell setup at home, and more like body weight, a little bit of kettlebells, like calisthenics stuff just because . I don't have a gym membership. I don't have a set of weights at home or anything like that. and I think actually Adam focused on that too, like everyone who wants to focus on macros is like that's only really going to make a big difference if you're like training for competition or something, versus if you focus on calories and movement and protein specifically, like that's most of what you need to think about. so again, back to the consistency, like you can read and learn all the things, but at some point you just gotta do one.
Colin: What about you?
CJ: I am still learning a ton. I think, my wife, Nicole and I were just talking about this, how we took this nutrition class in college and, paid very little attention. But, one of the things that we learned was how. Calories are measured for a certain food. And like right now you can go on my fitness pal. There's like tons of databases that you can basically look up any food and it'll tell you like roughly here's how many, calories are in this food and it'll break down the macros between fats and, proteins and carbohydrates or whatever. But, I, there were some foods where I was like, Oh, this is totally homemade. Whatever pasta or cookies or, lasagna. And I'm like, how the heck do you measure this? and so one of the rabbit holes I went down this week was like looking up this device called a bomb calorimeter, which is like this thing where you you. Put the food inside of it. And then it like burns the food and I don't know exactly all the details are, above my head in terms of the science of it, but it basically tries to figure out really accurately how many calories are in the thing. And, calorie coming back is just like a unit of energy. And I thought that was like a fun little rabbit hole, but yeah, I feel like I'm constantly learning. And this week I had my like annual physical with the doctor and did some blood work and, cholesterol and everything like looks amazing compared to last year when I did it. And we were talking about it, I wish we could do this, like every month, get a, get blood drawn like every single month because I feel like, yeah, it looks great now, but it's only probably only because I've been working out hard for a month, you know, and,
Colin: Well, and it's like, what's the granularity of your data? we're looking, it's like trying to fly a plane and you get data every hour. that would be bad, right? Why don't we get this every month? And obviously, healthcare is not cheap. Healthcare is not accessible to everybody. I rant about that a lot. Like the Whoop device that I use, I pay for that. Every month to have, because it's more of like my check engine light. I think we've mentioned this before of, I know every day, like if something's off, it's not necessarily like it's fitness related, but it's not necessarily like diet and exercise and those kinds of things. It's more of like stress and how well recovered are you and how much did you strain today? But yeah, having your like glucose levels, your blood, reports every month would be amazing to have that because then you can also look and see like, How stress. You know affecting that stuff as well
CJ: yeah, totally. Before we get into more details about what we're learning about, what are you, what are you building? How's your, calendaring app going?
Colin: Yeah, I guess I guess this is a good time capsule for the calendar app That's going well. I actually did a demo of it today for the team's that was fun But I'm getting pulled off on to something else. We have we have one virtual machine running on an older host that the company has had since Discord started and they want to get rid of it. It's like the last server. So my new job is to get the app off of that server and onto Google cloud. So I got to do that next week so we can finally kill. It's actually DigitalOcean, which I enjoy DigitalOcean, but it's, we just have one server there. So we're going to get rid of that. so learning a little bit more, like more DevOps y stuff again. Just, it's I have to relearn it every time I go back to it, but yeah, that's all I'm really focused on right now. How about you?
CJ: Very cool. We are, we're building all kinds of stuff. I'm starting to get real adoption for our like internal tool for managing the paint business operations. And this week I'm focused on, sending out a bunch of transactional emails that happen along the process. before someone. Has their place painted. We want to ask them if they have preferences about, you know, where we park and what door codes to use and like how to get in, how to get out and things like that. And so those types of emails, I. In the past have all really enjoyed putting in like open click tracking and trying to make, make sure that you, not only are we sending these outbound emails, but we know, are they being delivered when they're being delivered, when they're being opened, when they're being actioned? The way that I've done that in the past is most email providers let you set a header in the email when you're sending it. And then they also often will provide a webhook for different events that happen along the cycle of that email. And so with SendGrid, you can send one header that's like this big JSON blob. We are using an email service provider called Resend. That, lets you just send arbitrary headers. So we send over headers that include this is the idea of the project and the idea of the estimate and the idea of the recipient in the headers. And then in the webhook, we say, we store off the message and say okay, this, yeah, this message was opened and. If it's, something that needs approval, if they clicked on the link, then we, we're tracking all that stuff. So that's been interesting to track down. There's this thing inside of rails where I thought that the return value from the mail method inside of a mailer would give you back some object that was like the response from the API from the mail service. But, what I discovered was that. That doesn't really give you back the thing that you want and it's all async. And so the way that you can handle it is by, putting in an observer. So in an initializer inside of rails, you can create a class that is registered as an observer on active mailer base, and that can have. Like certain class methods that are called within the life cycle of mail being sent. And within there, you can check to see Oh, was the message delivered? And if so, you get like stuff about the message. So like the ID from the third party that identifies that message so that you can . Store in your own database. This was an outbound transactional email and then tie back all these events to that thing. working on that, it's been pretty fun to build out. and yeah, still. Playing around with Twilio. So we'll have to talk about that in more detail when we get there. But,
Colin: Are you guys using anything similar to a segment type of tool?
CJ: not yet we're, yeah, we're building all of the evented stuff internally. so we're just, we actually were using your webhook stuff that you talked about at RailsConf with Chris. So inside of jumpstart, there is an inbound webhook thing and there's some command where you can just say rails G inbound webhook. Service and it spins up your inbound webhook. There's a couple of things I added to it. but that's been killer. uh, the, Oh, the other thing that's been really killer from jumpstart is you can say rails G API API client, and then you just say, boom, here's the third party, and then it's, it like scaffolds out like the class that you would probably build. What are these headers and what's the base URL and what's a get and what's a post and what's a whatever. And then you can just get down to the business of writing your method that fetches the list of locations or, yeah, I'm using the Google places API to geo code and then we're using the directions API to send the address of the office. And here's the address of the client's house so that we know like how many minutes in drive time is it to that place? Because we might reject a project if it's too far away.
CJ: yeah, it's been,
Colin: So if you could just, that Rails generate API needs like, open API spec and a little, little GPT magic in there and it could just figure it all out for you.
CJ: Yeah, Mike, I think is going down the route of exploring how we might do open API,
Colin: It's one of those things like once the client's built, you really don't need it. So it's a little gimmicky, but like, you know, uh, end points you need. From Google places. So it's nice to just be like, okay, here's my class. Here's my end point. But if you end up integrating with a bunch of things, like that was kind of the dream with cloud snap, or there's a bunch of tools today that I don't know if the market's like fully embracing the idea of paying a company to be like even segment. It's an expensive way of sending your data to a bunch of places. Like segment itself does not do much, like it does a lot, but it doesn't let you see your data. You got to send it to somewhere else so that you can see that user journey and amplitude or something like that.
CJ: Yeah. Right now, a lot of this stuff is being built in house, but I think as we grow and we want to sort of unlock stuff for non technical teams, Oh, if you want to use Zapier to do something really fancy. With your entire team and we don't have time to build it. Maybe we'll build a Zapier integration that just hooks into all of our evented life cycle, like event life cycles for projects and things. But for now, we're just building everything as fast as we can natively. And then integrating with the third parties that we need data from, or we're sending data to, and that's kind of it. So
Colin: yeah, I find that usually to be better, so that's good.
CJ: Very cool. What are you learning this week?
Colin: Yeah, so the topic of learning for this week's episode, when we were putting together the show notes, I have been putting this on our list to talk to for a few weeks. and it's a tool, more of a framework called Diataxis. and the website is diataxis. fr. We'll put a link for it in the show notes because it's a, it's an interesting spelling. but it's a way of like organizing your way of thinking about documentation. And so the why I thought this might be interesting is for us to talk about like how we learn things because what this framework gives us is four different ways of organizing different kinds of content. And, obviously you're no stranger to this. At Stripe, but there's different ways of displaying things like you have an API reference. The reference itself like doesn't teach you anything. Like when I end up on the Ruby on Rails or like a pure Ruby like method doc page, I'm like, what am I looking at? If I've never called that thing before, like even learning how to read a reference doc. is a skill because you, it looks like Greek. like even if you know the language, you're like, I don't know what all these things are that this function takes or this class, represents. so it breaks it down into four areas, which is tutorials, how to guides, explanation, and reference. And those first two kind of sound. It's very, very similar, but, and I'm not going to give a full rundown of like what all the differences are, but if you're interested in being able to organize this, if you're working on your own docs, if you're working on even thinking about yeah, I need, oh, that's reference, that's how to guide. it's pretty clarifying, like we're going through and I think most people are like, Oh, a tutorial and a how to guide are the same thing. But a how to guide would be like very, very specific. Like some of the stuff you're doing with this email stuff, it's like, this is the guide for click tracking. Nothing else, right? It, it, it's goal oriented. It's not like you already know how to code, you already know how to send an email, but you had this very real world specific example. Whereas a tutorial is more like, we're going to build our first bot today. And through those processes, you're going to learn all the things you need to know about the ecosystem, of building a bot. And we're not going to talk about hosting, we're not going to talk about all these different things that should be how to guides instead.
Colin: Yeah, it's more of a loose guideline for being able to talk to your team without just like those heated arguments you have a thing to, to, Point to, and so there's like an axis of practical to theoretical and then learning and goals basically. So like outcomes are like how to guides and reference learning is more of the tutorial. And then maybe you might have an explanation. So explanations might be like, like we have a web socket gateway, right? You might just want to have a why, what, when. And how does the gateway work and why do we use WebSockets? It's to deepen your understanding. You don't need to know all of the things about the gateway to use it, but you eventually will want to deepen your knowledge so that you can use it in ways that like, you're like, Oh, I wonder if I could do this. And you're like, yeah, you can. the being able to send an invoice is a great example because you're right. Someone as an end user might. have land on a page and they want to just know how to do it from the UI. How do you do it in the rest API? How do you do it in the SDKs? Like, those are all different things that you're going to get hits on. And part of learning and as a developer, it's like deciphering what page you landed on to see if it's the right thing you're looking for. and. We can try to help. I think Cloudflare, Cloudflare's documentation all uses this framework. if that's a pretty good example of going and looking at one that already has followed this, and then you brought up. which I'll let you explain a little bit about this, that there's different learning styles within that. So are you a visual learner or an auditory or are you more of a kinesthetic learner? And it's even as a content creator, it's do you put out just audio? Do you just put out video? Is it, you know, is audio work in YouTube form where it's me watching your screen? Or is it a, do I need to get out like Excalipad or something and draw it, right? It's going to be. Very, very different. you know, when you're talking about a database on a podcast, it's, it, not everyone learns that way. and I know some of the things that we talk about on here with like headers and APIs, doesn't translate to radio all that well, but we're also not trying to teach it to you. We're trying to just chat about, you know, what, what frustrates us, what excites us
CJ: terms of learning styles, I remember thinking. Growing up, Oh, I, I'm a bad reader at some point, like someone had told me like, you're not like good at reading. And then I, that sort of stuck with me and became like maybe part of my identity through early adulthood and just feeling Oh man, I don't, I wish I knew, I wish I knew how to read so that I could like, absorb as much information that other people are getting. And then about two years into college, I started watching YouTube videos. And learning I would do the open courseware for linear algebra from MIT and use that to supplement what I was doing at like in college at UNR. And I was like, Holy smokes. if there's videos for everything, that's like my preferred learning style. And then I just started finding as many video based training things as I could and just like soaking them up. And I think, I mean, these learning styles are a little bit interesting because it's kind of broken up into visual. if you have visual and auditory, right? Like visual might also be like someone who reads something. And so like, I didn't really identify as someone that was strong visual, but watching a video is definitely visual. and yeah, maybe it was the combination of the audio visual together that worked really well. I also tend to listen to tons of audio books, but for me, I think figuring out that my primary learning style is auditory. My secondary is visual was really, really core in figuring out, the kind of content to seek out in order to learn that thing. but yeah, it's been interesting. To think about too, when teaching, like how do you present the content in a way that can adjust and be useful to people of all three of these different learning styles? so yeah, like embedding videos in the docs that have, tutorials and how to guides and even some explanation, I think. Is the future. We'll see if that, plays out because video is very hard to maintain in terms of documentation. But, yeah, what kind of a learning style would you say that you tend towards?
Colin: I think, yeah, I mean, it's all, all three for me in that I would need to watch a video. And then reinforce it like kinesthetic in this case would be like learning by doing so, we're not dealing with like things you can really touch with your hands, but like I need to just try it. and so sometimes you can get that with like actually crunchy data is a good example They have this like postgres sandbox and they have a little tutorial next to it So they're explaining it in a written form and then you're actually writing the queries And like I actually had, you know using database indexes forever, but i'm like I really Don't understand these as well as I should like, or like primary and secondary indexes or, all these different things. Like why, why is this query taking so long? Those kinds of things. And so you get to learn by doing and they're like, we're going to spin up a, like a docker container with a shit ton of data and you get to see it versus me just telling you like, Oh yeah, if you don't do that, it's going to take a long time. You're like, okay, I heard it, but I didn't feel the pain of it because I've never had to feel the pain of it myself. and I think what you were talking about with algebra, like when you go to school, you don't get to choose your teacher, right? You sometimes you do, you're lucky, but you're still getting that it taught from one perspective, one angle, and it's their teaching style. So if you can supplement it with these other styles, you get different perspectives. That's sometimes just like a few degrees off that then allow you to also absorb what the teacher was teaching. Whereas before there was like no light bulb. And I had that, like when I actually in college, got a, it was basically, I basically almost failed out of my Algebra class. And I was like, the next time I retook it to replace the grade. And I basically just went to every office hour and I was like, okay. I heard you. I don't understand you. let's do it. And that might've been the more kinesthetic, let's actually do it together. No one else is at office hours, so I'm going to use it, as that time. And with being able to go look at YouTube and watch four people explain it in slightly different ways, you build a better worldview for it. Obviously you have to do that for everything you learn. It's going to take you a really long time to learn stuff, but. I almost wonder if you get this a little bit and then the Stripe docs, you get the written form, there might be a video and then there's like a sample app, which is probably the more kinesthetic way.
CJ: hmm, Mm hmm, Yeah. It's also when I am teaching something, sometimes I get blocked. I'm like, I don't want to post this video because Someone else has already taught it. Right. And, oh, there's already a rails cast about this or go right. Chris has already covered this on go rails and five videos, but then I'll end up doing it in maybe the difference too, is that that might be a how to guide and I'm doing a tutorial or vice versa. But also it could just be like, literally I'm saying the words that I would say to explain it and they say the words they would use to explain it and different people are going to resonate with that. So the take, the big takeaway there is like. Don't ever hesitate to put out content, teaching people something that you feel like you have a little bit more knowledge of than they might have, because it's going to help somebody.
Colin: I've noticed that almost everything, like when I was learning Terraform, there is a lot of getting started guides, like a lot, like every, everyone who found Terraform and loved it wrote a blog post on how to get started. And then it just ends. And I'm like, but I'm trying to do. the fourth thing that everyone needs to do with this thing. And there's like no tutorial for it. There's no guide. There's no. And so I've always thought about that. yeah, I think it's easy to look at YouTube and others and be like, there's already so many people teaching out there, sure. Put out a getting started guide, but. Take it to the next one. Like some of the best things that I've seen. I actually found someone on Twitter. I'll have to find them and link them, but I think they're a CTO at a company and they wrote this great blog post. Ever since they read about the library of Alexandria and it burning down, they've always just been fascinated with that idea of like knowledge disappearing. And so they got this remarkable tablet. It's kind of like a Kindle writable tablet. And they downloaded all of the current, like the most recent version of Wikipedia and put it like offline on this tablet. So now it's like all Wikipedia in the palm of your hand offline. hopefully you can still charge it if there's some like post apocalyptic event. Right. But now you have all the knowledge in the palm of your hand. And I just thought like it was such a detailed, description of things that it's like, you would not find that elsewhere. They also hacked a Casio watch to just be like, To be a two F a, number generator. And so like at any given time, it's just constantly showing four numbers and then it would recycle them. And it was like very, very low level C and, but it was like maybe four lines of code and a little, like a little, chip that I don't know if they had to replace it or rewrite it or what they did, but it's just like that level of detail, like it was so fascinating. And I learned, like, I wasn't planning on learning about those things that
CJ: Mm hmm.
Colin: I did. And I followed the rabbit holes of like, okay, how did he figure out, what he had to change in the watch and does it still work as a watch? I'm trying to figure out where we're probably going to start doing videos at work, but I wanted to start doing my own personal ones. Maybe streaming, streaming is a little more intimidating to me, but Even I'm sure if you hit go, like no one's watching, so it doesn't need to be, but, you don't get to edit, you don't get to work through that stuff.
Colin: yeah, so this is actually a little bit of an older book, but I highly recommend it if you're interested in all this stuff out there. it is, the sub head is refactoring your wetware, by Andy hunt. So it. is literally like a software developers approach to thinking about neuroscience and how we learn. it's a book I go back to probably every four or five years just to rethink about how I learn, but also this was, I think I found it when I was doing quite a bit of teaching in person. So it's, There's a model in there called the Dreyfus model around how we learn. So I think like one of the good things that someone wrote down was like, you learn how your brain works and then you learn how to use your brain to learn more things. so it's if your brain has bugs in it, how do you refactor? How do you get around those? And maybe it's not a bug you can solve for. maybe it's just like, how do you get more focus? How do you get more attention, especially now? I don't think, I mean, this book was written before our phones were really, really fighting for our attention. So I'm sure Andy could do a revisit on this book for sure. But you know, how do you go from being a novice at something to being an expert where I'm sure you felt this, but there's a point where you just cross the threshold that. You don't, there's not, it's not like a video game. There's no, like you didn't level up, but all of a sudden you're like, I actually understand how this is working. It's like awesome feeling. And you still will have to check the docs. You'll still have to Google things or chat GVT things, but, but you can get it. It done and I think that's it's a good book for that
CJ: Very cool. I'm going to pick that up. That's awesome. Yeah, I love, thinking about just neuroscience in general is just like really interesting, right? and also I feel like we don't know a ton about it. So every time I get into it, I love, learning about how we learn.
Colin: Yeah, and if you're interested in this stuff and you want to read a neuroscience book that's like Hard to find things that are similar like that we can relate to So like coming at it as a software developer from a software developer definitely helps with that
CJ: Amazing. I think that might be a wrap
Colin: the learning episode
CJ: the learning episode, learn, learn to learn, and then you'll learn
CJ: always. You can head over to build and learn. dev to check out all the links and resources in the show notes. Thanks so much for listening.
Colin: All right, we'll see you next time.
CJ: 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