AI Gameplaying
Klondike
Implemented for fun and practice as part of kata 20.
2048-clai
Othello
Rigid Body Physics Engine and Rope Swinging Game
Cryptography
Lenticrypt
Lenticrypt is a novel cryptosystem that provides true plausible deniability. It allows a single ciphertext to decrypt to multiple different plaintexts depending on the key that is used to decrypt it. Moreover, there is a theoretical guarantee that with nearly 100% probability there always exists at least one work in the public domain that some key will decrypt to, even if you don't know what that key is. You can read about its origins in this blog post.
Magiic
Magiic stands for Magiic Allows for GPG Indexing of IMAP on the Command-line. It is a simple ncurses-based command-line application for securely and efficiently performing full-text search over encrypted email. You can read more about it, along with a download link, on the Digital Operatives blog.
Data Science
Philadelphia Zoning Analysis
This repository contains software and some partial analysis results of the Philadelphia zoning code. See this blog post for more information.
Polyglottery
PolyFile
A utility to identify and map the semantic structure of files, including polyglots, chimeras, and schizophrenic files.
NES Résumé Polyglot Game
Evan’s résumé PDF is also a Nintendo Entertainment System game that you can emulate. You can even emulate it directly in your web browser!
This Git Repository is a PDF
A PDF that can be git cloned, producing a repository containing the LATEX source of the PDF, all of the scripts necessary to rebuild the polyglot, and a copy of itself. See PoC||GTFO Issue 0x15.
Program Analysis
PolyTracker
PolyTracker is a tool for the Automated Lexical Annotation and Navigation of Parsers, a backronym devised solely for the purpose of referring to it as The ALAN Parsers Project. It is a an LLVM pass that instruments the programs it compiles to track which bytes of an input file are operated on by which functions. It outputs a JSON file containing the function-to-input-bytes mapping..
Manticore Symbolic Execution Engine
I am a frequent contributor to the Manticore symbolic execution engine.
Smart Contracts
solc-select
A script to quickly switch between Solidity compiler versions.
It is becoming increasingly hard to run older versions of solc
, particularly on macOS since there are no official binary releases. Versions prior to 0.5.0 no longer compile on macOS and are not maintained. This is a problem because older Ethereum contracts no longer compile on modern versions of Solidity. solc-select
is a utility that allows one to run any legacy version of Solidity simply by setting an environment variable.
Etheno
Etheno is the Ethereum testing Swiss Army knife. It’s a JSON RPC multiplexer, analysis tool wrapper, and test integration tool. It eliminates the complexity of setting up analysis tools like Manticore and Echidna on large, multi-contract projects. In particular, custom Manticore analysis scripts require less code, are simpler to write, and integrate with Truffle.
Typesetting
LaTeX Coffee Stains
This package provides an essential feature to LATEX that has been missing for too long. It adds a coffee stain to your documents. A lot of time can be saved by printing stains directly on the page rather than adding it manually.
Utilities
Graphtage
A command line utility for semantically comparing tree-like files, such as JSON, YAML, XML, HTML, and TOML.
Visie is a Simple Initialism Enumerator
Notify When Done (NWD)
NWD is a utility for triggering alerts when a process finishes. Kicking off a long-running compile? NWD can post a popup notification when it's done. Starting a job on a remote server? NWD can send you an e-mail when it's done. Want to run a custom script once another finishes? NWD can facilitate that, too.
Biggest
A utility for finding the largest directories and/or files in a given directory hierarchy. Biggest supports pretty printed and colorized output to the terminal.
Ascid is the Self-referential Cycle IDentifier
It is capable of quickly (in linear time) detecting the maximum length repeated substrings in text files.
This is often useful, e.g., when debugging a program that loops infinitely, vi&., ascid can determine the point at which the log output loops back on itself.