Archive for the ‘irc’ Category

Ircbot Alt-Genesis

Saturday, November 21st, 2020

While attempting to press trinque's ircbot including whaack's and ben_vulpes's patches, I ran into the issue of the genesis having been created using a differing hashing algorithm than that used for whaack's patch making pressing ircbot impossible using the available patches and genesis. Here you'll find a genesis including trinque's genesis and the changes from ben_vulpes's patch and whaack's patch.


1 diff -uNr a/ircbot/INSTALL b/ircbot/INSTALL
2 --- a/ircbot/INSTALL false
3 +++ b/ircbot/INSTALL c4c41d96ddb71db32e8cd54c22e7250abbc52d51f4b25d8092dc094b4a84100949d0a74378fc33131d2d9a5144156a738f5a91d7e949922898993eb4384b4757
4 @@ -0,0 +1,19 @@
6 +
7 + * Install SBCL (with sb-thread) and Quicklisp.
8 +
9 + * From the SBCL REPL:
10 + (ql:quickload :cl-irc)
11 +
12 + * Use V to press `ircbot`
13 +
14 +mkdir -p ~/src/ircbot
15 +cd ~/src/ircbot
16 +
17 +mkdir .wot
18 +cd .wot && wget && cd ..
19 +
20 init
21 press ircbot-genesis ircbot-genesis.vpatch
22 +
23 +ln -s ~/src/ircbot/ircbot-genesis ~/quicklisp/local-projects/ircbot
24 diff -uNr a/ircbot/README b/ircbot/README
25 --- a/ircbot/README false
26 +++ b/ircbot/README 6a76028622c6bb986d68d42b7b133221d3659d56da1bd5d4e8b39f0a6075a17d8b3ee33c8e37c7d4b3ec1f108ad940777d762bab01763a63742733a1445660d4
27 @@ -0,0 +1,8 @@
29 +
30 +`ircbot` provides a simple CLOS class, `ircbot`, which will maintain a
31 +connection to a single IRC channel via `cl-irc`. The bot will handle
32 +ping/pong and detect failed connections, and is capable of
33 +authenticating with NickServ (using ghost when necessary to
34 +reacquire nick).
35 +
36 diff -uNr a/ircbot/USAGE b/ircbot/USAGE
37 --- a/ircbot/USAGE false
38 +++ b/ircbot/USAGE 20d07e6f190f6655a2884e60c1d6a7eccdd76d019797bb165c716a6919fb5161a31b1956b9dda7927839837a924ae6ea3d0c1a833458bbbd5765f76548d637d2
39 @@ -0,0 +1,14 @@
41 +
42 +(asdf:load-system :ircbot)
43 +(defvar *bot*)
44 +(setf *bot*
45 + (ircbot:make-ircbot
46 + "" 6667 "nick" "password" "#channel"))
47 +
48 +; connect in separate thread, returning thread
49 +(ircbot:ircbot-connect-thread *bot*)
50 +
51 +; or connect using the current thread
52 +; (ircbot:ircbot-connect *bot*)
53 +
54 diff -uNr a/ircbot/ircbot.asd b/ircbot/ircbot.asd
55 --- a/ircbot/ircbot.asd false
56 +++ b/ircbot/ircbot.asd 9dfba5c2bd97e5ffc2ab071786b14c05dfda1c898ef58a5d87ea020bde042bf76c0e88b78f6d4a4fbd453aabea58e4710bf717defa023dfe410d19ac01c4e2d9
57 @@ -0,0 +1,10 @@
58 +;;;; ircbot.asd
59 +
60 +(asdf:defsystem #:ircbot
61 + :description "ircbot"
62 + :author "Michael Trinque <>"
63 + :license ""
64 + :depends-on (#:cl-irc)
65 + :components ((:file "package")
66 + (:file "ircbot")))
67 +
68 diff -uNr a/ircbot/ircbot.lisp b/ircbot/ircbot.lisp
69 --- a/ircbot/ircbot.lisp false
70 +++ b/ircbot/ircbot.lisp 738a2c0ca77a69fc7805cbfc668da1b61e25e512d6d9f3bdf200968e39eb201bb87be83c6ae1411c6e6a5c7dd63524a5b5ab71d99a2813ac85fc5ac4360b3b17
71 @@ -0,0 +1,143 @@
72 +(in-package #:ircbot)
73 +
74 +(defvar *max-lag* 60)
75 +(defvar *ping-freq* 30)
76 +
77 +
78 +(defclass ircbot ()
79 + ((connection :accessor ircbot-connection :initform nil)
80 + (channels :reader ircbot-channels :initarg :channels)
81 + (server :reader ircbot-server :initarg :server)
82 + (port :reader ircbot-port :initarg :port)
83 + (nick :reader ircbot-nick :initarg :nick)
84 + (password :reader ircbot-password :initarg :password)
85 + (connection-security :reader ircbot-connection-security
86 + :initarg :connection-security
87 + :initform :none)
88 + (run-thread :accessor ircbot-run-thread :initform nil)
89 + (ping-thread :accessor ircbot-ping-thread :initform nil)
90 + (lag :accessor ircbot-lag :initform nil)
91 + (lag-track :accessor ircbot-lag-track :initform nil)))
92 +
93 +(defmethod ircbot-check-nick ((bot ircbot) message)
94 + (destructuring-bind (target msgtext) (arguments message)
95 + (declare (ignore msgtext))
96 + (if (string= target (ircbot-nick bot))
97 + (ircbot-nickserv-auth bot)
98 + (ircbot-nickserv-ghost bot))))
99 +
100 +(defmethod ircbot-connect :around ((bot ircbot))
101 + (let ((conn (connect :nickname (ircbot-nick bot)
102 + :server (ircbot-server bot)
103 + :port (ircbot-port bot)
104 + :connection-security (ircbot-connection-security bot))))
105 + (setf (ircbot-connection bot) conn)
106 + (call-next-method)
107 + (read-message-loop conn)))
108 +
109 +(defmethod ircbot-connect ((bot ircbot))
110 + (let ((conn (ircbot-connection bot)))
111 + (add-hook conn 'irc-err_nicknameinuse-message (lambda (message)
112 + (declare (ignore message))
113 + (ircbot-randomize-nick bot)))
114 + (add-hook conn 'irc-kick-message (lambda (message)
115 + (declare (ignore message))
116 + (map nil
117 + (lambda (c) (join (ircbot-connection bot) c))
118 + (ircbot-channels bot))))
119 + (add-hook conn 'irc-notice-message (lambda (message)
120 + (ircbot-handle-nickserv bot message)))
121 + (add-hook conn 'irc-pong-message (lambda (message)
122 + (ircbot-handle-pong bot message)))
123 + (add-hook conn 'irc-rpl_welcome-message (lambda (message)
124 + (ircbot-start-ping-thread bot)
125 + (ircbot-check-nick bot message)))))
126 +
127 +(defmethod ircbot-connect-thread ((bot ircbot))
128 + (setf (ircbot-run-thread bot)
129 + (sb-thread:make-thread (lambda () (ircbot-connect bot))
130 + :name "ircbot-run")))
131 +
132 +(defmethod ircbot-disconnect ((bot ircbot) &optional (quit-msg "..."))
133 + (sb-sys:without-interrupts
134 + (quit (ircbot-connection bot) quit-msg)
135 + (setf (ircbot-lag-track bot) nil)
136 + (setf (ircbot-connection bot) nil)
137 + (if (not (null (ircbot-run-thread bot)))
138 + (sb-thread:terminate-thread (ircbot-run-thread bot)))
139 + (if (not (or (null (ircbot-ping-thread bot)) (equal sb-thread:*current-thread* (ircbot-ping-thread bot))))
140 + (sb-thread:terminate-thread (ircbot-ping-thread bot)))))
141 +
142 +(defmethod ircbot-reconnect ((bot ircbot) &optional (quit-msg "..."))
143 + (let ((threaded-p (not (null (ircbot-run-thread bot)))))
144 + (ircbot-disconnect bot quit-msg)
145 + (if threaded-p
146 + (ircbot-connect-thread bot)
147 + (ircbot-connect bot))))
148 +
149 +(defmethod ircbot-handle-nickserv ((bot ircbot) message)
150 + (let ((conn (ircbot-connection bot)))
151 + (if (string= (host message) "services.")
152 + (destructuring-bind (target msgtext) (arguments message)
153 + (declare (ignore target))
154 + (cond ((string= msgtext "This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify <password>.")
155 + (ircbot-nickserv-auth bot))
156 + ((string= msgtext (format nil "~A has been ghosted." (ircbot-nick bot)))
157 + (nick conn (ircbot-nick bot)))
158 + ((string= msgtext (format nil "~A is not online." (ircbot-nick bot)))
159 + (ircbot-nickserv-auth bot))
160 + ((string= msgtext (format nil "You are now identified for ~A." (ircbot-nick bot)))
161 + (map nil (lambda (c) (join conn c)) (ircbot-channels bot))))))))
162 +
163 +(defmethod ircbot-handle-pong ((bot ircbot) message)
164 + (destructuring-bind (server ping) (arguments message)
165 + (declare (ignore server))
166 + (let ((response (ignore-errors (parse-integer ping))))
167 + (when response
168 + (setf (ircbot-lag-track bot) (delete response (ircbot-lag-track bot) :test #'=))
169 + (setf (ircbot-lag bot) (- (received-time message) response))))))
170 +
171 +(defmethod ircbot-nickserv-auth ((bot ircbot))
172 + (privmsg (ircbot-connection bot) "NickServ"
173 + (format nil "identify ~A" (ircbot-password bot))))
174 +
175 +(defmethod ircbot-nickserv-ghost ((bot ircbot))
176 + (privmsg (ircbot-connection bot) "NickServ"
177 + (format nil "ghost ~A ~A" (ircbot-nick bot) (ircbot-password bot))))
178 +
179 +(defmethod ircbot-randomize-nick ((bot ircbot))
180 + (nick (ircbot-connection bot)
181 + (format nil "~A-~A" (ircbot-nick bot) (+ (random 90000) 10000))))
182 +
183 +(defmethod ircbot-send-message ((bot ircbot) target message-text)
184 + (privmsg (ircbot-connection bot) target message-text))
185 +
186 +(defmethod ircbot-start-ping-thread ((bot ircbot))
187 + (let ((conn (ircbot-connection bot)))
188 + (setf (ircbot-ping-thread bot)
189 + (sb-thread:make-thread
190 + (lambda ()
191 + (loop
192 + do (progn (sleep *ping-freq*)
193 + (let ((ct (get-universal-time)))
194 + (push ct (ircbot-lag-track bot))
195 + (ping conn (princ-to-string ct))))
196 + until (ircbot-timed-out-p bot))
197 + (ircbot-reconnect bot))
198 + :name "ircbot-ping"))))
199 +
200 +(defmethod ircbot-timed-out-p ((bot ircbot))
201 + (loop
202 + with ct = (get-universal-time)
203 + for v in (ircbot-lag-track bot)
204 + when (> (- ct v) *max-lag*)
205 + do (return t)))
206 +
207 +
208 +(defun make-ircbot (server port nick password channels)
209 + (make-instance 'ircbot
210 + :server server
211 + :port port
212 + :nick nick
213 + :password password
214 + :channels channels))
215 diff -uNr a/ircbot/manifest b/ircbot/manifest
216 --- a/ircbot/manifest false
217 +++ b/ircbot/manifest 8a535c4a26e5fba0aa52c44bfcd84176de82568ddd7e98e8fb84ab48b5dbc0bc315c09f37c8eb7201a88fb804a18712d1a876f02e06552157ebefc63a123a9c4
218 @@ -0,0 +1 @@
219 +658020 ircbot_genesis thimbronion This genesis combines trinque's genesis with ben_vulpes' multi-channel fix and whaack's reconnection fix. Theses patches were generated using differing hash algos and can not be applied by any existing v implementation and I do not see any reason that anyone would find ircbot usable without any of them.
220 diff -uNr a/ircbot/package.lisp b/ircbot/package.lisp
221 --- a/ircbot/package.lisp false
222 +++ b/ircbot/package.lisp d186f3af63443337d23a0bfbaae79246fae2b2781acb53109132b42f84cf46acabf1fe12f2aba00c452e679c721ca955daaf302e1a04a56fccb8125d95e1527c
223 @@ -0,0 +1,18 @@
224 +;;;; package.lisp
225 +
226 +(defpackage :ircbot
227 + (:use :cl
228 + :cl-irc)
229 + (:export :make-ircbot
230 + :ircbot
231 + :ircbot-connect
232 + :ircbot-connect-thread
233 + :ircbot-disconnect
234 + :ircbot-reconnect
235 + :ircbot-connection
236 + :ircbot-channels
237 + :ircbot-send-message
238 + :ircbot-server
239 + :ircbot-port
240 + :ircbot-nick
241 + :ircbot-lag))
242 /


Thursday, June 18th, 2020

The results for lekythion’s first crawl of are in. The index created is not of much use due to the crawler being blocked by many sites including, reddit and tardstalk for not complying with the robots.txt files.

Nevertheless I now have a comprehensive list of links from the #trilema logs. I think the index should include the logs themselves, but it might be convenient to be able to compartmentalize crawling external links into a separate task/configuration.

The Voice of Trilema

Monday, June 8th, 2020

Now that I’ve been reading Trilema (successfully or not) for about six years, I thought I’d take some time to comment on the style and voice of the English portion of the the blog.

His voice is distinctive in many ways, but some of the distinctive features that most stand out to me are mircea_popescu’s frequent use of the 2nd person and the the use of graphic sexual metaphor to illustrate many, many concepts.

Given the prominence of this person in his writing, it wouldn’t be a waste of time to think a little bit about who exactly is “you.”

Is it really me, the person reading? In many cases yes, if I go by his qualifications - those usually being something along the lines of either not having read some text or not having some particular thought on my own by my late teens. The interesting thing is, after time, if I come back and read an article again, the “you” is less and less me, and more someone else, and the article begins to feel off - because I’ve likely read the text or internalized the thought by that point.

Whoever the “you” is, mircea_popescu in this voice at least plainly holds the reader in contempt. I think this is intended as a form of rhetoric. In other words he’s using this voice to evoke particular emotions in the reader for persuasive purposes. Whoever the reader is he is in a miserable state and is absolutely responsible for being in this state and is responsible as well for his parents and grandparents sucking and so forth. There is no quarter given, without exception, except perhaps to those who realize their worthlessness and die either by their own hand or in some highly risky endeavor1. Now I have to be careful here because I know it’s impossible to know what someone else is thinking, and I certainly don’t want to appear to be making that claim. I am only speculating. In any case, I speculate that the intended effect of this use of rhetoric is to arouse a feeling of shame. Shame is painful. “You” are to be spurred on by this pain. “You” are to do whatever is necessary to deal with the pain. In my observations of some others reading Trilema, this pain turns them immediately away and they never come back. Others, such as myself, somehow either become addicted to the pain, or perhaps keep reading on to find some sort of salvation from it2.

As for the frequent use of graphic sexual metaphor mircea_popescu himself explains why he prefers this style. I suspect this rhetoric also is meant to instill pain in many readers, and perhaps levity in others. Either way it is memorable, and I can’t think of any other writer using sexual metaphor to this extent.

Another aspect of his style that I’d like to comment on is the … finality, the unforgivingness. Read any article and there is a very good chance he’ll make you aware of a mistake you’ve made that can never, ever be corrected, only regretted. It is interesting to contrast this with other writers in the Anglosphere today, where there is endless redemption to be found.

And while there is doubtless much more to be said, this is all my cup of chai will allow me to put forth today.

  1. Not that it matters but I don’t particularly disagree with this attitude []
  2. Pain itself in various forms is a major theme in Trilema articles and it makes sense that given the significance of pain’s role in mp’s thoughts on education, reading Trilema itself would be painful []

Lekythion search update: additional blogs and other things

Sunday, May 31st, 2020

I’ve added several new blogs to lekythion’s search feature, including:

I intend to add more as I have time. I am also open to suggestions for additional sites and blogs to index.

The crawler still needs some tuning for many of the sites listed above. For example there are still instances where the bot will return multiple identical results for a search term due to different urls displaying the same content.

Also ranking is still very basic and doesn’t incorporate anything like pagerank, although it can search using l-distance.

In addition to adding the encyclopedia (work on which is underway), I’m considering adding Bitcoin transaction search. I wrote my own app for such purposes last year and have found it occasionally useful. I don’t know how much demand there is for publicly tracking transactions, but it wouldn’t be a big deal to set something up and try it out.

In terms of infrastructure, the bot is now running on its own vps. The next step is automatic index updates.

Search Prototype

Tuesday, May 26th, 2020

So the search project produced a prototype, which is available in #exusiae.

It works like this:

18:00:07 thimbronion !s Bitcoin
18:00:08 lekythion 10 results
18:00:08 lekythion ³
18:00:08 lekythion Bitcoin prices, Bitcoin inflexibility on Trilema - A blog by Mircea Popescu.
18:00:08 lekythion …keeping the Bitcoin). Other than this ~4% of the Bitcoin monetary…
18:00:08 lekythion …Bitcoin. Will people stop throwing dollars at Bitcoin because Bitcoin
18:00:09 lekythion …Will people start throwing Bitcoin at dollars because Bitcoin prices…
18:00:10 lekythion ²
18:00:11 lekythion Introducing the Bitcoin ISP on Trilema - A blog by Mircea Popescu.
18:00:12 lekythion …Bitcoin, The Most Serene Republic Of ~. In any case, Bitcoin ISP will…
18:00:13 lekythion …Bitcoin ISP, your only avenue is to voice your concerns in #bitcoin
18:00:14 lekythion …Soon to become a Bitcoin registered company, trading as S.BISP…
18:00:15 lekythion All results can be found at ¹

The bot currently only searches an index of The !s command accepts Apache Lucene queries.

I now confront some problems.

  1. Fine tuning was required. I had to tune the indexer to extract certain elements from Trilema to get the quality of the results somewhere near acceptable. This means every site is going to need tuning. For example, the good stuff is all the div.entry class in mp-wp, while has it somewhere else.

  2. I don’t yet know how to let others add sites they want to search. This is partially due to the first issue because if I just take lists of sites from people and don’t customize the indexer, the results won’t be great. It’s also due to not knowing the best way to allow users to configure their lists of sites to index. The first thing that popped into my head was to allow users to sign a text file that includes a list of all the sites they want to index and provide that to me. I would then do the configuration on the server manually and associate that index with their nick such that it would be the default index searched whenever they search. Perhaps at some point users could also specify by WoT identity others’ indexes they’d like to search.

One positive result is that after futzing around trying to use Google to find particular Trilema articles, I find using my own index to be much more productive.

Sites and documents I personally want to index:
the blog of everyone from #ossasepia
the naggum archive
Encyclopedia Britannica, 11th Edition

Exploring WoT Search Project

Sunday, May 24th, 2020

I am in the process of exploring working on a WoT search bot. At the moment I don’t know how exactly to make a “WoT” search bot. I did a little searching of the logs, and this line from trinque aligns most with my own itch. Some possibilities:

  1. Everyone has their own search bot that searches sites they specify (presumably in their WoT).

  2. Anyone can register their list of sites they want indexed/searched1. Registered lists are associated with a nick. The search bot interfaces with deedbot to get WoT for your nick when you register and ranks search results originating from registered sites according to your WoT rankings when available.

  3. ??

I am not sure how to best display search results. I think I will start with maybe displaying the top 5 in chan/dm. I don’t know if I have the stomach for putting up a search webshit.

At the moment I am indexing Trilema. As soon as that finishes (if ever - currently going for about 10 hours) I’ll try to get lekythion (a bot I wrote a while ago for checking prices and logging #exusiae) serving up search results and see how that works out and gauge interest.

  1. It may be that at some point someone develops a WP plugin that the search bot can interface with that would provide “live” results and obviate the need for indexing mp-wp blogs []

Surfing in Tamarindo with Will

Wednesday, December 11th, 2019

I didn't know what Will would look like, having only seen his tiny comment icon on my blog. But I knew he had hair, and lots of it, and that's how I knew it was him when I arrived at the Surf Culture surf shop. He had already procured a board for me, and, donning the white man's burden1, we made our way to the beach.

At the beach, Will showed me how to get up for a wave. He demonstrated by quickly bringing his left foot and then right foot forward, with knees bent, and both feet on the center line. I practiced this several times, and when I felt like I had it down, we went into the surf. When a good wave came, Will would give my board a push at just the right moment, and so I was able to catch multiple waves and stand up on the board before either falling or jumping off as I got too close to the shore.

Rather than discussing the details of our conversation, I will say that Will listened very closely to what I said, and responded to that, and that to my detriment I probably talked too much about myself and did not ask him about himself as much as I should have. I also regret not having read more of his blog. When I last checked it prior to the trip I only saw 4 or 5 of his most recent articles, but now I know there are many more going back a few years, which I look forward to reading.

For me it was great to meet someone who had, with interest, read my blog. I was somewhat taken aback that anyone would find it interesting since either a) the topics discussed are a non-starter for most of the population or b) for the log-reading population it's nothing new.

