hn-classics/_stories/2010/7778995.md

142 lines
5.8 KiB
Markdown
Raw Normal View History

---
created_at: '2014-05-21T16:10:01.000Z'
title: The greatest bug I never fixed (2010)
url: http://blog.makandra.com/2010/04/the-greatest-bug-i-never-fixed/
author: triskweline
points: 356
story_text: ''
comment_text:
num_comments: 63
story_id:
story_title:
story_url:
parent_id:
created_at_i: 1400688601
_tags:
- story
- author_triskweline
- story_7778995
objectID: '7778995'
2018-06-08 12:05:27 +00:00
year: 2010
---
2018-02-23 18:19:40 +00:00
[Source](https://blog.makandra.com/2010/04/the-greatest-bug-i-never-fixed/ "Permalink to The greatest bug I never fixed - The blog of makandra")
# The greatest bug I never fixed - The blog of makandra
The [blog][1] of ![][2], a Ruby on Rails development team
Known from [Rails LTS][3], [makandropedia][4] and [Nanomize][5]
# [The greatest bug I never fixed][6]
Bugs [ain't fun][7]. Except when they are. This is the story of the greatest bug I never fixed.
In an earlier life I wrote addons for [World of Warcraft][8]. Aside from being addicted to the game at the time, it was a mindblowing experience for someone obsessed with plugin architectures and the evolution of public APIs. It was also a great excuse to learn [Lua][9], which is a fun language.
One of the better addons a friend and I built during that period was _FriendNet_. FriendNet helped to deal with the greatest challenge in the game: Finding people to play with who aren't dicks. The addon took your in-game friend list and shared it with all your friends. In return, they shared their friends with you. As a result the number of people you could trust weren't dicks increased.
Because any form of network communication was forbidden by the addon API, we had to come up with a hack to distribute those friend lists. What we did was serialize those lists into in-game chat messages and whisper them to the receiving player's avatar.
Yes, years before your Mom discovered Facebook we were tunnelling social graphs over the chat channels of a virtual world. We should have gotten funding.
Anyway, FriendNet did have some quality issues. P2P applications are hard to get right, and you can't just make people upgrade every time you release a bugfix. So we had all those different versions talking with each other, resulting in a lot of emergent behaviour and hard to reproduce bugs.
One bug was especially hard to pin down: Once every few days FriendNet would encounter a corrupt message, resulting in parts of the addon GUI to be messed up. We received enough bug reports to believe that the issue was real, but we could never reproduce the bug no matter how hard we tried. It was the bug from hell. Eventually we gave up, blamed it on a buggy API and moved on.
The solution came to me years after I stopped playing the game. When I realized what had gone wrong, the light almost blinded me.
You know, your character can [get drunk in World of Warcraft][10]. After drinking enough virtual booze, your screen will start to blur and your character will no longer move in straight lines. Also when you type something into the chat like
Penelope says: I'm so wasted
It will come out like this:
Penelope says: I'm sho washted ...hic!
Because FriendNet serialized all of its communication into chat messages, it sent corrupted data whenever the broadcasting player was drunk.
FriendNet has long since disappeared from the addon sites you could once download it from. I doubt it would even boot up in a current version of the game. But even though I never got to fix that bug, I still remember it with fond amusement.
Henning Koch [@triskweline][11] Apr 28, 2010
![Growing Rails Applications in Practice][12]
Check out our e-book:
[Growing Rails Applications in Practice][13]
Learn to structure large Ruby on Rails codebases with the tools you already know and love.
[Learn more][13]
# [Recent posts][1]
* [Introductory interview with Daniel][14]
* [2017 web tech predictions and good ideas that will not happen][15]
* [Introductory interview with Natalie][16]
* [Know your APIs][17]
* [Introductory interview with Andreas][18]
* [Now available: Post Rails Book Bundle][19]
* [Using responsive images][20]
[__ All posts][1]
[__About makandra][21] [__Feed][22] [__Twitter][23] [__Facebook][24]
**Our address:**
makandra GmbH
Werner-von-Siemens-Str. 6
86159 Augsburg
Germany
**Contact us:**
+49 821 58866 180
[info@makandra.de][25]
**Commercial register court:**
Augsburg Municipal Court
**Register number:**
HRB 24202
**Sales tax identification number:**
DE243555898
**Chief executive officers:**
Henning Koch
Thomas Eisenbarth
[Privacy policy][26]
[1]: https://blog.makandra.com/
[2]: https://blog.makandra.com/images/makandra-logo-orange.inverted.png
[3]: https://railslts.com
[4]: https://makandracards.com/makandra
[5]: https://nanomize.de/en/
[6]: https://blog.makandra.com/2010/04/the-greatest-bug-i-never-fixed/
[7]: http://use.perl.org/use.perl.org/_schwern/journal/40260.html
[8]: http://www.wow-europe.com
[9]: http://en.wikipedia.org/wiki/Lua_%28programming_language%29
[10]: http://www.wowwiki.com/Drunk
[11]: https://twitter.com/triskweline
[12]: https://blog.makandra.com/images/growing_rails_cover.jpg
[13]: https://leanpub.com/growing-rails
[14]: https://blog.makandra.com/2017/06/introduction-interview-daniel-strassner/
[15]: https://blog.makandra.com/2017/01/2017-web-tech-predictions/
[16]: https://blog.makandra.com/2016/12/introduction-interview-natalie-krehan/
[17]: https://blog.makandra.com/2016/11/know-your-apis/
[18]: https://blog.makandra.com/2016/10/introduction-interview-andreas-herz/
[19]: https://blog.makandra.com/2016/07/post-rails-book-bundle/
[20]: https://blog.makandra.com/2016/07/using-responsive-images/
[21]: https://blog.makandra.com//www.makandra.com
[22]: https://blog.makandra.com/articles.atom
[23]: https://twitter.com/makandra_com
[24]: https://www.facebook.com/makandra.de
[25]: mailto:info%40makandra.de
[26]: https://blog.makandra.com//www.makandra.com/privacy-policy