From f5a3f1dfc9760094ef4a2937be9b4d7eba745c4d Mon Sep 17 00:00:00 2001 From: stuebinm Date: Mon, 5 Apr 2021 02:44:04 +0200 Subject: add a potentially useful readme --- Readme.org | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Readme.org diff --git a/Readme.org b/Readme.org new file mode 100644 index 0000000..3000518 --- /dev/null +++ b/Readme.org @@ -0,0 +1,54 @@ +#+TITLE: An attempt at slightly better surveys + +* What? + +Since online survey are apparently collectively broken, this is my rough +attempt at creating something that is at least /slightly/ better. + +Idea: have some at least halfway sensible configuration language that's +expressive enough to be useful, but not /quite/ as expressive as allowing +turing machines in configs (for now, that role is filled by [[https://dhall-lang.org/][dhall]], which +admittedly has its idiosyncracies, but also a nice type system). A tool +to deal for dealing with these configs can be found in ~/utils~; it takes +configs, type-checks them, and compiles them to json. + +Then have a web application somewhere (can be found in ~/site~), which can +be served as a static site and which fetches aforementioned json, renders +it in some nice way, lets some random passer-by fill it in, and sends the +result via http POST to some server which just eats POST requests and +saves them somewhere (surprisingly, such a server can be found in ~/server~). + +Then take [[https://github.com/FiloSottile/age][age encryption]] and use its [[https://crates.io/crates/age][rust crate]] and web assembly to stuff +it everywhere until there's no plaintext left (this may be useless, but +should any marketing firm ever come across it they can claim that it's +technically all "end-to-end encrypted", which is good, right?). + +* Why? + +No idea. Doing crypto in a browser seemed a sufficiently terrible idea that +I couldn't /not/ try it? + +* Any caveats? + +Lots. I'll do a list: +1. you might not like dhall. It's somewhat opinionated, as is its formatter +2. aforementioned rust crate is currently on version 0.5.1 and its developers + recommend not using it until version 1.0 +3. someone's browser may not like web assembly +4. you might find your webserver fiddly when trying to properly set the mime + types for wasm (the app will fail if you don't, though) +5. there's literally a binary blob in this repo (in my defense, nix tooling + for rust and wasm really is terrible). The code is [[https://stuebinm.eu/git/playground/tree/age-wasm][here]], btw. +6. due to … [mumble mumble] … symmetric encryption with ~age~ takes ages on + the wasm virtual machine, so this currently uses private keys as passwords + instead +7. if you use it, the backend server will almost certainly crash on you. It's + just 100 lines, and it only exists because I wanted to learn Scheme. + +Also, you'll end up with lots of encrypted little files somewhere, and will +probably have pipe them around in shell scripts to actually get anything +useful out of them. + +Surprisingly, stuffing ~260 rust crates into a web assembly blob turns out +to /not/ be a caveat – the result is still smaller than most logos on other +sites! -- cgit v1.2.3