Another one on re-inventing wheels (I knew I had missed something... ):

At least once I have done something like the complete opposite of re-inventing: Once I encountered severe performance issues repeatedly scanning a large linked list in a loop. After some thinking, I added some auxiliary pointers to the list that allowed me to skip a number of list items under certain (quite common) circumstances, thus allowing some kind of "fast forward" on the list. It gave me a dramatic performance boost and I was quite proud of what I had written there, bur didn't pay too much attention to it afterwards.

Some years later, some university guy (well, he became quite famous in the meantime, so I terribly under-rate him by using that term ) came up with a basically quite similar thing, put it on a nice mathematical base and published it. Today this data structure is commonly known as skip list.

BTW, later I noticed that similar or even better results could be accomplished using an array of linked lists under the right circumstances. This is by far not that esoteric though...

And, Hossein, how did you manage to put that spectacular bouncing smily into your post?