Pybites Podcast

#052 - IronScribe's tech stack and challenges building it

December 14, 2021 Julian Sequeira & Bob Belderbos
#052 - IronScribe's tech stack and challenges building it
Pybites Podcast
More Info
Pybites Podcast
#052 - IronScribe's tech stack and challenges building it
Dec 14, 2021
Julian Sequeira & Bob Belderbos

This week we talk about the stack we used for our new IronScribe service and some of the challenges we faced when building it. 

We'll also write a more in-depth technical article about this which we'll link here when it's ready ...

Links:

Show Notes Transcript

This week we talk about the stack we used for our new IronScribe service and some of the challenges we faced when building it. 

We'll also write a more in-depth technical article about this which we'll link here when it's ready ...

Links:

And instead of transcribing the words of me saying, oh, sorry, it actually just used the correct name. It just said Sam. And I was like, whoa, what? And I was looking for the caption in the live editor going, where did it go? But no, it was just. It was amazing. I couldn't believe it. Hello, and welcome to the Pibytes podcast, where we talk about Python career and mindset. We're your hosts. I'm Julian Sequeira. And I am Bob Baldebos. If you're looking to improve your python, your career, and learn the mindset for success, this is the podcast for you. Let's get started. Welcome back to another Pie Bytes podcast episode. This is Julian, and I'm here with Bob. How's it going, man? Good, man. Welcome, listeners. How are you doing? I'm good, I'm good. Good start to the week. I'm ready to wind it down. What's tomorrow? Thursday? Thursday? Wednesday. We slipped Monday again, right? No, I don't know. You know, it's. It's like two weeks till Christmas. Who cares what day it is? So I'm just excited. There's a lot of stuff happening. Yeah. So how's your week going? Good, good, yeah. So definitely things are slowing down, but still a nice balance of coaching, coding, Twitter, YouTube, a lot of things. Yeah. And I think, how many weeks do we go and leave? One and a half. One and a half. I'm so excited. Nice. Two weeks, right? Yeah, that's right. But for everyone out there listening, you know, we. We say we're going to take two weeks, but, uh, I'm pretty sure there'll be some business planning and ideas, coding. I think I'll sneak away every other evening. Yeah, every other evening for a call of days will be long. Exactly. Too long. All right, so what are we going to talk about tonight, Bob? Ironscribe technical stack. What's ironscribe? So maybe you've heard by now as we've been making some noise, Ironscribe is our new transcription service. Yeah, we launched last week, just to be clear. I knew what that was. I was just asking for everyone listening. Okay. I know. Yeah. So this, everyone, this is a transcription service. We're super proud of that we've been building for the past couple of months. And it's just. It is what it is. You upload a video and it transcribes, it, gives you the captions, allows you to edit in real time. This is not a sales pitch. Rather, it's going to lead us into the conversation of the tech stack, because since launching it last week. And this is a SaaS product software as a service. We've had quite a few people messages saying, oh hopefully you're using Python for that, or what are you using for the tech stack? So we're going to dive into that just quickly today because it is quite interesting, it is technical and we hope you enjoy it. So Bob, just why don't you list it out? What are some of the technologies that we're using in einscribe? All right, let's go. Django web application because Django is good for what is it? Busy developers with deadlines. And I've been using it mostly for the code challenges platform, which is in the running for four years. So I could reuse quite some things. It comes with really nice plugins for Pytest and also for example all auth for authentication. So that's usually code I don't really want to write. So that comes all out of the box. It's Hostone, Heroku. It uses Amazon s three for storing files. It also uses lambda functions for video processing, for example to resize videos, to make them smaller for rendering, and to make clippings, which is an interesting feature of the solution. Then a whole bunch of tools. Bonjouro, Zapier to make bonjours if people join sentry for monitoring in production. So if there's a crash 500 error, we get notified Sendgrid for emailing and most importantly AssemblyAI to actually retrieve those high quality captions. And that's actually a funny story because we were going with AWS transcribe and it was working, but it was not that good. And a friend of ours mentioned in a conversation which was totally unrelated to this, that AssemblyAI is really awesome. And I remember one day we just completely swapped it out. We never regretted that because it's very good for numbers punctuation. Yeah, it's very AI based service, right. Sort of constantly improving it and it's kind of smart about understanding speech. Yeah. My favorite part of the AssemblyAI service is that when I was playing with it and using it, I actually didn't even know it was going to do this. And this is just the sort of stuff that blows me away about technology these days. I made a mistake in one of my recordings and when I said so, for example, I might have said your name Bob, when I really meant to say I dont know, Sam. Right. And so I said, oh sorry, not Bob, I mean Sam. But the AI was so intelligent or designed to be that way, that it picked up that mistake. And instead of transcribing the words of me saying, oh, sorry, it actually just used the correct name. It just said Sam. And I was like, whoa, what? And I was looking for the caption in the live editor going where did it go? But no, it was just, it was amazing. I couldn't believe it. So I'm very happy we made that change and it's just a great, great little service there. So yeah, I guess some of the users were comparing it also to the YouTube captions that it makes out of the box and it actually verbatimly puts like arms in there and AssemblyAI strips all that stuff out. But yeah, as you say, like that backtracking wipe out complete rephrasings is really powerful. Yeah, that's it. I think, you know, one of the, so for everyone listening, you know, we go by the same rules that and concepts about mindset and you know, when it comes to building, scratching your own itch, all of that sort of thing. But we also just love technology. So this wasn't just building because we were building for, you know, building out an idea, it was also a, we just started to really love how technical this was getting and just really admiring the technology involved. So it became, you know, a passion project and we'd sit there like fanboys in the evening as we'd figure out things and, and just discuss the, the little solutions that you were coming up with there, Bob. So that was cool. I really enjoyed that. It was a hard problem. So yeah, it required becoming uncomfortable and pushing through and this typical doubt, can I really do it? All these dependencies on other solutions, what if that goes down and all that stuff. Right? And in the end it's working. I mean there's always room for improvement. But yeah, I forgot to mention the front end. So bootstrap for the styling. And for JavaScript we use vanilla jquery and also HTMX, which is really awesome. It's brand new and it really makes it easier to do Ajax calls. That was really nice how we could integrate that. Yeah, exactly. So back to that point you said about it being difficult, if I'm going to ask what you found to be the biggest complication in the code stack as you were coding, really, what was the hardest part? Yeah, it was not AssemblyAI. Kudos to AssemblyAI because literally in one day I could swap out Amazon and that's such a friendly API. The biggest part was Heroku because you go serverless so you get very limited memory. And of course before sending files to AssemblyAI, you need to get the audio out there and there was some video processing we were doing on Heroku that. Yeah, that just threw memory errors at some point. Hence we offloaded that to AWS Lambda to really keep the web server light and do the heavy processing in the cloud. That was a challenge. And yeah, I think the whole doing things in background task and queues, luckily I had some exposure with celery through the Pywrites reading list app a few months ago, so that came in handy. But that can be kind of challenging to do things in the background with setting up task queues and stuff. Yeah. And another thing was the clippings, for example, we allow you to, so you get this modal and you can specify the start in the end second and then it was working great. But then of course captions would fall off or would be cut down. And so. Yeah, and that's kind of the point here, is you have to build, you have to go through that first filled iteration to then really start to think about how to do it better. So all of a sudden I had this. So of course I went away, the diffused mind, right, came back and also like, wait, why don't we do the offsets of the clippings caption based? So they go exactly from one caption to the other. And since I introduced that change, deleting a lot of code works perfectly. Nice. Yeah, that was a good solution because I remember when we played with it, you know, even we fell in that trap. We chose, let's do 28 seconds and see how that turns out. And while the tech worked, the usability wasn't there because we were dropping off mid sentence and it was just, it was frustrating. It became a nightmare to try and get that perfect, you know, slot there in the timeline. So it's sort of like that concept, right? If you just build without getting feedback as you go, even if it is your own feedback. And that's why it helps to be able to use your own tools as you're building them. If you just build without actually getting that user feedback, you're kind of shooting yourself in the foot. And that to me, was one of my biggest hurdles with this, is that this was one of the first times we built anything for someone else, like with an. From an idea that someone else had and asked us to help them make. And when we decided, you know, let's scale it out, if one person wants it, maybe other people would use it. At that point, we needed feedback from all over the place. And then, and we were getting so much feedback from different places and everyone had different opinions and thoughts. It is so overwhelming and you cannot implement everything, you cannot act on everything. So there was this moment where we had to. This is pretty much what, it's indicative of what it's like to be a developer professionally. You're going to get feature requests and issues and feedback. You have to choose what the critical part is for launch. You have to choose what's a nice feature request for somewhere down the line, something that's just, you know, not applicable. And then you also have to look at who's giving the feedback and you never want to dismiss someone for their feedback. It's just that some people would be in the industry would be the actual target people to use it, and their feedback is actually going to be much more valuable in the sense that, hey, they know exactly what they're talking about and what it's like to use a service like this every day. And so navigating that was actually really much more complicated and stressful than I expected it to be. So a bit of mindset there. Yeah, it was a great project and we learned a lot. And also from the front end, if you want to check it out, go to ironscribe IO and let us know if you have any feedback. What? What are you reading? What am I reading? All right, so. So we're done with that. Let's get into the books as we always do. So I'm not actually reading a book. Well, anything new from what I mentioned last week? Because, you know, I have things to do sometimes, but I've actually found I've been enjoying reading my tech magazines again. So got my online subscription, been reading them on the iPad and just flicking through stuff. Just super valuable. Really enjoying it. Was reading money magazine as well the other day, which was quite nice, was the end of year issue. So just. I'm in a different mood. Maybe it's the holiday mood. I don't feel like anything too heavy and just want something casual. Read an article, put it down, move on, you know. What about you? Yeah, not much if you're building and your appetite for reading slows down as it's all stack overflow and documentation and just code and fixing problems. But I'm reading how to take smart notesbook that Marty recommended, but I have to start implementing to really get something out of that. Of course, it's very practical. That's a good point. I ended up getting that on the Kindle, so I should give it a look when I get a chance. All right, well, look, that's the end of the episode. Thank you, everyone, for listening, as always, and for joining us. Bob, I enjoyed the chat, hearing about the stack. We, it is kind of funny, you know, we're Python type podcast and there's so much mindset. I will say that I think our balance between the tech and the mindset is actually in line with what we see as we coach. Yes. Yeah. I mean, because we also do a lot of tech stuff on YouTube and Twitter. So I like us talking a bit more mindset here as well. Yeah, that's what we tend to talk about anyway when we, we have a random chat, so. All right, thanks, everyone for listening. We will be back next week and then we might go on a brief break for the holidays and be back in January. So a special episode next week. We won't tell you why. Very special. We're going to have fun with that. Oh, for sure. All right, thanks everybody for listening, as always. Any feedback ideas, send them our way. And we're back next week. We hope you enjoyed this episode. To hear more from us, go to Pibyte friends, that is Pibit es friends and receive a free gift just for being a friend of the show and to join our thriving slack community of python programmers, go to Pibytes community, that's Pibit es forward slash community. We hope to see you there and catch you in the next episode.