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.


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.”

Deterministic Components for Distributed Systems

Quote: “Then you can recover from any single server failure in a perfectly transparent manner”
Another Quote: “after the program fails in production, we can get the input log and run it in the comfort of a developer’s machine, under a debugger, as many times as we want, and get exactly the same variables at exactly the same points as happened in production”

Game Graphics 101: 2D Animation, Sprites, Double and Triple Buffering

Quote: “If you’re using double buffering AND perform buffer swap in sync with the V-Sync signal, your monitor will show your game just as a movie projector with shutter would show a cartoon in the cinema”
Another Quote: “I’ve seen a pretty minimal 2D engine written from scratch at a cost of 4-6 person-weeks”