web rajk.me

mail rajk at berkeley dot edu

code github/raj-kesavan

public key 3B3ECEE1

dotfiles slashdot

Erdős number 5

resume pdf

image jpg

papers of interest

Richard Cleve 1986

Limits on the Security of Coin Flips When Half the Processors are Faulty

Tal Moran, Moni Naor, Gil Segev 2009

An Optimally Fair Coin Toss

Hemanta K. Maji, Manoj Prabhakaran, Amit Sahai 2010

On the Computational Complexity of Coin Flipping

Mihir Bellare, Oded Goldreich, Erez Petrank 1998

Uniform Generation of NP-witnesses using an NP-oracle

Itay Berman, Iftach Haitner, Aris Tentes 2014

Coin flipping of any constant bias implies one-way functions

jyotir is a Python library for secure 2-party peer-to-peer computation via Yao's garbled circuits protocol.

Secure computation is a problem where two parties would like to compute some function on their respective inputs, but do not want to reveal anything about inputs except for the output. For example, imagine two billionaires, who want to know who has more money, but don't want to reveal anything about their own wealth, or a startup that'd like to use Amazon's computers to run some large computation on proprietary data, but they don't want Amazon to learn anything about the data.

jyotir lets you define arbitrary Boolean circuits of arbitrary fan-in, fan-out, and output length, and then provides utilities to garble and evaluate them. In addition, jyotir provides client-side servers for two parties to complete the protocol over peer-to-peer sockets, using the RSA trapdoor one-way permutation for oblivious transfer. [source]

ryujin is a classical cryptography and cryptanalysis Clojure library. ryujin currently supports Caesar, substititution, Hill, Vigènere, and one-time-pad ciphers. I also created and implemented an algorithm to probabilistically break substitution ciphers at a unicity distance of roughly 5000. [source] [details]

```
=> (encrypt (caesar 15) "hello world")
"spwwz hzcwo"
=> (decrypt (caesar 15) "spwwz hzcwo")
"hello world"
=> (def plain-text "Every mental state is irreducible: the mere fact of naming it - i.e., of classifying it - implies a falsification. From which it can be deduced that there are no sciences on Tlön, not even reasoning")
=> (def cipher-text (encrypt (caesar 23) plain-text))
=> (crack-caesar cipher-text)
=> ({:shift 23, :chi 0.024591684364994242, :guess "Every mental state is irreducible: the mere fact of naming it - i.e., of classifying it - implies a falsification. From which it can be deduced that there are no sciences on Tlön, not even reasoning"})
```

quetzal is an online, real-time, multiplayer adaptation of the classic game Snake - if you hit another player, you lose! When no one else is online, empty spots are taken by an AI. I wrote the backend in Clojure, which communicates to clients over WebSockets with http-kit. [source]

logicpod is a propositional logic Clojure library. logicpod parses (relatively) free-form input with instaparse, and can evaluate formulas given truth conditions, create truth tables, and check arguments for consistency and validity. [source]

```
=> (def wff-a (parse "(A & ((~B) <-> A))"))
[:and [:atom :A] [:iff [:not [:atom :B]] [:atom :A]]]
=> (def wff-b (parse "((not A) or B)"))
[:or [:not [:atom :A]] [:atom :B]]
; (valid? conclusion & givens)
=> (valid? wff-a wff-b)
false
=> (def wff-c (parse "B"))
=> (valid? wff-b wff-a wff-c)
true
```

busybeaver is a React.js implementation of an n-state Turing Machine that can be used to play the Busy Beaver game. The 2-state solution is a decent challenge. [source]

vigenere is a small, online implementation of a Vigenere cipher. [source]

selected literature

Italo Calvino If on a winter's night a traveler

Arundhati Roy The God of Small Things

Gabriel García Márquez One Hundred Years of Solitude

Kazuo Ishiguro Never Let Me Go

Jorge Luis Borges The Library of Babel

Haruki Murakami Hard-Boiled Wonderland and the End of the World

Umberto Eco The Name of the Rose

J.M. Coetzee Disgrace

David Mamet Glengarry Glen Ross

causes

FairVote

Electronic Frontier Foundation

Free Software Foundation

Let's Encrypt

Mozilla Firefox