Welcome!

The freenodeIRC network has for a long time supported
connecting and automatic identification using SASL.

Recently, the freenode network deprecated the commonly used
SASL mechanism DH-BLOWFISH due to security concerns,
causing my IRC client (irssi) to no longer be able to authenticate.

Unfortunately, while scripts and guides describing using
irssi with DH-BLOWFISH are plentiful, it seems the steps
required to use the new preferred
ECDSA-NIST256P-CHALLENGE method are not yet documented.

Read on for a step-by-step walk-through of configuring
irssi to use SASL with freenode in 2015.

My residential internet experience has always been poor, so
when I started observing bizarre network behavior a few
months back I attributed it to upstream problems and wrote
it off with a sigh. The issue persisted however,
so over the winter break I decided to sit down
and tackle it once and for all.

Tracking down the source of the issue was an interesting
adventure, and ultimately the problem was in the last
place I thought to check: a pair of TEG-S80g unmanaged
gigabit switches made by TRENDnet.

In all varieties of C/C++, pointer arithmetic is undefined
if it overflows. That is to say the following example:

voidinvalid(char*p){char*q=p+1;printf("%p\n",p-(uintptr_t)q);}

invokes undefined behavior as it causes the pointer value to
wraparound to the equivalent of -sizeof(char), which is
0xffffffffffffffff on my 64bit system.

Unlike integer overflows which can be dangerous or benign
regardless of intention (ICSE12), pointer overflows are very unlikely
to be intentional and may be the source of a more serious
bug resulting in incorrect behavior or program crashing.

Despite my passion for light-on-dark themes,
not everyone finds them as readable and enjoyable
as I do. To address these concerns I investigated
what it would take to add a drop-down to this website
to enable dynamic selection of themes by the user.

Bootswatch Theme Dropdown

The relevant code is given, but for those
interested in a complete example take a look
at the website github.