Handmade Network»Blog

[Tutorial] Handmade Network IRC


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

The server now supports cloaking, and will do so automatically when you connect so your IP address will not be visible to non-admins.

Where programs expect an IRC url, use:

You can also copy/paste this into Firefox's address bar.

Using a Web Client

You can access HMN via the Kiwi IRC web client via this url: https://kiwiirc.com/nextclient/#i...irc.handmade.network:7777/#random

There is also another web client hosted by insofaras available at https://hmnirc.party with history playback.

Common Channels

#dev — programming talk / questions
#hmn — questions / concerns relating to the website or other hmn services
#hero — concerning Handmade Hero
#streams — automated twitch stream notifications
#random — main social channel

...and more (inquire within)

Join them with /join <name>, e.g. /join #hero

  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.
Sign up for our email newsletter:
Mārtiņš Možeiko,
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.
Matt Mascarenhas,
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.
Mārtiņš Možeiko, Edited by Mārtiņš Možeiko on
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.
Matt Mascarenhas,
Alright, thank you, Martins! I've updated the instructions accordingly.
Leonid Kapitonov,
Bah, for reals, Slack is more convenient.
Jeroen van Rijn,
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
Mārtiņš Možeiko,
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.
Leonid Kapitonov,
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!
matt chesher, Edited by matt chesher on
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)


Murry Lancashire,
Agreed on the discord server. I Rarely launch up irc these days...
Mikkel ,
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
Murry Lancashire,
Discord has a beta of a linux build, so that won't be a problem soon.
Jeroen van Rijn, Edited by Jeroen van Rijn on Reason: clarification
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.
Dustin Specht, Edited by Dustin Specht on
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
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.
Abner Coimbre,
wellen this is a pleasant-to-use WebIRC client. I've updated the post.
Mārtiņš Možeiko,
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.
Abner Coimbre,
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..
Mārtiņš Možeiko,
Oh, that's cool. I didn't know that somebody is making new client.
Abner Coimbre, Edited by Abner Coimbre on Reason: Wording
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).
Alexander Obi Davids,
I just registered because I like what folks are doing here and I would love to be a part of this movement. However, I have one handicap - I'm new to programming. Still trying to master web development. Essentially Ok with ECMASCRIPT 2015 and Python 2. I think I'm not good enough to be here. How do I upgrade my knowledge within the shortest possible time?

My appologies if this sounds a bit off !
Ryan Fleury,
From what I understand, there is no 'experience requirement' on being a part of Handmade Network. This community is all about growing and learning to become a better low-level programmer. A great resource to get started with is Handmade Hero.

Can you please enable IP address hiding/cloaking? Right now it shows everybodys IP address which is a bit unwanted
Neo Ar, Edited by Neo Ar on

I don't want IP hiding/cloaking on the IRC server personally, being able to see IPs is pretty standard in the world of IRC and many users like to set up custom hostnames using RDNS, cloaking would ruin that and custom hostnames are usually reserved on servers for admins. If you want anonymity on IRC you can connect with Tor or a proxy

Mārtiņš Možeiko,
I believe you can set up cloaking as opt-in service.
Edited by rain1 on
yes usermode +x. any chance of getting this?
Alex Baines,
Cloaking (mode +x) has now been added by default.
To opt out (show your real hostname) use /mode myname -x
Seth Archambault,
K first time using WeeChat, I dig it, but I registered a username, and somehow the password is wrong for it.. Any way to reset?

NickServ (NickServ@handmadedev/services/NickServ): This nickname is registered. Please choose a different nickname, or identify via /msg NickServ
│ | identify <password>.
│12:15:41 HMN -- | NickServ (NickServ@handmadedev/services/NickServ): Invalid password