20 years ago I always did all of this and actually use some of those tools still today. I heartily recommend it to everyone who will listen. There is no better way to really understand, say, web frameworks, then to build one yourself. Nowadays, I don’t do this as much because I understand more things and have already built many of the bespoke things I want/need.
I also heartily recommend throwing your tools in the trash...or at least very seriously considering it. Once you’ve understood the problem space, it’s very often better to use something battle-tested. Sometimes you’ll have understood the problem space thoroughly enough before you’ve even finished your own tool (lol at ever finishing a software project).
On the one hand, you’ll be able to use the already-existing tools better and more effectively once you’ve built your own. You’ll be able to take advantage of all the little things that have already been built that are just boring or hard to do yourself.
On the other hand, sometimes (but not usually) it’s harder to make an existing tool to fit exactly what you want to do then it is to build a tool from scratch to do exactly what you want.
On the gripping hand, people who build their own tools often overstate just how special a snowflake they are and just how great and needs-fitting their tools are.
There’s two hard things I encounter in this area: convincing people to build their own tools, and convincing people who’ve built their own tools to throw away their precious creations.
Interesting perspective, I can definitely see the value in that, I actually came across a “midwit” meme with that similar theme. What’s the tool you’ve built that you’re most proud of? What’s the tool you’re built that you use the most often to this day?
I’ve observed in myself and others that the tools we build for personal usage are often of poor quality in the sense of maintainability or craftsmanship or reproducibility. They’re often built in a ramshackle way.
So in one sense, these tools don’t deserve any pride cast their way.
However, some of the things that I’ve built and used the longest fall into this category. These tools are very needs-fitting. This engenders some sort of pride.
There’s a tool I use probably a dozen times a day and has been evolving for 20 years. It’s unrecognizable from it’s original state. It’s nothing groundbreaking and is simple compared to many of the things I do. It’s a tool for building tools.
Not long after Windows XP came out 20 years ago I really got into automating my OS. Everything from “this window should always go here” to “when I press this hotkey give me the results of pinging this server”. I wanted it to be simple enough that I could whip up something to do one-off automation of little problems that I might only need to automate for a short time. The code and practices went from C (eww) to AutoIT (ick) to AHK (double ick) back to AutoIT (still icky) and nowadays to Python, but the same principles and purposes have carried through to this day.
To make it “production-ready” by addressing the “maintainability or craftsmanship or reproducibility” mentioned above, I’ve recently been putting a spit shine on it all, rewriting it, and making it less tailored to me and more general purpose. It’s called systa and you can see it here.
I’m too involved in it to objectively say if it’s a tool that I should have thrown away or not. Other automation tools exist. But I think it’s (or is going to be...maybe) better for some use cases than other things that are available out there.
I did this “reinvent a wheel, then throw it away and use the regular one” with a personal note editor: first I wrote Notilo, then maintaining it became too much work so I switched to cherrytree. (But if the latter wouldn’t exist, I would have stayed with the former.)
20 years ago I always did all of this and actually use some of those tools still today. I heartily recommend it to everyone who will listen. There is no better way to really understand, say, web frameworks, then to build one yourself. Nowadays, I don’t do this as much because I understand more things and have already built many of the bespoke things I want/need.
I also heartily recommend throwing your tools in the trash...or at least very seriously considering it. Once you’ve understood the problem space, it’s very often better to use something battle-tested. Sometimes you’ll have understood the problem space thoroughly enough before you’ve even finished your own tool (lol at ever finishing a software project).
On the one hand, you’ll be able to use the already-existing tools better and more effectively once you’ve built your own. You’ll be able to take advantage of all the little things that have already been built that are just boring or hard to do yourself.
On the other hand, sometimes (but not usually) it’s harder to make an existing tool to fit exactly what you want to do then it is to build a tool from scratch to do exactly what you want.
On the gripping hand, people who build their own tools often overstate just how special a snowflake they are and just how great and needs-fitting their tools are.
There’s two hard things I encounter in this area: convincing people to build their own tools, and convincing people who’ve built their own tools to throw away their precious creations.
Interesting perspective, I can definitely see the value in that, I actually came across a “midwit” meme with that similar theme. What’s the tool you’ve built that you’re most proud of? What’s the tool you’re built that you use the most often to this day?
I’ve observed in myself and others that the tools we build for personal usage are often of poor quality in the sense of maintainability or craftsmanship or reproducibility. They’re often built in a ramshackle way.
So in one sense, these tools don’t deserve any pride cast their way.
However, some of the things that I’ve built and used the longest fall into this category. These tools are very needs-fitting. This engenders some sort of pride.
There’s a tool I use probably a dozen times a day and has been evolving for 20 years. It’s unrecognizable from it’s original state. It’s nothing groundbreaking and is simple compared to many of the things I do. It’s a tool for building tools.
Not long after Windows XP came out 20 years ago I really got into automating my OS. Everything from “this window should always go here” to “when I press this hotkey give me the results of pinging this server”. I wanted it to be simple enough that I could whip up something to do one-off automation of little problems that I might only need to automate for a short time. The code and practices went from C (eww) to AutoIT (ick) to AHK (double ick) back to AutoIT (still icky) and nowadays to Python, but the same principles and purposes have carried through to this day.
To make it “production-ready” by addressing the “maintainability or craftsmanship or reproducibility” mentioned above, I’ve recently been putting a spit shine on it all, rewriting it, and making it less tailored to me and more general purpose. It’s called systa and you can see it here.
I’m too involved in it to objectively say if it’s a tool that I should have thrown away or not. Other automation tools exist. But I think it’s (or is going to be...maybe) better for some use cases than other things that are available out there.
I did this “reinvent a wheel, then throw it away and use the regular one” with a personal note editor: first I wrote Notilo, then maintaining it became too much work so I switched to cherrytree. (But if the latter wouldn’t exist, I would have stayed with the former.)