Skip to content

Instantly share code, notes, and snippets.

View jeroenvandijk's full-sized avatar

Jeroen van Dijk jeroenvandijk

View GitHub Profile
@jeroenvandijk
jeroenvandijk / sci_google_cloud.js
Created February 22, 2020 17:30 — forked from borkdude/sci_google_cloud.js
Google cloud function running sci
const { evalString } = require("@borkdude/sci");
let printlnArgs = null;
function println(...args) {
printlnArgs = args.map(arg => arg.toString()).join(" ");
}
exports.evalClojureExpr = (req, res) => {
const { text } = req.body;
try {
const result = evalString(text, {namespaces: {"clojure.core": {println: println}}});
let value = [];
@jeroenvandijk
jeroenvandijk / heredoc.clj
Created February 12, 2020 08:47 — forked from cgrand/heredoc.clj
An ugly hacky heredoc for Clojure
(defn heredoc []
(let [delim (.readLine *in*)]
(->> (repeatedly #(.readLine *in*))
(take-while #(not= delim %))
(interpose \newline)
(apply str))))
; The following lines are read (by the reader) as:
; "Look )(\"\\T\na here doc!\n"
#=(heredoc)"""
@jeroenvandijk
jeroenvandijk / clojure_watch_refs.md
Last active May 15, 2019 08:45
Weird watch behaviour

I am observing this weird behaviour of watching a clojure ref. It seems to behave wrong/delayed when not wrapped in a let block:

(let []
  (def ^{:flag 1} v 1))

(def ^{:flag 2} v 2)

(add-watch #'v ::listener (fn [_key _ref old-value new-value]
                            (println "old " old-value ", new" new-value "new-meta " _ref (select-keys (meta _ref) [:flag]))))
@jeroenvandijk
jeroenvandijk / clojure_js.clj
Created April 17, 2019 12:16
(GraalVM) clojure -> js
(ns clojure_js
(:gen-class)
(:import [javax.script
ScriptEngineManager
ScriptException
SimpleBindings]))
;; GraalVM doesn't like reflections
(set! *warn-on-reflection* true)
@jeroenvandijk
jeroenvandijk / git.zsh.clj
Last active August 29, 2019 17:16
bash to closh porting examples (https://github.com/dundalek/closh)
(defcmd git [& [dispatch :as args]]
(if (= dispatch "browse")
(let [{:keys [code stderr]
remote-url :stdout} (sh-value "git" "remote" "get-url" "origin")]
(if (zero? code)
(do (println "Opening" remote-url)
(sh "open" (clojure.string/trim remote-url)))
(println stderr)))
(eval `(sh "git" ~@args))))
@jeroenvandijk
jeroenvandijk / .closhrc.cljc
Created April 8, 2019 14:03
First experiment with closhrc
(defcmd git [& [dispatch :as args]]
(if (= dispatch "browse")
(let [{:keys [code stderr]
remote-url :stdout} (sh-value "git" "remote" "get-url" "origin")]
(if (zero? code)
(do (println "Opening" remote-url)
(sh "open" (clojure.string/trim remote-url)))
(println stderr)))
(eval `(sh "git" ~@args))))
@jeroenvandijk
jeroenvandijk / README.md
Last active January 17, 2019 11:14
boot-clj + rebl
@jeroenvandijk
jeroenvandijk / closhrc.clj
Created October 16, 2018 09:01
Example ~/.closhrc file
;; See https://github.com/dundalek/closh/
(defn eval-string [s]
(eval (clojure.edn/read-string
(str "(do" s ")"))))
(defn closhrc []
(slurp (str (getenv "HOME") "/.closhrc")))
(defn eclosh []
@jeroenvandijk
jeroenvandijk / repl_compile.clj
Last active October 4, 2018 12:48
Repl compiling Clojure
(defn compile-inline [ns-name code]
(let [tmp-dir *compile-path*
sanitized-ns-name (.replace (str ns-name) "-" "_")
clj-file (clojure.java.io/file (str tmp-dir "/" (clojure.string/join "/" (clojure.string/split sanitized-ns-name #"\.")) ".clj"))]
(clojure.java.io/make-parents clj-file)
(with-open [file (clojure.java.io/writer clj-file)]
(binding [*out* file]
@jeroenvandijk
jeroenvandijk / eugene_and_jeroen.clj
Last active May 16, 2018 19:32 — forked from skuro/README.md
Dutch Clojure Meetup #102
(ns clojure-dojo.core)
(import '[javax.imageio ImageIO]
'[java.awt.image BufferedImage])
(def img (let [f "resources/image.png"]
(ImageIO/read (clojure.java.io/file f))))