Skip to content

Instantly share code, notes, and snippets.

View martintrojer's full-sized avatar
🕺
My hovercraft is full of eels

Martin Trojer martintrojer

🕺
My hovercraft is full of eels
View GitHub Profile
@martintrojer
martintrojer / kebab.clj
Last active August 29, 2015 14:07
kebab-case keywords in nested data-structures
(ns kebab
(:require [camel-snake-kebab :as kebab]
[schema.coerce :as c]
[schema.core :as s]))
(def Data (s/either s/Keyword
{(s/recursive #'Data) (s/recursive #'Data)}
[(s/recursive #'Data)]
#{(s/recursive #'Data)}
s/Any))
@martintrojer
martintrojer / init.el
Last active January 9, 2021 16:12
init.el clojure bits
;; Clojure
(require 'clojure-mode)
(setq auto-mode-alist (cons '("\\.cljs$" . clojure-mode) auto-mode-alist))
(setq inferior-lisp-program "lein repl")
;; clj-refactor
(require 'clj-refactor)
(add-hook 'clojure-mode-hook (lambda ()
(clj-refactor-mode 1)
(cljr-add-keybindings-with-prefix "C-c C-o")))
@martintrojer
martintrojer / blocking.clj
Last active September 4, 2018 13:36
core.async thoughts
;; ------------------------
(defn- log-time [{:keys [ns name line]} f & args]
(let [start (System/nanoTime)
res (apply f args)
elapsed (quot (- (System/nanoTime) start) 1000)]
(log/debug (format "%s/%s:%s %dus" ns name line elapsed))
res))
(defn enable-timing [var]
@martintrojer
martintrojer / all-vars.clj
Last active August 29, 2015 13:57
all vars
(defn- log-time [{:keys [ns name line]} f & args]
(let [start (System/nanoTime)
res (apply f args)
elapsed (quot (- (System/nanoTime) start) 1000)]
(log/debug (format "%s/%s:%s %dus" ns name line elapsed))
res))
(defn enable-timing [var]
(log/debug "enabling timings" var)
(add-hook var (partial log-time (meta var))))
@martintrojer
martintrojer / clear-buffers.el
Last active August 29, 2015 13:57
clear buffers
(defun current-nrepl-server-buffer ()
(let ((nrepl-server-buf (replace-regexp-in-string "connection" "server" (nrepl-current-connection-buffer))))
(when nrepl-server-buf
(get-buffer nrepl-server-buf))))
(defun clear-buffers ()
(interactive)
(cider-find-and-clear-nrepl-buffer)
@martintrojer
martintrojer / connect.sh
Created February 12, 2014 15:58
remote jmx
$ ssh -C -L 9010:localhost:9010 user@host
(defn fib-seq [b1 b2]
(lazy-seq
(cons b2 (fib-seq b2 (+ b1 b2)))))
(def fibs (fib-seq 0 1))
@martintrojer
martintrojer / random-char-seq.clj
Created January 24, 2014 14:17
random-char-seq
(defn random-char-seq []
(let [digits (range 48 58)
lower-case (range 65 91)
upper-case(range 97 123)]
(repeatedly ƒ(rand-nth (map char (concat digits lower-case upper-case))))))
(apply str (take 60 (random-char-seq)))
=> "m9MSE2YVIZn8kjY6omvct7iQvOf1YMBILIOxsMcXguvN0uipqtvLcPvJXsTl"
@martintrojer
martintrojer / sin.cljs
Last active December 30, 2015 00:59
sinewaves
(defn sin-vals [offset]
(map #(Math/sin %) (iterate (partial + 0.1) offset)))
(let [events (chan)]
;; produce seqs of sine values
(go-loop [n 0]
(<! (timeout 200))
(>! events (sin-vals n))
(recur (inc n)))
@martintrojer
martintrojer / api-tester.clj
Last active December 23, 2015 15:39
simulant blog post
(def url "http://localhost:3000/data")
(defn post-some-data [test]
(let [data (zipmap (clojure.data.generators/vec clojure.data.generators/scalar)
(clojure.data.generators/vec clojure.data.generators/scalar))]
[(clj-http.client/put url {:body (pr-str data) :content-type :edn :throw-entire-message? true})
data]))
(defn get-data [id]
(update-in