weechat as a communications hub

I have been using irssi as my Internet Relay Chat (IRC) client for more than a decade. It has served me well. But then I was prompted by a couple of weechat users over at the #ranger channel to try weechat.


I love technical improvements, but my setup is becoming increasingly hard to improve upon. Any suggestions that tickle my nerdy fancy is highly welcome. And so I embarked upon setting up weechat on one of my DigitalOcean servers and use ssh to connect to my new chat client. This setup allows me to always remain on the chat channels even when my laptop is hibernated. I simply reconnect via ssh to weechat running in screen on my server. An added benefit is that I can also stay on with my Android phone via the excellent “Weechat Android” app. How cool is that?

The configuration is nicely interactive and with a set of useful scripts, I have a powerful setup:

  • iset.pl – Set WeeChat and plugins options interactively (a must-have)
  • buffers.pl – Sidebar with list of buffers (another must-have)
  • shortenurl.py – Shorten long urls using isgd or tinyurl (important)
  • nickregain.pl – Automatically attempts to regain IRC primary nick
  • colorize_nicks.py – Weechat nick colors in the chat area and command line
  • go.py – Quick jump to buffers
  • buffer_autoclose.py – Automatically close inactive private message buffers
  • histsearch.py – Quick search in command history
  • auto_away.py – A simple auto-away script

And then I got Bitlbee set up on the server. Bitlbee is a chat hub for various protocols that weechat can connect to. Bitlbee can hook onto your Facebook chat and your Twitter feed. I got both Facebook chat and Twitter up and running and now I can tweet directly in weechat and have chats and even group chats with Facebook friends in my weechat – both on my laptop and on my mobile. Weechat has become a nice communications hub:

My weechat screen

My weechat screen


It really is extreme. Extreme people with extreme skills, doing stuff people wouldn’t think possible.” Adrian was half proud, half nervous as he walked through the doors of the most mythical company in town – aptly called Xtreme. Unpretentious, an almost anonymous location. But inside, a nerd’s heaven.


The interview was nothing like he had imagined. And very far from any interview he had experienced before. He was to pitch right in on a project for a week. And then his team mates were to decide if they wanted to let him on board. He had to impress them, ha had to be extreme. “Impress people like Claes, Florian, Maria and Michael. Damn, I have to be on top of my game here, cuz those guys are freakin legends in the open source world.” But so was Adrian. He had run several projects that has gotten good traction on Github, and that was precisely why Florian had asked him to come and show off his awesome. But Adrian was never the bragging, arrogant type. Shy and humble, submerged in an intense interest for developing the next coolest thing – he so wanted to work with these guys.

Getting on board meant to actually own an equal piece of the company and share the responsibilities, decisions, salary, perks and work with everybody else at Xtreme. And it meant getting to work with the top notch developers in the world, doing stuff that really matters. No wonder Adrian was tense.

But the week went surprisingly well. His team mates were including and helpful and he got plenty of opportunity to show his skill set. He worked on a technically challenging and interesting project that would prove extremely valuable for a customer building rescue helicopters.

He got to see the organization up close. Or rather, the lack thereof. Without any executives or hierarchy, the company was light, quick and ultra-dynamic. “But how do you make important decisions, like moving the company to new premises?” he had asked. “It’s like in this village called Endesh in North Tanzania“, Florian replied, “they get together and decide.” “All of them?” “Yeah all of them. All of us.

But don’t you need executives?” Adrian looked somewhat puzzled. “Why?” Florian inquired. “What would you need an executive for? Do you need to be told what to do? Or what not to do? Or do you need someone else to motivate you to do your best? Because if you need those things, we don’t need you.” Adrian got the drift and answered “Well, I sure haven’t needed any of that to get me this far. The bosses I’ve had have more often than not been in my way, deciding on stuff they really don’t know and without the hands-on knowledge required to make the right choices. All while they think they know best.” Florian smiled. “Then we’re on the same page here. There is no set process, formal way or exact procedure for what we do. We have the best guys in our field, we get shit done, learn, and get even more shit done. It’s a continual evolution.

Code is up

… on Github.


Got around to putting my most useful programming projects up on Github.com. You can now easily get the newst versions, repost bugs, read the source code and fork the code to make your own version.

The projects that are up so far are:

  • npcg – the random encounters and NPC generator for the AMAR RPG
  • hyperlist.vim – the VIM plugin to easily and effectively manage HyperListS
  • hypergraph – the tool to make graphical representations of HyperListS
  • mailfetch – collect mail from different imap accounts, filter and store locally
  • imaptools – Client-side tools for imap mail
  • pc41 – Facilitating serial/USB connection to an HP-41 calculator

The next project up will probably be my collection of HP-41 programs found on this site.

Update (2015-08-28): I have now put all my relevant HP-41 related programs up on my Github page. The pages and links on this site is now updated to point to my Github projects.

Graph your HyperLists online with HyperGraph

While I was at it, I decided to make HyperGraph available as an online service. With some wrestling with Ruby (the programming language) and obscure encoding issues, I got it up and running. Now you can take a shopping or todo list, a project plan or business process in form of a HyperList and get a graphical representation in a few seconds. I love when I get into my geek cave and work on stuff like this.

The domain isene.org is where I make my online services available (currently hosting the AMAR NPCg and HyperGraph).


Random encounters and NPC generation for AMAR

It’s been liberating to do some coding lately. I finally got around to update my Non-Player Character (NPC) generation program (npcg) for the Amar Role-Playing Game. I have added a major feature – the ability to generate random encounters for the game. I also improved the generating of human NPCs and fixed several bugs. The online version of the program went south after Ruby (the programming language) was updated to version 1.9 as the templating engine I used – Amrita – stopped working. The nerd in me woke up and rose to the occasion. After two weeks of Ruby coding and a major overhaul, I am proud to present the new online version of NPCG :-)

