Orson R. L. Peters
Hi, nice to meet you, my name is Orson Raphael Lennard Peters. I am a programmer, computer scientist, recreational mathematician, amateur musician and general all-around nerd. I was born in 1994 in Houston, Texas, but both my parents are Dutch and I’ve essentially lived my entire life in the Netherlands as well.
Contact
If you are human you may contact me at firstnamelastname@gmail.com
, or alternatively on Discord, where I use my initials as my username.
Projects
While most of my projects live and die as a private prototype, over the years I did publish some things:
-
foldhash
, a very fast hasher for Rust objects. Used as the default hasher in the popularhashbrown
hash table library. -
polymur-hash
, a 64-bit universal hash function implemented in C designed for use in hash tables. -
Co-author of the driftsort and ipnsort sorting algorithms, developed together with Lukas Bergdoll as respectively the stable and unstable sorting algorithms for the Rust standard library.
-
Pattern-defeating Quicksort, a sorting algorithm I invented and implemented in C++. Third party implementations of
pdqsort
are used as the default unstable sorting algorithms in Go. -
Glidesort, a stable sorting algorithm I invented and implemented in Rust up to ~4x faster than the default stable sorting algorithm for random data, and more for data with patterns. I presented glidesort at FOSDEM 2023.
-
slotmap
, a Rust library for safely allocating and referring to objects in ways not encapsulated by lifetimes. Sometimes referred to as a (generational) arena or bump allocator, it uses versioned keys and slots to prevent use-after-free bugs. -
peekread
, a Rust library that allows you to peak ahead in aRead
stream using a cursor without consuming the original stream. -
bunlink.vim
, a Vim plugin that decouples the concept of ‘deleting a buffer’ from ‘closing a window’. This allows you to delete your buffers without destroying your windows/splits. -
num-ord
, a Rust library for correctly comparing built-in numeric types, in a mathematically correct way without overflows. This is trickier than it might seem, blog post pending.
Interests
I am interested in a lot of different things, including but not limited to sorting, hashing, hash tables/bloom filters, indexing, low-level optimization, compression, succinct data structures, error/erasure correction codes, programming language and algebra design, sound synthesis, encryption, quantum computing, distributed data structures and algorithms, actually… to save time, just assume I like most data structures and algorithms.
I like to cross the boundary between theory/research and application/engineering, solving hard problems, or not-so-hard problems with state-of-the-art solutions. Teaching others is also something I enjoy, having written 1500+ answers for a total of 110,000+ reputation on StackOverflow.
In my remaining free time I play classical and pop piano as well as a variety of video games, at least when I’m not busy being distracted by my two cats, Conway & Boole.
License
Unless mentioned otherwise all code on this website is licensed under the zlib license:
Copyright (c) 2024 Orson Peters
This software is provided 'as-is', without any express or implied warranty. In
no event will the authors be held liable for any damages arising from the use of
this software.
Permission is granted to anyone to use this software for any purpose, including
commercial applications, and to alter it and redistribute it freely, subject to
the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim
that you wrote the original software. If you use this software in a product,
an acknowledgment in the product documentation would be appreciated but is
not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.