Why I Reinvent the Wheel (Sometimes It's the Best Way to Learn and Build)
Hey everyone,
I sometimes get asked why I spend time building certain tools or scripts when similar things might already exist, or why I dive into the nitty-gritty of how something works instead of just using an off-the-shelf solution. It's a fair question, and recently I came across an article by Jan Endler called "Reinvent the Wheel" that perfectly encapsulates a lot of my own thinking on this. I'm not going to replicate his excellent post, but I wanted to share some thoughts along the same lines.
It's Not Always About Having the "Best" Tool First Try
For me, diving in and building something, even if it's a version of a "wheel" that's been invented before, is often about:
- Deep Learning & Understanding: The single best way I've found to truly understand a system, a library, or a concept is to try and build with it, or even replicate parts of it. When I was working on
hive-nectar
(my fork ofbeem
), delving into the transaction signing, the API calls, and the data structures wasn't just about getting a library working; it was about understanding Hive at a more fundamental level. Similarly, building tools likeauto-market
or the various Hive-Engine scripts forces me to understand how those systems actually operate, their quirks, their limitations, and their strengths. - Control and Customization: Sometimes, an existing tool is 90% of what you need, but that last 10% is crucial for your specific workflow or idea. Building it yourself, or heavily modifying something existing, gives you complete control to tailor it perfectly. You're not beholden to someone else's feature roadmap or design choices.
- Identifying Pain Points (and Solutions): When you build it, you feel the friction. You encounter the awkward APIs, the missing documentation, the performance bottlenecks. This firsthand experience is invaluable for then figuring out how to make it better, not just for yourself, but potentially for others too. My recent adventure with the Hive-Engine richlist pagination limit for Market Viewr is a perfect example – I hit a wall, figured out why, and then engineered a solution.
- The Joy of Creation (and Sharing): Let's be honest, sometimes it's just fun to build stuff! Taking an idea from a concept to a working piece of code is incredibly satisfying. And if that tool then helps someone else, that's even better. Sharing these projects, even the "simple" or "crude" ones, is part of that process.
- Avoiding Black Boxes: While using established libraries is often efficient, relying solely on black boxes without understanding how they work can leave you stuck when things go wrong or when you need to innovate. "Reinventing" a small piece can demystify the larger system.
It's Not About Ignoring Existing Work
This doesn't mean I think everyone should always build everything from scratch every time. That's not practical. But there's immense value in the process of building, even if the first version isn't perfect or if it replicates existing functionality. The learning gained, the control achieved, and the deeper understanding of the underlying systems often lead to better, more robust, and more innovative solutions in the long run.
Many of my Hive tools, from simple scripts to more complex applications, are born from this mindset. I wanted to understand something better, or I needed a tool that worked just so, and the best way to get there was to roll up my sleeves and build.
So, the next time you see me tinkering with something that looks like a solved problem, know that there's usually a method to my madness – it's all part of the journey of learning, building, and hopefully, contributing something useful back.
As always,
Michael Garcia a.k.a. TheCrazyGM
‘If you build it, they will come’
If I build it, I will come to know more’
I love that! Is it attributed to someone or did you make it up?
I read your post and i was just playing with the field of dreams quote.
So i just tweaked the field of dreams quote to what you were saying... so it is both an original idea and a borrowed idea...
I think the whole of life is like this. Yes I could read the instruction manual or watch a video on youtube about a topic, but digging in and getting my hands dirty has always taught me so much more.
I think half the brilliant ideas in permaculture I had to discard within the first few years on the farm, and I would never had learned the "deeper truths" without doing it myself.
There is something deeper here too, most "permies" hire people to do the farm work. I wonder, do they ever learn anything?
!PAKX
!PIMP
!PIZZA
View or trade
PAKX
tokens.Use !PAKX command if you hold enough balance to call for a @pakx vote on worthy posts! More details available on PAKX Blog.
$PIZZA slices delivered:
@ecoinstant(1/20) tipped @thecrazygm
Come get MOONed!
Why would you go to school when the things they do in school have already been done before?
kek
I understand this completely, because this is how I learn anything, I dive in and I figure it out for myself. When I got into Arch Linux, I was so enthralled by its elegant functionality, that I wanted to understand it well, so I installed originally installed it three different times, to learn the process well. All three of these Arch installations, which are all several years old now, are still running great, having been migrated across several computers, hard drives, and SSDs. I've run into innumerable technical issues over the years, but I always find a solution in the end, with lots of researching, testing, experimenting, tinkering, adjusting, and refining as I go. 😁 🙏 💚 ✨ 🤙
Arch is amazing, and the wiki is an amazing resource to learn from, love those guys.
I still remember using a library computer to print a giant stack of papers that was the Linux From Scratch manual, way back in 99', following along and building the whole thing from the ground up and how much I learned from that experience, and not to mention the respect it gave me for people that manage distributions now.
Indeed it is, and the wiki is one of the best in the Linux world (Gentoo's was excellent too before their server crashed). Arch is the perfect balance between DIY and automation.
Dude, I've thought about doing that so many times! I give you mad props on LFS, as well as for your method of getting the manual! I've learned so much just working with Arch, so I can imagine the many magnitudes more learning when building the whole thing from the ground up. Ditto that on respect for those who run distributions, some of which have continued on for decades. 😁 🙏 💚 ✨ 🤙