Sitemaps are specially crafted XML files, usually located at https://yourdomain.com/sitemap.xml, that help search engines better crawl your site.
It came up in conversation on IRC that there was a need for a sitemap plugin for Known, and because such a plugin would be useful to myself as well as others (and because I had a little bit of time while waiting for a painfully slow set of Vagrant builds, so I thought I’d put something together.
So, over on github, I’ve put together a quick plugin that will automatically generate a basic sitemap plugin for your site, as well as update your
When you first visit your sitemap.xml file a sitemap will be generated and cached. When you create new posts, this file will be automatically updated.
It’s pretty simple at the moment, but as usual, pull requests are welcome!
» Visit the project on Github...
The other week I wrote about a plugin I made that lets you syndicate content from a Known site to an IRC channel.
Since folk using other platforms expressed an interest, I thought I’d quickly write down how to do it for the other indieweb folk out there.
Writing content to an IRC channel is actually pretty straightforward, I’ll get onto the specifics of what you need to do in a moment, but your first step is to collect necessary information.
At the very least you’ll need:
- Server details: Server (e.g. irc.freenode.net), Port (e.g 6667, or better, 6697 for TLS)
- The channel you want to post to (e.g. #indiewebcamp)
- The nickname to use (and password if your nick is protected by nickserv)
Collect that information (or hard code it if it’s just for you), you’ll need it later.
Making a post
Posting some content to the channel after this is fairly straightforward. Obviously, if you want to persist on the channel you’ll need to start thinking about implementing a proper bot, but a single posting doesn’t need to get into that.
The basic protocol is:
- Connect to the server on the given port, and I strongly suggest you use TLS.
- Greet the server by sending the following:
USER *username* *username* bla :*username*\r\n
All the *username* bits in the first line are actually meant to be your username, fullname and nickname. For brevity, because I wasn’t writing a full client, I just used the same thing.
- Wait for response from server. At this point the server will spit back some information about the server, and may ask you some questions. You *should* parse that intelligently, but I couldn’t be bothered, so I just wait a few seconds.
- If you need to send a password to the nickserv, do so now:
PRIVMSG NickServ :IDENTIFY *username* *password*
Wait for response (or a few seconds) as before.
- Join your channel:
and wait for response.
- Post your message:
PRIVMSG *#channel* :*your message*
and close your connection.
If you want to experiment with this before you start coding, you can connect and do the whole exchange by hand via telnet/telnet-ssl, e.g:
marcus@dushka:~$ telnet-ssl irc.freenode.net 6697
USER example example bla :example
.... server response ....
PRIVMSG NickServ :IDENTIFY example somesecretpass
PRIVMSG #indiewebcamp :Hello folks!
All in all, posting to an IRC channel is pretty straightforward, however there are a few things that can trip you up.
- Don’t be too fast: The main issue is that if you just open the connection and splurt your commands, you likely won’t get anywhere. The server will respond, and will expect you to listen to what it says. As I said above, the best thing is to read and process this response intelligently, but you can of get away with just waiting a few seconds… obviously YMMV.
- Nickname collisions: The above code doesn’t handle a situation where the nickname is already active on the network. I sidestep this issue by using a different username than my regular IRC handle for my syndication user, and to use nickserv to guard it. If you don’t want to take that approach you’re going to need to do something else, like parse the server response to detect the problem and present alternate nicks.
IRC (Internet Relay Chat) is a protocol that lets you communicate in text based chat rooms over the internet, and is basically what we all used to use in the 90’s before Twitter or WhatsApp. Think of it like multi-player notepad.
Most folk don’t even know it exists, but many technical people (especially those in the free software community) use IRC to facilitate discussion and development with people around the world.
I quite often use my Known site to share links with people over twitter and facebook, but to do the same with folk in IRC I’d have to paste the link by hand, and, well… I’m lazy. So I wrote a plugin!
One particularly handy thing you can do, combined with my command line API tools, is that you have a quick way to post from system services or internet connected (IoT) devices… but I’ll leave that as an exercise for the reader.
The Known IRC plugin adds the ability to syndicate short messages and share links to one or more IRC channels.
Once activated and configured, you will be able to syndicate out to IRC straight from your site.
There are a couple of limitations of course…
- IRC only lets you have one nickname per network (freenode, efnet etc), so if you sit on IRC as well, use a different nickname. Also consider registering this name with nickserv (the plugin supports nickserv passwords)
- The plugin doesn’t perform a persistent login (for various reasons), therefore it’ll join, post and then leave the channel.
» Visit the project on Github...