About IRCCloud

IRCCloud is, as they say themselves, ‘an IRC client with a future’.  Unlike desktop clients like mIRC, HexChat, AdiIRC… Unlike terminal clients like irssi, weechat, and others. Unlike Android clients like AndroIRC, AndChat, Android IRC… IRCCloud is everywhere…

IRCCloud in a way, acts like a BNC or Bouncer, it keeps* your nickname online when you’re disconnected from it. 

Using IRCCloud

Once you’re using IRCCloud, there’s a few things to do, like adding networks, joining channels, customizing settings. 

For adding networks, if you haven’t purchased the ‘Solo’ plan, then you cannot ‘connect’ to more than 2 networks (other than IRCCloud’s own network).

If you do want to add a separate network, click the button either by looking in your menu (clicking on your email in the webapp or desktop app, or triple dot in the upper right hand corner on Android, and the gear next to the text box on iOS.

Once you find the applicable menu for your system, there should be a button or list-item with the following.

You will then be greeted with the form to add a network, your mileage may vary, but should look very similar to what is pictured here.

Some networks, like ElectroCode, IRCCloud, Rizon, etc. may be included in the dropdown.  If your network is not on the dropdown list, then you can try e-mailing [email protected].  Enter the port you want to connect the client through, and if it’s SSL enabled.  Choose your nickname and your ‘realname’, aka GECOS.

If you’ve got any channels you want to join on connect, enter them in the text box.

If you have a NickServ password or other ‘advanced’ option, then click the ‘Advanced Options’ button to un-hide those options.

If all was inputted correctly, you should’ve been connected to the network that you chose.  From then on its all you, if you need help with IRCCloud, you can contact me.


  • On a phone? There’s an app for that!
  • On a desktop? There’s a program for that!
  • Only have a web browser? They have a web client!

IRCCloud has a client for each type of device too.  Got Windows? Linux? Android? iOS?


  1. IRCCloud will disconnect you from the networks you are on, after a period of inactivity (If you can leave a internet connection up to it, you’re fine)
  2. If you can’t keep your connection up, but want your nickname to stay connected 24/7, then you will need to purchase a ‘Solo’ plan, which is $5 a month, or $50 a year (2 months free).
  3. Not every network allows IRCCloud, but most do allow it.
  4. If you are a / own a network, you can implement IRCCloud by using the Networks page on IRCCloud’s site.
    1. This is a few IPs you can set separate rules on. These IPs are the different server RDNS’s and IPs that users may connect from when using IRCCloud. Note: This page may change, so make sure to keep an eye on it to keep your network from going ‘loco’ on connections.

Days till Christmas How To

This post is a follow-up from ‘Easy Way to Get the Difference of Two Times in Python’, seen here. If confused, please read that first, then come back to this.


So, continuing from where we left off, lets say we want to get the number of days till christmas. For that, we’d do the following.

#! /usr/bin/python3

import arrow

class CustomArrow(arrow.Arrow):
    def days_till_xmas(self):
        xmas = arrow.Arrow(self.year, 12, 25)
        if self > xmas:
            xmas = xmas.replace(years=1)

        return (xmas - self).days

factory = arrow.ArrowFactory(CustomArrow)
mytime =

And boom, that’s it!

Easy Way to Get the Difference of Two Times in Python

This post is quite the short one, but if you ever need the duration/difference between two times, this can come in very handy. But the code may be confusing. So bear with me.

So if you can get the total amount of seconds, which to make it easier, I used the package ‘arrow’.

pip install arrow
pip3 install arrow

Here’s my code, a more stripped down version than what I use.

#! /usr/bin/python3
import arrow
import datetime
def secondsToText(secs):
    days = secs//86400
    hours = (secs - days*86400)//3600
    minutes = (secs - days*86400 - hours*3600)//60
    seconds = secs - days*86400 - hours*3600 - minutes*60
    result = ("{0} day{1}, ".format(int(days), "s" if days!=1 else "") if days else "") + \
    ("{0} hour{1}, ".format(int(hours), "s" if hours!=1 else "") if hours else "") + \
    ("{0} minute{1}, ".format(int(minutes), "s" if minutes!=1 else "") if minutes else "") + \
    ("{0} second{1}".format(int(seconds), "s" if seconds!=1 else "") if seconds else "")
    return result
my_year  = int(input("Year --> "))
my_month = int(input("Month (01-12) --> "))
my_day   = int(input("Day (01-31) --> "))
my_hour  = int(input("Hour (00-23 --> "))
my_min   = int(input("Minute (00-59) --> "))
my_sec   = int(input("Second (00-59) --> "))
my_datetime = datetime.datetime(my_year, my_month, my_day,
                my_hour, my_min, my_sec)
now ="US/Eastern")
mypasttime = my_datetime
then = arrow.get(mypasttime, "US/Eastern")
time_diff = now - then
time_days = time_diff.days
time_diff = secondsToText(time_diff.total_seconds())


