More Recent Stuff

  • BASE53A - user-friendly ID generator with mathematical proof of checksum
  • liburing_b3sum - a file hashing utility using io_uring and BLAKE3
  • Games And Other Fun Stuff!!

  • zc (see above animated gif showing real gameplay) - an improved version of Real Time Risk with additional features such as: multi-tile-select via click-and-drag with mouse, players can now tell their armies to move to arbitrary tiles instead of only the adjacent tile (armies will move according to a route calculated via a shortest path algorithm), armies now take time to move from one tile to another instead of instantaneously, and their movement is now visualized (so that players can now actually see armies moving from one tile to another) and can now collide mid-flight in which case the bigger army will annihilate the smaller one, waypoints (i.e. players can tell their armies to visit a sequence of points in order - for each point, the tile that is closest to the point will be selected as the waypoint), and some other QoL improvements.
  • Edge detector demo video
  • Smooth Antichamber-style graphics - A demonstration of the proper way to use the Laplacian operator and its superiority to 1st derivative filter kernels for edge detection. Implemented in Unreal Engine.
  • Unbeatable Tic Tac Toe AI (with custom heuristic)
  • Theseus solver with nice user-friendly GUI for maze input
  • bolgefuck - an esoteric programming language I invented. It is designed to be as hard to program in as possible, even harder than malbolge!!!!!
  • Useful Tools!!

  • sedit - automatically encrypting text editor
  • multidown.py - multithreaded downloader, pass in a list of URLs to be downloaded.
  • password generator - using random.SystemRandom()
  • SimpleBlogPage - bugfixed and cleaned version of the BlogPage MediaWiki extension.
  • ltt - Linux Time Tracker - an improved version of latte with added support for URL logging (currently Chromium only) and downloads a text copy of every web page you visit so that you can search through them later.
  • crib search for one-time pad with reused key
  • incrementing XOR decryptor
  • Earley parser with nullable fix from Practical Earley Parsing by Aycock & Horspool
  • More Fun Stuff!!

  • The libc++ implementation of the STL deque push_front function has O(log n) amortized time complexity
  • Why gcc and clang sometimes emit an extra mov instruction for std::clamp on x86
  • Clearing up a common misconception about sequential consistency
  • Passing struct and accessing member variable vs passing member variable directly, which is faster?
  • Proof of correctness for Knuth shuffle
  • Sets with distinct subset sums
  • Proof of algorithm to detect cycles in a directed graph
  • Proof of function to normalize angles using why3
  • Proof my base53 checksum detects all single-character changes and adjacent transpositions
  • Unspecified Behavior in a C++ Exam Question
  • gf_invert_matrix is very slow - takes up 99% of the total running time...
  • Soft realtime ticker on Linux
  • St. Petersburg paradox simulator
  • Faraday bag test results using NESDR Mini 2+ and gqrx
  • Other links

    My Github
    My old blog
    My new blog
    Click here for an online pastebin / url shortening service
    Click here for a javascript encryption service using SJCL (entirely clientside)