May 31, 2023
Notes from a shallow look in the deep learning rabbit hole. I stubbornly started in pure Clojure with no libraries, but eventually bent the 'from scratch' rule and 400xd the training speed thanks to a proper matrix math library. The topic is more approachable than I expected — if I had known, I would have dipped my toes in the water earlier.
April 14, 2023
The Kelly formula is simple for two outcome version, but it's trickier for three or more outcomes.
April 7, 2023
"The Kelly strategy marks the boundary between aggressive and insane investing." True enough. Why though?
March 27, 2023
I built this to get a REPL-like experience with ChatGPT conversations. It transforms code blocks in the output into iframe
s. Its days are numbered with OpenAI's plugins around the corner, but it has been useful to me in the meantime.
January 17, 2023
FTX claims might be undervalued, but it still makes sense to sell down concentrated positions. Plus an interactive Monte Carlo simulation to calibrate bet sizing for these kinds of things.
July 18, 2022
This was the first year I was really forced to dig into cloud infra beyond AWS EC2/S3. The CDK is one way of orchestrating repeatable, infrastructure-as-code deployments, and it has Java bindings that I used from Clojure.
January 22, 2021
Note on elliptic curve digital signature schemes and calculating s = k^-1 * x mod n.
March 27, 2020
You can do this live, from the REPL, which is nice sometimes.
March 23, 2020
Often you are just wrapping a function body with some logic to execute before and after, but postwalk from the stdlib is also pretty cool.
March 15, 2020
Some charts, plus speculation that futures backwardation might have reduced latent liquidity.
March 7, 2020
Marketable limit orders, perhaps counterintuitively, are useless in thin books.
swap-vals!
in lock-free algorithms
February 29, 2020
Frustrating to think about all the time I spent on locks, latches, semaphores, and STM when CAS + immutability were there all along.
December 8, 2018
A macro for rewriting some ugly code — Java getters and setters encourage evil data parochialism, anyway.
August 17, 2018
Weirdly I couldn't find this in standard graph traversal libraries. How else was I going to find out how much fees eat into N-step arbitrages? My advice: stick to a max of three legs unless you execute passively on each.
July 2, 2018
This requires some wierd manipulation of the underlying Java charts.
January 30, 2018
KYC/AML processes would be greatly improved by the application of Bloom filters, breaking data monopolies and ameliorating privacy risks posed by centralized databases of personally identifiable information. It would make things cheaper for non-banks, too.
December 5, 2017
Because of EIP155 I found myself needing to tweak the signature data a bit.
November 2, 2017
One miscellaneous detail among many relevant to customizing the Django admin site.
October 23, 2017
The XPUB is at the root of a nifty tree of keys, and Ledger still doesn't let you access it easily.
October 19, 2017
The public key is an (x, y) coordinate pair, but magically you only really need the x coordinate + one byte to indicate the sign of the y coordinate.
October 17, 2017
Elaboration + code for BIP216's description of backwards-compatible SegWit address generation via nesting within a pay to script hash transaction.