It was also interesting to try to have a serious discussion outside of IRC. I was frustrated by my inability to remember things I had written myself.

After surfing, we went to get my girl2, who we found about to cross the street in between the hotel lobby and the rest of the hotel buildings going back up the hill, and tried to decide where to eat. The girl wasn't up for anything exotic3 like sushi, so we ended up going to an Argentinian place with standard Argentinian fare. I had the Neapoliton chicken Milanesa, Will had a gigantic steak, and the girl had ... I forget.

We still had some time, so we decided to go to the casino, which turned out to be almost completely empty except for ourselves and a few employees. I am not a gambler, but the girl was so she went about losing some money while the conversation continued. What I remember most from this part of the discussion was that we touched on morality - whether there is right and wrong and I believe Will's stance was that for most people it is too complicated to figure out. I was woefully unprepared to support my stance that there is indeed an ought, which I regret. Perhaps we can discuss it more next time.

I thoroughly enjoyed the whole afternoon and evening and look forward to the next opportunity we have to get together.

Here are some photos from Tamarindo, where the whole thing took place.

  1. sun screen []
  2. She was from Honduras, and was friend of a girl I met on one of my previous trips []
  3. I found out later she didn't know about for example sailboats or how the worked, but fortunately for me she was an expert in Spanish as it is spoken in Central America []

