Math Quiz App with Leah Thompson
Joe (00:05)
Hello and welcome to Side Project. I am your host, Joe Tannenbaum, and today we have Leah Thompson. Hi, Leah.
Leah Thompson (00:13)
Hi Joe.
Joe (00:14)
Do you want to give the people a little intro? Let them know a little bit about you just to like get started.
Leah Thompson (00:19)
Um sure. So like Joe said, my name is Leah Thompson. I go by Leah T Codes on Twitter, Twitch, and now YouTube. My background is actually in mathematics and I worked as a former high school math teacher and then I self taught myself web development to become a developer. So I've been working as a developer for the past two years now.
Joe (00:44)
So you went from high school math teacher to what was the, I'm just curious, like what was the impetus, what decided to drive you into software development?
Leah Thompson (00:46)
Mm-hmm.
So it's kind of funny. I always hated teaching. I never wanted to go into teaching. It's
Joe (00:56)
Whoa, shots fired, shots fired, okay. Now we're
Leah Thompson (01:00)
like instantly the hot gossip. No, it's like nothing against teachers. Cause teachers are amazing. But it's like, I always knew I didn't really want to teach. Like that wasn't for me, but I graduated during COVID.
Joe (01:09)
Okay.
Leah Thompson (01:12)
So I was in Florida and I graduated in May of 2020 and so the jobs I was going to go for were like research analyst and stuff like that because I wanted to do applied mathematics. So I was looking at jobs like that at the University of Florida but it closed down because of COVID but I couldn't move because my husband was still in college and we didn't know when it was going to open back up and DeSantis
Joe (01:21)
Okay.
man.
Leah Thompson (01:36)
The governor of Florida didn't want to shut down the Florida schools for like the start of the school year in August of that year. He wanted it to be in person. So they really needed teachers. So I really needed a job. It's a lot. It's like, I really needed a job to support my husband and I, cause he's still in college and I needed to like make more money. Cause I was just a cashier at Publix at the time. So I went into teaching. So I taught.
Joe (01:44)
Right.
man, the timing of this is wild. Okay.
Yeah.
huh, sure.
Leah Thompson (02:06)
high school geometry and I had to teach half online and half in person during COVID.
Joe (02:11)
You're doing both at the same time you had a classroom in person and you are also being like streamed online.
Leah Thompson (02:16)
They wouldn't even let us stream because they were like, there's like issues in case they record the kids talking or whatever, or a kid walks in it. So we had to like teach in person and then I'd have to like take time to record videos to post for the online kids or like respond to all these emails and like grade all their work. Yeah.
Joe (02:31)
my goodness. my goodness. That is, we, yeah, I mean, it's been said a million times, hope we don't pay teachers enough for that, for sure. No. Okay, well, that's cool. And how long did you do that before you got into software?
Leah Thompson (02:40)
Mm-mm.
only for like a year and a half.
Joe (02:49)
Yeah, you're like, that was my limit. I hit a hard wall, we're out.
Leah Thompson (02:53)
It was like, the first year was like mental health was really bad. The second year it was like my physical health was like, I'm done. And so I ended up in the ER. I ended up in the ER and then I never went back. I was like, I'm done.
Joe (03:00)
Yeah.
my gosh.
I think that's reasonable. think that's your mind and body saying this is not for me. Yeah. OK. Well, I'm glad you got out. And welcome to the wonderful world of software development. So I'm also a self-taught. What was your mechanism? How did you get into it?
Leah Thompson (03:11)
Yeah.
I did 100 devs which is a program that was run by Leon Noel. So it was a free boot camp to learn full stack software development using the MERN stack. So all JavaScript, like MongoDB, Express, React, and Node. But he streamed all the classes on Twitch. So whoever wanted to join could join it. The classes were live streamed on Twitch. It was twice a week. It went from...
Joe (03:28)
Mm-hmm.
Uh-huh.
Leah Thompson (03:47)
January of 2022 to like October, November. And then we were in like a discord server, which there's like 40,000 people in that server. So it's really big. Yeah. And he would post homework in there and then he would do the homework and like just try to build stuff, try to change little stuff of the homework and stuff like that. And I did that, really got into it, started like posting on Twitter and stuff about my projects and about me learning, started live streaming on Twitch during learning it. And then...
Joe (03:51)
Okay.
Okay.
Leah Thompson (04:14)
From there, I just kept doing other stuff. So I did like Scrimba to learn React more. I did free code camp to learn a little bit of Python, stuff like that.
Joe (04:22)
Nice. Okay. And then what is your day to day now? What are you coding in generally?
Leah Thompson (04:27)
Day to day now, I'm at, now we're on the Rilt stack. So, React, Inertia, Laravel, and Tailwind.
Joe (04:34)
I'm so, I was like, what's Rilt? didn't even, I literally, that's wild. Okay, I'm with you now. No, you don't, you're fine. My brain just was on a three second tape delay there. Okay, so Rilt Stack, yes. Okay, cool, very cool. Yeah, yeah, yeah.
Leah Thompson (04:38)
I think I say it weird. like can't pronounce the T. Okay.
I just learned the stack so don't feel bad. I didn't even know I had a name at first. But whenever I got hired for the project we're on, because it's kind of like independent contracting under like a friend's agency. But we were first using, it was like React, React Tailwind, MySQL, but we were using Next.js and Node for the backend. But then we also had like an API built in Rust that like none of us know how to like touch because like.
Joe (04:56)
Okay.
Mm-hmm. Mm-hmm.
Leah Thompson (05:11)
We were having issues doing certain things in the next JS part. And so we were like, screw it, we're going to Laravel. Like we're just going to Laravel from next.
Joe (05:18)
Amen, thank you. Yes, please. That's great. you're, but you're relatively fresh to Laravel, is that right? Okay.
Leah Thompson (05:27)
Yeah, and even when we first transitioned to it, I was doing more of the front end work. Like only lately have I gotten into doing more on the Laravel side, like with the, the map traversal stuff, the graph traversal stuff I was tweeting about that has to do with like the stuff I'm having to do on the Laravel side now.
Joe (05:31)
Mm-hmm.
Okay.
Gotcha. Okay, cool. So that brings us to what sort of stuff are you building? What are you getting into? Like, so you're using it at work, but you're also doing, at least one side project, I don't know if you have multiple, but I've been watching the math quiz that you've been building. So can we talk about that? is the purpose? What are you thinking about with it? Where did it come from? How are you building it?
Leah Thompson (05:51)
Mm-hmm.
Mm-hmm.
So the math quiz app, funnily enough, I actually had built it two years ago and it was like my capstone project of like everything I learned. But I built it using React, just vanilla JavaScript, no TypeScript, no Tailwind, just regular CSS and using like, I think it was Flask. So Python, Flask and then socket IO. So it was kind of a nightmare. It was a nightmare.
Joe (06:14)
Yeah.
Okay.
Leah Thompson (06:31)
Like it, I couldn't get it deployed at the end. It was like one of things you would touch one line of code and all the socket connection would break and it's like, it gets screwed up. So you're like fighting against it. I didn't know like state management or anything at the time. So it's like prop drilling everywhere. It's a nightmare. Yeah.
Joe (06:37)
no, yeah.
Sure, sure. Yeah, yeah, yeah. But now, but isn't it fun to like think back on that project and be like, wow, I could build that so much better and so much faster with the tools and the knowledge that have now. love I love looking back on those little those little projects that you built back in the day and being like, man, I the problems I was running into are like non-existent in my brain anymore. It just I just know now. So now you're now you're rebuilt. You rebuilding it or you're building it fresh, new scope. Like what's the.
Leah Thompson (06:55)
Mm-hmm.
Yeah.
Joe (07:14)
What's the plan of attack on this one?
Leah Thompson (07:17)
So I'm rebuilding it, but I'm not like even looking at the other one for reference. I'm just kind of remembering like how I set it up. So like how I first set it up was just getting it to randomly generate the quiz questions. So that's like something I have. It's like instead of having an API that like has some questions I hard coded into it, I like wrote functions to randomly generate the questions.
Joe (07:30)
huh.
Cool, so you're building questions on the fly. Okay, very cool, very cool, okay.
Leah Thompson (07:43)
Mm-hmm.
So right now I have a seeder and factory set up to seed the, I think it's the problems table with like 100 questions at a time. So it's like, can just keep adding more and that way people aren't likely to see the same questions over and over again. Cause I was scared of that if I just had, I don't know, like a certain amount that's in the database or in the API that I would have to put in myself, you know, especially because it's supposed to be multiplayer.
Joe (08:04)
Mm-hmm.
Yeah, yeah.
Leah Thompson (08:15)
So I haven't added in reverb yet, but that's why I wanted to rebuild it with Laravel is because I was at Laracon and I saw the talk on reverb and I was like, I have this amazing to use for the Math Quiz app. Mm-hmm.
Joe (08:23)
Yeah.
Dixon did a good job selling that one. He's like, look at this drone I'm flying on stage. Don't you want to use reverb?
Leah Thompson (08:33)
It's like, if he can make a drone fly with it, I can at least make my multiplayer math quiz up.
Joe (08:38)
yeah, yeah. So actually, okay, let's back out. I don't even know what the app does. Tell me what the intention of the app is. Like, what do you want it to do?
Leah Thompson (08:48)
The intention, okay, so I basically built it for fun. So mainly for me because there was an app I used to play on my iPhone, but the developer quit updating it, so it got taken off the Apple Store. But it was where you could be quizzed on calculus concepts and stuff like that. So you would click integrals and it would give you 10 or so questions on integrals and then you choose the answer and you go through and at the end you get a score. So that's basically what my app is.
Joe (08:53)
Yeah, for sure.
Okay.
Leah Thompson (09:16)
But right now it's only for like addition and subtraction because I just started easy to try to build it up. yeah, especially I want to add in multiplayer before I get too crazy about adding in like calculus and everything. but
Joe (09:20)
Right. I think that's sensible, yeah.
Okay. And so what's the multiplayer mode about? Like how does that work?
Leah Thompson (09:33)
Basically it's the same idea, like you go to the website, whenever you decide what math operation you wanna be quizzed on, like addition, subtraction, whenever you click that, it will generate a quiz that has 10 problems. So you see those 10 problems, but it will also open up a socket room, and it would give you a code that you can copy and give your friends, and they can use that to join the same room as you. So they'd see the same 10 questions that you do, and then you're competing against each other.
Joe (10:00)
Okay. Yes. So a time, like a time-based thing or accuracy or both.
Leah Thompson (10:06)
So the OG version of it was just accuracy, I think a time-based one would be funner at even more competition.
Joe (10:10)
Okay.
Yeah, so it's like whoever can get this done all correct first is the the winner sort of thing is that or or like as many in. Yeah, yeah, yeah. OK. Do you remember? I don't know if this was just my school, but when I was in elementary school, we used to do what we call mad minutes. Did you ever do mad minutes? They're probably I mean, kind of a terrible name for it, actually. But you had this you every every kid got like a sheet that.
Leah Thompson (10:19)
Like whoever gets the highest score.
I so.
Joe (10:40)
had like 40 questions on it that was whatever like whatever concept you were exploring in math at the time and they would they would start a timer and you had a minute and you would get through as many as you could but the first one that you got wrong was as many so you got only as many as you got right in a row so if you like did all 40 but you got the third one wrong you only got like a score of two and then like whoever like wins the mad minute for that day like it's like i don't know a pencil or whatever the whatever we're giving out but it was a
Leah Thompson (10:57)
Mm-hmm.
Joe (11:09)
stressful and fun. was both things, but it kind of reminds me a little bit of that where there's there's like a time element and you're kind of playing against your your your classmates or your people on the Internet. That's that's cool. And have you and so you already worked with like WebSocket stuff. It sounds like in the old project. OK, so now you're just kind of like translating that knowledge over to like, OK, how does reverb work with this is our.
Leah Thompson (11:30)
Yeah, and trying to clean it up because before, like, I had never used WebSockets before, so I was trying to use it and it was kind of a mess. Like, at first I was using, I wanna say, I think it was FastAPI for the Python backend instead of Flask, but then the documentation for the socket IO...
Joe (11:36)
Okay.
Mm-hmm.
Leah Thompson (11:48)
package for FastAPI wasn't documented well. So I could never figure out how to like work it. So then I was like, screw this, I'll go to Flask because Flask had more documentation. I got it working there. But then like between the React, like the front end and the back end, the socket connection was just like a mess I feel like. Like it was like certain things. Like I'd had the socket on connections, but then the socket on connections would like trigger actual like post requests and different stuff. So it definitely could have been, it was a mess.
Joe (12:16)
boy. Okay. Well, hopefully, excuse me. Hopefully the tight integration of like Reverb and Laravel and the stack that you're using hopefully is a smoother situation. What are you finding most interesting about building this so far?
Leah Thompson (12:19)
Yeah.
Mm-hmm.
I think I should be.
Basically just learning more about Laravel, guess. I started this, I think, around the same time I started doing Laravel, more for work. So of course there's stuff I'm doing that's not very PHP developer of me, like the way I write something. So it's like learning how to do that. I made a YouTube video of the walkthrough of my app so far and...
Joe (12:32)
Like is anything tickling your like, yeah.
Okay.
Leah Thompson (12:54)
Povilas messaged me and was like, can I do a code review? And like already gave me like pointers of some of the stuff I was doing. Like some of my stuff, I think I had it in like the controller instead of the model, like some of the methods. So he's like, you can move that there. I was using arrays, PHP arrays and not collections. So I've been learning more about collections, Laravel collections, just little stuff like that. I just like learning. So I feel like I've learned a lot more about Laravel and stuff building, something like this.
Joe (13:00)
wow.
Mm-hmm.
Okay, yeah.
Yeah.
Did you have PHP in the back pocket before you started this? So you're learning PHP and Laravel at the same time.
Leah Thompson (13:25)
No.
Yeah, so I'm from a, obviously from JavaScript background, did, and also my first job in tech was as an email developer, which is like making HTML and CSS for marketing emails. Yeah, so for a year and a half, I was just doing that at work. So a lot of my back end skills like laid stagnant, it was just fighting with outlook and stuff, know? Like really.
Joe (13:34)
Wait.
Okay. sure. Yeah, yeah, yeah. Yeah.
Okay.
Yeah, that happens.
I knew you were going to say outlook. was like, there's no way outlook doesn't get mentioned in this poor part of the conversation. Yeah, it's rough. It was rough out there for a minute.
Leah Thompson (14:01)
I have like a bulletin board with out look on it and just throw darts at it. It's like you ruined my life.
Joe (14:03)
Just start the road arts. I love that. Like setting fire to like Outlook effigies being like, you know.
Leah Thompson (14:11)
It's like, whenever I talk to people, I'm just like, did you know that it's like the desktop version of Microsoft Outlook that's for like 2007, 2010 uses Microsoft Word as the rendering engine? It's like, why?
Joe (14:24)
I love this. This is why people make money on abstracting this stuff away. They're like, just write your thing, we'll figure out all the rest of it. Because it's so, email is so complicated to render consistently. I mean, you know, I don't have to tell you. Like, it's such a pain. It's such a pain.
Leah Thompson (14:35)
No.
such a pain and then designers are like, ooh, why don't we do the curved little borders or why don't we do a linear gradient? And I'm like, this is email. Like we're in 1999. We can't get fancy.
Joe (14:47)
Yeah, exactly. Exactly. We're 20 years away from doing that. That's the have you heard of Maisel? It's like a it's a way of writing your emails with Tailwind that has a build process that compiles it down to like all of the correct abstractions for all the different clients and things might be something of interest to you since you spent so long doing that. But I believe it's called Maisel. Yeah. Anyway, back to.
Leah Thompson (14:52)
You
Mm-hmm.
you
Joe (15:13)
So you're learning PHP and Laravel at the same time, which is a pretty tall order. how does that on-ramp feel? you feeling like support? The documentation, in my opinion, on Laravel is like very good. It's kind of a gold standard thing. Are you feeling that or are you feeling confused? Like how's it been going?
Leah Thompson (15:14)
Mm-hmm. Yeah.
Mm-hmm.
feel like the Laravel documentation's amazing. So I really enjoy the documentation. I think for me it's like, sometimes the stuff I'm doing, especially the work stuff I'm doing where I'm rewriting this graph traversal thing from TypeScript to Laravel PHP, sometimes I run into issues there because it's like, okay, how would I do this in Laravel PHP or in PHP? So then I might find a way that's PHP, but it's really complicated.
Joe (15:45)
Mm-hmm.
Okay.
Leah Thompson (15:57)
I ended up with a bunch of nested loops so it's like you have the for loop and then you have the regular for each and then it's like array includes and it's like I could just convert these to collections and then make it a little bit easier which I've kind of done that recently. Also there was a weird thing I encountered recently which I guess isn't weird but for me it felt kind of weird which is like if you have a collection that has arrays inside of it because we're dealing with kind of complex JSON.
Joe (16:24)
Mm-hmm.
Leah Thompson (16:25)
So it's like, you have a collection with arrays inside of it, but then you can't mutate those arrays unless you were to like loop over them. And it's like, I don't want a map. I just want to like add something to one of them. So then we were like, okay, well you could like, the fix I found is like using put and either doing a bunch of if else's to make sure I'm putting everything I need to when I'm like rewriting what was there or do put and then like spread the original value and add the new one you want. But it's like.
Joe (16:37)
right.
Okay, right.
Leah Thompson (16:52)
I'm like in JavaScript I could just use my handy-dandy like object notation and instantly do it.
Joe (16:55)
I know. Yeah, we don't we don't always have those luxuries in PHP, which is kind of a bummer. but yeah, we have other luxuries. Collections do make it easier. I reach for them more often than not. But I also there's definitely a place for just like a nice vanilla array in good spots. You know, it makes sense. But that's.
Leah Thompson (17:02)
Yeah.
Yeah
Yeah.
Joe (17:16)
That's fun. It's fun to like come. It's been a while since I've like learned a new language at that level and like really tried to like implement. And so I'm just always curious, like what people who are actually doing that are experiencing. And I'm a little selfishly like getting a little bit of like user info from you for my job. But so OK, so where what is the like status of the side project at this point? Like how far have you gotten your your dynamically generating questions?
And you're able to, I guess, answer and score them, I assume. Or not. Yeah.
Leah Thompson (17:46)
That's basically where I'm at. I got to the point where you hit the submit button and it would like score them. I haven't touched it in like two weeks now. So it sits there. But my plan of attack is to just fix the axios request there. And then once I have that to start bringing in reverb to like, cause I want to make sure when I bring reverb and I do the socket stuff that I have it as clean as possible because I don't want to end up with the mess I had before. So I don't want to spend all this time.
Joe (17:51)
Okay.
Mm-hmm.
Okay.
Sure.
Leah Thompson (18:17)
making like the bare bones more complex by adding in like multiplication, division, the calculus and all of that, and then get to the socket stuff and it like ruins everything. I'd rather get like the super basic part that it's at now and then add in reverb, get that working and then slowly build from there.
Joe (18:28)
Yeah, I hear you.
Makes sense. Are you going to end up going in the like calculus, like more advanced mathematics direction or not? That's not even on the radar right now.
Leah Thompson (18:46)
It's definitely on the radar. So I want to at least add in like basic derivatives and integrals and stuff. The thing with calculus is it's gonna be harder to randomly generate the problems. But that is like my goal. Cause I absolutely love calculus. So like selfishly I want to add it just for me. Cause that's why I wanted to build the app is to like do the calculus questions. Yeah.
Joe (18:57)
Yeah, I can imagine.
Okay, great. So you're truly building this to like quiz yourself on calculus and just keep that like fresh while you're doing software because you're probably not using a lot of calculus in software, I assume.
Leah Thompson (19:20)
That and just for fun, this app was still in the app store. I would be at Universal Studios or something and be in line and I would just be doing the quiz. It's fun for me and it's not there so I wanted that. So it's like I built this app and I did get it working enough to be able to talk about it in interviews and stuff and get a job. But since then I didn't touch it. I never got to add calculus to it. It was a mess. So was like, wanna rebuild this and get it to the point of why I even built this app to begin with.
Joe (19:28)
Yes, I love that.
Yep.
Yeah, yeah, yeah. And so are you so I assume if there's a multiplayer element outside of the joy of building that, are you going to make this public and let people like use it in that way?
Leah Thompson (19:58)
Yeah, I had, whenever I built it two years ago, I had posted about it. So I've had people throughout the years like ask me like, is this live or can I see this? And it's like, it'll be deployed eventually. And it never was. So I.
Joe (20:07)
Yeah.
Yeah, yeah, yeah. The best side projects never reach a server, you know what mean?
Leah Thompson (20:15)
It's like, I have so many side projects that are dead too. Like my GitHub is a little funeral home for them.
Joe (20:19)
Of course.
Are there any that you would ever revive? there any like sort of, I like to ask people like, do you have a white whale that like you've tried to get or you would love to make happen but you haven't touched it yet?
Leah Thompson (20:33)
have one that I would revive. I do wanna finish it, because people ask me about it all the time too. It's a pirate dating sim game.
Joe (20:38)
Okay.
Wait, whoa, wait, pirate dating sim game. Okay, talk more about that. Tell me more, okay.
Leah Thompson (20:47)
Okay, so it was like So I was building a dating sim game, but I didn't want to just use like there's a bunch of libraries out there like RinPy and certain stuff that already has like the scaffolding set for you So you just like put in the art and putting your dialogue and then you can like easily build a dating sim game I was like no no no, I don't want to do that. I want to build the scaffolding. So what did I use for it? I used Java and libGDX
Joe (21:01)
Okay.
Okay.
Leah Thompson (21:15)
And I think it was like Java 9. I might've started with Java 7. It was like old, old Java. And I'm doing this for fun. So I was like, yeah, we're gonna do that.
Joe (21:21)
my God.
Did you find that enjoyable? Did you find that to be an enjoyable experience?
Leah Thompson (21:29)
I like I cried a lot. I did...
Joe (21:32)
I think that's a common Java experience. Yeah, sure.
Leah Thompson (21:34)
Yeah, it's like I even set up my own like, dialogue parsing system just so I had like I made my json complicated because of course I did so my json was like I don't know like nested like too deep so I had to build my own way to parse through that and like Be able to populate it in the lib gdx front end stuff like the ui stuff So it and it's like I was connecting them so it's like, okay. Well, here's the first dialogue option you have here's the first dialogue
Joe (21:51)
my gosh.
my God.
Leah Thompson (22:04)
Here's the text for it. You have these two dialogue options. As like based on them, you have these other dialogue options, but you also want certain things like charisma or whatever to be tied to the dialogue options. So then you have to have a way to like traverse through all of that. And I did all of that in Java.
Joe (22:07)
Right.
Sure.
And were you like, were you like storing all of that in some like massive object? Is that how you were basically, am I like understanding that correctly? Okay, okay. That's a big choice.
Leah Thompson (22:26)
Yeah, I had a big Jason. Yeah. But I made it like a doubly linked list basically. That's how I structured it. So it was like each one, like whenever I had the dialogue options, the dialogue options had like the reference ID of the one it's supposed to go to. And then that had the reference, yeah.
Joe (22:34)
Okay. Okay.
Yes, yes, yes, Right, that makes sense. That makes sense. OK. That makes more sense than the way I was thinking that you were doing it, which I was like, that seems painful. You did choose Java, but I just want to point that out. No, I'm just kidding. Yeah, yeah, yeah.
Leah Thompson (22:52)
no.
I don't hate myself that much. Not yet.
That's why I haven't touched it again. I got sick of Java. I was like, I don't want to do Java anymore. I want a break from Java. I want to go to something else. it was fun to do, but I got past that part and I basically got it to where everything was showing like it was supposed to. You had all the options. It was like, you click it. It shows you the right thing. So I was like, now I have to do the art. I'm not art. See, I don't want to do the art. And I don't know what I want the dialogue to be. So it's like, maybe I'll come back to it when I have an actual ID for the
Joe (23:23)
Yeah. Yep.
Leah Thompson (23:29)
idea for the dialogue and stuff of the game.
Joe (23:31)
Yeah, it's like you kind of solved like the hardest part of it and the rest is just like decoration. You're like, I don't want to decorate this. Like I've done the thing that's like tickled my brain and I'm kind of like done with it. Is that is that kind of where you're at? Yeah, that's every side project that is laid by the wayside for me. It's just like, I did the thing that I was like interested in and the rest of this is not fun for me. Yeah, yeah.
Leah Thompson (23:43)
Exactly. It's like, I'm done.
Yeah, because it's like I did the most interesting part that like people would care about me talking about It's like and now i'd have to do the art like no. Thank you. Let me find something else hard to do Yeah
Joe (23:59)
Yeah.
No hard pass. Thank you very much. Does your math app have a name? Do you call it something?
Leah Thompson (24:07)
I think so I didn't name it something before I think I named it like operation battles or something Was the original one. I just call it math quiz app right now cuz I'm sure I'll find other names eventually
Joe (24:12)
Okay, cool. I dig that. Yeah.
It's probably a solid idea to not focus on, you you're like focusing on the right thing, which is like, let's build it and then we'll figure out what we can call it. That's great. So the next, so like the final boss of this seems like dynamically generating calculus stuff. Where do you perceive, like, do you have an idea about how you might like try to attack that? Or is that like not even on the plate yet? Because I...
Leah Thompson (24:23)
Mm-hmm.
Mm-hmm.
think it'd be pretty.
Joe (24:44)
I don't know. I'll be honest, like, I don't think I ever made it to calculus. I did pre-calc and I barely remember any of that. So like, I don't even know where the like tar pits are. Like, I'm not sure where the sticky bits are. So like, what is the challenge there for you?
Leah Thompson (24:49)
Mm-hmm.
So it would be, I feel like it would be really easy to do the derivatives and integrals like of just constants. Like that'll be easy. What'll be hard is bringing in like trig, trig and stuff like that, especially like integrals and stuff. Cause then you, I don't know. Yeah.
Joe (25:07)
Okay.
Okay.
Is the challenge like generating problems that actually make sense and have solutions? Is that really like what it is? Is that the core of it or is it beyond that?
Leah Thompson (25:22)
That too.
For the trig ones is definitely that. For the constant ones, that's pretty easy. I don't wanna get integrals and derivatives mixed up, but the derivative of two X would just be two. So you just get rid of the X and stuff like that. So those should all have solutions. The issue for trig ones is some of them might have solutions, but only on a certain bound or there's multiple of the solutions and stuff. then it's like, you don't wanna just generate. If you're generating...
Joe (25:39)
Right.
Okay.
Leah Thompson (25:53)
a random number also for what's in the trig thing like sign of like I don't know 28 pi or something crazy like you want something that makes sense because a lot of the trig stuff you're using the unit circle and stuff for too so it's like I'm gonna have to really be careful with those and it's like especially if you want to go like further and further up and make them more complex so I really have to think of like if I want to do that and how I would do that and stuff like that
Joe (26:01)
Yeah, yeah.
Okay.
Yeah.
Yeah, that's that's above my pay grade, but I'm glad somebody's working on it. That's it. So is it just like knowing what the bounds are and only generating within those bounds? feel like that's oversimplifying what you're saying, but it feels adjacent.
Leah Thompson (26:24)
For now.
It's kind of like, also I ran into that issue a little bit with division, right? Because for division, you can't divide by zero and there's like some other issues. So it's like, you have to do a bunch of like, if this check, if that check, and even when you're generating all the answer choices, you have to make sure none of them are equal to each other, stuff like that. So then as you build up the complexity to trig and stuff, there's just way more you have to check. That like, even right now, I don't know everything in my head you'd have to check, but it's like.
Joe (26:43)
Right?
Yeah.
Interesting.
You'll probably keep stumbling across things that are like, should probably handled that. that's not quite right. that's impossible. You know? Yeah. Yeah.
Leah Thompson (27:04)
I also...
Yeah, because also it's like, I'm gonna have to figure out how to get it to solve calculus, which I know I'm sure someone out there has done, but it's like, I'm gonna have to think of that or like I know for sure someone has. Yeah.
Joe (27:19)
yeah. It's got to be possible, right? mean, it's all it's got to be possible. I'm not the person to ask, but I'm sure it's possible. Very cool. What is the like dream scenario for this? Is it just the multiplayer calculus or do you have like bigger, grander visions at the end of the day?
Leah Thompson (27:36)
Sometimes I have grander visions. I would really love if I could get it to the point where it's like you also have like an individual like story route. So it's like a, yeah, like I think that'd be really fun if you have a story route. So it's like you start on like addition Island or something and then you're like working through it and it's like building up each time, you know, and then you go to subtraction like, and it has like a story. So again, kind of bringing in the video game aspect, but I think that would be fun. Cause in Florida we had like an F cat game we had to play.
Joe (27:47)
yeah.
Yes! Yes!
Leah Thompson (28:06)
something and it was like, you were like on an alien ship and you went to different islands and you had to like read all these like comprehensive things and like, I wanna build something like that. I think it'd be really fun to like implement that.
Joe (28:06)
Okay.
Yes.
And that makes it like 10x more fun for the user. Like that's so great. yeah. That's awesome. because right now the interface is probably just kind of dashboard-y flashcard-esque. Is that what you're...
Leah Thompson (28:21)
Mm-hmm.
Yeah, kind of like Kahoot or something. It's basically just like a breeze app. So it's just breeze and then you go to the like problems page or quiz page and it just shows you like the question in a bubble and then the answer choices under it and then arrows.
Joe (28:38)
Yeah.
Okay, great, great. Yeah, you should totally build that storification out. That sounds incredible. I love that. During the course of like building this out and like learning Laravel, is there anything that has like delighted you or brought you joy in the course of like being like, it was easy or that was just like fun to write or that was a fun puzzle to figure out? Like, do you, there anything popping into your mind about those moments?
Leah Thompson (29:14)
The moment I think that I'm always like delighted and like, my gosh, it's whatever like you do, you set up an app with Breeze. And I was like, there's the auth. Cause I was doing MERN. I was doing MERN for so long and doing these like tutorials. Cause that's how I learned authentication stuff is through MERN, right? So then you're doing tutorials, but then one of the dependencies they used is outdated.
Joe (29:21)
Yeah. It's everything. Yeah. Yeah.
Leah Thompson (29:36)
So whenever you bring it in, it's a different version and then you're in dependency hell and then you can't figure out how to get all set up and then you throw it away.
Joe (29:41)
Right. Right. man. OK, so then basically just like having that stuff, like having a first party solution out of the box is like delightful. Yeah. I watch all the the the auth chatter on Twitter and I'm like, that concerns me not. do not. I do not think about that. I is I hasn't thought about that in a long time. Yeah, I'm happy to never be hand rolling auth again. This is I'm just like in a very happy place with the with Breeze and Jetstream and Laravel.
Leah Thompson (29:50)
Mm-hmm.
beautiful.
Yeah.
Joe (30:10)
Yeah, yeah, agreed. Cool. Is there anything else you want to touch on? Anything you want to talk about the app? Like I'm all ears, but if we've covered it, I'm also happy.
Leah Thompson (30:18)
I think we mainly covered it, because I haven't gotten too far in any.
Joe (30:20)
OK. OK, no, that's great. But it's exciting. It's always exciting to spin up a project with tech that you're not familiar with and try to like work through or that you're less familiar with, I can say not familiar, but and work through and figure out like, how does it work in this scenario or how does this language accomplish the same thing? And you have such a foundation in like JavaScript and TypeScript that like that transition must be.
Interesting because those languages do operate very differently than each other in certain scenarios. Do you miss like, do you miss like a better sense of like concurrency that you have in JavaScript or is that not? I this may not be coming into play so much with this app, but like the fact that we don't have like proper async in, in PHP, does that just, I'm just curious if that like bugs you or you haven't even thought about it.
Leah Thompson (31:05)
Mm-hmm.
I feel like I haven't ran into that yet. So I haven't like ran into that where it's as big of an issue yet. I really, I'd say the main pain point that I've really hit with PHP lately is what I was telling you about the JSON stuff. Cause I'm having.
Joe (31:14)
Okay, okay, yeah.
Yeah. So talk to me a little bit more about that because I'm curious about what you're what you're working through there.
Leah Thompson (31:32)
Basically we have, okay, so it's a project for a company that has like a text-based RPG game. So a text-based lit RPG game. So it's like a terminal based game, right? And then we wanna do some other stuff to like show for them and stuff like that. So we have complicated JSON of like the data for this game. And I wanna traverse through it.
Joe (31:44)
Text based memory, okay.
Okay.
Okay.
Leah Thompson (32:01)
to do graph traversal stuff. So I wanna traverse through it to populate the stuff in a graph and then be able to do that to do like a breadth first search to go over the graph to know like if I'm here at this graph node, am I gonna be able to reach this other graph node or is that graph node hidden? So if not, I need to remove it from the graph. Cause I'm trying to like filter the like graph data that we're going to send to the front end. Cause before we were doing that on the front end side, which is why it's written in TypeScript and was using graphology.
Joe (32:07)
Yeah.
Okay.
Right.
Leah Thompson (32:31)
but now we're wanting to do it on the backend because before we were sending all the data to the front end so they could even see hidden rooms and everything. like, and so then the front end was deciding like, doing the calculations and stuff to know which ones to show the people, but they could still look in the console to actually get all that data. So now we're trying to do the filtering and stuff on the backend. So now I'm using like graph PHP, which isn't quite to the standards of graphology.
Joe (32:37)
Okay.
Gotcha.
Mm-hmm.
Yeah.
Leah Thompson (32:59)
So that's been a little bit of a pain point too. And then doing it in PHP.
Joe (33:00)
Okay.
And that's the graph PHP is like a composer package that you that you found is that or is that built into PHP? have no idea. Okay.
Leah Thompson (33:08)
huh, it's
It's a composer package and it's like, hold on, I'll read it.
Best of Composer package that is supposed to do like graphing, it's like mathematical. So graph PHP is the mathematical slash graph library. Graph slash network library written in PHP.
Joe (33:30)
Okay.
Gotcha. Gotcha. Okay. That sounds complicated. Are you making progress? Do feel like you're you're moving the ball forward or it's or you're Yeah, okay.
Leah Thompson (33:41)
Mm-hmm. So I've been working on it for like two weeks, but it's also like, because okay, my ticket, one of my first tickets in Laravel was like, okay, we have this form, it's not requiring a user to like click the check box to submit it. So I did that easily. I'm like, that's super, like that was really easy with Laravel. Yeah, it was like a little line. And then my second ticket is this. It's like, okay, now rewrite this.
Joe (33:57)
Great. Yeah. That's a bass hit. We got that. No problem. Yeah.
You
Leah Thompson (34:09)
like have a list that tracks like which rooms a person has like visited in the game and now filter all this logic and do all this graphing and it's like Dear Jesus like I'm like, this is so hard. So this is like my intro to like doing more Laravel PHP stuff for work I've been working on it for like two something weeks and I basically have it all written out like all of it written out I'm just trying to figure out like now I have the graph and everything
Joe (34:14)
my gosh.
Leah Thompson (34:35)
How do I add in the visited rooms list? Like to this logic, just to make sure I'm like saying like, if the data says this room is hidden, but if the user has already visited it, still show it, like still send that to the front end. So I'm adding in that and also running into weird issues. Cause like the way it was written in TypeScript for one of the things is like, okay, get all the edges of this graph node. And then if that ID isn't in my visited edges,
Joe (34:39)
Okay.
Right.
Leah Thompson (35:03)
List then drop it from the graph but whenever you try to like get an edge in the graph PHP stuff It's like there is no ID on the edge. It's like what do you mean? I see the ID right there, but there isn't a method to get the ID So it's just like that weird Like disconnect where you're trying to be like, okay I know what I'm supposed to do But how do I do it in this specific package that isn't documented super well, too
Joe (35:15)
There has to be. Is there is it edgeless? What's happening?
Yeah.
Have you have you are you trying to do any unit testing on this to try to like validate things or you're not even at that point yet?
Leah Thompson (35:38)
I'm not quite at that point. do have a unit test that I'm just using to like basically see all my logs and stuff of like this. So I have it like the response where it's like at does user to sign in. So I do have a visited rooms list there. And then I can like populate some rooms in it that I know are supposed to be hidden to make sure that like it's using that the visited rooms list to be like, okay, well this is hidden, but since it's in the list.
Joe (35:45)
Yeah.
Yep.
Leah Thompson (36:03)
I won't hide it. So I do have some of that set up, but I don't have like an actual unit test for like multiple parts of it because right now I'm just trying to get it work. Yeah.
Joe (36:13)
Get it to work. Yeah, I feel you there. Well, good luck with that. It sounds like quite the project. Is there anything else you want to chat about? I'm open, but if we've covered it, I'm good.
Leah Thompson (36:24)
think we covered it. I think that's it. We hit the end of my project so
Joe (36:26)
Okay.
I feel like I'm coming out of this with like a lot of things to look up. You were just talking about a thing that I was like, I don't really know a lot about that, which is like, know, part of the great part about having these conversations is like, I have a lot to learn. So it's exciting. Yeah.
Leah Thompson (36:34)
Mm.
Yeah, I feel like it's kind of something that like you wouldn't really touch like there's probably a lot of developers who have never done like Graph traversal stuff like I wouldn't know besides this I think but it's fun because there's a lot like math behind it too Even though like the package abstracts a lot of it like it still feels like a lot of math and it's still a lot more complicated than Email development which at this stage I welcome all the complexity because I was stuck in email land for so long
Joe (36:55)
Yeah, yeah.
Mm-hmm.
Yeah. But you also probably have the benefit of understanding a lot of the underlying math concepts that are in this library that probably most developers that are reaching for this are maybe taking that for granted. You have sort of a baseline knowledge of like what this package is actually doing, I would assume, right? Yeah. Yeah. So that's got to be helpful. Like you seem like the right person for the job. So it's just a tough one.
Leah Thompson (37:28)
Yeah.
that and my like, leet code. For a little bit, I constantly was doing leet code and code wars and stuff. And so was doing like the graph traversal and all the binary trees stuff and all that. So it's like, I remember that.
Joe (37:40)
Uh-huh.
Just got to flip that switch back onto my brain and we're rolling. Yeah, yeah, yeah. That's awesome. Cool. Well, thank you for taking the time to chat. Where can people find you? Where do you want to connect with people? Shout it out.
Leah Thompson (37:51)
Yeah.
The easiest places to find me are Twitter, Twitch, and YouTube. Which I just started YouTube, but hopefully we'll keep that up. But on all of those, I'm under Leah T Codes.
Joe (38:13)
Awesome. Go subscribe to Leah's YouTube channel. Let's get those numbers up. Let's do it.
Leah Thompson (38:19)
make me stay posting Laravel content on there.
Joe (38:22)
There we go. Let's go. More Laravel content on YouTube. Thank you again. I appreciate you stopping by.
Leah Thompson (38:28)
Thank you so much for asking me to be on the podcast and talk about my little math quiz app which hopefully will get to the gamification part. I will. Talk to you later.
Joe (38:37)
Okay, keep keep us posted. All right, talk to you later.