This is great. Not just because it's good code, but because I can understand it. I don't know if it's the comments, the clean code, or Go itself that makes it this easy, but it is. I used to believe "It's easier to write code than it is to read it.", but now I'm thinking of rephrasing it "It's easier to write mediocre code than it is to read it."<p>I'm not a software developer, computer scientist, or any kind of paid engineer. I'm an amateur. I started to learn to code in late middle school, and just kept at it on and off until now, near the close of high-school. Now with the menacing sign of college (or work?) on the horizon I'm left with a little doubt. I have had a jump start on programming and I haven't just been doing Fizzbuzz and "Hello, World!" programs all this time. I got some fun things done with Pyglet, LÖVE, sockets, file I/O, and IRCBots, but besides the lack of any significant projects in a MANLY language (i.e. C, C++, Assembly) and the creation of any projects that have been useful to others beyond mild entertainment, the biggest deficiencies I have are that I've never worked in a large group project and I have great difficulty reading other peoples code.<p>I have a git-hub. I write code. I've worked collaboratively on some simple things with people, but usually everyone involved, including me, loses interest and the project stagnates. I tried contributing to open source software. There's this great site called OpenHatch. It taught me the basics about how to send in issues, generate patch files, and use subversion. All the projects that OpenHatch displayed issues for tended to be in Python. This was right up my alley, or so I thought. I had never used twisted, but twisted was the code base with the most "easy-to-fix" bugs. I made a mistake though. Because I was trying to fix a massive project I had never used before and barely understood I ran into some difficulty. As the result of all my efforts, I may or may not have fixed a typo in a python docstring. I wasn't used to the issue system so I didn't open the issue for review and someone else made an identical patch with the same name. To this day I'm still not sure which was accepted. Oh well, it probably wouldn't have counted for much anyway. I wouldn't really have been able to call myself an "Open Source Developer!" anyway.<p>Twisted was an extreme issue, but understanding other peoples code was always difficult. Oh sure, I could follow along with a tutorial or example video, but if I ever tried to explore git-hub I never ran into anything that made sense to me and wasn't very basic.<p>I'm writing all this because this feels like a turning point for me and I have no where else to say it.<p>It's a turning point because I really "grokked" your code. It made sense and I don't even really know Go that well. I definitely haven't created any large projects in it, or even any small useful ones. My only experience with Go was my own old very basic IRCBot framework that pales in comparison to the one that's linked and doesn't even work, the tour of Go, and a few lectures by Rob Pike. The bot framework was meant to be an "OOP IRC Bot Framework in Go". I was really missing the point of the language, and it wasn't until nearly a year after trying to build that basic project that I started to watch talks on the language and really work at the online tour.<p>I have no where else to say this because no one else that I'm friends with codes. They might have coded or be interested in coding, but they don't actively code. It's not a hobby for them. Saying "I can read moderately complicated code on git-hub and it makes sense! :D" doesn't really carry any weight.<p>So thanks. I can finally say "I can read moderately complicated code on git-hub and it makes sense! :D", so I will.
I can read moderately complicated code on git-hub and it makes sense! :D<p>This bot is composed of some of the most useful code I've seen yet, and I haven't even compiled it.