Joel: Welcome to No Compromises. A peek into the mind of two old web devs who have seen some things. This is Joel.
Aaron: And this is Aaron. I'm pretty tired, Joel. I got to warn you. I don't know how this podcast is going to go. I can barely keep my eyes open actually.
Joel: I wish we were recording in person, I could just slap you across the face.
Aaron: I mean... Okay.
Joel: To wake you up. You see people do that in the movies.
Aaron: Oh, okay. But I just kind of wanted to talk about the reason why I'm so tired and it was, I did something last night that I haven't done for a long time. And it got a little out of hand and I feel some way about it. And I think it's important to share it with the Mastering Laravel Community.
Joel: And with me. This is news to me, I love it.
Aaron: Yeah. Which is I was working on a little side project in a different language, in Python.
Joel: Oh, I've been there.
Aaron: And I just couldn't quit it. I was just working into the night. And you know how it is.
Joel: Not a literal, "I couldn't exit the editor." Like, you just were so-
Aaron: Oh, no. No.
Joel: You were just so into it, you couldn't stop. Okay.
Aaron: I wouldn't even say into it. I would say at first I was into it and then it turned into something else, and that's kind of what I want to talk about a little bit today. Which is, it was really difficult to work on this task because basically, I'm working on something actually in MicroPython. And it's nice because Python has enough similarities between itself and PHP and JavaScript that I can sort of program Python, but I can't. So already it's a little frustrating. You're like, "Okay, I know how it is but I don't really do this." So, this is how the import works for Python versus what I know how to do in JavaScript or something like that. So you got this one frustration mark. The second thing is that it's actually MicroPython, which is a subset of Python.
Joel: Sure.
Aaron: So all the APIs don't necessarily exist and the ones that do are maybe are different. And it's a great solution, just it's hard to find all the answers. And the people who work in that technology are really smart and really focused on their thing so all their answers are focused on, "If what you're talking about." Their answer is focused on that. It'd be like if someone came to Laravel Community and said, "Hey, so what's a .emv file?" And we said, "Well, the best thing to do in Laravel is actually configure your config file to different PHP files then you use your environment to..." you know, we go on this whole spiel. It's like, well, that's actually great information for that person to know and it's also harmful in a way because you just gave them too much and they don't even know how to process that-
Joel: They don't have the context to use what you gave them. So with the MicroPython thing, it might even be you search for an answer and you get on Stack Overflow and the answer would work great in Python, but not in MicroPython. So like you had the other layer of translation to do when trying to get your answer.
Aaron: Yeah. So then we step it on further, it's actually working against an ESP32 board. So it's a piece of hardware and I'm used to working with software just solely. So if something doesn't work, control C and control X or whatever, reboot it or whatever. Whereas, I found myself... Okay, so flashing firmware and then sending it up there. And it remind me of compiler days when I used to work in Pascal, you'd have to go and you write your stuff, you compile it, you run it. That whole process of different languages and be compiled versus the runtime compile like we use in PHP and stuff like that. So you got that going on. And so all these different things were really stacking up and it was getting later into the night. And then I was getting that feeling like I got to finish this, but also why am I the worst?
Joel: Oh, no.
Aaron: Why am I the worst at this? Why can't I figure this out? I'll never be able to figure this out. I shouldn't have even started this project. So I don't think that's probably a unique feeling for a lot of programmers and also it's a fun sort of feeling to experience on your side project too. Because you don't even have to do this, you know?
Joel: That's right. You're being frustrated by choice.
Aaron: Right. And that's the reason I kind of want to talk about it, it's because a lot of times we talk to people and we say, "Do a side project," or, "push yourself a little bit further." And we don't necessarily address that feeling that comes with that, which is what I'm talking about right now. So I thought I'd share that, be a little bit vulnerable. And maybe ask you, Joel, do you have any steps maybe when you run into something like that that you take to keep yourself in line?
Joel: First of all, I have to go back. You said frustration mark and I'm picturing some new piece of punctuation. I don't know, maybe there's an emoji that we could use, but I'm like, "Hmm, I like frustration mark. Right next to exclamation point and question mark."
Aaron: Oh, there's a, what? Well, that's right next to the interrobang.
Joel: Interrobang. There you go, maybe that's the frustration mark.
Aaron: Yeah.
Joel: I like that. Because it's like, "What? What!" It's got both of the emotions in there. Okay, I'll try to be helpful now. I can actually relate a little bit to what you're saying and it's not in the context of a side project. But I was recently doing some continuing education and and there was a web app. It wasn't web app, it was just application development and Python was the language. And I kind of went through some of the same things. I didn't have the layers you did with MicroPython and hardware but it was just sort of like, "I know how to do this, how do I do it in this thing?" and the frustration of that. And you're not going to like this, but I actually did use some of the ChatGPT to ask the question, "How does this concept for PHP translate to Python?" And I would say it was, I'm making numbers up but 90% of the time it was, pretty helpful. Because I didn't even know sometimes the question to ask. Like, you were talking about imports and there's common programming translate variable scope or loop or things like that. But then you, especially when you start dealing with packages and different APIs, it's like, "I don't even know what this is called in Python." So that was one thing I found useful to try to take the knowledge I have and then, "How does this translate into this other environment?" I don't know if that sits with you well at all, or if that's even something you tried or considered.
Aaron: There actually, I think there is a website. We'll have to see if we can figure it out and put it in the show notes. There's something like if you know this language this is how you do that in that language.
Joel: Oh, okay. Like a reference that just exists.
Aaron: Yeah. I mean, it wasn't super detailed but it was enough to kind of get you going on some of this stuff so I've used that before. But, yeah, I think that that makes sense. Like I said, you take what you know and you kind of adjust it to this new paradigm and say, "Okay," and use the tools. The other thing that I found helpful, which was to remind myself that I've been programming PHP now for two decades and I had just started this thing two hours ago. You know, to put stuff in proper context too is... even if you've only been programming for a year or two and you take on next thing, remember that everything's kind of like it rises exponentially too. So the things that were harder for you to learn before are going to become easier and easier and new things will become harder.
Joel: Right. So kind of managing because I sort of addressed the technical side of it. But there's the emotional side of it too, which is the frustration and the self-doubt and like "Ah." Maybe the experience you had another PHP developer would be like, "You know what? Before I work on this side project, I'm going to completely port this whole ESP library or whatever, to PHP and then I could just do the thing that I know how to do." I've seen that so many times where a project that works perfectly well in another language is ported just for that familiarity. But I think what you said about reigning in your expectations based on the length of experience you have in one domain and this new domain being radically different. The other thing too, and I don't know if this is probably harder to do when you're late at night and you're already a little tired and maybe cranky and you just want this thing to work. But almost try to recapture the fun you had when you were first learning programming. Because I know for myself, I learned it just as a hobby, I wasn't learning it to accomplish a business objective or to get a job or anything like that. And it was just kind of fun. Bouncing into things and like, "Wow, what does that mean?" I don't know tactically how to do that, but there is that mindset of a challenge. Like, doing a puzzle is fun, being stuck isn't fun, but if you can reframe it might might help that emotional side of it.
Aaron: Yeah. I think I can definitely see that. When you make the advances that you want to make or when it's not 2:00 AM and you can see the end. Oh man, that's what it was last night, 2:00 AM. And I know there's like a half an hour left of good work to get this working. And boy did that half an hour stretch out to be another hour. And then I said, "You know what? The problem is me."
Joel: We recently took a family vacation down to Florida and one of the things we did that was fun was we went to the Kennedy Space Center, Aaron. And I'm not really a space nut or anything, but I like technology, I like history and it was cool. So, one of the things that you could do is they have a bus tour that kind of takes you through outside of the museum theme park area and kind of out to some other historical sites. To the launch pads and all these different things. So one of them was the original control center where all the Apollo missions ran. It's still there, all the computers and stuff are still set up. And it was like the geeky part of me really enjoyed that.
Aaron: That sounds a lot like something you'd like.
Joel: Yeah, I did. So they even simulated one of the launches and the computers lit up and the different screens and all these things happened. But anyways, when you finish that part of the tour, you walk under one of the giant Saturn rockets, but you get to the end and there's stuff about the moon landing. And one of the things you can do is they have an actual bit of moon rock that you can touch. You're not supposed to touch a lot of stuff in this thing, but they have this one rock where like you can go touch it. So a lot of people did it. There was actually a little bit of a line to get to go touch the moon rock. So our group-
Aaron: Gross.
Joel: I know. We're like... I don't know, it's not a super long line. Two, three minutes. My dad is with us, we get up to it, all of us touch the moon rock and he's just got his arms crossed. And I'm like, "We just waited in line. Are you going to touch the moon rock?" He's like, "Eh, I don't care." It just kind of boggled my mind because there's not a lot of opportunities, I think, you'll get to touch a moon rock.
Aaron: No, no, no, no, no, no. Your dad is my spirit animal.
Joel: Okay. This is what I was going to say. Would you touch the moon rock, Aaron? And if not, why? What's your reasoning?
Aaron: No. And I don't even understand how you're going to ask why.
Joel: Is it a germ thing?
Aaron: Yeah.
Joel: Put some hand sanitizer on your hands when you're done. You touch the moon rock now.
Aaron: But why would I need to touch the moon rock?
Joel: Because it's like from space.
Aaron: So?
Joel: Okay, all right.
Aaron: I mean, there's a lot of cool stuff.
Joel: I'm never getting you and my dad in the same room.
Aaron: Well, there's a lot of cool stuff that I don't have to touch to appreciate.
Joel: Okay, so I was thinking about this the rest of that day. And I'm like, it is a little dumb to be like, "Ooh, I have to touch that thing." Like, "Do I have to taste it?" You know what I mean? Like, what are all the senses I have to involve? But there is something cool about seeing the moon up in the sky and it's this distant thing I'll never go to because I won't. I hate space, I would never go into space. And now here's a chance I can touch a little chunk. So it makes it more real and connects me to it. But you're not buying it, I get it.
Aaron: No. No, just not my thing, I guess. I'll just look at the moon and think, "Wow, Joel had his hands on you." You know it's embarrassing actually. There's a place where there's people around all the time, I should have just messaged them in a random channel and I didn't.
Joel: Are you talking about the Mastering Laravel Community? If you want to check that out and see what Aaron's talking about, head to masteringlaravel.io and click on community.