If you have any questions or suggestions, don’t be too shy to speak up.

The Kingdom of Amar

The Kingdom of Amar

Hidden risk of outsourcing IT

There is a potentially undersold risk as a company considers outsourcing IT development or operations: The loss of internal productivity to mentor outsourcing consultants are often difficult to recuperate.

When we learn complex systems, our competence usually follows a Sigmoid curve (also known as “S-curve” or “Logistic curve”).

“Many natural processes, such as those of complex system learning curves, exhibit a progression from small beginnings that accelerates and approaches a climax over time.” (1)


“In this case the improvement of proficiency starts slowly, then increases rapidly, and finally levels off.” (2)

When a company is looking to outsource the development or operations of proprietary complex IT systems, the consultants will usually follow this learning curve. But in order to eventually become productive, the consultant will rely on mentors to learn the ropes.

An internal competent developer or system administrator is assigned as a mentor to the external consultant. The mentor will experience a drop in productivity, and regain the productivity concurrent with the consultant.

Spreading the burden among several mentors may make the productivity loss less visible, but the combined loss of the mentors may even be greater.

According to a recent survey I did, the productivity loss of the mentor was at least 50%. The time needed from scratch to a fully productive developer was 24 months. The question is “How long would it take for the productivity of the consulatant to make up for the productivity loss of the mentor?”. Or in other words “How long until this scenario goes break-even?”.

To calculate this, we turn to the Sigmoid function:


Productivity of the consultant (p) is the Sigmoid function over time (t). We adopt the function to go from 0 to the time needed to become fully productive (T).


Then we adopt the function for the mentor’s productivity (P) starting from his dropped productivity and back to full productivity after T time. The drop (D) is the fraction of his full productivity (1).


The reason for the slight difference in the equations (the factors “7” and “8”) represents the fact that even after the time “T”, the consultant would on average still be a notch lower in productivity than the mentor.

The two curves combined with “T = 24” and “D = 0.5”:


The accumulated productivity of the consultant over time is the area under the blue curve, i.e. the integral of p(t).


To get the accumulated loss of productivity of the mentor over time, P(t), we first invert the mentor’s productivity to get his productivity loss, Q(t).


And the integral of Q(t).

The big question is “At what time (t) does the consultant’s productivity make up for the mentor’s lost productivity?”




… we get:


…which reduces to:


Graphically represented:


The question is so big that WolframAlpha cannot display the numeric result within its standard computational time. But with the help of my trusted old HP-41 calculator, the answer was achieved: It takes 19 months of mentoring for the outsourcing project to break even.

The hidden risk is that if the consultant quits before that time, the outsourcing is a losing proposition.

So, if a company considers outsourcing IT to let’s say a Baltic company, one must be very certain that the turn-over of their consultants is above this break-even by a good margin.

The risk management: First figure out how long it usually takes a new employee in the company to get up to full production speed. Add some time if the consultant speaks a different language, is of a different culture and especially if the mentoring is done from a distance. This will be your “T” time.

Then, by a few short pilots, figure out the mentor’s productivity loss. This will be your drop “D”. Along with WolframAlpha and an HP-41, this is all you need to calculate the break-even for the outsourcing project. With the use of some employment statistics from the outsourcing company or the IT industry of that country, you will have a pretty clear picture of the risk involved.

One can, to some degree, mitigate this risk through effective Knowledge Management. A competent Knowledge Manager with an excellent company wiki solution and efficient training setups could shorten the time to break-even by perhaps 20%. Nevertheless, it’s a serious risk to consider – especially since tacit knowledge from years of experience in the company is hard to transfer. Add to this the risk of the mentor quitting or is put on other tasks. Thus the consultant’s stay should exceed “T” with a good margin.

Update (2015-01-18)

An approximation formula will suffice for quick gain/loss calculations. This formula gives the net gain (if positive) or loss (if negative) for any given time (“t”):


In search for perfection (yeah, tech stuff)

Only a short while after having settled with dwb as my browser of choice, it was announced that it was unmaintained. Development had stopped and it was left in limbo. Again I was out hunting for The Browser. Revisiting Luakit and Uzbl, I discovered Vimb that seemed promising – but it had a few snags that ended up prolonging my quest. I hang around in the IRC chat channels of several tech projects, including a handful browsers. Got chatting with the main developer (“The Compiler”) of a new browser on the block just before X-mas – and it turned out that his qutebrowser served well as a Christmas present.

Qutebrowser uses a different underlying technology (QtWebKit), written in Python, has a very clean configuration, extensible and actively maintained.

It still lacks a few features like a form filler, session management and support for AdBlocks “easylist” (although it has a more rudimentary adblocker). But these are on the roadmap, and with the pace of development, I am sure these and many other neat features are not far away.

One thing that bugged me was how QtWebKit rendered fonts. Fonts were noticeably slimmer rendering web pages less readable. After some hours of tinkering, I solved the issue by first getting a better font setup for my system (here), then installing the Ubuntu package called “texlive-fonts-extra” and setting the font “Lato Heavy” for the following font settings in qutebrowser: “web-family-standard”, “web-family-serif”, “web-family-sans-serif”, “web-family-cursive” and “web-family-fantasy” (and the font “Droid Sans Mono” for “web-family-fixed”). Now fonts are beautiful and very readable.

After wading through more than a dozen browsers, qutebrowser fits the bill quite nicely.