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.

 

Avoiding ugly afterthoughts. Part b. Coding for Security, Coding for i18n, Testing as a Part of Development

Quote: “Doing sanitization at IDL level automates quite a bit of tedious-and-error-prone work, which is always a Good Thing™”
Another Quote: “Hey, this whole thing can be made MUCH simpler, the only thing we need to acknowledge is that the best identifier for a string is the string itself!”
[]

Facelift for ‘No Bugs’

Quote: “To avoid ‘No Bugs’ becoming a “display of blatant cuteness” and to avoid this “salesman-like” appearance (which has never been the idea behind ‘No Bugs’) – we decided to give ‘No Bugs’ a facelift.”
[]

Avoiding Ugly Afterthoughts. Part a. From Writing for Cross-Platform, to Writing for Debugging and Production Post-Mortem, with Error Handling in between

Quote: “It is strongly recommended to have your build server to compile your game for at least two sufficiently-different platforms from the very beginning”
Another Quote: “If allocation of 50 bytes causes an “out of memory” error, we’re probably already long dead because of unacceptable swapping. And even if we disabled swap file – chances that we will recover from this condition, are infinitesimally small”
[]

Once Again on TCP vs UDP

Abstract: The choice of TCP over UDP (or vice versa) might not always be obvious. In a sense, replacing TCP with UDP is trading off reliability for interactivity.
Quote: “The most critical factor in selection of TCP over UDP or vice versa is usually related to acceptable delays”
[]

On Zero-Side-Effect Interactive Programming, Actors, and FSMs

Abstract: “WHY are functional programming languages not popular for interactive programming purposes?” and “WHAT we can do about it?”
Quote: “IMNSHO, deterministic Actors are the very best thing in existence for interactive programming, with lots of very practical benefits (from production post-mortem, to protection of in-memory state against server faults).”
[]

Password Hashing: Why and How

Abstract: Password hashing is a Big Headache, and doing it right is complicated
Quote: “Note that none of the C++11 random number engines (LCG, Mersenne-Twister, or Lagged Fibonacci) can be considered good enough for cryptographic purposes – in short, they’re way too predictable and can be broken by a determined attacker, given enough output has leaked.”
[]

Pre-Coding Checklist: Things Everybody Hates, but Everybody Needs Them Too. From Source Control to Coding Guidelines

Quote: “The basic idea behind Continuous Integration is simple: as soon as you commit something, a build is automatically run with all the tests you were able to invent by that time”
Another Quote: “One thing which should be noted about agile criticisms, is that there is no real disagreement about what needs to be done; the sentiment in such criticisms is usually more along the lines of “we’re doing it anyway, so do we need fancy names and external consultants?””
[]