Weekly links for 2018-11-25
gchq/CyberChef: The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis
CyberChef is a simple, intuitive web app for carrying out all manner of "cyber" operations within a web browser. These operations include simple encoding like XOR or Base64, more complex encryption like AES, DES and Blowfish, creating binary and hexdumps, compression and decompression of data, calculating hashes and checksums, IPv6 and X.509 parsing, changing character encodings, and much more.
granule-project/granule: Granule: a statically typed functional language with graded modal types for fine-grained program reasoning via types
A functional programming language with a linear type system and fine-grained effects and coeffects via graded modal types.
A brief introduction to the Granule programming language can be found in this extended abstract presented at TLLA'17. The type system is partly based on the one in "Combining effects and coeffects via grading" (Gaboardi et al. 2016).
Linearity means that the following is ill-typed:
dupBroken : forall (a : Type) . a -> (a, a)
dupBroken x = (x, x)
However, a graded modality can be employed to explain exactly how many times the parameter here can be used:
dup : forall (a : Type) . a |2| -> (a, a)
dup |x| = (x, x)