I Like Big Bits # Blog #### [2018-10-20: Estimating the risk of a hash collision](2018_10_20_estimating_hash_collisions.html) Say you store 32-bit hashes of a thousand items – what is the probability that you will have a collision? Can you name a number off the top of you head? After reading this article you will be able to! #### [2017-09-25: Fitting a plane to noisy points in 3D](2017_09_25_plane_from_points_2.html) A continuation of my 2015 article, with improved accuracy when the points are noisy (do not exactly lie on a plane). #### [2017-07-19: Hitting the bullseye: Adventures in computer vision](2017_07_19_hitting_the_bullseye.html) A description of a novel circle detection algorithm. #### [2017-06-01: Float or double?](2017_06_01_float_or_double.html) A guide to selecting the floating point representation that makes the most sense for you. #### [2017-04-23: Abstractions: a cautionary tale](2017_04_23_abstractions.html) A parable and moral lesson inspired by true events. #### [2016-11-22: The Unfixable Bug](2016_11_22_unfixable_bug.html) A short story about a hard-to-find graphics bug, with a twist ending. #### [2016-10-12: Stick to UTF-8 and these three character sets](2016_10_12_character_sets.html) A suggestion that the programmer profession to stick to exactly three characters sets. #### [2016-08-28: Designing a fast Hash Table](2016_08_28_hash_table.html) Design choices for writing a fast hash table implementation, including benchmarks. #### [2016-03-20: Simple coroutines for games in C++](2016_03_20_coroutines.html) An introduction to using coroutines in game development, and how you can emulate them using threads in C++ using a small library of mine. #### [2016-02-28: Error Context – a stack trace for data](2016_02_28_error_context.html) This article describes an idea for producing code that is more easily debugged using *Error contexts*. #### [2016-01-26: Introducing Configuru – the user friendly config library for C++](2016_01_26_configuru.html) An introduction to my C++ config library which arguably gives better error messages than any other JSON library in the world. #### [2016-01-25: You deserve great error messages!](2016_01_25_error_messages.html) A call to action for better error messages for configuration files (e.g. JSON parsers). #### [2015-12-06: The fastest code is the code that never runs](2015_12_06_gauntlet.html) A story of how I optimized the light culling in the game Gauntlet. #### [2015-11-07: Introducing Loguru – the user friendly logging library for C++](2015_11_07_loguru.html) An introduction to my C++ logging library *Loguru* and some of its interesting features. #### [2015-03-04: Fitting a plane to many points in 3D](2015_03_04_plane_from_points.html) The mathematics of fitting a plane to three or more points in three dimensions, including code. #### [2015-02-09: The Myth of RAM, part IV](2015_02_09_myth_of_ram_4.html) An FAQ for my "Myth of RAM" series. #### [2015-02-05: What a difference a function makes](2015_02_05_remap.html) Wherein I tell a story of how I made my code much more readable with a simple abstraction. #### [2014-12-07: Lessons after a year with Lua](2014_12_07_lessons_from_lua.html) Some comparisons between compiled, statically typed languages and dynamically typed scripting languages. #### [2014-05-13: Responsiveness](2014_05_13_responsiveness.html) A short introduction to responsiveness and why it matters. #### [2014-05-06: Type safe handles in C++](2014_05_06_type_safe_handles.html) How to write more type-safe code in C++ using *type tags*. #### [2014-04-29: The Myth of RAM, part III](2014_04_29_myth_of_ram_3.html) Implications of the *O(√N)* memory access rule. #### [2014-04-28: The Myth of RAM, part II](2014_04_28_myth_of_ram_2.html) A theoretical argument for the *O(√N)* rule. #### [2014-04-21: The Myth of RAM, part I](2014_04_21_myth_of_ram_1.html) An article wherein I argue that the abstraction of constant-time random access memory is wrong, and that we should be using *O(√N)* as a rule of thumb for modeling the time it takes to fetch a random piece of memory.