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 on all the aspects of software development (from UI to scalability, reliability and security) for all kinds of systems (from large-scale systems to embedded ones), the reasoning behind those opinions, and tons of practical observations, which may help you to choose what you really need for your specific task.

Your mileage may vary. Batteries not included.


Packet Loss for an App-Level Developer. Part I. Router Failures, BGP Convergence Time, AQM, Traffic Shapers.

Quote: “All the routers, switches (actually – pretty much each and every device which forms Internet infrastructure) – are allowed to drop each and every packet.”
Another Quote: “TCP, when it observes a dropped packet, interprets it as an indication of congestion – and slows down.”

Indirect and Client-Centric Payment Processing. Logging and Reconciliation

Quote: “Fortunately, there is a neat crypto-trick which makes this schema usable for Server-oriented games in general – and multi-player games in particular”
Another Quote: “if you’re using TCP to communicate, you should log everything right before it goes into your send() call (and right after it comes out of your recv() call”

Development & Deployment of Multiplayer Online Games – now on Leanpub

Quote: “I am happy to let everybody know that from now on, Vol.1 of my upcoming book “Development & Deployment of Multiplayer Online Games” is available via Leanpub

Direct Payment Processing. Recovery from ‘Unknown’ Transaction Status. PCI DSS.

Quote: “With the Direct Processing, customer should trust us (the merchant) with their details”
Another Quote: “On the other hand, most of PCI DSS requirements make perfect sense regardless of formal compliance”

Determinism: Requirements vs Features

Abstract: Apparently, in practice there is big difference between cross-platform determinism and same-executable determinism, both in abilities they can provide, and from implementation complexity point of view
Quote: “Cross-platform determinism is the strictest definition of determinism I know; not surprisingly, there are quite a few factors which can break it”

Payment Processing. Credit Cards. Chargebacks and Collateral Damage

Quote: “Chargeback monster will come from under the bed and will eat all your hard-earned money!”
Another Quote: “it is trivial to develop a system with guaranteed zero chargeback rate – to achieve this, it is sufficient to decline each and every transaction at pre-filter stage”

Update on Progress with “Development & Deployment of MOGs” book, and updated ToC too

I have to admit that I neglected to post updates about the progress with my “Development & Deployment of Multiplayer Online Games” book. Sure, new “1st beta” Chapters from upcoming Vol. 2 are posted every week, but any information about the progress of Vol. 1 was available only on Kickstarter and Indiegogo. I am happy […]