my medicine residency), I taught my self Go by writing a website with
threaded forums and websocket-based live-loading comments, called AskGolang<http://askgolang.com/>.
I posted it to HN and #golang-nuts, and people were interested in traffic
stats, hosting info, and in getting access to the code. In this thread, I
wanted to update the group with an answer for these 3 inquiries.
Before open sourcing the project, I posted AskGolang to Hacker News, where
it got some interest and spent some time on the front page. I also posted
it to this newsgroup. The site got about 5,000 visitors on that first day:
These folks are from all over the US and the world:
There were a peak of 1,200 visitors within one hour, about one every 3
Of these visitors, 134 were sampled by Google Analytics for page speed
estimation. On average, the pages loaded in 0.87 second.
As you might imagine, with an average of one visitor per 3 seconds, with
pages loading in less than a second, there wasn’t much of a chance to run
into concurrency roadblocks, and none were noted in the error logs.
However, hundreds of users were connected simultaneously with active
Websockets. Because I don’t have specific logging, I don’t have the formal
peak number of users, but I was online during this time and the peak was
about 120 users simultaneously connected over the same channel via
My hosting is quite simple: the 1GB (smallest available) Linode running
Ubuntu. This costs $20/month, and I host all of my various projects on the
same little box. I deploy by asking *go* to give me a Linux binary capable
of using 8 cores, and then I *scp* the binary over to the server and tell *
upstart* to reload it.
I’ve never really participated in open source projects, except for filing a
few bug reports here and there. The code underlying this project is now
fully open. While it’s still a work very rough and clearly in progress
(with console log messages and all!), I wanted to put this out for public
consumption now in the hopes of getting feedback that will improve the
project and my ability to reason about code. Perhaps, too, someone will use
this as a framework to launch a project of their own. Even if nobody else
participates, it will be interesting to see how my relationship with the
code changes when I know that what I push will ultimately become public in
The main “guts” of the project come in the form of a golang package called *
GRAF*, for GRAF Recursively Arranged Forum<https://github.com/carbocation/go.graf>,
a nod to the mechanism for displaying nested comments. That package
includes a GRAF example project<https://github.com/carbocation/go.graf/tree/master/example> that
is essentially complete (but which requires that you have Postgres
installed and that you configure some tables as the forum.sql file
GRAF, and all of the other components that it uses in various parts, are
available as open-source projects available under an MIT-style or an
Apache-style license (depending on the project), written by me and/or
The above is also posted on my blog
Cheers, and thanks for all of the feedback the first time around,
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to email@example.com.
For more options, visit https://groups.google.com/groups/opt_out.