You can see nicely formatted summaries of my profile on OSS insight or coder stats.
And there's this website which ranks users by number of commits:
- 🔭 I’m currently working on eskom-calendar, a completely free source of Eskom Loadshedding information.
- I'm also completing my Master's in Computer Science at Stellenbosch University, South Africa
Message me on Twitter
(fast reply) or LinkedIn
(business-related)
I enjoy exploring different tools, so have dabbled with a fair number of things over the years. Here's an approximate list:
- Rust, Python, Typescript, Java, Haskell, HTML/CSS, Arduino, C++
- Tailwind, Teloxide, Svelte, TensorFlow/Keras, BeautifulSoup, Godot, Shuttle.rs
Here are some ideas/concepts that I think are cool
- Regex
- Bloom filters
- bitboards, smaller bitboards
- gregarious catterpillar motion
- how to communicate the presence of nuclear waste repositories to future generations
- Shamir's secrets sharing scheme
- blue LEDs
- charlieplexing
- the remarkably simple mechanism behind knobs and dials
- Using logarithms to do multiplication without doing multiplication (à la this Welsch Labs video) (also slide rules and analogue computers)
- The idea of the Infinite Game 1 2
There are at least two kinds of games: finite and infinite. A finite game is played for the purpose of winning, an infinite game for the purpose of continuing the play. Finite games are those instrumental activities - from sports to politics to wars - in which the participants obey rules, recognize boundaries and announce winners and losers. The infinite game - there is only one - includes any authentic interaction, from touching to culture, that changes rules, plays with boundaries and exists solely for the purpose of continuing the game. A finite player seeks power; the infinite one displays self-sufficient strength.
- Five Hundred and Seven Mechanical Movements by Henry T. Brown
- Colour Spaces and human colour perception (okLAB, Subtleties of Color)
- Byte Pair Encoding
- How diffusion models generate images from noise
- How generative adversarial networks pit two models against each other
- How autoencoders perform dimensionality reduction
- the work by antithesis on a bug-finding system that is automated and reproducible by running your entire codebase on a deterministic hypervisor
- This count-total-zeros algorithm:
function count-total-zeros (x)
if x = 0 return 32
n ← 0
if (x & 0x0000FFFF) = 0: n ← n + 16, x ← x >> 16
if (x & 0x000000FF) = 0: n ← n + 8, x ← x >> 8
if (x & 0x0000000F) = 0: n ← n + 4, x ← x >> 4
if (x & 0x00000003) = 0: n ← n + 2, x ← x >> 2
if (x & 0x00000001) = 0: n ← n + 1
return n
I like fixing things, so if I can take 30m to make a fix to an open source library, I usually will:
- seaborn: Fix: shifting margins caused by multiple rugplots
- pandas: CLN: Replace confusing brackets with backticks
- rust-lang/rust: docs: add link from zip to unzip
- awscurl: Fix: Booleans verify and insecure are not interchangable
- zotero-reference
- Shuttle
- Calio 1 2
- rust-analyzer
- tea.xyz 1 2
- matklad.github.io
- utoipa
- postman-code-generators
- petgraph
- pyTooling/Actions
- keras
- arduino/reference-en
- tensorflow/tflite-micro
- IsaacShelton/update-existing-release 1 2
(You can use this github search to see the full list of PRs I've made which were merged and which were not from my main project eskom-calendar.)
If you reach out to me, please include a Dune reference in your first message to indicate that you've read this page.
This helps me figure out who's sending a million cold calls to random people online and who's actually interested in what I have to offer.