

GoIRC - Event-based stateful IRC client framework for Go - neeee
https://github.com/fluffle/goirc

======
Petit_Dejeuner
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."

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.

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.

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.

I'm writing all this because this feels like a turning point for me and I have
no where else to say it.

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.

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.

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

This bot is composed of some of the most useful code I've seen yet, and I
haven't even compiled it.

~~~
fluffle
Wow. I really appreciate that!

I think Go, as a language, makes it much easier to write code that is both
well-structured and readable. Of course, I have consumed a non-trivial
quantity of the kool-aid, and I am convinced by the arguments that Rob Pike et
al. made when outlining their design choices.

------
fluffle
Hi. Err... had to create a HN account to reply, whyrusleeping on #go-nuts told
me this was here.

Feel free to file issues on github and consider that the "source of truth" for
my code, and please ignore my site. I don't have time to throw together a web
presence, too busy at work ;-)

~~~
fluffle
Out of interest, has anyone else who's had their personal server mentioned on
HN's frontpage noticed an uptick in SSH scans from those lovely folks in the
PRC? Certainly did here.

Welp, 221.192.143.73/24 is going in the firewall config.

~~~
oofabz
Install fail2ban to protect against these scans. With its default settings, it
will ban an IP for ten minutes if it fails to login six times. That doesn't
inconvenience real users but it makes it impractical to brute-force a
password. It's probably available from your distribution's package repository.

~~~
charliesome
It's already impossible to brute force a password if it's of a decent length

~~~
dsl
Your statement is absolutely false. Any password of any length can be brute
forced.

------
babas
Here is another very similar one: <https://github.com/thoj/go-ircevent>

------
neeee
May be better to link to <http://www.pl0rt.org/code/goirc/> (sorry!). Edit:
Also, I did not create this, I just thought it was cool.

------
yannk
I have been using it for a small HTTP-IRC gateway with great success:
<https://github.com/yannk/parrot-bot>

------
voidlogic
Very cool! Thanks for making this.

------
IheartApplesDix
is there already a server framework?

~~~
_ak
Server framework for doing what?

~~~
gcr
For hosting an IRC server. I'm interested in finding some server way to host a
"fake" IRC server for my own projects. Think Bitlbee.

