summaryrefslogtreecommitdiff
path: root/Readme.org
diff options
context:
space:
mode:
Diffstat (limited to 'Readme.org')
-rw-r--r--Readme.org54
1 files changed, 54 insertions, 0 deletions
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!