I am from Christchurch, New Zealand.
At the moment, I am studying law at the University of Canterbury in Christchurch, New Zealand.
BSc(Hons) in Mathematics with First Class Honours
BSc in Mathematics and Computer Science
I have two and a half years of work experience as a software developer at two New Zealand software development companies.
I have tutored many mathematics and computer science courses at the University of Canterbury in Christchurch, New Zealand, including MATH102/MATH103 (first year calculus and linear algebra), MATH120 (discrete mathematics), MATH220 (graph theory and cryptography), MATH230 (logic, automata and computability), COSC121 (introductory programming) and COSC367 (artificial intelligence).
- Æther is
an implementation of a chat protocol I have been designing,
named Ætherwind. I am planning for it to be a federated
end-to-end-encrypted chat protocol with support for both
private and public permanent channels (think optionally
end-to-end-encrypted IRC) and for 1-to-1 and small group
ephemeral chats (think Signal).
Æther uses the excellent Monocypher library for the underlying cryptographic primitives. It is a reference implementation, intended to demonstrate the potential of the protocol and not to be the perfect implementation of the protocol for everyone. The protocol itself uses very standard modern cryptography (Curve25519, ChaCha20, Poly1305, BLAKE2, HKDF, Argon2) and should be easily implementable using any modern cryptographic library.
It should go without saying from this description and the state of the repository, but to be crystal clear: Æther is at this stage purely a research project and should not be used or relied upon for any purpose whatsoever, serious or otherwise, involving any data that is even remotely secret or sensitive.
This blog post by Drew DeVault, the creator of sway and Sourcehut, was the main inspiration for Æther(wind). I do not entirely agree with the requirement for total anonymity, because I think that, as with email, the relationship between the client and the server is a necessary one to have stable and traceable user identity in a world where spammers exist. However, I agree with pretty much everything else he says.
- Vine is a work-in-progress text editor à la Emacs, written in C. I have lofty goals for vine but at the moment vim serves my needs well enough that I am focusing on other projects.
- qed, where you will find my work-in-progress proof assistant and programming language for constructive Morse set theory written in Haskell. It is currently on hold.
- Minimal logic, where you will find a proof checker for minimal propositional logic written in Haskell. I wrote this project as part of completing my BSc(Hons) in Mathematics. It uses advanced Haskell type system techniques to prevent the representation of structurally invalid proofs. It also includes a minimal propositional Kripke model checker also written in Haskell. It is no longer under development.
- Visp is a simple Lisp written in Python, with macros, using substitution to evaluate (not metacircular, but does use the Python stack). As an experiment, Visp is complete. I hope one day to find the time to revisit Visp and fexprs.
milesrout:sceptre, a fun little automatic theorem prover for minimal propositional logic written in Racket.
- my vim configuration—be sure to use --recurse-submodules to clone this.
Please contact me at email@example.com.