Skip to content

Instantly share code, notes, and snippets.

View moea's full-sized avatar

Moe Aboulkheir moea

  • Nervous Systems, Ltd.
  • London
View GitHub Profile
@moea
moea / arcs.cljs
Last active December 27, 2022 09:15
SVG Elliptical Arc to Chord Approximation
;; NB there is a bug when switching between circles/ellipses. Anyone spot it?
(ns perturb.arcs
(:require [perturb.util
:refer [cos
sin
PI
TAU
avg
rad
@moea
moea / interp.cljc
Created December 27, 2022 09:07
Catmull-Rom Interpolation - Points to Cubic Bezier Curves
(ns perturb.interp)
(defn pts->path [pts]
(flatten
(into [(into ["M"] (first pts))]
(for [pt (rest pts)]
(into ["L"] pt)))))
(let [v 6
c (fn cubic [[x0 y0] [x1 y1] [x2 y2] [x3 y3]]
#!/usr/bin/env python3
from oso import Oso, Relation
from dataclasses import dataclass
from functools import partial
policy = """
actor User {
}
#!/usr/bin/env python3
from oso import Oso, Relation
from dataclasses import dataclass
from functools import partial
policy = """
actor User {
relations = {groups: Group};
}
@moea
moea / oso_failing_example.py
Last active December 18, 2021 08:38
Failing OSO Example
#!/usr/bin/env python3
from oso import Oso, Relation
from dataclasses import dataclass
from functools import partial
policy = """
actor User {}
resource Group {
relations = {network: Network};
(ns forestry.rb
(:require [clojure.core.match :refer [match]]
[forestry.node :as n])
(:refer-clojure :exclude [find key val replace]))
(defprotocol -RedBlackNode
(color [node])
(blacken [node])
(-add [node k v])
(balance [node])
(ns abci.example.kv
(:require [abci.host :as host]
[abci.host.middleware :as mw]
[datahike.core :as dc]
[datahike.tools :as d.tools]
[datahike.api :as d]
[konserve.core :as k]
[hasch.core :as h]
[taoensso.timbre :as log])
(:gen-class))
(ns replicate.tree
[clojure.walk
:refer [postwalk]]))
(defprotocol NodeStore
(persist [store node])
(fetch [store node-hash]))
(defprotocol Node
(insert [node k store])
@moea
moea / datahike_scratch.clj
Last active July 19, 2020 13:56
invariant + Datahike Example
(ns invariant.datahike-scratch
(:refer-clojure :exclude [+])
(:require [invariant.datahike
:refer [+]]
[datahike.api :as d]
[datahike.core :as dc]))
(defn query [q conn tx]
(d/q q
@conn
;; I would suggest that we use either 'datopia' or 'datopia.db' as the namespace
;; for the schemas, rather than 'db'. For users, I suspect 'db' will seem arbitrary
;; and incongruous (as it does to me, in this context).
#:datopia {:attribute :datopia.ednt/balance
:schema #:db {:cardinality :db.cardinality/one
:valueType :db.type/bigdec}
:invariant <inline query graph as map of keyword -> query,
or maybe just inline query, initially. having