Archive

2023/11/23 • C++ tricks: STL-free initializer list
2023/11/23 • Realloc and arena allocators
2023/11/23 • C++ tricks: Production Ready TM aligned malloc
2023/11/23 • C++ tricks: STL-free source location
2023/11/23 • 2023 Windows post-install checklist
2023/11/23 • Running a business in Finland
2023/09/23 • Least effort self-destructing email addresses with Fastmail
2021/07/21 • Building a userspace CSPRNG on top of Monocypher 3
2020/12/20 • An equal but opposite reaction
2020/08/20 • OpenSMTPD is excellent 2020 edition
2020/08/20 • C++ tricks: catching ASAN errors in a debugger
2020/07/20 • gg libraries index
2020/07/20 • ggtime
2020/01/20 • Daily Mail
2019/12/19 • C++ tricks: compound literals
2019/10/19 • GL tricks: glPushDebugGroup
2019/10/19 • C++ tricks: member array count
2019/05/19 • Server side React
2019/04/19 • SSH local discovery
2019/04/19 • C++ tricks: compile time string hashing
2019/04/19 • C++ tricks: compile time type IDs
2019/03/19 • Useful tmux window titles
2019/02/19 • Sending mail through Amazon SES with OpenSMTPD
2019/01/19 • Detecting WSL in Makefiles
2019/01/19 • Windows 10 2019 post-install checklist
2019/01/19 • Immediate mode audio
2018/12/18 • How to get rid of ? globbing in fish
2018/09/18 • Branch prediction minutiae in LZ decoders
2018/09/18 • Least effort image self-hosting
2018/09/18 • Using WSAAsyncSelect
2018/04/18 • GoAccess with OpenBSD httpd
2018/04/18 • namespace is bad and should not be used
2018/04/18 • Never update anything #145432
2018/03/18 • cmov
2018/03/18 • Compression gold medalist
2018/03/18 • Existential risk from artificial general intelligence
2018/02/18 • ggentropy
2018/02/18 • C++ tricks: dealing with 3rd party code
2018/01/18 • Building a userspace CSPRNG on top of Monocypher 2
2018/01/18 • C++ tricks: named function arguments
2017/12/17 • Least effort self hosted dynamic DNS
2017/12/17 • Mesh generation checklist
2017/12/17 • Geometry clipmaps: simple terrain rendering with level of detail
2017/12/17 • C++ tricks: macro to disable optimisations
2017/11/17 • Preprocessor madness 2
2017/11/17 • RSS feed
2017/11/17 • Deadlock
2017/11/17 • Preprocessor madness
2017/11/17 • C++ tricks: sized array arguments
2017/11/17 • Linux vs BSD in a man page
2017/10/17 • Monocypher is excellent
2017/10/17 • GL_FRAMEBUFFER_SRGB sucks
2017/10/17 • Roadblocks to releasing Medfall on macOS
2017/10/17 • Vim: peek definition
2017/10/17 • OpenSMTPD is excellent
2017/10/17 • Not even not upgrading can save me
2017/10/17 • Optimising vs expanding to fill all available resources
2017/10/17 • Code for my intro to raytracing talk
2017/10/17 • C++ tricks: autogdb
2017/10/17 • More installer junk
2017/10/17 • Really finishing the job
2017/09/17 • OpenGL uniforms and renderer design rambling
2017/09/17 • Detecting TCP server crashes
2017/08/17 • ggformat
2017/08/17 • Saving scroll position when refreshing
2017/08/17 • Never update anything
2017/08/17 • Ruoka Helsingiss√§
2017/08/17 • SIGGRAPH 2017
2017/08/17 • Rust performance: finishing the job
2017/07/17 • Fixing the Visual Studio forms designer
2017/07/17 • Vim
2017/06/17 • Wat
2017/06/17 • C++ tricks: least effort conditional breakpoints
2017/06/17 • Writing installers for Windows
2017/06/17 • C++ tricks: NO_INIT
2017/04/17 • bug489729
2017/04/17 • C++ tricks: better casting
2017/03/17 • Least effort unit tests
2017/03/17 • Caches are fast, hashes are fast
2017/03/17 • C++ tricks: ZERO
2017/03/17 • C++ tricks: safe ARRAY_COUNT
2017/01/17 • Dumping a git repository to an encrypted zip file
2017/01/17 • Windows post-install for developers
2016/12/16 • Billions
2016/04/16 • Auto-mounting removable drives
2015/12/15 • Moving to OpenBSD