This computing and security blog is intended to:
- serve as documentation for my own reference.
- help others that may be looking for such information.
- gain valuable feedback from the community for my own edification.


Liberty in tech is important to me. As a young naive technologist, I'd let corporate overlords like Google, Microsoft, and Dropbox seduce me into handing over personal data in exchange for convenience. After a decade of having my digital identity raped and pillaged, I've grown to despise convenience, and recognize it as the cause of losing my liberty, thanks in no small part to Bruce Schneier's Data and Goliath.

In an effort to restore my independence, I've taken to aggressively self-hosting as much tech as I find reasonable. Self-hosting is a lot of work - I've grown a significant tolerance and appreciation for self-hosting, rather than delegate the work to tech monopolies along with my personal data.

Following is a UML diagram illustrating this effort. Several hyperlinks are included, many providing deployment guides for my self-hosted environment.

Sorry, your browser does not support SVG.


Rigorous analysis on cryptographic systems typically requires reviewing each primitive in isolation. When assessing these cryptographic primitives, generally the scientific method is as follows:

  • Specify the thread model: What can an attacker do to attack the cryptographic primitive?
  • Propose secure construction for primitive.
  • Prove an attack which compromises the construction under the threat model also solves a difficult underlying problem (e.g., factoring primes from a large product).

Such analysis provides a statistical proof of security.

The following UML describes classes of cryptographic primitives, and provides links to my analyses where there is larger font.

Sorry, your browser does not support SVG.