Liam White
All posts
  1. Operating systems part 0: Hardware building blocks

    The essential components of modern systems

  2. The Open Source Project Maintainer's Guide

    How to Win Contributors and Influence Developers

  3. Elasticsearch and open source

    You destroyed your community to spite another company, and now you want it back?

  4. Parsing WebSocket frames faster: a deep dive

    I spent a week investigating why my socket upload performance in a Phoenix LiveView application was so poor

  5. TI CPSW hardware lacks soft resets and breaks drivers

    There's no code for "turn it off and back on again" this time

  6. Importing CSS files from JS is ridiculous

    After years of frontend development, this is the best we've come up with?

  7. Think twice before squashing your commits

    Are you sure you want to destroy your commit history?

  8. Extending FidelityFX FSR to support an alpha channel

    Making FSR useful for compositing tricks

  9. Linux's vm.max_map_count limit doesn't make any sense

    There is no discernible reason for this to be kept

  10. Don't let competition distract you from your goals

    Focus on yourself and your product, not them

  11. clang is impractical to use as a library

    Regexing C++ code from a Python script is probably more efficient than anything you're thinking of

  12. Incorrect uses of volatile

    Some mild pedantry about atomics and memory-mapped registers

  13. Android Studio is the worst IDE I have ever used

    Why did Google pay for this?

  14. Hardware features AMD GPUs lack that their competition has

    AMD GPUs do not implement two important features, which hinders their compatibility and usefulness

  15. libc++ needs to support jthread

    LLVM has unacceptably avoided implementing jthread for years, and developers are paying the price for it

  16. Desktop GPUs should support ASTC texture formats

    Vendor avoidance of a compressed texture family on desktop GPUs hurts gamers and game developers

  17. Why you should consider intrusive lists and trees

    How to save memory, support unique data structures, and reduce allocations with intrusive data structures

  18. Avoiding signed overflow with MSVC is unnecessarily inefficient

    MSVC's intrinsics are hopelessly stuck in the past and make it impossible to write efficient code for overflow detection

  19. Spamming GPU work in parallel with a light load makes it go faster

    Avoiding clock speed ramping by always doing work can save your GPU performance

  20. Developer tooling is what you make of it

    Don't be afraid to make your own tools when you need them

  21. GDB remote serial protocol is bad

    A protocol designed for 9600-baud serial ports is not up to the task of debugging complex applications today

  22. New GCC 12 warnings are bad

    GCC is putting extraneous warnings on code after it has been optimized, which makes those warnings unusable

  23. Upgrading to object storage

    I cut storage costs in half and made it easier to upgrade hardware

  24. Instant, private search-as-you-type using JS and a binary blob

    Improving the experience for everyone when tagging images

  25. Validating randomness

    I messed up in my previous post on random sorting, and chose a function that was too weak

  26. Random partial ordering of huge sets with cryptography

    Using the mathematics of encryption to randomly order huge sets without visiting any elements

  27. Making a search engine?

    Pondering the utility of writing a replacement to Elasticsearch

  28. Elasticsearch's license change is a disaster for free software

    How to abandon your community and make absolutely everyone upset

  29. Using a Content-Security-Policy in Phoenix applications

    A simple Plug definition to secure your frontend

  30. Is Webpack the best JS bundler we have?

    A complaint about the current state of frontend development

  31. Bitmap quickselect

    Extremely fast range queries using bitmap trees and a modified version of Quickselect

  32. Bitmap trees

    Introduction to a novel data structure which optimizes bitmap indices for range queries

  33. Quickselect

    An interactive introduction to the Quickselect algorithm

  34. Bitmaps

    An interactive introduction to the bitmap data structure

  35. Features of Rails

    An overview and criticism of many aspects of the Ruby on Rails framework

  36. The MongoDB Zombie

    How MongoDB continues to waste countless hours of my time and energy, even after completely removing it from my application