Skip to content

Instantly share code, notes, and snippets.

View den1k's full-sized avatar

Dennis Heihoff den1k

View GitHub Profile
@den1k
den1k / client.cljs
Created June 9, 2021 15:38
CLJ(S) Local Websocket Benchmark
(defn ws-latency-conn
[url
{:keys [on-open on-close on-message binary-type]
:or {binary-type :arraybuffer}}]
(let [socket (js/WebSocket. url)]
(set! (.-binaryType socket) (name binary-type))
(set! (.-onopen socket)
(or on-open
#(js/console.log "WebSocket opened:" url %)))
(set! (.-onmessage socket)
@den1k
den1k / datalevin-code-environment.clj
Last active February 23, 2021 16:49
datalevin-code-environment.clj
(require '[datalevin.core :as d])
(require '[sci.core :as sci])
(def code-schema
{:var {:db/unique :db.unique/identity
:db/valueType :db.type/symbol}})
(def code-conn (d/create-conn "data/datalevin/code-db" code-schema))
;; FIXME these functions could be defined and transacted by a defn-like macro
commit d86c5c3e2586db8302651c9a3e308c17116978dc (HEAD -> develop, origin/develop, origin/HEAD)
Merge: e7964f9 f5f9f59
Author: den1k <kalavox@gmail.com>
Date:   Thu May 7 13:25:46 2020 -0400

    Merge remote-tracking branch 'metosin/develop' into develop
@den1k
den1k / benchmark-comparison.md
Last active April 27, 2020 20:29
Sieppari perf benchmark comparison

Results as of commit: Fix broken link in README - 8cf22f73b34699d947858be2ba12455ab0b823ff

###########
queue of 10
###########
##############
pedestal: sync
##############
@den1k
den1k / visible.cljs
Created March 21, 2019 15:30
dom node visibility
(defn bounding-client-rect
"Returns a map of the bounding client rect of `elem`
as a map with [:top :left :right :bottom :width :height]"
[el]
(let [r (.getBoundingClientRect el)
height (.-height r)]
{:top (.-top r)
:bottom (.-bottom r)
:left (.-left r)
:right (.-right r)
@den1k
den1k / bimap.cljs
Created March 14, 2019 19:56
Bimap
;; adapted from https://github.com/CharlesHD/chulper/blob/99c35dffb5e725a5dba08da5a70e053f9fb4bde4/src/chulper/bimap.cljc
(defprotocol InversibleMap
(inverse [m]))
(defprotocol IReverseLookup
(reverse-lookup [coll k])
(reverse-lookup [coll k else]))
(defn- rdissoc [d r v]
(defn clipboard []
(.getSystemClipboard (java.awt.Toolkit/getDefaultToolkit)))
(defn clipboard-> []
(try
(.getTransferData (.getContents (clipboard) nil) (java.awt.datatransfer.DataFlavor/stringFlavor))
(catch java.lang.NullPointerException e nil)))
(defn ->clipboard [x]
(let [text (cond-> x (not (string? x)) pr-str)
A Flow
get tweets
got tweets -> send email
error -> get tweets
send email
success -> noop
hello
success -> noop
other
@den1k
den1k / scheduler.cljc
Created June 11, 2018 20:26
re-frame scheduler
(ns vimsical.frontend.util.scheduler
"Simple dispatch scheduler for re-frame."
(:require
[clojure.spec.alpha :as s]
[clojure.data.avl :as avl]
[re-frame.core :as re-frame])
(:refer-clojure :exclude [time]))
;;
;; * Protocol
@den1k
den1k / vega-lite.cljs
Last active May 8, 2018 14:54
reagent vega lite example
(ns vega-lite.views.viz
(:require
[reagent.core :as reagent]
["vega" :refer (parse View)]
["vega-lite" :refer (compile)]
[goog.object :as gobj]))
(defn set-data-url [spec url]
(doto spec
(gobj/set "data" (clj->js {:url url}))))