Skip to content

Instantly share code, notes, and snippets.

Martin Klepsch martinklepsch

Block or report user

Report or block martinklepsch

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
martinklepsch / boot_sentry.clj
Created May 15, 2019
Boot tasks and helper functions to create Sentry releases and attach source maps to them
View boot_sentry.clj
(ns dev.boot-sentry
(:require [boot.util :as util]
[boot.core :as boot]
[ :as json]
[org.httpkit.client :as http]))
(def sentry-key "abc")
(def org "my-org")
(def project "frontend")
(def test-release "test-release-delete-me")
martinklepsch /
Last active Nov 12, 2018
Notes about fixing analysis issues with ClojureScript 1.10.439

How to analyze-file with foreign-lib dependencies?

  • I'm trying to figure out how to analyze a file that depends on react (via CLJSJS)
  • Previously would analyze with *analyze-deps* set to false
  • With 1.10.439 this no longer works. (Dynamic vars can't be resolved, see old description below)
  • With *analyze-deps* set to true I need to properly supply the foreign lib information but I can't figure out how.


When calling cljs.analyzer.api/analyze-file with the state-as-first-arg arity it calls cljs.env/with-compiler-env which shadowed my own binding described in Current Approach section. I was unaware that analyzer.api/empty-state is actually just a compiler env as well so creating the right compiler env and passing it to analyze-file solved all issues:

SQLite version 3.24.0 2018-06-04 14:10:15
Enter ".help" for usage hints.
sqlite> .schema
  date        TEXT,
View pathom-cljdoc.clj
(ns cljdoc.pathom3
(:require [com.wsscode.pathom.core :as p]
[com.wsscode.pathom.connect :as pc]
[clojure.core.async :as async]
[cljdoc.util.repositories :as repos]
[cljdoc.util.pom :as pom]
[cljdoc.config :as config]
[ :as cljdoc-sqlite]))
View pathom3.clj
(ns cljdoc.pathom3
(:require [com.wsscode.pathom.core :as p]
[com.wsscode.pathom.connect :as pc]
[clojure.core.async :as async]
[cljdoc.util.repositories :as repos]
[cljdoc.util.pom :as pom]
[cljdoc.config :as config]
[ :as cljdoc-sqlite]))
martinklepsch /
Last active Sep 6, 2018
My cljdoc August Update for ClojuristsTogether

I switched the storage layer. SQLite is now used instead of lib-grimoire. More details in the respective architecture decision record: ADR-0013

This was a lot of work but it sets the project up for more interesting extensions besides API documentation and articles (think specs & examples).

Also I looked more into integrating specs but without changes to spec it is impossible to determine if a spec originates from the artefact that is being analysed or from one of it's dependencies. To fix this specs will need to support metadata (CLJ-2194) but the timeline for this is unclear.

In the light of this I'm considering focusing on examples first. More details to come.

Some more minor things that happened:




2018-08-07 15:27,

  • Explored various metrics solutions to measure performance impact of new storage backend
martinklepsch / timed.clj
Created Aug 20, 2017
Variation on Clojure's time macro but also printing the expression that is being timed
View timed.clj
(defmacro timed [expr]
`(let [start# (. System (nanoTime))
ret# ~expr]
(prn (str ~(str expr) " elapsed time: " (/ (double (- (. System (nanoTime)) start#)) 1000000.0) " msecs"))
martinklepsch / dayone-ohlife-jrnl.boot
Created May 9, 2017
Parse DayOne and OhLife journal exports and save them to files that can be piped to jrnl.
View dayone-ohlife-jrnl.boot
;; Usage: execute each statement in a boot ( REPL, adjust as needed
(set-env! :dependencies '[[org.clojure/data.xml "0.2.0-alpha2"]
[clj-time "0.13.0"]])
(require '[ :as io]
'[ :as xml]
'[clojure.string :as string]
'[clj-time.format :as f])
You can’t perform that action at this time.