There is no substitute for reinventing the wheel No images? Click here Oh, the things I want to buildVacation has found it's stride as it is close to wrapping up. My back is feeling better. My daughter is delightful and my wife remains great. Again with the livestream today on the YouTube channel. Today at 15.00 CEST I'll be continuing the photo site product thingie. I don't remember what I'll be working on but I'll figure it out during the day as I hack on it :) Movement in the Underjord The photo product series of posts have been published off-YouTube on the site. The Regular Programming podcast I do with my friend Andreas has a new episode up. We talk about servers, the servers we've had, the way we use them now, how we learned to wrangle them. I have received a PineTime, I'm thinking about putting WaspOS on it and building something. Let me know if that is interesting. It would be some Python in the form of MicroPython on cute little hardware. I build very differently for myself and clientsNIH, Not Invented Here, is often something thrown at people that implement something from scratch when they had the option of using a library. DIY, Do It Yourself, is often considered a hobbyist thing and pretty rarely considered professional grade. I learned to program in a different world and found using other people's code and libraries scary. So I was mostly thrilled when I moved from Perl to PHP and there was so much stuff already included in PHP. And I kept learning this stuff in my teens and just reinvented every wheel I could find. They were often crappy wheels but I understood them. When I started doing professional work I tended to work off of CMS:es. Later I worked with frameworks and libraries. And that's still roughly where I am. I want to hand my clients something that won't be full of surprises to another developer that will work on it after or with me. So my Elixir code bases tend to be fairly typical. I do the experimentation for my own business and my own projects. And that's where I really learn the most. I decide to create something of limited scope. Such as beambloggers.com which uses GenServers and no persistent storage. Or noted which combines LiveView with Telegram. Or my overlay which combines external commands (git) with a filesystem watcher. Or my stupid solution for live updates without JS which uses the Mogrify library to generate images and some less common features of Plug to do MJPEG. And to be clear, I'm fortunate to have time I can put into experimentation. I don't believe everyone has to have programming as a hobby to be a software developer. I just happen to love doing this stuff. And I try to share what has worked for me. There is usually some space for experimentation in the line of duty as well. Many of these take-aways are building blocks for future needs. When I'm building the photo-product-thing on my livestream and need thumbnails, Mogrify is right in the back of my mind. When I need a filesystem watcher for any reason, I already know how to integrate it and have code samples I can use. I'm using other people's libraries here. And I'm stacking them together in whatever way I want. And sometimes I don't see a need for a library, such as with video transcoding where I already had the ffmpeg invocations laying around in some of my publishing scripts. I move those into Elixir and use Muontrap, which I know from playing with Nerves a lot, and suddenly I have something that transcodes video. I have a lot of plans for how I'd like to build up my professional publishing workflows. And while I need it to be productive and somewhat pragmatic, I can also do things my own way. I'm shifting as much as possible of it towards Elixir as I go, because that's where I like to be, and I find the bricks I build and the tools I learn to wield compose and reuse well in this ecosystem. And what I keep finding is that building for myself with my favorite tools keeps teaching me things that I have already in my pocket or at least passingly familiar when a serious client project needs it. And from what I know this applies to any ecosystem, I've experienced similar things in Python. Building small projects and throwing them away, scripting things quickly and dirtily, it all taught me how to do a lot of very useful things. So if you like coding on your own or have time for training, consider if your learn best by building. I know I do. As always, you can reach me at lars@underjord.io or Twitter where I'm @lawik. Thank you for reading, I appreciate your attention. - Lars Wikman |