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.


Distributed Databases 101: CAP, BASE, and Replication

Quote: “The worst case of inconsistency happens when row X in database A is modified (by a Client connected to datacenter A), and the same row X in database B is independently modified too (by a Client connected to datacenter B).”
Another Quote: “One way to avoid reports affecting operational DB, is via creating a read-only replica of our main operational DB – and running our reports off that replica.”

Databases 101: ACID, MVCC vs Locks, Transaction Isolation Levels, and Concurrency

Quote: “for larger-scale MOGs, functionality-wise it is common to have 4 different types of databases: transactional processing (OLTP) DBs, real-time reporting DBs, archive DBs, and analytical DBs (OLAP)”
Another Quote: “both MVCC-based and Lock-based DBMS issue locks (and therefore, both can cause all kinds of trouble such as deadlocks etc.); however, the difference lies with the number of locks issued by them.”

Game Graphics 101: Rendering Pipeline & Shaders

Quote: “each of the stages of the rendering pipeline is operating on a large set of items (vertices or fragments/pixels)”
Another Quote: “These days, even if the program uses fixed-pipeline, that fixed-pipeline is simulated over shaders anyway 😉”

Game Graphics 101: Lights!.. Camera!.. Frustum?

Quote: “In games, more often than not, we’ll be dealing with so-called Phong reflection model.”
Another Quote: “with orthographic projection, the lines which project points from our 3D world onto our 2D screen, are no longer converging to one single point; instead, they go parallel to each other.”

Game Graphics 101: Textures, UV Mapping, and Texture Filtering

Quote: “Size-wise, textures are HUGE. Actually, in a typical 3D game, 90%+ of the space on disk (and of GPU bandwidth/RAM) are used by textures.”
Another Quote: “3D anti-aliasing algorithms can be divided into two large groups: ‘proper’ anti-aliasing (the one which tries to avoid anti-aliasing in the first place), and ‘post-processing’ anti-aliasing (the one which creates an aliased image – and then post-processes it to make it look better).”

Infographics: Operation Costs in CPU Clock Cycles

Quote: “Back in 80s, it was possible to calculate the speed of the program just by looking at assembly.”
Another Quote: “keep in mind that these days compilers tend to ignore inline specifications more often than not”

MOG Graphics 101: 3D Maths Basics, Meshes, Client- and Server-Side Polygon Counts

Quote: “for the purposes of the MOG network communications, I usually suggest using Euler angles to represent rotations/orientations”
Another Quote: “One thing which persistently haunts 3D developers, is polygon count.”