Pybites Podcast

#070 - Learn by building, how we built our own collaboration tool in Django

To hear the latest from Pybites, subscribe to our friends list here:
https://pybit.es/friends/

In this episode we tell the story about Pybites CMS, our new powertool we use to better streamline our business.

We tell why we built it, how it was an opportunity for Julian to brush up his coding skills, how we applied the PDM philosophy of learning by building, scratching your own itch.

Join our Facebook group here (live training coming soon!): https://www.facebook.com/groups/pybites

And if you want to take your Python and dev skills to the next level, check out our PDM coaching program here:
https://pybit.es/catalogue/the-pdm-program/

We could not find the mentioned article about shipping fast, but we certainly have spoken about this before, here are some additional resources:
https://pybit.es/pareto/
https://www.pybitespodcast.com/1501156/9135351-040-ship-your-code
https://www.linkedin.com/feed/update/urn:li:activity:6925359287103844352/

Thanks for listening, for any feedback email us at info@pybit.es

And then by week five, we had a functioning front end that we could use. So it's not, you know, the sharpest, flashiest tool in the shed. It's. It certainly doesn't look as polished as something like Asana, but it is so perfectly crafted for you and I. It's just beautiful. 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 Baldeboz. 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. I'm here with Bob. Welcome back. Yes, the second recording of the week. It's Friday night. I'm exhausted, but I'm standing up for the podcast. There you go. How are you today? Good. Nice way to wrap up the week, huh? Oh, yeah, yeah. Nice way. Finish it off with some talking, some rambling on. No, we're actually doing this because. Eating our own dog food, listening to our own advice. You're going on holiday next week without me. Yeah, I don't know what we're going to do. I still expect audio messages from you, at least. I will. I will. Oh, geez. I'm going to be so lonely next week. Anyway, anyway, so what are we talking about today, Bob? What are we talking about tonight? Hi, bytes. CMS. What a story that. What? Tell everyone an overview. What is it? It's a collaboration tool we have built together in Django. And. Yeah, maybe you want to share the story behind it first. Like, why did we build the tool? What got us into that? Okay, all right, I'll do it. I'll take over. So, we. Or me. I was getting to a point where I realized that I was doing less and less coding. So, for those of you that aren't too familiar with the dynamics here with Bob and I and PI bytes and PDM and all those things, you know, I tend to lean more towards the business side, the mindset side, the career side, and with all the coaching that I'm doing there, with all the reviewing, with just. You name it. Right? I'm doing less coding than I would like, and it's kind of frustrating me. It's kind of annoying. And I just. I missed it. I really missed it. And I thought, why don't I go through some sort of PDM myself? PDM being the Piweis developer mindset program that we. That we run. And so why do all these people get to go through it? But I don't. So, like a stubborn, spoiled child throwing a tantrum, I said, bob, you're going to coach me, okay? And we're going to build. We're going to build an app that I want to build. Not what you want to build, but what I want to build. And. And so, you know, as we always say to everyone who wants to learn by building, I had a call with someone this evening about this as well, and I said, you know, you've got to look at what you shake your head at every day. And we all have this in our jobs, in our day to day, where we go, oh, geez, got to do that again, or, this is frustrating, this is boring, this is repetitive. These are the things you can automate. These are things you can fix with Python. So that's what I did. I looked at our processes. I looked at what Bob and I did on a day to day basis. I looked at how we operate with PI bytes, what tools we're using. And one thing that stood out to me was, I hated how we were sharing notes. Now, when I say notes, I mean it's across anything. It could be amusing. It's something that we just think of. It could be notes on conversations we've had with people we work with. It could be notes on what we want to do in the future. It could be anything like that. We were putting that stuff across multiple different platforms. We were using Asana. What else were we using, Bob? Aside from Asana, what's up? Messaging. Yeah, we're using WhatsApp for ourselves. That's right. Slack. I think we had Google Docs at some point. It's been a while since we used that for this sort of thing, but it was just. Oh, yeah, pipe drive. Yeah, exactly. To manage people who've gotten on a call with us and stuff. And, you know, it was just. It was a nightmare, and it was really taxing. And even though Asana had the bulk of what we were doing in it, because we talked with so many people and we had so many things in there about what we talk about ourselves and our ideas and goals for pie bytes and all that sort of stuff, it just became huge. And it was so difficult to navigate the interface, whether I put it in list mode or card mode or board mode, whatever you want to call it, I just couldn't. I hated doing it. I hated it. And you hated it, too. And then you'd say, can you edit the template so I could do this? And I'm like, oh, yeah, fine, I'll go do it. It was so annoying. And so that was something I honestly shook my head at. And so that was the idea. So why don't we build our own, our own little collaboration tool where we can put the notes on the calls we have, the conversations we're having, notes on ideas we have, and that other people come to us with and talk about things, just all sorts of stuff. Right? A collaboration thing. And that's what we started doing. So you take it from here, Bob. What do we do after that? After I came with the idea, we did the classic PDM way. We built a mind map of the features it should have, the not to dos that it should have or should not have. And so we kind of designed it out a little bit before starting building. But right from the start, we booked a recurring weekly pair programming session and we got to work, we got to build it out from scratch, where I was teaching you Django, of course, and it was really fun. Yeah. Lots of questions, lots of questions, heaps of questions. But throughout the sessions, you got an understanding how web development worked. I mean, you had done flask, of course, but you were pretty new to Django. And I think after four sessions, we had a very simple mvp, or minimal viable product ready. Something functional, I guess, with a very simple database structure where the heavy focus was on note taking and stuff. But, yeah, we put it up there and it was something that was working, so really cool. Yeah. And as, as we always say as well, when you're building something that is going to be useful for you, that means something to you, that's going to solve one of your problems, you get really excited and it makes you want to come back. And I remember you even cheated and did some coding on the weekend without me. At one point, um, after we got it, uh, deployed, we were, we thought to ourselves, oh, we really want to use this. And we saw it in its infancy, it looked like garbage because it had no front end, really. And we were just sort of really excited to, um, to use it. And then by week five, we had a functioning, uh, front end that we could use. So it's not, you know, the sharpest, flashiest tool in the shed. It's. It certainly doesn't look as polished as something like Asana, but it is so perfectly crafted for you and I. It's just beautiful. And we use it every day, day in, day out, um, anytime. Okay. You know, before I go into this, you, you. What's one of the benefits of us building this ourselves? That you. Yeah, before, before I go into that, I just want to emphasize what you say about the motivation, like building your own thing, scratching your own age. Because we had some pain, quite some pain here. Oh, yeah. So once we saw that tool coming out of the ground, yeah, we sped up. You know, we said like, wow, we really wanted to use it. This is so beneficial. So, yes, at the end I did some more coding and stuff, but yeah, we were super energized and motivated. So again, we always say to scratch your own itch. Like if you build something you care about, you can go so much faster because there's a lot of energy that is getting released when you do that. Right? Yeah, exactly. The other thing is like dropping perfectionism. Right? Like we use bootstrap, kept it simple. Django workhorse as always. But also we did use some HTMX to do a little bit of Ajax and nice UI stuff. But I remember we didn't figure out all the HTMX features. Instead of refreshing content on the page, some parts of the app still do a page refresh and that's fine. It's not as elegant, but it's workable and we will figure that out later. Commands, I think, are still not editable. We even just went Twitter style, add and delete and that's fine for now, right? Yeah. Even reminders, there were no reminders in there for follow up tasks and things. But the beauty of it is that because we're the ones making it, we able to prioritize the features that we thought were going to be amazing and p one priority one stuff, and then those are the things that come out the next day. That's the other stuff. As we're focused on note taking, all of a sudden we started to come up with features we didn't even envision from the start. So by building your own thing and shipping it fast, you start to see more interesting needs and all of a sudden you're building features you didn't even think about. So the reminders feature is now one of the core features. Like we can just set reminders. It puts cards into an overdue status, then you update the card and it goes into. It's not overdue anymore. It's like a productivity tool where it's first it was a note taking tool, now it's even a planning tool. So it morphed into it, which is really cool. Just wanted to announce that we have a Facebook group which we will link below this show, and we are working on some live training around developer mindset and it will be an important training to really grasp what's fundamental in becoming a proficient developer fast. If you like our podcast, you like what we do. Join our group. We're building an exciting community on Facebook, so hope to see you in the group. And let's get back to the episode. Then we hooked up. Bonjouro. The solution we use to record videos for achievements for people or to stay in touch with. We got that integrated via Zapier, another time saver. How smooth that works now. Yeah. So the benefit to go back to the question is what started as an information centralizing thing is now a serious workhorse for us, a productivity tool that's saving us a lot of time and makes our business and the way we operate more agile. Yeah. And as I think we've said this in a blog post once before, that when you ship quickly and get people to use it, your application, your product, that's when you really find out, okay, where do you need to steer the ship? Do we have a blog? I'm pretty sure we got a blog. It's good. Forgot about that. We committed this week that we're going to update the blog more regularly because we haven't been giving it the love and it's our, it's our oldest friend when it comes to what we're doing here. So we're going to start it. Exactly. So we need to give it some more TNC TLC. All right. Time in. Time in back to the, back to the story. I had to make that call. So we wrote a blog article out of last year, I think, but where we talked about shipping quickly and when people are using your product, when you can ship it and whether it's in beta form, whatever, but people are using it, that's when you know what to work on next, right? You're not just shooting into the wind, right? You're not throwing something in there and hoping it sticks because the people will give you feedback. And in our case, we gave ourselves that feedback. So we started using it in earnest, actually, you know, started moving it to as if it was our production suite. We stopped using the other stuff, canceled out of the subscriptions, saving us heaps of money, which is great. But more importantly, we then learned straight away, oh crap, if we don't fix this part, this is going to be a pain. And that's why we got reminders in something like, okay, well, how do you clear the reminder? Okay, what happens if we want to archive this entire conversation so it's not deleted, but it doesn't show up anymore? Because we don't need to look at that anymore. That sort of stuff went in there. And kudos to the planning, Bob, is that that first week that we sat down, we spent the entire hour session modeling the database. And we thought of that sort of stuff straight away that hey, thinking long term, thinking big, we're going to need to have it all set up in such a way that we can manipulate the data in this way later on, even though the feature wasn't there yet. So that was one of my key takeaways, just how important that planning stage is. So I enjoyed it. Yeah, that was cool. As was Franklin said, like 1 minute in planning saves you hours in execution. Yeah, you're exactly right. And that's, that was again, one of my favorite things from working on this with you. So. But yeah, back to, back to the benefits other than all of that, you know, we, I just love that we control the whole thing. I love that we don't have to answer to anyone on it. We don't have to beg, borrow and steal and email and harass different support queues to try and get things done. It just, it's just us. And if there's a bug, well, that's on us as well. We just need figure it out so it, and there's a certain power to knowing that we're using our own stuff. We made our own stuff. And that's super motivating. Yeah. Yeah. Super exciting. So there you go. So we just wanted to share that story because that's pretty much what we're about, isn't it? Learn by building. And another advantage, by the way, is like, as we wrote so much code there last week, we built yet another tool for the business around content creation. And there was a lot of pieces we could borrow from that project. So that's another cool benefit of writing your apps and doing a lot of software development, coding, that you start to have your whole portfolio of projects and you can just crank them out faster because you can reuse pieces, you can butcher them and use those pieces. So the interface and everything looks identical in this second tool. Just, it's got something different on the main page. So. I love it. I didn't think you were going to mention it. So there you go, another little golden peek into the, into the happenings. I like it. All right, cool. I think that wraps it up nicely. Usually we talk about books, but this week let's talk about what we're watching. Are you watching shows or how do you disconnect? Yeah, given we did books, what just a couple of days ago. Let's. Let's jump into what we watch. So at the moment. So I've watched quite a few things. I just finished watching Moon night on whatever Disney I think it is. So that's good. That's the latest Marvel one, aside from the Doctor strange two movie, which I'm dying to go see, but yeah, just watching at the moment. I do like my anime, and I saw there's a ghost in the Shell series on Netflix, so I've kicked that off this week and watched a couple of episodes of that to unwind. What about you? So I took the kids to Sonic two. It shows a pretty fun movie. It's really entertaining. But also, yeah, the only thing is here everything is dubbed, so I had to watch it in Spanish. Whatever. Yeah, try to picture a spanish sonic. That's great. That is good. And yeah, watching some X files on Disney as well. Watch that show like two decades ago or even more. I don't know. But still kind of. It's fun to watch. I don't know, really. Did it survive the test of time? Yeah, I think it's a classic. Yeah. Okay. I have to give it. Might give it a rewatch. You mentioned it before, but I've never thought to ask you that. I mean, not all episodes are great, but, you know, the ones, the doubles, you know, with the conspiracy theory. These are kind of fun. Yeah. Okay. I didn't. Didn't take you for. Anyway. Doesn't matter, doesn't matter, doesn't matter. All right, well, look, Everett, thank you so much, as always, for listening. By the time you listen to this, it will actually be placed in the normal slot of the week. We're just recording early because Bob's leaving me again. But thank you for listening, and we'll be back in a week. Thanks so much for listening. And, yeah, as always, any ideas or feedback info at Pybytes, and we'll be back next week. Thanks for listening. 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 community. We hope to see you there and catch you in the next episode.