Our great sponsors
-
PixiJS
The HTML5 Creation Engine: Create beautiful digital content with the fastest, most flexible 2D WebGL renderer.
-
equinox
Elegant easy-to-use neural networks + scientific computing in JAX. https://docs.kidger.site/equinox/
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
diffrax
Numerical differential equation solvers in JAX. Autodifferentiable and GPU-capable. https://docs.kidger.site/diffrax/
-
notesutils
Utilities for extracting notes from Notes.app. This repository is lightly maintained and mainly exists to serve as documentation and starting point for your own scripts.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
Keychain-Dumper
A tool to check which keychain items are available to an attacker once an iOS device has been jailbroken
Since last year I've been using Pixi.js (https://pixijs.com/) to create an app that puts video meetings into a 2d virtual space (https://flat.social). While learning how to build it, I got really (possibly a bit more than necessary) into optimising graphics performance to make sure it runs smoothly even for users who access it on potato laptops.
This includes pretty much every aspect of the rendering process - how often are elements updated, textures, masking, interpolation, fonts and making sure that nothing renders more often than it should. It's a challenging but pleasant process as the result of experimentation is usually easy to measure (FPS + memory usage).
PS. If you're into it as well - try Safari's web inspector for measuring performance and investigating which frames were dropped. I found it much easier to use for debugging than Chrome.
Autodifferentiable programming!
Neural networks are the famous example of this, of course -- but this can be extended to all of scientific computing. ODE/SDE solvers, root-finding algorithms, LQP, molecular dynamics, ...
These days I'm doing all my work in JAX. (E.g. see Equinox or Diffrax: https://github.com/patrick-kidger/equinox, https://github.com/patrick-kidger/diffrax). A lot of modern work is now based around hybridising such techniques with neural networks.
I'd really encourage anyone interested to learn how JAX works under-the-hood as well. (Look up "autodidax") Lots of clever/novel ideas in its design.
Autodifferentiable programming!
Neural networks are the famous example of this, of course -- but this can be extended to all of scientific computing. ODE/SDE solvers, root-finding algorithms, LQP, molecular dynamics, ...
These days I'm doing all my work in JAX. (E.g. see Equinox or Diffrax: https://github.com/patrick-kidger/equinox, https://github.com/patrick-kidger/diffrax). A lot of modern work is now based around hybridising such techniques with neural networks.
I'd really encourage anyone interested to learn how JAX works under-the-hood as well. (Look up "autodidax") Lots of clever/novel ideas in its design.
As of recent I've been weirdly fascinated with codecs, serialization protocols, file formats, and the like. It scratches that low-level hacking itch (I spent most of my professional programming in web dev space) without as much commitment to electronics (used to be super big into arduino but I find that's harder to pick up and put down).
I've started hacking on my own container format (yeah, I know, xkcd927), after finding it super frustrating to embed arbitrary time-synched data streams into mp4/matroska/ogg/etc. Also it bugs me how crusty, complicated, and arcane mp4 is, and at the same time, mastroska and ogg are weirdly opaque given how they are supposed to be open standards.
If anyone is curious, here's my container format I've been developing: https://github.com/xkortex/sito
Character sets and internationalization. I just spent a year building a one-way libiconv-ish library called cpgtou, including chasing down MS-DOS Code Page 709. https://github.com/torstenvl/cpgtou
Working in a relational language, to resurrect the spirit of the Base/FoxPro family:
https://tablam.org
This is the thing I wish to do full time, but even if not is so interesting! Is not just "making a programming language" is that it touch parts of "make a in-memory database" + "array programming for the masses" that makes it more challenging!
I should write this stuff up, but I haven't.
I do have some brief notes on the "Notes.app" format here:
https://github.com/dunhamsteve/notesutils/blob/master/notes....
But I didn't discuss my methodology -- Generic decoding of protobuf, building up a schema as you go -- the tricky part there is that a byte array and a substructure look the same, so you have to try to decode it, and if successful, try that schema on the next example.
Here is another fun technique - scanning through a disassembly of an Apple framework looking for assembly patterns that match the protobuf compiler output (this was dependent on which language was targeted by protobuf):
https://gist.github.com/dunhamsteve/224e26a7f56689c33cea4f0f...
So you find the serializer / deserializer code and figure out what the original protbuf spec looked like.
Re keychain, you're probably aware of it, but https://github.com/ptoomey3/Keychain-Dumper/ is very thorough in extracting keychain data (including data that one would expect to no longer be in there).