Stannum/blog/

1900-01-00

(2022-04-15)Excel documentation says that: ... This is wrong, however. In fact 2008-01-01 is only 39446 days after 1900-01-01. The discrepancy is there for two reasons: Keep reading...

Reverse interview

(2022-03-04)Joel test is rather outdated. In 2022 you’ll be hard pressed to find a company that doesn’t ask candidates to code on an interview. Everybody will use source control and a bug tracker, but not necesserily in the right way. The following are my updated criteria at evaluating a programmer’s experience at a company: 1. Can you checkout all your code in one step? ... Keep reading...

uniqoda v6 released

(2022-01-04)uniqoda v6 released: download Release notes • Unicode 14.0 database updated. • Add support for colored emojis. • Enter/OK sends input to the foreground application instead of copying to clipboard. • Update 3rd party libraries and migrate to MSVC2019. • Add native 64-bit build. • Remove Symbola font -- abandoned by the author. Keep reading...

Dear Wikimedia Foundation,

(2021-12-22) For over a decade, Wikimedia Foundation was regularly asking for money. Yet, despite being a regular user on your platform, I’d never felt like paying them. Here are my reasons: • Lack of transparency. The donation banners do not provide any indication of where the donated money goes. There are no links to any financial reports or breakdown of expenses. ... • Inefficient operation. Turns out 70% are pocketed by the foundation members and associates. ... Keep reading...

Request for software: byte-oriented merge with moves

(2021-11-13) Most merge tools use line-oriented comparison algorithms, and employ heuristics to detect moved lines, if at all. Instead, the comparison should compute the shortest sequence of operations required to transform one input into the other, where the permitted operations include character deletion, insertion, replacement, and a substring move: Keep reading...

Tuple abuse

(2021-11-03) Tuple types tend to be heavily misused. The anonymity of their heterogeneous members obfuscates the code in places where a simple struct with named fields would be more appropriate. Let’s walk through a few examples from the C++ standard library and elsewhere (though the discussion is not limited to C++, as I’ve seen Go, Lua and Python code abusing them just as well). • Associative containers (like std::map) define their value_type as: ... Keep reading...

Request for software: Messenger

(2021-05-18) Is there a messenger that satisfies these criteria (or can somebody already make one)? • Open protocol. • Distributed P2P with E2E encryption. • Identity is own public key. • Arbitrary MIME messages of unlimited size. • Real-time video and audio if the other peer is online. • Support multiple devices (sharing identity and syncing). • Group chat. • No unrelated hyped bloat (e.g. blockchains). If/when there is one, can we all start using it, please? Keep reading...

Virtual memory—user-space cache

(2021-02-01) Having an in-memory LRU cache of temporary results is a common thing to have in all kinds of applications. However, the size of such a cache is usually hard-coded, configured, or computed based on the available physical memory. Keep reading...

Stop using lookAt!

(2020-10-28) The most intuitive way of controlling a 3D camera orientation must be by specifying its yaw, pitch and roll. The first two are usually bound to the horizontal and vertical axes of the input device (a mouse, a controller stick, etc...). It can be coupled with back/forth and left/right (strafing) movement to provide what’s the most common navigation method in virtual 3D environments. Keep reading...

Dissecting the projection matrix

(2020-10-24) Within a rasterization pipeline, once the vertex coordinates are transformed to the camera coordinate frame, a non-linear perspective transformation is applied. That transformation itself is performed by the pipeline implementation. However the vertex coordinates need to be adjusted to match the desired viewport and FOV configuration. Keep reading...