[Tutorial] Handmade Network IRC

by abnercoimbre April 26, 2016, 4 a.m.

Server: irc.handmade.network
Port: 7777 (SSL) 7666 (Plain Text)

Using a Web Client

Use our beta client if logged in.

We also recommend Kiwi IRC. Remember to change the server name to irc.handmade.network, port number to 7777 and that SSL is enabled.

Common Channels

#hero — concerning Handmade Hero

...and more (inquire within)


1. Keep topics related to the #channel you are in. Randomly arguing the finer points of Salsa music on #dev would break this rule.

2. Programmers are known to curse and engage in flame wars. This is fine in channels like #random, but it's to be kept at a minimum elsewhere.

3. Comply with channel operators. They will time out or ban users who are visibly out of line, at their discretion and interpretation of what that means in context.

In the end, we want a toxic-free server with caring programmers helping each other.

Simplified History

IRC stands for Internet Relay Chat (RFC 1459), and it's a protocol designed to dictate to a programmer the rules of how to exchange messages between clients and a server in an organized way—this is known as the client/server networking model. If you were to write a C program that implements the server rules of the IRC protocol, and then you run that program, you've made an IRC server. All you'd need is to similarly write a client that implements the client rules of the IRC protocol, and provide that source (or compiled build) to users and have them run each client as they connect to the server through a valid port number. If the client you programmed allows users to write a message through a supplied interface (e.g. typing on the command-line), the server will broadcast it to all connected clients. Chat services such as Slack have relied on an IRC backend before implementing their own. Twitch chat still uses IRC. It's the simplest, oldest, and most well-known form of real-time communication method across the Web. There's more involved, such as the concept of channels, operators, and queries, but that's the general gist of this chat mechanism.

Per tradition, people ask "Are you on IRC?" instead of "Do you use a chat system that implements the IRC protocol?" to simplify the conversation.

Installing HexChat Client

1. Download HexChat

2. Select HexChat -> Network List from the top menu.

3. Select Add from the dialog box. Type in handmade.network or some such memorable name.

4. Change the value of newserver/6667 to irc.handmade.network/7777

5. Make sure the "Use SSL for all the servers on this network" is checked for secure communication.

