Skip to content

Instantly share code, notes, and snippets.

@manuel
manuel / webrtc logs
Last active August 29, 2015 13:57
webrtc logs
PC 1: Chromium Version 31.0.1650.63 Built on Debian 7.2, running on Debian 7.3 (238485)
PC 2: Chrome Version 33.0.1750.149, Mac OS X
PC 1 (manuel28):
Creating local peer: manuel28 bbrtc.js:51
Creating RTCPeerConnection. bbrtc.js:33
Listening for ICE candidates. bbrtc.js:33
Listening for `negotiationneeded` bbrtc.js:33
Listening for data channel bbrtc.js:33
;; Causes stack overflow:
(def p 'p)
(def (spawn-thread)
(push-prompt p
(loop
(sleep))))
(def (sleep)
fun send(rcv, msg, args) {
  cls = rcv.isa
  if (cls.isa == STD_CLS)
    method = builtin_lookup(rcv, msg)
  else
    method = send(cls, "lookup", msg)
  method(rcv, args)
}
;; Define a simple structure
(defstruct point
x
y)
(defun make-point (x y)
(make-instance 'point :x x :y y))
;; Normal Lisp style function
(defun add-points (p1 p2)
### Keybase proof
I hereby claim:
* I am manuel on github.
* I am msimoni (https://keybase.io/msimoni) on keybase.
* I have a public key ASC3_N8cmaCDXyRmFG6rWilVZcJlAYJC1-aVvAjfMsvL4Qo
To claim this, I am signing this object:
@manuel
manuel / tx.adoc
Last active February 19, 2024 17:47
Transactional RPC across heterogenous data stores and facades

An idea for how to do transactions across heterogenous data stores (e.g. key-value (KV) stores and Git repositories) in an RPC system. Probably not novel.

Overview

There are primitive data stores, like KV stores and Git repositories.

There are facades, processes, that enforce some invariant on top of another, underlying data store. Example: a facade that only allows storing numbers as values in a KV store.

Let’s use the term storage process to refer to both primitive stores and facades.