Category ArchiveCode

C++ &Rants 15 Jun 2021 10:25 pm


I registered on Freenode on 2009-03-21 at 17:25:41 UTC, to participate in the Apertium channel #apertium. I also joined the C++ channel ##C++.

On 2011-06-29 at 11:06:39 UTC, I created ##C++-general with the blessing of the ##C++ operators. This quickly grew to be the 2nd largest C++ channel on Freenode, and indeed on any network at the time.

On 2015-04-15 at 13:32:10 UTC, I was granted operator status for the main ##C++ – the largest C++ channel on any IRC network at the time.

On 2021-05-19 at 07:54 UTC, this happened: ChanServ (ChanServ@services.) Quit (Killed (grumble (My fellow staff so-called 'friends' are about to hand over account data to a non-staff member. If you care about your data, drop your NickServ account NOW before that happens.)))

Immediately thereafter, I contacted my fellow Apertium PMC members so that we could prepare in case Freenode was actually taken over by non-free interests.

A few hours later, Freenode was taken over and most of the staff resigned. I got on as soon as it opened up and registered #Apertium, #C++, #C++-general, and #geordi.

On 2021-05-24, I applied for a Community Registration for the C++ channels on However, the C++ channels’ policy was to maintain both networks and not get involved with the politics of the situation.

On 2021-05-27, Apertium officially moved from Freenode to OFTC.

On 2021-06-14 at 21:37:09 UTC, Freenode intentionally split the network in two, leaving an old Freenode with existing channels and nicks, and a new Freenode with no registered channels or nicks.

On 2021-06-15 at 07:42:07 UTC, I joined the new Freenode and kicked everyone from ##C++-general with a message to go to

At 08:05:53 UTC, I kicked root and f from ##C++-general.

I was k-lined from the new Freenode on 2021-06-15 at 08:06 UTC.

At 09:13 UTC, I joined the old Freenode and kicked everyone from ##C++ and ##C++-general with a message to go to instead.

At 19:17 UTC, the remaining oper on old Freenode removed me from ##C++-general.

At 19:38 UTC, the old Freenode was shut down.

PHP 02 Feb 2018 10:02 pm

PHP Expand IPv4 to IPv6

Simple function for turning IPv6 and IPv4 into a blob that’s suitable for SQL type binary(16). This maps IPv4 to the IPv6 address space reserved for them.

function ip2binary($ip) {
	$rv = inet_pton($ip);
	if (strlen($rv) == 4) {
		$rv = inet_pton('::ffff:'.$ip);
	return $rv;

Code &Random 06 Jan 2014 03:53 pm

The Competency Matrix and Me

I recently stumbled upon the well known Programmer Competency Matrix again, so I figured this time I’d store where I think I fit on it. I’ll use the linear 0-3 scale, since that’s easier for the in-between values.

Continue Reading »

PHP 26 Apr 2012 05:00 pm

I Like PHP

While there is no doubt PHP is broken beyond repair, it does have a few virtues that keeps it as one of my first choices when writing certain kind of web frontends and minor tools.

There is a huge laundry list of how PHP is broken at “PHP a fractal of bad design“, which I almost entirely agree with. What I will do here is point out the few things on that list that I do not agree with, and why.

Continue Reading »

C++ 25 Feb 2012 01:19 pm

C++ vector vs realloc()

A comparison of how many reallocations a worse case poorly coded use of realloc() does, compared to just using std::vector. 10000000 integers are added to the containers one-by-one. Clearly you would never abuse realloc() like this in real code, but it’s interesting nonetheless. Idea from sacrebleu at Freenode’s ##C++.

The full source is available in svn as a CMake project for easy cross-platform testing. Primary source vector-realloc.cpp

Allocs / OSstd::vectorrealloc()
Windows 7409526
Linux: Arch24367
Linux: Fedora 1024438
Mac OS X2431
  • Mac OS X: OS X 10.7.3, 2.3 GHz Core i5, 8 GiB RAM. XCode 4.3, clang++ 3.1 -std=c++0x -stdlib=libc++ -O3.
  • Windows 7: 64 bit, 1.60GHz Core i7 Q720, 8 GiB RAM. MSVC++ 2010 _SECURE_SCL=0
  • Linux: Arch: VirtualBox on the Windows machine, VT-x, Arch Linux, kernel 3.2.7-1-ARCH x86_64, 1 GiB RAM. GNU g++ 4.6.2 -std=c++0x -O3
  • Linux: Fedora 10: Fedora 10, kernel 2.6.27 x86_64, 2.66GHz Xeon, 8 GiB RAM. GNU g++ 4.4.1 -O3

Next Page »