6. Have a nickname and optionally a second choice if the first is taken (See note below as we explain how to register your nickname so it isn't taken away).

7. If you have a registered nickname, select NickServ (/MSG NickServ + password) from the Login method field. Input your password.

8. Close and hit Connect.

NOTE: If you want to register your own nickname, after you've connected to the IRC type in

/msg NickServ register YourPassword [email protected]s

Installing Weechat Client (via Matt Mascarenhas)

Handmade.Network IRC on WeeChat:

WeeChat is an ncurses-based IRC client, available for Linux, Unix, BSD, GNU Hurd, Mac OS X and Windows (cygwin). This short guide assumes you have installed WeeChat and the CA certificates – on Arch Linux: pacman -S weechat ca-certificates – launched WeeChat and have your typing fingers poised to get yourself into the Handmade.Network IRC.

To add the secured (SSL) Handmade.Network IRC server to WeeChat, autoconnect to the server upon launching WeeChat and autojoin the #dev, #hero, #hmn and #random channels upon connecting to the server, run the following command:
/server add HMN irc.handmade.network/7777 -autoconnect -autojoin=#dev,#hero,#hmn,#random -ssl

To set your nicks and username for Handmade.Network, run the following commands replacing YourPreferred*:
/set irc.server.HMN.nicks "YourPreferredNick"

/set irc.server.HMN.username "YourPreferredUsername"

To use /secure (see /help secure for more information) to store your password, run the following command replacing YourPreferredPassword:
/secure set HMN YourPreferredPassword

And finally to use this secured password to automatically identify with nickserv upon connecting to the server, run the following replacing YourPreferredUsername:
/set irc.server.HMN.command "/msg nickserv identify YourPreferredUsername ${sec.data.HMN}"

/set irc.server.HMN.password "${sec.data.HMN}"

With all of this set – and I apologise that it couldn't be a one-liner – you should be able to invoke /connect HMN and so find yourself joined to #dev, #hero, #hmn and #random. To then navigate between these buffers, press Alt+1 (where 1 is a single-digit number) or Alt+j [release] 10 (where 10 is a double-digit number) corresponding to the buffer number of the channel you want. If this is your first encounter with WeeChat then you will want to install buffers.pl at the very least, to make navigating between buffers more pleasant:
/script install buffers.pl

If you're enjoying WeeChat so far, stay tuned for a walkthrough of my setup, to give you some ideas for making a really pleasant IRC environment.

Edited by Abner Coimbre on Sept. 1, 2016, 5:30 p.m. Reason: Update title
#6484 mmozeiko April 26, 2016, 4:38 a.m.
Do you really need to set ssl_fingerprint with weechat? My understanding is that weechat will verify certificate chain automatically. So as long as you have installed proper CA roots, the weechat ssl connection will validate correctly without explicit fingerprint.

Setting ssl_fingerprint will give problems to users after 2017-04-04 23:59:59 UTC, when current SSL cert will expire.
#6486 Miblo April 26, 2016, 5:24 a.m.
Ah, cheers Martins. I'd struggled to get SSL connections to work properly, and setting ssl_fingerprint has been the thing that helped. I've just cleared the ssl_fingerprint in favour of /set weechat.network.gnutls_ca_file "/etc/ssl/certs/ca-certificates.crt" as per the Arch wiki and have successfully reconnected, but I'll keep an eye on it to make sure it keeps working. I'm pretty sure I'd set this previously before having successfully connected, and I'm just wondering now if the the previous successful connection with the fingerprint is somehow cached, preventing it from failing. If it does keep working, I'll remove the ssl_fingerprint setting from the post.
#6487 mmozeiko April 26, 2016, 6:36 a.m.
Yeah, I'm pretty sure it's not cached anywhere. I'm using weechat on Arch, and when I connected to handmade.network I did it with SSL without setting fingerprint (and without connecting to plain IRC before). Connection just worked. There's no need to set weechat.network.gnutls_ca_file option, it's default value is already /etc/ssl/certs/ca-certificates.crt. It's pretty much package maintainers responsibility to set these kind of values to have distro-specific settings (if needded).

Btw, I think it's better to use this format to identify yourself to nickserv: "/msg nickserv identify YourPreferredNick ${sec.data.HMN}" If your nick is taken when connecting (somebody else connected just before you), then you'll get assigned temporary nick - YourPreferredNick_ or something. Then nickserv won't be able to identify you. With your nick explicitly set before your password will identify you with your real nick.

Edited by Mārtiņš Možeiko on April 26, 2016, 6:39 a.m.
#6501 Miblo April 26, 2016, 1:36 p.m.
Alright, thank you, Martins! I've updated the instructions accordingly.
#6576 Feacur April 28, 2016, 9:06 a.m.
Bah, for reals, Slack is more convenient.
#6577 Kelimion April 28, 2016, 9:40 a.m.
With respect to Slack, I can say this:

We've used it in the past, and it is indeed convenient.
However, it's unaffordable to supply a Slack account to all 1366 members and counting.

And people will say that it can be used for free. This is certainly the case, but not if you care about logs. Logs only go back so far on the free Slack accounts, and those happen to be very useful when you end up using Slack to discuss all manner of development related things that you may want to come back to later.

We are however looking into alternatives to Slack:
  • Mattermost
  • Adding Slack-like functionality to the website itself
#6591 mmozeiko April 28, 2016, 6:23 p.m.
How Slack is more convenient?
With IRC I can connect to server, send messages and receive messages. How that is not convenient? IRC does what it's supposed to do. And exactly what we need.
#6608 Feacur April 29, 2016, 5:10 p.m.
Thanks for the answer. I honor your decisions.

I understand limits of the Slack itself by using it daily.

But all this IRC hassle is simply inconvenient. And there is no offline history, as I've got it (I can be wrong). Even using compiler from command line is far more trivial than IRC. I will give it another shot, probably. And there are forums and twitter, to say.

Anyway, Handmade Network is great, fast and convenient. So, thank you for your work!
#6725 fucus_velecusos May 1, 2016, 1:41 a.m.
Hey guys,

You should look into getting a Discord server. They fulfill all the functions of a IRC, Slack, and a Ventrilo/Skype-type thing as well. Best of all it is free and supports a large amount of users. Recently Reactiflux moved to it from Slack for some of the reasons talked about in this comment thread. You can read about that through the following link.


I also think it is a very nice piece of software (a handmade feel if you will), so it seems like an appropriate choice. (I don't work for them)


Edited by matt chesher on May 1, 2016, 1:49 a.m.
#6730 Muzz May 1, 2016, 3:22 a.m.
Agreed on the discord server. I Rarely launch up irc these days...
#6731 Hjortshoej May 1, 2016, 3:31 a.m.
Discord not having a desktop linux client I would say already removes it from a list of potential alternatives, though having used both Slack, IRC and Discord, I prefer IRC way more than all the others ones
#6734 Muzz May 1, 2016, 3:34 a.m.
Discord has a beta of a linux build, so that won't be a problem soon.
#6743 Kelimion May 1, 2016, 9:02 a.m.
As far as Discord is concerned, I see more problems than solutions there:

  • Like Slack, and unlike Mattermost, there's no 'community server download' that means we can run it on our own infrastructure. We'd prefer not to be beholden to more 3rd parties than needed.
  • The number of people looking for voice chat (in this community) can probably be counted on one hand. Personally I consider it an anti-feature, but if it's there and can be switched off, meh. It's not a worthwhile enough improvement over IRC or Slack to switch over for on its own, let's keep it at that.
  • It's specifically tailored to gaming communities, from the looks of it. Which is nice, but we're not a gaming community.
  • Slack and Mattermost allow posting code snippets, integrations with other services and you can even supply these yourself. It appears Discord allows for posting images and links and that's about it?

In other words, Discord can't seriously be considered to be a replacement for Slack. For IRC, sure, but we have deeper integration between the website, our GitLab instance and other things in mind.

Edited by Jeroen van Rijn on May 1, 2016, 11:20 a.m. Reason: clarification
#6760 Spector May 1, 2016, 10:17 p.m.
Following on Kelimion's reply on Discord I agree that it is not what we are looking for. It may be good for some groups but overall it has to many downsides for it to really be considered.

Also Kelimion's comment on voice chat not really being useful for a lot of people is true. And for those that want to use voice-chat Soul is running a Teamspeak3 server that holds 512 we don't use even a quarter of that ourselves. So if people are wanting to voice chat that is a place users can come. You can either message me(Spector) or Soul on IRC, or use !ts in #random of IRC for a link to the server. If you do decide to use the TS server please respect the admins and moderators. If you are from here ask to be put in the HMD group so you do not have to request talk power in some channels.

I look forward to seeing some of you on the TS server if you choose to use it.

The Sub-section of the TS you are looking to join is Under Communities->Handmade Network -- the list of channels can grow as people have different needs.

If some questions are had. Contact me or soul on IRC.
Dustin (Spector) Specht

Edited by Dustin Specht on May 1, 2016, 11:16 p.m.
#6849 wellen May 6, 2016, 5:36 a.m.
I used the web browser based irc kiwi earlier during a handmadehero stream and it worked very well and meant I didn't have to install software.
#6853 abnercoimbre May 6, 2016, 1:47 p.m.
wellen this is a pleasant-to-use WebIRC client. I've updated the post.
#6858 mmozeiko May 6, 2016, 5:48 p.m.
Maybe you could host it on this site? Somewhere like https://handmade.network/irc
Then nobody would need to install anything if all they want is a quick/short chat.
#6862 abnercoimbre May 6, 2016, 7:01 p.m.
Embedding it might be nice while we develop our own web client (which chronaldragon and effect0r have been working on). We want the site to be as self-contained as possible so we have no one else to blame but ourselves for speed hits, but Kiwi looks really good and I like where they stand. No reason to not use their service for now..
#6866 mmozeiko May 6, 2016, 9:30 p.m.
Oh, that's cool. I didn't know that somebody is making new client.
#6916 abnercoimbre May 9, 2016, 5:24 p.m.
Oh, that's cool. I didn't know that somebody is making new client.

We now have our own WebIRC ready for public testing: https://handmade.network/irc (also available on home page).

Edited by Abner Coimbre on May 9, 2016, 5:24 p.m. Reason: Wording