So lets say I wanted the exact length of time(in days + rest) since ElectroCode began.

And while I know the date was January 20th 2012, I don’t exactly know the exact time, so we’ll use Noon(12 00 00)

[email protected]:~$ ./ 
Year --> 2012
Month (1-12) --> 01
Day (1-31) --> 20
Hour (0-23 --> 12
Minute (0-59) --> 00
Second (0-59) --> 00
1692 days, 3 minutes, 9 seconds

Now if I wanted to make that able to parse weeks and years, so now I’ll add a few additions to the secondsToText() method.


So with those changes, I now get

4 years, 33 weeks, 1 day, 1 hour, 11 minutes, 38 seconds

If you think there should be changes to this post, leave a comment down below! I can’t improve if there’s no response of what I need to improve on.

See here for other ways to contact me.

How To: Ruby+Passenger+Sinatra

Starting Off


Since I can’t put everything in the title, you need to know some things first before you try anything. If you’re going to be using ruby to make a website, or any kind of rails app, with Sinatra or otherwise, its best to go with whats called Passenger which attaches to your running webserver as a mod, for either Apache or nginx, or as a standalone server.

Some Pointers

Your best shot, in my own opinion would to also use a framework, or some could say ‘helper’ to make coding the website easier, the one I’ve found is Sinatra which has many of its own little helpers that can be used.

What you need

Folder Structure

Alright, now that you have them all set up, you need a good folder structure, this makes it easier to move around, and as you’ll see; let Sinatra and Passenger work well. Below is what the directory structure of looks like.

├── botlist.json
├── bot.rb
├── common.motd
├── def.rules
├── favicon.png
├── my_app.rb
├── public/
├── retrieve.rb
├── style.css
├── templates/
│   └── sass/
│       ├── index.sass
│       ├── layout.sass
│       └── uptime.sass
├── tmp/
│   └── always_restart.txt
└── views/
    ├── bot_form.erb
    ├── botlist.slim
    ├── ddate.slim
    ├── index.slim
    ├── layout.slim
    ├── motd.erb
    ├── retrieve.erb
    ├── rules.erb
    ├── uptime.slim
    └── view_info.slim

Made with tree

Making it Work

If you’re going to use Passenger and Sinatra together, you’re going to need 1(actually 2) starting file(s).

require './my_app'
run MyApp


#! /usr/bin/ruby
require "sinatra/base"
require "tilt/erb"
require "tilt/slim"
require "tilt/sass"
require "tilt/haml"
require "json"
class SassHandler < Sinatra::Base
  set :views, File.dirname(__FILE__) + '/templates/sass'
  get '/css/*.css' do
    filename = params[:splat].first
    sass filename.to_sym
class MyApp < Sinatra::Base
  set :protection, :except => :frame_options
  Slim::Engine.set_options pretty: true
  use SassHandler
  get "/" do
    table = JSON.load("table.json", "r"))
    slim :index, :locals => {"table" => table}
# # start the server if ruby file executed directly
# run! if app_file == $0
# end

This is basically the skeleton that I started with, minus the SassHandler considering that’s how I’m getting css into the templates. Now in order to have some of these helpers, easily, you must have ‘gem’ available on your system. If you haven’t already, you will need to install Sinatra for any of this to work.

gem install sinatra sinatra-json

The json one lets you output json very easily with just Ruby code; More on that in a later post

gem install haml slim sass scss

After they are all installed, then you can start making your index.*

↑ Return to Top

Traditional Looking Buffer List (WeeChat)

First, you’ll want to be in at least the 1.0 version of weechat. As this tutorial is based off usage in that version. Second, you will need to do a some things to get the client ready for the change.
/set irc.look.server_buffer independent
What this does is it makes it so you can make each server’s buffer independent (otherwise server stuff for all servers, goes to every server buffer) ​Third, you’ll need to install the scripts “” and “” if you don’t already have them.
/script install
Then, these should be put in.
/set buffers.look.show_number off
Because who wants their buffers numbered (not me at least)
/set buffers.look.indenting on
This allows the right kind of indenting hierarchy to take place (core/weechat->server->channels+queries) And then you should be good.

If you have any questions about this page, or want to suggest corrections, feel free to contact me,

Contact: Email:
(Social Media)
or on IRC via irc://

Trouble with Rooting?

So lets say you want to root your phone.. well there is an app where if it can it will root it automatically. It’s called towelroot.

Now there is a few tricks you need to do.

First. You need to go to the towelroot website. You will need to click/tap the lambda image. This will cause you to download the free apk.

Second, before you run it. You need to find your modstring for your device from

Then run the app, click the v3 symbol to bring up the input box. Put the string in this by replacing it with the string from the aforementioned page. Then hit the lambda symbol 3 times and look to see what it says.. If you get “unsupported” then try it again. Otherwise you should get that the app was successful in rooting your device.

  • If this page or post could use some sprucing up, let us know by contacting us through this link