IT Hare on Soft.ware

Disclosure: On this site you won’t find specific advice on “how to call function xyz()”. Interpreting C++ ARM and #pragma dwim is also out of scope.

We’re treating our readers as intelligent beings who can use Google and/or StackOverflow, where all such specific questions were answered more than once.

What you will find is opinions, more opinions, and even more opinions on all the aspects of software development - and with a large chunk of them based on real-world experience too.

Your mileage may vary. Batteries not included.


(Almost-)Zero-Additional-Latency UDP-over-TCP

Quote: “we realize that for some of the Clients – UDP just doesn’t work because of some weird firewall between Client and Server”
Another Quote: “there is nothing to block us (so head-of-line blocking doesn’t apply)”

TCP Peculiarities as Applied to Games, Part II

Quote: “Nagle’s algorithm aims to deal with those [CENSORED] developers who’re trying to send data over TCP in really small chunks (like 1 byte each time)”
Another Quote: “it seems that “proportional rate reduction” (PRR, reportedly used by Linux kernels by default starting from 3.2) performs for gaming purposes a little bit better than the alternatives”

TCP Peculiarities for Games, part 1

Quote: “the best we can hope when using a single TCP connection over 5%-loss channel – is having 1.5-second “lag spike” every 5 or so minutes, and a 3-second “lag spike” every 2 hours.”
Another Quote: “we may already have the-information-we-need on the receiving host – but this information is hidden from us by layers of abstraction on receiving side”

Client: Installer & Auto-Updates

Quote: “Pretty much whatever-we-do, there will be a certain percentage of players which are trying to run an obsolete version of the Client forever-and-ever”
Another Quote: “It is very important to keep updater transaction-oriented.”

Some Big-Os are Bigger Than Others

Quote: “Strictly speaking, for real-world computers, every algorithm which completes in a finite time can be said to be O(1)
Another Quote: “now the difference because of unfortunate ‘jumps’ over (uncached at the time) memory can lead to a 100x+ (!) performance difference. However, it is still O(1) and is rarely taken into account during performance analysis”

Advocating “Obscurity Pockets” as a Complement to Security. Part II. Deployment Scenarios, More Crypto-Primitives, and Obscurity-Pocket-As-Security

Quote: “In other words – such an Obscured RNG would protect us from Debian RNG disaster(!)”
Another Quote: “such a protocol (if properly deployed on the Server Side) – would defeat Heartbleed too (even if all the details of the Client are known)”