EsperNet 2nd Chance

Friday, October 18th, 2019

I tried another tack in another channel (#help) on EsperNet last night with the following results.

[19:48:07] <thimbronion> Who should I talk to about linking a server?

[05:45:24] <lol768> thimbronion: can be submitted as a support ticket. Can't guarantee we'd accept a link application though.

[09:45:58] <thimbronion> lol768: How is the decision made and why couldn't you guarantee a link application would be accepted?

[09:53:27] <lol768> It gets votes on by the admin staff

[09:53:34] <lol768> * voted

[09:53:47] <lol768> And I am not a mind-reader :p

[09:54:32] <lol768> It might be other folks think we are fine for new servers right
now, or would prefer applications come internally

[09:59:12] <thimbronion> lol768: I see. So a simple majority vote?

[11:18:36] <lol768> 2/3rds majority

[13:14:52] <thimbronion> lol768: Do you know who the people might be who would object on the grounds that no servers are needed right now or prefer no external applications? Or perhaps there are some recent past proceedings I can check out?

[13:46:41] <chauffer> thimbronion, out of curiosity, why do you want to link a server?

[14:47:56] <thimbronion> chauffer: IRC is very important to us (I'm here for TMSR, lots and lots of logs here: so we want to have a stake in whatever network(s) we join.

[14:56:18] <chauffer> what is TMSR?

[15:20:12] <lol768> >Or perhaps there are some recent past proceedings I can check out?

[15:20:31] <lol768> External link applications don't happen very often, I don't think one has happened in my time as an admin

[15:30:24] <lol768> We had four link applications in the ticket system in 2014. One was accepted, 3 were rejected. In 2015, we rejected one server application. In 2016, one was accepted.

[15:36:59] <lol768> Missed from my stats, an acceptance in 2013 and another rejection in 2014. So, it varies - and you won't really know until you submit the app. Common rejection reasons: inadequate DDoS protection, inadequate hosting, poor quality of application, concerns about longevity of the server, concerns over bandwidth, concerns over the submitter's ability to maintain the server.

[15:37:05] <thimbronion> chauffer: TMSR stands for "The Most Serene Republic." We are working on several projects around Bitcoin, from a game, to cryptography.

[15:39:14] <thimbronion> lol768 - very interesting thanks. So how long have you been an admin?

[15:42:30] <lol768> 2018

[15:42:35] <lol768> I was an oper before then

[15:43:01] <lol768> (so, not long at all in the grand scheme of things :P)

[15:43:17] <lol768> This network is older than me

[15:43:26] <thimbronion> lol768: ah so do those acceptances include any external apps?

[15:44:22] <lol768> these are just external apps, I think (I'd expect internal apps to be submitted differently) - though in one or two cases the folks applying had been around the network a while

[15:45:49] <lol768> I might be wrong on this, though

My questions went unanswered for the most part and I let it pass ("Very interesting thanks").

I wonder if Linus Torvalds came in and wanted to link a server, would they be so adamant about him filling out the damn application? I do not know how to communicate clearly that they are missing out on the chance to save their network from oblivion.

IRC Diplomacy: OFTC, Undernet, EsperNet, DALnet

Wednesday, October 16th, 2019

[Updated 10/18/19 - fixed missing nicks due to escaping problem]

I began attempting to contact IRC administrators in order of their need for more resources based on reported number of users per server on Mon. Oct. 14th. Initially I had to take some time to figure out how to connect weechat to multiple IRC networks via a single ZNC connection, as I anticipated needing to hang around a while in the various relevant channels to get a response. After I got that working, I contacted OFTC, then Undernet, then DALnet. Other than EsperNet, where someone bothered to inform me there was a typo in my link to (which for some reason I keep typing as ""), the only response I've gotten so far was from Ahnberg in #ahnberg on DALnet, which I have quoted below.

[10:24:32] <thimbronion> Hey Ahnberg I'm coming from TMSR ( We've got a growing set of high quality people and a lot of resources and are interested in linking a (at least one) server to DALnet. Are you (or is DALnet) interested?

[10:25:53] <thimbronion> sorry typo

[10:28:34] <Ahnberg> What is TMSR and/or ossasepia?

[10:31:21] <thimbronion> Ahnberg TMSR stands for "The Most Serene Republic." We're working on a bunch of projects related to Bitcoin, from a game, for example, to cryptography. Ossasepia has the logs of all of our channels which are currently on Freenode. BTW Welcome to join #ossasepia and #trilema to ask around.

[10:31:40] <Ahnberg> Ok. Interesting!

[10:32:30] <Ahnberg> We don't really "need" more servers on DALnet so we're not actively looking. But anyone who thinks they have the interest or passion to join the network might apply. We do prefer if someone joins after actually using the network, being active part of the community or such, not just to expand footprint on as many networks as they can. Not saying you are one of those, but just explaining what adds value to

[10:32:36] <Ahnberg> us.

[10:44:11] <thimbronion> Ahnberg I see. Is that a hard requirement? Asking because our criteria for joining a network is being able to contribute to it. And in lieu of us having an established presence here, you can see our history going back several years in the #trilema logs.

[10:45:08] <Ahnberg> Not a hard requirement, but makes it quite complicated since it usually indicates that someone just wants to grow their footprint regardless of major network they end up on. We prefer people who are passionate about DALnet itself and care about this specific network.

[10:45:18] <Ahnberg> Sounds weird coming from me maybe since I am linked to almost every major network. :P

[10:45:46] <Ahnberg> But to my defense I have been using IRC since early 1991 and I am really involved and fond of all the networks I partake in hehe

[10:47:48] <thimbronion> I'm not quite clear on what you mean by growing our footprint. In this case, we would actually be leaving freenode. That's not to say that we wouldn't want to join other networks that meet our criteria.

[10:53:42] <Ahnberg> Not directed at you specifically since I have no idea who you guys are. Just that people who seek to link to any major network where they haven't had any interest in the past has the risk of just seeking to expand their footprint, i.e. size/presence/reach and don't actually care about the network, is all I'm saying.

[10:53:54] <Ahnberg> Which is why it is harder to get accepted applying to a network where the staff doesn't have a known history.

[11:11:07] <thimbronion> Ahnberg can you go into more detail about what it means to care about DALnet? I don't mean this to come off flippantly in any way.

[11:13:50] <Ahnberg> "Oh DALnet is big so we might as well try to link there, if that doesn't work Undernet seems quite big too so we'll try there as well" .... vs "I have a lot of friends on DALnet, I have spent my last 8 years on the network, it would be awesome if I could help support the network since its meant so much to me over the years".

[11:19:03] <thimbronion> We definitely want to care about DALnet! :) Our experience with Freenode however was that we built up a lot of infrastructure around it, but they ultimately turned our offer to link servers down, leaving us somewhat stuck. We definitely don't want that to happen again.

It's been several hours since Ahnberg last replied, and I don't anticipate hearing anything more from him. This dialog went awry where he said "I have no idea who you guys are" after I gave him a link to years of logs. I don't know how he'd know us any better if the logs happened to be from DALnet.

For reference, here were my openers on the other networks:

Undernet #routing-com

19:31:56] <thimbronion> Hi. I'm here on behalf of TMSR( I'd like to chat about linking (at least) one server to the network. Are you interested?

EsperNet #esper

[19:44:59] <thimbronion> Hi! I would like to chat with the network administrators about linking (at least one) server. Where would be a good place to do that?

[19:45:30] <thimbronion> Btw I'm from TMSR, which you can find more about here:

[21:01:20] <kbuck> thimbronion: your link is dead

[21:02:45] <kbuck> looks like it's probably .com

[21:57:36] <thimbronion> @kbuck .com, yes.

[14:53:31] <thimbronion> Kramer Kristina, any interest in my proposal above?

For some reason ZNC did not log the OFTC chat.

IRC Takeover Initial Findings

Wednesday, October 2nd, 2019

[Updated 10/3/19 8:54 PM PST]

Over the past week, I've spent some time surveying the websites of the top IRC networks gathering information about their linking policies.  Many are in a state of disrepair and haven't been updated for some time, as evidenced by the latest "news" items on their front pages being several years old.  From their linking application forms (or lack thereof) many of the top networks look averse to linking new servers.  For example, see the IRCNet documents:

Please be aware, that usually administrators never link servers from people, who apply for a link. If there is really need for a server, the administrators of that TLD will look around which organization would be most appropriate, and then ask them, if they would like to support an IRCnet server.

That said, some appear to be reasonable and they are at the top of the list.  In terms of hardware, my server far exceeds the recommended specifications (which all appear to have been written long ago).  My hosting provider has approved my request to run an IRC server, and will contact me if my bandwidth usage spikes significantly.  For whatever reason they felt it necessary to inform me that:

In addition please take note that we cooperate with government agencies to
deliver secure web services for all our customers and the Internet at large.

Below is a partially researched list of the 100 top IRC networks according to  Details about more networks will be added as time allows.  Having found a few apparently amenable networks I will next focus on contacting them.

Due to the wysiwyg editor1 in my blog not being able to handle cutting and pasting list items, instead of reordering, for now I've bolded networks of initial interest and added a users per server metric in parentheses next to each researched network name. I intend to add a notes row to each item, but did not have time as of publishing to review already researched networks to add relevant notes.

Based on my readings of the server applications and the user/server ratios, I have selected the following networks for my initial linking efforts in the following order:

  • OFTC
  • Undernet
  • EsperNet
  • DALnet

Network Linking Application and Contact Info

Source List

  1.  This data might be better suited to be in a spreadsheet and presented as a .csv file. []