|Think about Loose Coupling|
Reinventing the wheelby cavac (Chaplain)
|on Nov 02, 2011 at 21:37 UTC||Need Help??|
Some of you might know, i wrote my own webserver in perl, based on HTTP::Server::Simple. In a few days, i'm going to have another lecture on the topic in Vienna. As always, i'm probably going to get accused of "reinventing the wheel".
In this meditation, i'd like to talk a little about why this accusation is - in my opinion - not only not an accusation, "reinventing the wheel" can, from a historical viewpoint, even mean "wow, you changed the world for the better". Not that this is ever going to happen to me, but i'll show you what i mean:
First of all, when somebody talks about "reiventing the wheel", he or she usually bases this on the context of the wheel being the ultimate tool for transport, as in the recently granted patent for the "circular transportation facilitation device". He or she also implies that reinventing the technology is a complete waste of time.
While the wheel itself certainly plays a major part in transport, there are a number of applications it's not usefull - either not alone or not at all.
Examples of this include rough off-road usage, where Continuous tracks around the wheels are a big help. Feet are one of natures solutions that also work quite well off road. Wings are a great alternative when you need to cover vast distances fast. Underwater, you might find Fins and propellers vastly more usefull than the good old wheel. And if you ever have to evacuate an airplane quickly, you will most likely use a slide.
So, after having established that the wheel is not the ultimate in transport technology (meaning that you have to look for alternatives as well), let's take a closer look at wheel technology itself. As clearly evident, early wheels where based on wooden and bronze disks without "real" bearings. That technology failed even before the iron age because it just wouldn't work on the increased loads and distances required for trading at that time. So, the wheel was reinvented using spokes and better bearings. Then, modern transports like bicycles, cars, airplanes, tanks, trains and what not came along. They all needed their specially designed wheels that have not much in common with the wheels in use by the roman empire. Just a few years back, another company did another reinvention of the wheel, called the "Tweel".
So, concluding the semantic part, reinventing the wheel is not only sometimes a good idea, it's often required for new breakthroughs to happen. We also just proved that the wheel is not the ultimate transport technology, just one of a number of solutions. And - here's one more interesting point - by reinventing the wheel, we, the humans race as a whole, learned a little bit more about the universe we lived in.
Before we go to the problem at hand, let's have another paragraph or two looking at another technology. Most people think of it as a recent invention, never realizing that its origins go back to at least 521BC (or more): Email. While Wikipedia lists early origins like morse code (mid 1800s), the idea of Email in its current form looks very much like the electronic version of the Postal system.
One of the first postal systems was in service in Persia. While the dates vary, there is a range from 521BC to even possibly back to 1700BC. From that time on, the system was constantly updated, changed, forgotten, reinvented and changed again and adapted to special needs. This took on some "strange" forms over time, like the short lived "fast mail service" called Pony Express. The Pony Express failed, but modern express mail and parcel services use a similar system of relay stations. They just reinvented the system by using trucks and planes. Email is not that different. It uses relay stations, delivers people's mail faster than its predecessors - and probably delivers more messages per day than Bristish Mail did in their whole history. It just did that by switching technology. By every "upgrade" and "reinvention", we learned a bit more about what works and what doesn't, how to use the technology available.
Now, arriving at the present: What more could i actually say? I wanted to learn about a modern technology, the World Wide Web. I wanted to adapt it to my needs, maybe improve bits of it. So, i "reinvented" some of the technology by writing my own webserver. I notified a browser vendor about a potential security flaw i found. I learned about what works and what doesn't. I made the software open source so others could learn from my triumphs and my failings.
Is that a really bad thing? Was that really a waste of time? And if it was, wasn't it mine to waste anyway?
Don't use '#ff0000':
use Acme::AutoColor; my $redcolor = RED();
All colors subject to change without notice.