Fedidict Implementation: Setting Up the Database
posted September 06, 2018
This is the first of several posts on the implementation of my ActivityPub-enabled Rust web application, FediDict. Each of these posts was released to my Patreon patrons before being make publicly available. I recommend that you read the security design post first.
The core of any stateful service is its datastore, and FediDict uses PostgreSQL, a very performant, ACID-compliant, free and open source relational database. In this post, I’ll look at how to make an efficient, normalized database for FediDict’s data.
FediDict UX Design, Part 2
posted September 02, 2018
This is the second of several posts on the design of my current ActivityPub-enabled Rust web application, FediDict. Each of these posts was be released to my Patreon patrons before being made publicly available. I recommend that you read the first UX design post first.
Any software that accepts input over the network will, eventually, be subject to attack, of some kind. Any federated software service must accept input over the network - that’s the whole point.
FediDict UX Design, Part 1
posted August 23, 2018
This is the first of several posts on the design of my current ActivityPub-enabled Rust web application, FediDict. Each of these posts was be released to my Patreon patrons before being made publicly available.
FediDict, a portmanteau of Federated and Dictionary, is my current open source project. Most of the time, I’ve taken the approach of “dive in and write some code; the design will shake itself out”. This isn’t a great idea for something I want to be widely adopted, so I took a different approach for this project.
PDF Embedding Attacks
posted August 04, 2018
Embedding Files in PDF Documents It’s very easy to embed any kind of file in a PDF document.
Chaining Fallible Operations with Combinators
posted June 26, 2018
Rust’s Iterator trait is one of its most useful features. It allows lazy processing of item-by-item streams of anything from the bytes of a file to threads to complex and exotic data structures.
Most of the useful functionality, though, is provided by combinators, functions that allow us to combine iterators and process them in useful ways. These include map, fold, filter, and many other useful functions (including those from the excellent itertools crate).