read section 17.1

read section 17.1

error: pathspec 'src/joy/ch17.clj' did not match any file(s) known to git

--- src/joy/ch17.clj
+++ src/joy/ch17.clj
@@ -0,0 +1,114 @@
+(ns joy.ch17
+  (:require [clojure.set :as ra])
+  (:use [clojure.string :as str :only []]))
+
+(def artists
+  #{{:artist "Burial" :genre-id 1}
+    {:artist "Magma" :genre-id 2}
+    {:artist "Can" :genre-id 3}
+    {:artist "Faust" :genre-id 3}
+    {:artist "Ikonika" :genre-id 1}
+    {:artist "Grouper"}})
+
+(def genres
+  #{{:genre-id 1 :genre-name "Dubstep"}
+    {:genre-id 2 :genre-name "Zehul"}
+    {:genre-id 3 :genre-name "Prog"}
+    {:genre-id 4 :genre-name "Drone"}})
+
+(def ALL identity)
+
+(ra/select ALL genres)
+
+(ra/select (fn [m] (#{1 3} (:genre-id m))) genres)
+
+(defn ids [& ids]
+  (fn [m] ((set ids) (:genre-id m))))
+
+(ra/select (ids 1 3) genres)
+
+(take 2 (ra/select ALL (ra/join artists genres)))
+
+#_(defn fantasy-query [max]
+  (SELECT [a b c]
+          (FROM X
+                (LEFT-JOIN :ON (= X.a Y.b)))
+          (WHERE (< a 5) AND (< b max))))
+
+(defn shuffle-expr [expr]
+  (if (coll? expr)
+    (if (= (first expr) `unquote)
+      "?"
+      (let [[op & args] expr]
+        (str "("
+             (str/join (str " " op " ")
+                       (map shuffle-expr args)) ")")))
+    expr))
+
+(shuffle-expr 42)
+
+(shuffle-expr `(unquote max))
+
+(read-string "~max")
+
+(shuffle-expr '(= X.a Y.b))
+
+(shuffle-expr '(AND (< a 5) (< b ~max)))
+
+(defn process-where-clause [processor expr]
+  (str " WHERE " (processor expr)))
+
+(process-where-clause shuffle-expr '(AND (< a 5) (< b ?)))
+
+(defn process-left-join-clause [processor table _ expr]
+  (str " LEFT JOIN " table
+       " ON " (processor expr)))
+
+(let [LEFT-JOIN (partial process-left-join-clause shuffle-expr)]
+  (LEFT-JOIN 'Y :ON '(= X.a Y.b)))
+
+(defn process-from-clause [processor table & joins]
+  (apply str " FROM " table
+         (map processor joins)))
+
+(process-from-clause shuffle-expr 'X
+                     (process-left-join-clause shuffle-expr 'Y
+                                               :ON '(= X.a Y.b)))
+
+(defn process-select-clause [processor fields & clauses]
+  (apply str "SELECT " (str/join ", " fields)
+         (map processor clauses)))
+
+(process-select-clause shuffle-expr
+                       '[a b c]
+                       (process-from-clause shuffle-expr 'X
+                                            (process-left-join-clause shuffle-expr 'Y
+                                                                      :on '(= X.a Y.b)))
+                       (process-where-clause shuffle-expr '(AND (< a 5) (< b ~max))))
+
+(declare apply-syntax)
+
+(def ^:dynamic *clause-map*
+  {'SELECT (partial process-select-clause apply-syntax)
+   'FROM (partial process-from-clause apply-syntax)
+   'LEFT-JOIN (partial process-left-join-clause shuffle-expr)
+   'WHERE (partial process-where-clause shuffle-expr)})
+
+(defn apply-syntax [[op & args]]
+  (apply (get *clause-map* op) args))
+
+(defmacro SELECT [& args]
+  {:query (apply-syntax
+           (cons 'SELECT args))
+   :bindings (vec (for [n (tree-seq coll? seq args)
+                        :when (and (coll? n)
+                                   (= (first n) `unquote))]
+                    (second n)))})
+
+(defn example-query [max]
+  (SELECT [a b c]
+          (FROM X
+                (LEFT-JOIN Y :ON (= X.a Y.b)))
+          (WHERE (AND (< a 5) (< b ~max)))))
+
+(example-query 9)


use :base-uri environment var

use :base-uri environment var

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/vincentstorme/clojureme.git/'


indentation.

indentation.

--- src/metabase/models/revision.clj
+++ src/metabase/models/revision.clj
@@ -68,10 +68,10 @@
                           (->> (describe-diff entity (:object rev1) (:object rev2))
                                (str reverted))))]
     (loop [acc [], [r1 r2 & more] revisions]
-    (if-not r2
-      (conj acc (assoc r1 :description "First revision."))
-      (recur (conj acc (assoc r1 :description (revision-desc r2 r1)))
-             (conj more r2))))))
+      (if-not r2
+        (conj acc (assoc r1 :description "First revision."))
+        (recur (conj acc (assoc r1 :description (revision-desc r2 r1)))
+               (conj more r2))))))

 (defn- add-details
   "Hydrate `user` and add `:description` to a sequence of REVISIONS."


Link to atom.xml feed instead of Feedburner

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/magoyette/marcandregoyette.com.git/'


DELETE /api/dash/:id/cards

DELETE /api/dash/:id/cards

--- src/metabase/api/dash.clj
+++ src/metabase/api/dash.clj
@@ -43,6 +43,11 @@
   (check (exists? Card :id cardId) 400 (format "Card %d doesn't exist." cardId))
   (ins DashboardCard :card_id cardId :dashboard_id id))

+(defendpoint DELETE "/:id/cards" [id dashcardId]
+  (let-404 [{:keys [can_write]} (sel :one Dashboard :id id)]
+    (check-403 @can_write))
+  (del DashboardCard :id dashcardId :dashboard_id id))
+
 (defendpoint POST "/:id/reposition" [id :as {{:keys [cards]} :body}]
   (let-404 [{:keys [can_write]} (sel :one Dashboard :id id)]
     (check-403 @can_write))


shell dsl

shell dsl

error: pathspec 'src/sandbox/dsl/shell.clj' did not match any file(s) known to git

--- src/sandbox/dsl/shell.clj
+++ src/sandbox/dsl/shell.clj
@@ -0,0 +1,27 @@
+(ns sandbox.dsl.shell
+  (:require [clojure.java.shell :as shell]
+            [clojure.string :as str]))
+
+(defn- print-output [output]
+  (println (str "Exit Code: " (:exit output)))
+  (if-not (str/blank? (:out output)) (println (:out output)))
+  (if-not (str/blank? (:err output)) (println (:err output)))
+  output)
+
+(defn command [command-str]
+  (let [command-parts (str/split command-str #"\s+")]
+    (fn
+      ([] (print-output (apply shell/sh command-parts)))
+      ([{old-out :out}]
+       (print-output (apply shell/sh (concat command-parts [:in old-out])))))))
+
+(defn pipe [commands]
+  (apply comp (reverse commands)))
+
+
+(def pwd (command "pwd"))
+(def ls (command "ls"))
+(def grep-readme-from-ls
+  (pipe
+   [(command "ls")
+    (command "grep README")]))


schema rules defined twice

schema rules defined twice

--- sidecar/src/figwheel_sidecar/type_check.clj
+++ sidecar/src/figwheel_sidecar/type_check.clj
@@ -8,7 +8,7 @@
    [clojure.core.match :refer [match]]
    [clojure.test :as t :refer [deftest is run-tests]]))

-(def ^:dynamic *schema-rules* [])
+(def ^:dynamic *schema-rules* nil)

 (defmacro with-schema [rules & body]
   `(binding [*schema-rules* ~rules] ~@body))
@@ -98,8 +98,6 @@
      (group-by (fn [x] [:parent (second x) (first (nth x 2))]) (filter #(#{:?- :-} (second %)) spc))
      (group-by (juxt second first) spc))))

-(def ^:dynamic *schema-rules* {})
-
 (defn fetch-pred [pred-type parent-type]
   (when-let [res (first (map last (*schema-rules* [pred-type parent-type])))]
     [pred-type res parent-type]))
@@ -306,6 +304,8 @@
     [(misspelled-key parent-type bad-key value)
      (misplaced-key  root-type parent-type bad-key value)
      (misspelled-misplaced-key root-type parent-type bad-key value)])))
+
+

 #_(with-schema (index-spec (spec 'Root {:figwheel string?
                                       :forest integer?


Update to the latest handle-errors

Update to the latest handle-errors

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/voting-method-works.git/'


added test file for ed=>curve conversion

error: pathspec 'test/naclj/key_ed25519_to_curve25519_test.clj' did not match any file(s) known to git

--- test/naclj/key_ed25519_to_curve25519_test.clj
+++ test/naclj/key_ed25519_to_curve25519_test.clj
@@ -0,0 +1,25 @@
+(ns naclj.key-ed25519-to-curve25519-test
+  (:require
+    [clojure.test :refer :all]
+	  [naclj.encode-util :refer :all]
+ 	  [naclj.fixture :as f]
+    [naclj.hash-sha256 :as hb]
+    [naclj.hash-protocol :as h]
+    [naclj.key-protocol :as kp]
+    [naclj.key-curve25519]
+    [naclj.key-ed25519-to-curve25519]
+  ))
+
+;;setup
+
+;;; tests
+;
+
+(deftest key-ed25519-to-curve25519-test-1
+  (testing "conversion and whether result is key-pair or not"
+    (let [ed-kp-a (kp/make-key-pair :sodium :ed25519)
+          c-pk-a (kp/curve25519-public-key ed-kp-a)
+          c-sk-a (kp/curve25519-private-key ed-kp-a)]
+      (is (= (type c-pk-a) naclj.key_curve25519.TCurve25519PublicKey))
+      (is (= (type c-sk-a) naclj.key_curve25519.TCurve25519PrivateKey))
+      (is (kp/pair? c-pk-a c-sk-a)))))


Refactor sending tests to be simpler and less flaky

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/scheduled-message-works.git/'


Add snappy compression library abstraction.

fatal: unable to access 'https://github.com/uxbox/uxbox-backend.git/': The requested URL returned error: 403


Upgrade lein-finagle-clojure to use scrooge-generator 3.17.0

the latest version, previously was using 3.16.3
https://github.com/twitter/scrooge/blob/870e03227d1ab52c37f323118561ad4b79485a0d/CHANGES

fatal: unable to access 'https://github.com/finagle/finagle-clojure.git/': The requested URL returned error: 403


Add golomb-autoimprove problem, with improvements in error function

error: pathspec 'src/clojush/problems/integer_regression/golomb_autoimprove.clj' did not match any file(s) known to git

--- src/clojush/problems/integer_regression/golomb_autoimprove.clj
+++ src/clojush/problems/integer_regression/golomb_autoimprove.clj
@@ -0,0 +1,93 @@
+;; golomb_autoimprove.clj
+;; a problem for clojush, a Push/PushGP system written in Clojure
+;; Lee Spector, lspector@hampshire.edu, 2017
+
+;; The problem is to produce, from integer n >= 2, the length of
+;; the shortest (optimal) Golomb ruler with n marks.
+;; See http://oeis.org/A003022
+
+(ns clojush.problems.integer-regression.golomb-autoimprove
+  (:use [clojush.pushgp.pushgp]
+        [clojush pushstate interpreter globals]
+        [clojure.math.numeric-tower]))
+
+
+(def known ;; http://oeis.org/A003022
+  (map vector
+       (iterate inc 2)
+       [1,3,6,11,17,25,34,44,55,72,85,106,127,151,177,
+        199,216,246,283,333,356,372,425,480,492,553]))
+
+(def num-train 18)
+
+(def training (take num-train known))
+
+(def testing (drop num-train known))
+
+(defn golomb-error
+  [ind cases]
+  (let [behaviors (vec (for [in (map first cases)]
+                         (->> (make-push-state)
+                              (push-item in :input)
+                              (run-push (:program ind))
+                              (top-item :integer))))
+        raw-errors (mapv (fn [behavior case]
+                           (if (number? behavior)
+                             (abs (- behavior (second case)))
+                             100000000))
+                         behaviors
+                         cases)
+        errors (if (empty? (rest (:history ind)))
+                 (mapv #(if (zero? %) 0 (inc %)) raw-errors)
+                 (vec (for [case-history (map cons raw-errors (apply map list (:history ind)))]
+                        (if (zero? (first case-history))
+                          0 ;; solved, improvement doesn't matter
+                          (let [improvements (mapv (fn [[newer-error older-error]]
+                                                     (let [imp (- older-error newer-error)]
+                                                       (if (> imp 0)
+                                                         1.0
+                                                         0.0)))
+                                                   (partition 2 1 case-history))
+                                weights (iterate (partial * 0.5) 0.5)
+                                sum (reduce + (mapv * improvements weights))]
+                            (if (<= sum 0)
+                              1.0E10
+                              (+ (first case-history) (- 1.0 sum))))))))]
+    (assoc ind
+      :behaviors behaviors
+      :errors errors)))
+
+(defn golomb-report
+  "Custom generational report."
+  [best population generation error-function report-simplifications]
+  (let [best-with-test (golomb-error best testing)
+        best-test-errors (:errors best-with-test)
+        best-total-test-error (apply +' best-test-errors)]
+    (println ";;******************************")
+    (printf ";; -*- Golomb report - generation %s\n" generation)(flush)
+    (println "Test total error for best:" best-total-test-error)
+    (println (format "Test mean error for best: %.5f"
+                     (double (/ best-total-test-error
+                                (count best-test-errors)))))
+    (println ";;******************************")
+    best))
+
+
+(def argmap
+  {:error-function (fn [ind] (golomb-error ind training))
+   :atom-generators (into [0 1 0.0 1.0 Math/PI Math/E 'in1]
+                          (registered-for-stacks
+                            [:integer :float :boolean :exec]))
+   :genetic-operator-probabilities {:alternation 0.5
+                                    :uniform-mutation 0.5}
+   :parent-selection :lexicase
+   :report-simplifications 0
+   :problem-specific-report golomb-report
+   :autoconstructive true
+   :autoconstructive-genome-instructions :all
+   :autoconstructive-diversification-test :gecco2016
+   :max-points 800
+   :max-genome-size-in-initial-program 100
+   :evalpush-limit 800
+   :max-generations 10000
+   :print-history true})


refactoring utils config

refactoring utils config

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/stupacki/api-chordbook.git/'


code cleanup

code cleanup

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/wilkerlucio/youtube-looper.git/'


Fix builder focus toggling

Fix builder focus toggling

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/bsmr-clojure/Nightcode.git/'


Remove superuser check for pulse test endpoint

Resolves #1637

--- src/metabase/api/pulse.clj
+++ src/metabase/api/pulse.clj
@@ -117,7 +117,6 @@
   {name     [Required NonEmptyString]
    cards    [Required ArrayOfMaps]
    channels [Required ArrayOfMaps]}
-  (check-superuser)
   (send-pulse body)
   {:status 200 :body {:ok true}})


Starts work on day one of Clojure

Starts work on day one of Clojure

Adds a simple method that checks the length of a string and returns a bool as to whether it is 'too big'.

error: pathspec 'Clojure/seven_lang/src/seven_lang/dayone.clj' did not match any file(s) known to git

--- Clojure/seven_lang/src/seven_lang/dayone.clj
+++ Clojure/seven_lang/src/seven_lang/dayone.clj
@@ -0,0 +1,8 @@
+(ns seven-lang.dayone)
+
+(defn big
+  "returns true if a string is big"
+  [st]
+  (if (> (count st) 4)
+    true false)
+  )


update project.clj

update project.clj

fatal: unable to access 'https://github.com/jmicahc/todomvc.git/': The requested URL returned error: 403


add pagetest.html.clj for testing

add pagetest.html.clj for testing

error: pathspec 'test/template/pagetest.html.clj' did not match any file(s) known to git

--- test/template/pagetest.html.clj
+++ test/template/pagetest.html.clj
@@ -0,0 +1,8 @@
+; @layout default
+; @title  index
+
+[:h1 (str (:title site) (:page site))]
+(map :title (:posts site))
+
+(if (:prev-page site) (link "prev" (:prev-page site)))
+(if (:next-page site) (link "next" (:next-page site)))


Credit where credit is due. I also believe this fulfills requirements of the MIT license for the code I'm borrowing from Steve Losh. Hopefully.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Yoshiyuka/cthulhu.git/'


Remove extra line break

Remove extra line break

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Yleisradio/rabid.git/'


Adding array of custom questions

Adding array of custom questions

fatal: unable to access 'https://github.com/couragelabs/coachbot.git/': The requested URL returned error: 403


:construction_worker: check in folder above root too

fatal: unable to access 'https://github.com/HealthUnlocked/lein-docker-compose.git/': The requested URL returned error: 403


forgot the sliding-send file

forgot the sliding-send file

error: pathspec 'src/pc/http/sente/sliding_send.clj' did not match any file(s) known to git

--- src/pc/http/sente/sliding_send.clj
+++ src/pc/http/sente/sliding_send.clj
@@ -0,0 +1,81 @@
+(ns pc.http.sente.sliding-send
+  (:require [clojure.core.async :as async]
+            [pc.util.seq :refer (dissoc-in)]
+            [slingshot.slingshot :refer (try+ throw+)]))
+
+(defonce sliding-send-state (atom {:sending {:example-msg-type #{}}
+                                   :messages {:example-msg-type #{}}}))
+
+(defn pop-message [send-state-atom msg-type uid]
+  (loop [val @send-state-atom]
+    (if (compare-and-set! send-state-atom val (dissoc-in val [:messages msg-type uid]))
+      (get-in val [:messages msg-type uid])
+      (recur @send-state-atom))))
+
+(defn lock-send [send-state-atom msg-type uid]
+  (loop [val @send-state-atom]
+    (let [new-val (update-in val [:sending msg-type] (fnil conj #{}) uid)]
+      (if (compare-and-set! send-state-atom val new-val)
+        (and (contains? (get-in new-val [:sending msg-type]) uid)
+             (not (contains? (get-in val [:sending msg-type]) uid)))
+        (recur @send-state-atom)))))
+
+(defn release-send [send-state-atom msg-type uid]
+  (swap! send-state-atom update-in [:sending msg-type] disj uid))
+
+(defn pop-and-lock [send-state-atom msg-type uid]
+  (loop [val @send-state-atom]
+    (let [locked? (contains? (get-in val [:sending msg-type]) uid)
+          message (get-in val [:messages msg-type uid])
+          new-val (cond locked?
+                        val
+
+                        message
+                        (-> val
+                          (update-in [:sending msg-type] (fnil conj #{}) uid)
+                          (dissoc-in [:messages msg-type uid]))
+
+                        :else val)]
+      (if (compare-and-set! send-state-atom val new-val)
+        (when-not locked?
+          message)
+        (recur @send-state-atom)))))
+
+(defn pop-or-unlock [send-state-atom msg-type uid]
+  (loop [val @send-state-atom]
+    (let [message (get-in val [:message msg-type uid])
+          new-val (if message
+                    (dissoc-in val [:messages msg-type uid])
+                    (update-in val [:sending msg-type] disj uid))]
+      (if (compare-and-set! send-state-atom val new-val)
+        message
+        (recur @send-state-atom)))))
+
+(def sends (atom {:attempted-sends 0 :actual-sends 0}))
+
+(defn sliding-send
+  "Sends the latest message of type msg-type, waiting for the last sent
+   message to complete before sending the next one."
+  [sente-state uid [msg-type msg-body]]
+  (swap! sends update-in [:attempted-sends] inc)
+  (swap! sliding-send-state assoc-in [:messages msg-type uid] [msg-type msg-body])
+  (when-let [latest-message (pop-and-lock sliding-send-state msg-type uid)]
+    (try+
+     (let [send-ch (async/chan)]
+       (async/put! send-ch latest-message)
+       (async/go
+         (try+
+          (loop [message (async/<! send-ch)]
+            (when (seq message)
+              (swap! sends update-in [:actual-sends] inc)
+              ((:send-fn @sente-state) uid message {:on-complete (fn [throwable]
+                                                                   (if-let [latest-message (pop-or-unlock sliding-send-state msg-type uid)]
+                                                                     (async/put! send-ch latest-message)
+                                                                     (async/close! send-ch)))})
+              (recur (async/<! send-ch))))
+          (catch Object t
+            (release-send sliding-send-state msg-type uid)
+            (throw+)))))
+     (catch Object t
+       (release-send sliding-send-state msg-type uid)
+       (throw+)))))


Descructuring in function parameters instead of let statements

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/stlk/home-automation.git/'


Make the tests pass

Make the tests pass

error: pathspec 'src/caesium/crypto/scalarmult.clj' did not match any file(s) known to git

--- src/caesium/crypto/scalarmult.clj
+++ src/caesium/crypto/scalarmult.clj
@@ -0,0 +1,5 @@
+(ns caesium.crypto.scalarmult
+  "Scalar multiplication."
+  (:require [caesium.binding :refer [defconsts]]))
+
+(defconsts [bytes scalarbytes primitive])


make a terser use of group-by

make a terser use of group-by

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/starcity-properties/odin.git/'


Add utils namespace

Add utils namespace

error: pathspec 'src/cljs/caves_of_cljs/utils.cljs' did not match any file(s) known to git

--- src/cljs/caves_of_cljs/utils.cljs
+++ src/cljs/caves_of_cljs/utils.cljs
@@ -0,0 +1,33 @@
+(ns caves-of-cljs.utils
+  (:require [goog.dom :as dom]
+            [goog.events :as events]
+            [cljs.core.async :as async :refer [put! chan <!]]))
+
+(defn dissoc-in [data path]
+  (let [prefix (butlast path)
+        key (last path)]
+    (if prefix
+      (update-in data prefix dissoc key)
+      (dissoc data key))))
+
+(defn log-clj [o]
+  (.log js/console (clj->js o)))
+
+(defn domain [url]
+  (let [re (new js/RegExp "^https?\\:\\/\\/(www\\.)?([^\\/:?#]+)(?:[\\/:?#]|$)")
+        matches (.exec re url)]
+    (and matches (get matches 2))))
+
+(defn keys-in [m]
+  (if (map? m)
+    (mapcat (fn [[k v]]
+              (let [sub (keys-in v)]
+                (conj sub k)))
+            m)
+    []))
+
+(defn listen [el type]
+  (let [out (chan)]
+    (events/listen el type
+      (fn [e] (put! out e)))
+    out))


move callbacks into separate source file

error: pathspec 'src/client/aspire/callbacks.cljs' did not match any file(s) known to git

--- src/client/aspire/callbacks.cljs
+++ src/client/aspire/callbacks.cljs
@@ -0,0 +1,19 @@
+(ns aspire.callbacks
+  (:require [cljs.reader :as edn]
+            [dommy.core :as dommy]
+            [aspire.templates :as a-tpl])
+  (:use-macros
+   [dommy.macros :only [sel1]]))
+
+(defn err [ev]
+  (.log js/console "Error: " ev))
+
+(defn success [ev]
+  (let [response-text (.getResponseText (.-target ev))
+        {:keys [name version description cnt-completed cnt-remaining]} (:comp_tag (edn/read-string response-text))]
+    #_(.log js/console (js/goog.debug.expose ev))
+    #_(.log js/console :name name)
+    (dommy/replace-contents! (sel1 :#loading)
+                             (a-tpl/comp-tag name version description cnt-completed cnt-remaining)
+                             )))
+


router/http moved to http/route ns

router/http moved to http/route ns

error: pathspec 'src/clj/hellhound/http/route.clj' did not match any file(s) known to git

--- src/clj/hellhound/http/route.clj
+++ src/clj/hellhound/http/route.clj
@@ -0,0 +1,58 @@
+(ns hellhound.http.route
+  "HellHound's http router namespace."
+  (:require
+   [clojure.spec.alpha                      :as spec]
+   [io.pedestal.http.route                  :as route]
+   [hellhound.components.core               :as system]
+   [hellhound.core                          :as hellhound]))
+
+;; Specs ---------------------------------------------------
+(spec/def ::vector-of-routes (spec/coll-of vector?))
+(spec/def ::user-routes (spec/and set? ::vector-of-routes))
+
+;; Private Functions ---------------------------------------
+(defn- websocket
+  []
+  (system/get-component :websocket))
+
+
+;; Public Functions ----------------------------------------
+(defn not-found
+  "Default route for bidi. This means that a route that does not
+  exists in the router will cause a 404 error."
+  [request]
+  ;; TODO: We should provide a better view of routes here
+  {:status 404
+   :headers {"Content-Type" "text/html"}
+   :body ""})
+
+
+(defn ws-handshake
+  [context]
+  (let [ajax-ws-handshake (:ring-ajax-get-or-ws-handshake (websocket))]
+    (ajax-ws-handshake context)))
+
+(defn ajax-ws-post
+  [context]
+  (let [post-fn (:ring-ajax-post (websocket))]
+    (post-fn context)))
+
+
+(defn hellhound-routes
+  []
+  (let [config (hellhound/application-config)
+        host   (or (:host config) "localhost")
+        scheme (or (:scheme config) "http")]
+    #{
+      ;;{:host host :scheme scheme}
+      ["/hellhound" :get  [ws-handshake]  :route-name :hellhoud/ws-handshake]
+      ["/hellhound" :post [ajax-ws-post]  :route-name :hellhound/ws]}))
+
+
+(defn expand-routes
+  [routes]
+  (let [new-routes (clojure.set/union
+                    (hellhound-routes)
+                    (spec/conform ::user-routes routes))]
+    (route/expand-routes
+       new-routes)))


Update commented Papertrail search to include check-your-reg

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/scheduled-message-works.git/'


Rough draft of data import routines in comment block

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/MitchellJThomas/medir.git/'


Wire it all up

Wire it all up

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/physion/ovation-webapi.git/'


[EN] Add buffers to the outgoing channels.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/electorate-works.git/'


adding a basic step sequencer

adding a basic step sequencer

error: pathspec 'src/overtone/gui/sequencer.clj' did not match any file(s) known to git

--- src/overtone/gui/sequencer.clj
+++ src/overtone/gui/sequencer.clj
@@ -0,0 +1,64 @@
+(ns overtone.gui.sequencer
+  (:use [overtone.sc server]
+        [overtone.music time]
+        [seesaw core mig])
+  (:require [seesaw.bind :as bind]))
+
+(defn- step-player
+  [playing? metro beat steps instruments step-states]
+  (when @playing?
+    (let [index (mod beat steps)
+          next-beat (inc beat)]
+      (doseq [inst instruments]
+        (when @(nth (get step-states (:name inst)) index)
+          (at (metro beat) (inst))))
+    (apply-at (metro next-beat) #'step-player
+              [playing? metro next-beat steps instruments step-states]))))
+
+(defn- step-row
+  [ins steps states]
+  (let [lbl [(label (:name ins)) "gap 5px, gapright 10px"]
+        btns (repeatedly steps #(toggle :selected? false))
+        btns-constrained (map (fn [b] [b "width 25:25:25"]) btns)
+        btns-states (partition 2 (interleave btns states))]
+    (doseq [[btn state] btns-states]
+      (bind/bind btn state))
+    (apply vector lbl btns-constrained)))
+
+(defn step-sequencer
+  [metro steps & instruments]
+  (invoke-now
+    (let [play-btn (button :text "play")
+          control-pane (horizontal-panel :items [play-btn])
+          step-states (into {}
+                            (for [i instruments]
+                              [(:name i) (vec (repeatedly steps #(atom false)))]))
+          step-rows (mapcat #(step-row % steps (get step-states (:name %))) instruments)
+          seq-pane (mig-panel :constraints [(str "wrap " (inc steps)) "" ""]
+                          :items step-rows)
+          f (frame :title "Sequencer"
+                   :content (vertical-panel :items [control-pane seq-pane])
+                   :on-close :dispose)
+          playing? (atom false)]
+      (listen play-btn :action
+              (fn [e]
+                (if @playing?
+                  (do
+                    (reset! playing? false)
+                    (invoke-later (config! play-btn :text "play")))
+                  (do
+                    (reset! playing? true)
+                    (step-player playing? metro (metro) steps instruments step-states)
+                    (invoke-later (config! play-btn :text "stop"))))))
+      (with-meta {:frame (-> f pack! show!)
+                  :state step-states
+                  :playing? playing?}
+                 {:type :sequencer}))))
+
+(comment
+  (use 'overtone.live)
+  (use 'overtone.gui.sequencer)
+  (use 'overtone.inst.synth)
+  (def m (metronome 128))
+  (step-sequencer m 8 ks1 ping)
+)


update refactor-nrepl version compatible with cider

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/pervezfunctor/lean-dotfiles.git/'


Unit tests for qu.writer

Unit tests for qu.writer

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/qu-platform/qu-core.git/'


mytd -> my-ejector

mytd -> my-ejector

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/michaelsbradleyjr/transwarp.git/'


add a controller test code

add a controller test code

error: pathspec 'src/ca_recipe/tnywb/controller.clj' did not match any file(s) known to git

--- src/ca_recipe/tnywb/controller.clj
+++ src/ca_recipe/tnywb/controller.clj
@@ -0,0 +1,6 @@
+(ns ca-recipe.tnywb.controller
+  (:import (com.mblinn.oo.tinyweb HttpRequest HttpRequest$Builder)))
+(defn test-controller [http-request] {:name (.getBody http-request)})
+(def test-builder (HttpRequest$Builder/newBuilder))
+(def test-http-request (.. test-builder (body "Some text") (path "/say-hello") build)) (defn test-controller-with-map [http-request]
+                                                                                {:name (http-request :body)})


adds scaffolding for filter controls to admin services table


fix selected loop indication when it's renamed

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/wilkerlucio/youtube-looper.git/'


small display adj

small display adj

--- support/src/figwheel/client/heads_up.cljs
+++ support/src/figwheel/client/heads_up.cljs
@@ -15,8 +15,6 @@
        (doseq [k (keys attrs)] (.setAttribute e (name k) (get attrs k)))
        (doseq [ch children] (.appendChild e ch)) ;; children
        e))
-
-(defn ll [v] (.log js/console v) v)

 (defmulti heads-up-event-dispatch (fn [dataset] (.-figwheelEvent dataset)))
 (defmethod heads-up-event-dispatch :default [_]  {})
@@ -154,8 +152,8 @@

 (defn display-loaded-start []
   (display-heads-up {:backgroundColor "rgba(211,234,172,1.0)"
-                     :width "67px"
-                     :height "67px"
+                     :width "68px"
+                     :height "68px"
                      :paddingLeft "0px"
                      :paddingRight "0px"
                      :borderRadius "35px" } ""))
@@ -167,5 +165,3 @@
    (<! (clear))))

-
-


Day 5 part 2

Day 5 part 2

error: pathspec 'src/advent_2016/day_5/part_2.cljs' did not match any file(s) known to git

--- src/advent_2016/day_5/part_2.cljs
+++ src/advent_2016/day_5/part_2.cljs
@@ -0,0 +1,38 @@
+(ns advent-2016.day-5.part-2
+  (:require [advent-2016.day-5.md5 :refer [md5-hex]]
+            [clojure.string :as str]))
+
+(defn ndx-str
+  [s]
+  (subs s 5 6))
+
+(defn code-str
+  [s]
+  (subs s 6 7))
+
+(defn valid-ndx-str?
+  [s]
+  (#{"0" "1" "2" "3" "4" "5" "6" "7" "8"} s))
+
+(defn candidates
+  [s]
+  (sequence
+    (comp
+      (map #(md5-hex (str s %)))
+      (filter #(str/starts-with? % "00000"))
+      (filter #((comp valid-ndx-str? ndx-str) %)))
+    (range)))
+
+(defn solve
+  [s]
+  (loop [seen #{}
+         candidates (candidates s)
+         result ""]
+    (let [candidate (first candidates)
+          ndx (js/parseInt (ndx-str candidate))]
+      (if (seen ndx)
+        (recur seen (rest candidates) result)
+        (let [result (str result (code-str candidate))]
+          (if (== 8 (count result))
+            result
+            (recur (conj seen ndx) (rest candidates) result)))))))


Update deps

Update deps

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/voting-method-works.git/'


clean up project.clj

clean up project.clj

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/runoshun/syncat.git/'


Version bump

Version bump

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/terrancesnyder/engulf.git/'


more mem

more mem


Version 108

Version 108

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/tobias/clojars-web.git/'


Version 66-SNAPSHOT

Version 66-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clojars-web "65"
+(defproject clojars-web "66-SNAPSHOT"
   :min-lein-version "2.0.0"
   :dependencies [[org.clojure/clojure "1.8.0"]
                  [org.clojure/tools.cli "0.2.1"]


Update & clean up deps

Update & clean up deps

Added some exclusions to make datomic-pro 0.9.5385 happy.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/voter-registration-works.git/'


bump version to 2.8.19

bump version to 2.8.19

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/B2W-BIT/restQL-server.git/'


Version 102-SNAPSHOT

Version 102-SNAPSHOT


Aleph upgrade

Aleph upgrade


Version 21.0.0-SNAPSHOT

Version 21.0.0-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clojars-web "20.0.0"
+(defproject clojars-web "21.0.0-SNAPSHOT"
   :min-lein-version "2.0.0"
   :dependencies [[org.clojure/clojure "1.7.0"]
                  [org.clojure/tools.cli "0.2.1"]


Back to the proper version.

Back to the proper version.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/decomputed/decomputed.com.git/'


underscores vs dashes in dir names

underscores vs dashes in dir names

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/michaelsbradleyjr/ply.git/'


Add DB benchmark function

Add DB benchmark function

error: pathspec 'src/photon/stats/db_comparison.clj' did not match any file(s) known to git

--- src/photon/stats/db_comparison.clj
+++ src/photon/stats/db_comparison.clj
@@ -0,0 +1,92 @@
+(ns photon.stats.db-comparison
+  (:require [muon-clojure.client :as cl]
+            [photon.cassandra :as cassandra]
+            [photon.config :as conf]
+            [photon.db :as db]
+            [clojure.core.async :refer [<!!]]
+            [photon.filedb :as filedb]
+            [photon.muon :as muon]))
+
+(def dbs {"file" (filedb/->DBFile "/tmp/benchmark.txt")
+          "cassandra" (cassandra/->DBCassandra
+                       "127.0.0.1" "photon"
+                       (first (clojure.string/split
+                               (.toString (java.util.UUID/randomUUID))
+                               #"-")))})
+(def amounts [1 5 10 50 100 500 1000 5000 10000])
+
+(defn post-one-event
+  ([m url]
+   (cl/with-muon m
+     (cl/post-event (str "muon://" url "/events")
+                    {"service-id","muon://chatter",
+                     "local-id", (java.util.UUID/randomUUID),
+                     "payload",{"id","dbd6eecf-8f5c-42aa-8aa8-1b2172d53c71",
+                                "text","substitutable",
+                                "textanalysis",
+                                {"aggregateSentiment",40,
+                                 "keyphrases",[{"phrase",
+                                                "substitutable",
+                                                "count",1}]}},
+                     "stream-name","chatter",
+                     "server-timestamp",1420660080000})
+     #_(cl/query-event "muon://photon/projection"
+                       {:projection-name "count"})))
+  ([m]
+   (post-one-event m "photon-integration-test")))
+
+(defn new-server [uuid d]
+  (let [temp-file (.getAbsolutePath
+                   (java.io.File/createTempFile "muon" ".json"))
+        ms (muon/start-server! (str "photon-integration-test-" uuid) d)]
+    (db/delete-all! d)
+    ms))
+
+(defmacro bench
+  "Times the execution of forms, discarding their output and returning
+  a long in nanoseconds."
+  ([& forms]
+   `(let [start# (System/currentTimeMillis)]
+      ~@forms
+      (- (System/currentTimeMillis) start#))))
+
+(defn benchmark []
+  (let [client (cl/muon-client (:amqp.url conf/config) "client-test"
+                               "client" "test")
+        servers (zipmap
+                 (keys dbs) (map #(new-server (key %) (val %)) dbs))
+        fn-write (fn [k-db]
+                   (post-one-event
+                    client (str "photon-integration-test-" k-db))
+                   nil)
+        fn-read (fn [k-db]
+                  (let [ch (cl/with-muon client
+                             (cl/stream-subscription
+                              (str "muon://photon-integration-test-"
+                                   k-db "/stream")
+                              :stream-name "__all__"
+                              :stream-type "cold"
+                              :from 0))]
+                    (loop [elem (<!! ch)]
+                      (if (not (nil? elem))
+                        (recur (<!! ch))))))
+        ts (mapcat (fn [amount]
+                     (map (fn [db-server]
+                            (let [k-db (key db-server)
+                                  server (val db-server)
+                                  tw (bench
+                                      (dorun (take amount
+                                                   (repeatedly
+                                                    #(fn-write k-db)))))]
+                              (Thread/sleep 5000)
+                              (let [tr (bench (fn-read k-db))]
+                                {:db k-db
+                                 :amount amount
+                                 :t-write tw
+                                 :t-read tr})))
+                          servers))
+                   amounts)]
+    (spit "/tmp/bench-results.txt" (pr-str ts) :append false)
+    ts))
+
+


New test module: importer-test

New test module: importer-test

error: pathspec 'test/clj_mrazik/importer_test.clj' did not match any file(s) known to git

--- test/clj_mrazik/importer_test.clj
+++ test/clj_mrazik/importer_test.clj
@@ -0,0 +1,60 @@
+;
+;  (C) Copyright 2016  Pavel Tisnovsky
+;
+;  All rights reserved. This program and the accompanying materials
+;  are made available under the terms of the Eclipse Public License v1.0
+;  which accompanies this distribution, and is available at
+;  http://www.eclipse.org/legal/epl-v10.html
+;
+;  Contributors:
+;      Pavel Tisnovsky
+;
+
+(ns clj-mrazik.importer-test
+  (:require [clojure.test :refer :all]
+            [clj-mrazik.importer :refer :all]))
+
+;
+; Common functions used by tests.
+;
+
+(defn callable?
+    "Test if given function-name is bound to the real function."
+    [function-name]
+    (clojure.test/function? function-name))
+
+(deftest test-read-csv-existence
+    "Check that the clj-mrazik.importer/read-csv definition exists."
+    (testing "if the clj-mrazik.importer/read-csv definition exists."
+        (is (callable? 'clj-mrazik.importer/read-csv))))
+
+
+(deftest test-parse-boolean-existence
+    "Check that the clj-mrazik.importer/parse-boolean definition exists."
+    (testing "if the clj-mrazik.importer/parse-boolean definition exists."
+        (is (callable? 'clj-mrazik.importer/parse-boolean))))
+
+
+(deftest test-parse-use-it-existence
+    "Check that the clj-mrazik.importer/parse-use-it definition exists."
+    (testing "if the clj-mrazik.importer/parse-use-it definition exists."
+        (is (callable? 'clj-mrazik.importer/parse-use-it))))
+
+
+(deftest test-get-word-class-existence
+    "Check that the clj-mrazik.importer/get-word-class definition exists."
+    (testing "if the clj-mrazik.importer/get-word-class definition exists."
+        (is (callable? 'clj-mrazik.importer/get-word-class))))
+
+
+(deftest test-get-source-existence
+    "Check that the clj-mrazik.importer/get-source definition exists."
+    (testing "if the clj-mrazik.importer/get-source definition exists."
+        (is (callable? 'clj-mrazik.importer/get-source))))
+
+
+(deftest test-import-data-existence
+    "Check that the clj-mrazik.importer/import-data definition exists."
+    (testing "if the clj-mrazik.importer/import-data definition exists."
+        (is (callable? 'clj-mrazik.importer/import-data))))
+


added remove! to local storage

added remove! to local storage


cleaned up code for wait-for-git, using generic wait-for function

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/tobiasbayer/lambdacd.git/'


Issue #11 Support the first STM started with TOKEN_ID

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/qc1iu/tiger.git/'


microbench experiments w/ new :mutex cache


moved assert to the top

moved assert to the top

--- plugin/src/leiningen/figwheel.clj
+++ plugin/src/leiningen/figwheel.clj
@@ -5,6 +5,7 @@
    [leiningen.core.eval :as leval]
    [leiningen.core.project :as lproj]
    [leiningen.core.utils :as lutils]
+   [leiningen.core.main :as lmain]
    [leiningen.clean :as clean]
    [clojure.java.io :as io]
    [figwheel-sidecar.config :as fc]
@@ -15,6 +16,23 @@
 (defn figwheel-sidecar-version []
   (when-let [version-var (resolve 'figwheel-sidecar.config/_figwheel-version_)]
      @version-var))
+
+(try
+  (assert
+   (= _figwheel-version_ (figwheel-sidecar-version))
+   (str "Figwheel version mismatch!!\n"
+        "You are using the lein-figwheel plugin with version: "
+        (pr-str _figwheel-version_) "\n"
+        "With a figwheel-sidecar library with version:        "
+        (pr-str (figwheel-sidecar-version)) "\n"
+        "\n"
+        "These versions need to be the same.\n"
+        "\n"
+        "Please look at your project.clj :dependencies to see what is causing this.\n"
+        "You may need to run \"lein clean\" \n"
+        "Running \"lein deps :tree\" can help you see your dependency tree."))
+  (catch Throwable e
+    (lmain/abort (.getMessage e))))

 (defn make-subproject [project builds]
   (with-meta
@@ -81,21 +99,6 @@
     (do (println "Figwheel: Configuration validation failed. Exiting ...")
         false)))

-(defn check-version-match []
-  (with-color
-    (let [sidecar-version (figwheel-sidecar-version)]
-      (fc/system-exit-assert
-       (= _figwheel-version_ sidecar-version)
-       (str "Figwheel version mismatch!!\n"
-            "You are using the lein-figwheel plugin with version: " (pr-str _figwheel-version_) "\n"
-            "With a figwheel-sidecar library with version:        " (pr-str sidecar-version) "\n"
-            "\n"
-            "These versions need to be the same.\n"
-            "\n"
-            "Please look at your project.clj :dependencies to see what is causing this.\n"
-            "You may need to run \"lein clean\" \n"
-            "Running \"lein deps :tree\" can help you see your dependency tree.")))))
-
 (defn clean-on-dependency-change [{:keys [target-path dependencies] :as project}]
   (when (and target-path dependencies)
     (fc/on-stamp-change
@@ -111,7 +114,6 @@
 (defn figwheel
   "Autocompile ClojureScript and serve the changes over a websocket (+ plus static file server)."
   [project & build-ids]
-  (check-version-match)
   (fc/system-asserts)
   (clean-on-dependency-change project)
   (when-let [config-data (validate-figwheel-conf project)]


Added trailing new line Moved wrap-request-logging down

--- 2-collectors/clojure-collector/src/snowplow/clojure_collector/middleware.clj
+++ 2-collectors/clojure-collector/src/snowplow/clojure_collector/middleware.clj
@@ -24,6 +24,11 @@
   (let [line (apply format msg vals)]
     (locking System/out (println line))))

+(defn wrap-if [handler pred wrapper & args]
+  (if pred
+    (apply wrapper handler args)
+    handler))
+
 (defn wrap-request-logging [handler]
   (fn [{:keys [request-method uri] :as req}]
     (let [start  (System/currentTimeMillis)
@@ -32,11 +37,6 @@
           total  (- finish start)]
       (log "request %s %s (%dms)" request-method uri total)
       resp)))
-
-(defn wrap-if [handler pred wrapper & args]
-  (if pred
-    (apply wrapper handler args)
-    handler))

 (defn wrap-exception-logging [handler]
   (fn [req]


Day 3 part 2

Day 3 part 2

error: pathspec 'src/advent_2016/day_03/part_2.cljs' did not match any file(s) known to git


switch order of items in footer

switch order of items in footer

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/clojurecup/cc2014-frontend.git/'


Add solution in Clojure for Problem001

Add solution in Clojure for Problem001

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Ladeia/ProjectEuler.git/'


*refactoring intensifies*

*refactoring intensifies*

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/jtbeckha/alda.git/'


Add cache store skeleton.

Add cache store skeleton.

error: pathspec 'src/blocks/store/cache.clj' did not match any file(s) known to git

--- src/blocks/store/cache.clj
+++ src/blocks/store/cache.clj
@@ -0,0 +1,12 @@
+(ns blocks.store.cache
+  "Logical block store which is backed by two other stores, a _primary store_
+  and a _cache_. Blocks will be added to the cache on reads and writes. Blocks
+  will be removed from the cache based on usage to keep it below a certain total
+  size."
+  (:require
+    [blocks.core :as block])
+  (:import
+    java.util.Date))
+
+
+; TODO: implement


added the possibility to specify key in document/create documentation

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/colophon/clarango.git/'


Handing the @p style symbols

Handing the @p style symbols

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/michaelsbradleyjr/shen.clj.git/'


Don't use snapshot as checked every run

Don't use snapshot as checked every run

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/scott-abernethy/dot-files.git/'


Clean up lein config

Clean up lein config

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/jamesleonis/dotfiles.git/'


Improved code style

Improved code style

--- src/yada/core.clj
+++ src/yada/core.clj
@@ -225,17 +225,20 @@
 ;; TODO: Unknown Content-Type? (incorporate this into conneg)
 (defn select-representation
   [ctx]
-  (let [representation
-        (rep/select-representation (:request ctx) (-> ctx :http-resource :representations))]
-
-    (if (nil? representation)
-      (d/error-deferred
-       (ex-info "" {:status 406
-                    ::http-response true}))
-
-      (cond-> ctx
-        representation (assoc-in [:response :representation] representation)
-        (-> ctx :http-resource :vary) (assoc-in [:response :vary] (-> ctx :http-resource :vary))))))
+  (if-let [representation
+           (rep/select-representation (:request ctx)
+                                      (-> ctx :http-resource :representations))]
+
+    (cond-> ctx
+      representation
+      (assoc-in [:response :representation] representation)
+
+      (-> ctx :http-resource :vary)
+      (assoc-in [:response :vary] (-> ctx :http-resource :vary)))
+
+    (d/error-deferred
+     (ex-info "" {:status 406
+                  ::http-response true}))))

 (defn exists?
   "A current representation for the resource exists?"


Being work on deserialiser for ProxyInformation.

error: pathspec 'proxy-protocol/proxy-protocol-deserialisation/src/main/clojure/proxy/protocol/v1/proxy_information_deserialiser.clj' did not match any file(s) known to git

--- proxy-protocol/proxy-protocol-deserialisation/src/main/clojure/proxy/protocol/v1/proxy_information_deserialiser.clj
+++ proxy-protocol/proxy-protocol-deserialisation/src/main/clojure/proxy/protocol/v1/proxy_information_deserialiser.clj
@@ -0,0 +1,31 @@
+
+(ns proxy.protocol.v1.proxy-information-deserialiser
+  (import [com.mattunderscore.tcproxy.io.serialisation AbstractByteBufferDeserialiser NotDeserialisableResult NeedsMoreDataResult DeserialisationResult]
+          [java.net.Inet4Address]
+          [com.mattunderscore.proxy.protocol InternetAddressFamily ProxyInformation])
+  (:gen-class
+    :name com.mattunderscore.proxy.protocol.v1.ProxyInformationDeserialiser
+    :extends com.mattunderscore.tcproxy.io.serialisation.AbstractByteBufferDeserialiser))
+
+(defn- has-info [context]
+  (and (:header context)
+       (:address-type context)
+       (or
+         (= (:address-type :unknown))
+         (and (:source-address context)
+              (:target-address context)
+              (:source-port context)
+              (:target-port context)))))
+
+(defn- process-next-byte [seq context]
+  (NeedsMoreDataResult/INSTANCE))
+
+(defn- read-info-from-sequence [seq]
+  (process-next-byte seq {:processed 0 :header false :pending []}))
+
+(defn -doRead
+  [this buffer]
+
+  (let [byte-seq (repeatedly #(if (.hasRemaining buffer) (.get buffer) nil))]
+    (read-info-from-sequence byte-seq)))
+


Slightly more concise (in my opinion) way of converting key string sequence to keywords for MapProperties.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Yoshiyuka/cthulhu.git/'


Just get verify config from env vars every time

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/electorate-works.git/'


bump piggieback version in example

bump piggieback version in example

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/modnakasta/weasel.git/'


Added in send200

Added in send200

--- 2-collectors/clojure-collector/src/com/snowplowanalytics/clojure_collector.clj
+++ 2-collectors/clojure-collector/src/com/snowplowanalytics/clojure_collector.clj
@@ -14,12 +14,14 @@
 ;;;; License:   Apache License Version 2.0

 (ns com.snowplowanalytics.clojure-collector
+  "Main app handler"
   (:use [compojure.core :only (GET defroutes)])
-  (:require (compojure handler route)))
+  (:require (compojure handler route)
+            [com.snowplowanalytics.clojure-collector.responses :as responses]))

 (defroutes app*
-  (GET "/" request "Welcome!")
-  (compojure.route/not-found "404 not found"))
+  (GET "/healthcheck" request send200)
+  (compojure.route/not-found responses/send404))

 (def app (compojure.handler/api app*))


Remove :data from schema validation errors

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/vote-by-mail-works.git/'


added temporary test for development

added temporary test for development

error: pathspec 'pigpen-cascading/src/test/clojure/pigpen/cascading/functional_debug_test.clj' did not match any file(s) known to git

--- pigpen-cascading/src/test/clojure/pigpen/cascading/functional_debug_test.clj
+++ pigpen-cascading/src/test/clojure/pigpen/cascading/functional_debug_test.clj
@@ -0,0 +1,186 @@
+;;
+;;
+;;  Copyright 2013 Netflix, Inc.
+;;
+;;     Licensed under the Apache License, Version 2.0 (the "License");
+;;     you may not use this file except in compliance with the License.
+;;     You may obtain a copy of the License at
+;;
+;;         http://www.apache.org/licenses/LICENSE-2.0
+;;
+;;     Unless required by applicable law or agreed to in writing, software
+;;     distributed under the License is distributed on an "AS IS" BASIS,
+;;     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+;;     See the License for the specific language governing permissions and
+;;     limitations under the License.
+;;
+;;
+
+(ns pigpen.cascading.functional-debug-test
+  (:require [clojure.test :refer [run-tests]]
+            [pigpen.functional-test :as t :refer [TestHarness]]
+            [pigpen.functional-suite :refer [def-functional-tests]]
+            [pigpen.core :as pig]
+            [pigpen.extensions.io :as io]
+            [pigpen.cascading.core :as cascading]))
+
+(def prefix "build/functional/cascading/")
+
+(.mkdirs (java.io.File. prefix))
+
+(defn run-flow [command]
+  (-> command
+    (cascading/generate-flow)
+    (.complete)))
+
+(defn run-flow->output [harness command]
+  (let [output-file (t/file harness)]
+    (->> command
+      (pig/store-clj output-file)
+      (run-flow))
+    (->> output-file
+      (t/read harness)
+      (map read-string))))
+
+(def-functional-tests "cascading"
+  (reify TestHarness
+    (data [this data]
+      (let [input-file (t/file this)]
+        (spit input-file
+              (->> data
+                (map prn-str)
+                (clojure.string/join)))
+        (cascading/load-clj input-file)))
+    (dump [this command]
+      (if (-> command :type #{:store :script})
+        (run-flow this command)
+        (run-flow->output this command)))
+    (file [this]
+      (str prefix (gensym)))
+    (read [this file]
+      (apply concat
+        (for [f (io/list-files file)
+              :when (not (.endsWith f ".crc"))
+              :when (not (.endsWith f "_SUCCESS"))]
+          (when-let [contents (not-empty (slurp f))]
+            (clojure.string/split-lines contents)))))
+    (write [this lines]
+      (let [file (t/file this)]
+        (spit file (clojure.string/join "\n" lines))
+        file)))
+  #{
+    ;; Working
+    pigpen.functional.code-test/test-closure
+    pigpen.functional.filter-test/test-filter
+    pigpen.functional.filter-test/test-remove
+    pigpen.functional.join-test/test-join-inner-join-nils
+    pigpen.functional.join-test/test-join-left-outer-join-nils
+    pigpen.functional.join-test/test-join-right-outer-join-nils
+    pigpen.functional.join-test/test-join-full-outer-join-nils
+    pigpen.functional.join-test/test-group-by
+    pigpen.functional.join-test/test-join-default-key-selector
+    pigpen.functional.join-test/test-filter-by
+    pigpen.functional.join-test/test-filter-by-nil-keys
+    pigpen.functional.join-test/test-filter-by-duplicate-keys
+    pigpen.functional.map-test/test-map
+    pigpen.functional.map-test/test-mapcat
+    pigpen.functional.set-test/test-distinct
+
+    ;; In progress
+    ;pigpen.functional.fold-test/test-filter
+
+    ;; Not working
+    pigpen.functional.code-test/test-for
+    pigpen.functional.filter-test/test-take
+    pigpen.functional.filter-test/test-sample
+    pigpen.functional.fold-test/test-vec
+    pigpen.functional.fold-test/test-map
+    pigpen.functional.fold-test/test-mapcat
+    pigpen.functional.fold-test/test-remove
+    pigpen.functional.fold-test/test-keep
+    pigpen.functional.fold-test/test-distinct
+    pigpen.functional.fold-test/test-take
+    pigpen.functional.fold-test/test-first
+    pigpen.functional.fold-test/test-last
+    pigpen.functional.fold-test/test-sort
+    pigpen.functional.fold-test/test-sort-desc
+    pigpen.functional.fold-test/test-sort-by
+    pigpen.functional.fold-test/test-sort-by-desc
+    pigpen.functional.fold-test/test-juxt-stats
+    pigpen.functional.fold-test/test-juxt-min-max
+    pigpen.functional.fold-test/test-count
+    pigpen.functional.fold-test/test-sum
+    pigpen.functional.fold-test/test-avg
+    pigpen.functional.fold-test/test-avg-with-cogroup
+    pigpen.functional.fold-test/test-top
+    pigpen.functional.fold-test/test-top-desc
+    pigpen.functional.fold-test/test-top-by
+    pigpen.functional.fold-test/test-top-by-desc
+    pigpen.functional.fold-test/test-min
+    pigpen.functional.fold-test/test-min+map
+    pigpen.functional.fold-test/test-min-key
+    pigpen.functional.fold-test/test-max
+    pigpen.functional.fold-test/test-max-key
+    pigpen.functional.io-test/test-load-string
+    pigpen.functional.io-test/test-load-tsv
+    pigpen.functional.io-test/test-load-tsv-non-tab
+    pigpen.functional.io-test/test-load-tsv-non-tab-with-tabs
+    pigpen.functional.io-test/test-load-clj
+    pigpen.functional.io-test/test-load-json
+    pigpen.functional.io-test/test-load-json-no-options
+    pigpen.functional.io-test/test-load-json-two-options
+    pigpen.functional.io-test/test-load-lazy
+    pigpen.functional.io-test/test-store-string
+    pigpen.functional.io-test/test-store-tsv
+    pigpen.functional.io-test/test-store-clj
+    pigpen.functional.io-test/test-store-json
+    pigpen.functional.join-test/test-into
+    pigpen.functional.join-test/test-into-empty
+    pigpen.functional.join-test/test-reduce-conj
+    pigpen.functional.join-test/test-reduce-+
+    pigpen.functional.join-test/test-reduce-empty
+    pigpen.functional.join-test/test-fold-inline-sum
+    pigpen.functional.join-test/test-fold-inline-count
+    pigpen.functional.join-test/test-fold-count
+    pigpen.functional.join-test/test-fold-cogroup-dual
+    pigpen.functional.join-test/test-fold-all-sum
+    pigpen.functional.join-test/test-fold-all-count
+    pigpen.functional.join-test/test-fold-all-empty
+    pigpen.functional.join-test/test-cogroup-inner
+    pigpen.functional.join-test/test-cogroup-left-outer
+    pigpen.functional.join-test/test-cogroup-right-outer
+    pigpen.functional.join-test/test-cogroup-full-outer
+    pigpen.functional.join-test/test-cogroup-inner-join-nils
+    pigpen.functional.join-test/test-cogroup-left-outer-join-nils
+    pigpen.functional.join-test/test-cogroup-right-outer-join-nils
+    pigpen.functional.join-test/test-cogroup-full-outer-join-nils
+    pigpen.functional.join-test/test-cogroup-self-join
+    pigpen.functional.join-test/test-cogroup-self-join+fold
+    pigpen.functional.join-test/test-join-inner-implicit
+    pigpen.functional.join-test/test-join-inner
+    pigpen.functional.join-test/test-join-left-outer
+    pigpen.functional.join-test/test-join-right-outer
+    pigpen.functional.join-test/test-join-full-outer
+    pigpen.functional.join-test/test-join-self-join
+    pigpen.functional.join-test/test-remove-by
+    pigpen.functional.join-test/test-remove-by-nil-keys
+    pigpen.functional.join-test/test-remove-by-duplicate-keys
+    pigpen.functional.map-test/test-map-indexed
+    pigpen.functional.map-test/test-map-indexed+sort
+    pigpen.functional.map-test/test-sort
+    pigpen.functional.map-test/test-sort-desc
+    pigpen.functional.map-test/test-sort-by
+    pigpen.functional.map-test/test-sort-by-desc
+    pigpen.functional.map-test/test-sort-by-with-duplicates
+    pigpen.functional.map-test/test-map+fold1
+    pigpen.functional.map-test/test-map+fold2
+    pigpen.functional.set-test/test-concat
+    pigpen.functional.set-test/test-union
+    pigpen.functional.set-test/test-union-multiset
+    pigpen.functional.set-test/test-intersection
+    pigpen.functional.set-test/test-intersection-multiset
+    pigpen.functional.set-test/test-difference
+    pigpen.functional.set-test/test-difference-multiset
+    })
+
+(run-tests 'pigpen.cascading.functional-debug-test)


Initial commit of test for the copy_list_nodes_to_bio rule

error: pathspec 'test/rules_tests/post_identifier_merge/step_b_ontology_to_ice/step_a/test_rule_copy_list_nodes_to_bio.clj' did not match any file(s) known to git

--- test/rules_tests/post_identifier_merge/step_b_ontology_to_ice/step_a/test_rule_copy_list_nodes_to_bio.clj
+++ test/rules_tests/post_identifier_merge/step_b_ontology_to_ice/step_a/test_rule_copy_list_nodes_to_bio.clj
@@ -0,0 +1,76 @@
+(ns rules-tests.post-identifier-merge.step-b-ontology-to-ice.step-a.test-rule-copy-list-nodes-to-bio
+  (use clojure.test
+       kr.sesame.kb
+       kr.sesame.sparql
+       kr.sesame.rdf
+       )
+  (:require  [kabob.build.run-rules :refer [query-variables run-forward-rule-sparql-string]]
+             [kr.core.forward-rule :refer [add-reify-fns]]
+             [kr.core.sparql :refer [sparql-select-query query]]
+             [kr.core.rdf :refer [register-namespaces synch-ns-mappings add!]]
+             [kr.core.kb :refer [kb open close]]
+             [kabob.core.namespace :refer [*namespaces*]]
+             [kabob.core.rule :refer [kabob-load-rules-from-classpath]]
+             [kabob.build.output-kb :refer [output-kb]]
+             [clojure.pprint :refer [pprint]]))
+
+
+(def sample-kb-triples '((bnode/cl_genid20404 rdf/type owl/AllDisjointClasses)
+                          (bnode/cl_genid20404 owl/members bnode/cl_genid20409)
+                          (bnode/cl_genid20409 rdf/type rdf/List)
+                          (bnode/cl_genid20409 rdf/first bnode/cl_genid20410)
+                          (bnode/cl_genid20410 rdf/type owl/Restriction)
+                          (bnode/cl_genid20410 owl/onProperty obo/BFO_0000050)
+                          (bnode/cl_genid20410 owl/someValuesFrom obo/UBERON_0001885)
+                          (bnode/cl_genid20409 rdf/rest bnode/cl_genid20407)
+                          (bnode/cl_genid20407 rdf/type rdf/List)
+                          (bnode/cl_genid20407 rdf/first bnode/cl_genid20408)
+                          (bnode/cl_genid20408 rdf/type owl/Restriction)
+                          (bnode/cl_genid20408 owl/onProperty obo/BFO_0000050)
+                          (bnode/cl_genid20408 owl/someValuesFrom obo/UBERON_0001954)
+                          (bnode/cl_genid20407 rdf/rest bnode/cl_genid20405)
+                          (bnode/cl_genid20405 rdf/type rdf/List)
+                          (bnode/cl_genid20405 rdf/first bnode/cl_genid20406)
+                          (bnode/cl_genid20406 rdf/type owl/Restriction)
+                          (bnode/cl_genid20406 owl/onProperty obo/BFO_0000050)
+                          (bnode/cl_genid20406 owl/someValuesFrom obo/UBERON_0002191)
+                          (bnode/cl_genid20405 rdf/rest rdf/nil)))
+
+(def new-triples '())
+
+(def result-triples '())
+
+(defn test-kb [triples]
+  "initializes an empty kb"
+  (let [kb (register-namespaces (synch-ns-mappings (open (kb :sesame-mem)))
+                                *namespaces*)]
+    (dorun (map (partial add! kb) triples))
+    kb))
+
+
+
+(deftest test-rule
+  (let [rule (first (filter #(= (:name %) "copy-list-nodes-to-bio")
+                              (kabob-load-rules-from-classpath "rules/post_identifier_merge/step_b_ontology_to_ice/step_a")))
+        source-kb (test-kb sample-kb-triples)] ;; source kb contains sample triples
+
+    (run-forward-rule-sparql-string source-kb source-kb rule)
+
+    ;; there should be 3 list_recored instances
+    (is (= 3 (count (query source-kb '((?/list_record rdf/type ccp/IAO_EXT_0000317)))))) ;; ccp:RDF list record
+
+    ;; test the complete existence of one of the expected list_records
+    (is (= 1 (count (query source-kb '((?/list_record obo/IAO_0000219 bnode/cl_genid20409)
+                                        (?/list_record rdf/type ccp/IAO_EXT_0000317) ;; ccp:RDF list record
+                                        (?/list_record obo/IAO_0000219 ?/bio_listmember) ;; obo:denotes
+                                        (?/bio_listmember rdf/Type rdf/List))))))
+
+    ;;; The code fragment below is useful for debugging as it writes
+    ;;; triples to a local file.
+    ;(let [log-kb (output-kb "/tmp/triples.nt")]
+    ;  ;; add sample triples to the log kb
+    ;  ;;(dorun (map (partial add! log-kb) sample-kb-triples))
+    ;
+    ;  (run-forward-rule-sparql-string source-kb log-kb rule)
+    ;  (close log-kb))
+    ))


Update app.clj

Update app.clj

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/fhirbase/fhirplace.git/'


added unzip option

added unzip option

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/jchli/jepsen-aurora.git/'


debian/install options

debian/install options


change log file paths

change log file paths


Let's start using html5 placeholder.

Let's start using html5 placeholder.

--- src/clojars/web/common.clj
+++ src/clojars/web/common.clj
@@ -6,7 +6,7 @@

 (defn when-ie [& contents]
   (str
-   "<!--[if IE]>"
+   "<!--[if lt IE 9]>"
    (html contents)
    "<![endif]-->"))

@@ -40,10 +40,8 @@
           [(link-to "/login" "login")
            (link-to "/register" "register")]))
        (form-to [:get "/search"]
-                [:input {:name "q" :id "search" :class :search :value
-                         "Search jars..."
-                         :onclick (str "if (!this.cleared==1) {this.value=''; "
-                                       "this.cleared=1;}")}])]]
+                [:input {:name "q" :id "search" :class :search
+                         :placeholder "Search jars..."}])]]
      [:div {:class :clear}]]
     [:div {:class "container_12 article"}
      [:article


bump version to 2.8.3

bump version to 2.8.3

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/B2W-BIT/restQL-server.git/'


fix cljsbuild config format

fix cljsbuild config format

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/sbondaryev/cljs-client-server.git/'


alpha13

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/tobiasbayer/lambdacd.git/'


Update Clojure dependencies

Update Clojure dependencies

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/magoyette/marcandregoyette.com.git/'


Update langohr to version 3.5.1

Update langohr to version 3.5.1

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Yleisradio/rabid.git/'


adding examples

adding examples

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/narkisr/cloujsearch.git/'


Add project.clj

Add project.clj

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/jlemmett/om-slider.git/'


Bump to version 0.3.0

Bump to version 0.3.0

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/aaronlahey/coconut.git/'


ttable

ttable

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/clojure-ml/cml.git/'


Add ScrapeTripReport protocol and TripReport record type.

error: pathspec 'project/scrape-trs/src/scrape_trs/protocol.clj' did not match any file(s) known to git

--- project/scrape-trs/src/scrape_trs/protocol.clj
+++ project/scrape-trs/src/scrape_trs/protocol.clj
@@ -0,0 +1,23 @@
+(ns scrape-trs.protocol
+  (:import java.text.SimpleDateFormat))
+
+(defrecord TripReport [title date text])
+
+(def trip-report-date-format (SimpleDateFormat. "yyyy-MM-dd"))
+
+(defprotocol ScrapeTripReport
+  ""
+  (extract-pager-urls
+    [this list-page]
+    "Given a page (as a string) that lists links to trip reports and may have
+    pagination, return a sequence of urls to all pages in the pagination, or a
+    one item sequence containing list-page if there is no pagination.")
+  (extract-trip-report-urls
+    [this list-page]
+    "Given a page (as a string) that lists links to trip reports, return a
+    sequence of urls to all trip reports listed on the page.")
+  (extract-trip-report
+    [this trip-report-page]
+    "Given a page (as a string) that contains a trip report, return a
+    TripReport record.") )
+


Removal of unnecessary methods from core.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Yoshiyuka/cthulhu.git/'


datamunging part1 (clojure)

datamunging part1 (clojure)

error: pathspec 'src/main/clojure/datamunging/datamunging1.clj' did not match any file(s) known to git

--- src/main/clojure/datamunging/datamunging1.clj
+++ src/main/clojure/datamunging/datamunging1.clj
@@ -0,0 +1,45 @@
+(ns datamunging.datamunging1
+  (:use clojure.test))
+
+(deftest should-find-day-with-min-temperature-spread
+  (def weather-file "/Users/dima/IdeaProjects/katas/src/main/scala/ru/katas/n4/weather.dat")
+
+  (defn read-lines-from [file-name] (.split (slurp weather-file) "\n"))
+  (defn remove-non-data [lines] (drop 8 (drop-last 2 lines)))
+  (defn split-lines [lines] (vec (map #(vec (.split (.trim %) "\\s+")) lines)))
+  (defn take-columns-with-data [lines] (map #(vector (nth % 0) (nth % 1) (nth % 2)) lines))
+
+  (defn remove-non-digits [s] (.replaceAll s "\\*" ""))
+  (defn parse-row [row]
+    (let [key (first row)
+          value1 (remove-non-digits (nth row 1))
+          value2 (remove-non-digits (nth row 2))]
+      (vector key (Integer/parseInt value1) (Integer/parseInt value2))
+  ))
+
+  (let [
+        columns-with-data (take-columns-with-data (split-lines (remove-non-data (read-lines-from weather-file))))
+        parsed-lines (map parse-row columns-with-data)
+        row-with-min-values-diff (apply min-key #(Math/abs (- (nth % 1) (nth % 2))) parsed-lines)
+        find-day-with-min-temperature-spread (first row-with-min-values-diff)
+    ]
+
+    (is (= (list "14", 61, 59) row-with-min-values-diff))
+
+    (is (= (list "1", "88", "59") (nth columns-with-data 0)))
+    (is (= (list "9", "86", "32*") (nth columns-with-data 8)))
+    (is (= (list "30", "90", "45") (nth columns-with-data 29)))
+    (is (= 30 (count columns-with-data)))
+
+    (is (= (list "1", 88, 59) (nth parsed-lines 0)))
+    (is (= (list "9", 86, 32) (nth parsed-lines 8)))
+    (is (= (list "30", 90, 45) (nth parsed-lines 29)))
+    (is (= 30 (count parsed-lines)))
+
+    (is (= 30 (count (remove-non-data (read-lines-from weather-file)))))
+    (is (= 40 (count (read-lines-from weather-file))))
+
+    (is (= "14" find-day-with-min-temperature-spread))
+    )
+)
+(run-tests)


50px is a bit much separating eaxh function the the daily email

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/vincentstorme/clojureme.git/'


add authorization to application/update! resolver

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/starcity-properties/odin.git/'


Add a preload script to set up console.log for browser use as println.

error: pathspec 'src-browser/datomish/preload.cljs' did not match any file(s) known to git

--- src-browser/datomish/preload.cljs
+++ src-browser/datomish/preload.cljs
@@ -0,0 +1,8 @@
+;; This Source Code Form is subject to the terms of the Mozilla Public
+;; License, v. 2.0. If a copy of the MPL was not distributed with this
+;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+(ns datomish.preload)
+
+(enable-console-print!)
+(println "Console printing enabled.")


fix typo

fix typo


data import

data import

error: pathspec 'src/cljs/dbquery/data_import.cljs' did not match any file(s) known to git

--- src/cljs/dbquery/data_import.cljs
+++ src/cljs/dbquery/data_import.cljs
@@ -0,0 +1,24 @@
+(ns dbquery.data-import
+  (:require [reagent.core :as r :refer [atom]]
+            [dbquery.commons :as c :refer [input button]]
+            [ajax.core :refer [GET POST]]))
+
+(defn- upload-file [params]
+  (POST "/upload" :params params :format :raw :response-format :json
+        :handler #(.log js/console "success:" %)
+        :error-handler #(.log js/console "failure:" %)))
+
+(defn import-data-tab []
+  (let [upload-params (atom {})]
+    (fn[]
+      [:div
+       [:form.form-inline
+        [input {:type "file" :model [upload-params :file]
+                :className "form-control" :label "CSV File:"}]
+        [input {:type "select" :model [upload-params :separator]
+                :label "Separator"}
+         ^{:key "\t"}[:option {:value "\t"} "Tab"]
+         ^{:key ","}[:option {:value ","} ","]]
+        [input {:type "checkbox" :model [upload-params :hasHeader]
+                :label "Has Header?"}]
+        [button {:bsStyle "primary" :on-click #(upload-file @upload-params)} "Upload"]]])))


CMR-3161 Parse ISO Contact Info

CMR-3161 Parse ISO Contact Info

error: pathspec 'umm-spec-lib/src/cmr/umm_spec/xml_to_umm_mappings/iso19115_2/data_contact.clj' did not match any file(s) known to git

--- umm-spec-lib/src/cmr/umm_spec/xml_to_umm_mappings/iso19115_2/data_contact.clj
+++ umm-spec-lib/src/cmr/umm_spec/xml_to_umm_mappings/iso19115_2/data_contact.clj
@@ -0,0 +1,120 @@
+(ns cmr.umm-spec.xml-to-umm-mappings.iso19115-2.data-contact
+ "Functions to parse DataCenters and ContactPersons from ISO 19115-2"
+ (:require
+  [cmr.common.xml.parse :refer :all]
+  [cmr.common.xml.simple-xpath :refer [select text]]
+  [cmr.umm-spec.iso19115-2-util :refer [char-string-value]]))
+
+(def xml
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+  <gmd:pointOfContact xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:eos=\"http://earthdata.nasa.gov/schema/eos\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\" xmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gss=\"http://www.isotc211.org/2005/gss\" xmlns:gts=\"http://www.isotc211.org/2005/gts\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:swe=\"http://schemas.opengis.net/sweCommon/2.0/\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
+      <gmd:CI_ResponsibleParty>
+        <gmd:individualName>
+          <gco:CharacterString>Per Gloersen</gco:CharacterString>
+        </gmd:individualName>
+        <gmd:contactInfo>
+          <gmd:CI_Contact>
+            <gmd:phone>
+              <gmd:CI_Telephone>
+                <gmd:voice>
+                  <gco:CharacterString>1 301 614 5710 x</gco:CharacterString>
+                </gmd:voice>
+                <gmd:facsimile>
+                  <gco:CharacterString>1 301 614 5644 x</gco:CharacterString>
+                </gmd:facsimile>
+              </gmd:CI_Telephone>
+            </gmd:phone>
+            <gmd:address>
+              <gmd:CI_Address>
+                <gmd:deliveryPoint>
+                  <gco:CharacterString>Laboratory for Hydrospheric Processes</gco:CharacterString>
+                </gmd:deliveryPoint>
+                <gmd:deliveryPoint>
+                  <gco:CharacterString>NASA/Goddard Space Flight Center</gco:CharacterString>
+                </gmd:deliveryPoint>
+                <gmd:deliveryPoint>
+                  <gco:CharacterString>Code 971</gco:CharacterString>
+                </gmd:deliveryPoint>
+                <gmd:city>
+                  <gco:CharacterString>Greenbelt</gco:CharacterString>
+                </gmd:city>
+                <gmd:administrativeArea>
+                  <gco:CharacterString>MD</gco:CharacterString>
+                </gmd:administrativeArea>
+                <gmd:postalCode>
+                  <gco:CharacterString>20771</gco:CharacterString>
+                </gmd:postalCode>
+                <gmd:electronicMailAddress>
+                  <gco:CharacterString>per.gloersen@gsfc.nasa.gov</gco:CharacterString>
+                </gmd:electronicMailAddress>
+              </gmd:CI_Address>
+            </gmd:address>
+            <gmd:onlineResource>
+              <gmd:CI_OnlineResource>
+                <gmd:linkage>
+                  <gmd:URL>http://nsidc.org</gmd:URL>
+                </gmd:linkage>
+                <gmd:name gco:nilReason=\"missing\"/>
+                <gmd:description gco:nilReason=\"missing\"/>
+              </gmd:CI_OnlineResource>
+            </gmd:onlineResource>
+          </gmd:CI_Contact>
+        </gmd:contactInfo>
+        <gmd:role>
+          <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeListValue=\"principalInvestigator\">principalInvestigator</gmd:CI_RoleCode>
+        </gmd:role>
+      </gmd:CI_ResponsibleParty>
+    </gmd:pointOfContact>")
+
+(def contact-info-xml
+ (first (select xml "gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact")))
+
+(defn- parse-phone-contact-info
+ [contact-info-xml]
+ (when-let [phone (first (select contact-info-xml "gmd:phone/gmd:CI_Telephone"))]
+  (seq
+   (remove nil?
+     (concat
+       (for [voice (select phone "gmd:voice")]
+         {:Type "Telephone"
+          :Value (value-of voice "gco:CharacterString")})
+       (for [fax (select phone "gmd:facsimile")]
+         {:Type "Fax"
+          :Value (value-of fax "gco:CharacterString")}))))))
+
+(defn- parse-email-contact
+ [contact-info-xml]
+ (for [address (select contact-info-xml "gmd:address/gmd:CI_Address")]
+  (when-let [email (char-string-value address "gmd:electronicMailAddress")]
+   {:Type "Email"
+    :Value email})))
+
+(defn- parse-addresses
+ [contact-info-xml]
+ (when-let [address (first (select contact-info-xml "gmd:address/gmd:CI_Address"))]
+  {:StreetAddresses (for [street-address (select address "gmd:deliveryPoint")]
+                      (value-of street-address "gco:CharacterString"))
+   :City (char-string-value address "gmd:city")
+   :StateProvince (char-string-value address "gmd:administrativeArea")
+   :PostalCode (char-string-value address "gmd:postalCode")}))
+
+(defn- parse-online-resources
+ [contact-info-xml]
+ (when-let [online-resource (first (select contact-info-xml "gmd:onlineResource/gmd:CI_OnlineResource"))]
+  {:URLs [(value-of online-resource "gmd:linkage/gmd:URL")]
+   :Description (char-string-value online-resource "gmd:description")}))
+
+(defn- parse-contact-information
+ [contact-info-xml]
+ {:ContactMechanisms (remove nil? (concat
+                                         (parse-phone-contact-info contact-info-xml)
+                                         (parse-email-contact contact-info-xml)))
+  :Addresses (parse-addresses contact-info-xml)
+  :RelatedUrls (parse-online-resources contact-info-xml)
+  :ServiceHours (char-string-value contact-info-xml "gmd:hoursOfService")
+  :ContactInstruction (char-string-value contact-info-xml "gmd:ContactInstructions")})
+
+(defn point-of-contact->contact-person
+ [xml]
+ {:LastName (char-string-value xml "gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:individualName")
+  :ContactInformation (parse-contact-information (first (select xml "gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact")))})


run file

run file

error: pathspec 'src/script/run.clj' did not match any file(s) known to git

--- src/script/run.clj
+++ src/script/run.clj
@@ -0,0 +1,7 @@
+(use [ring.adapter.jetty]
+    [compojure.core]
+    [ring.middleware.params]))
+(require 'adder.pages)
+
+(let [port (Integer/parseInt (get (System/getenv) "PORT" "8080"))]
+  (run-jetty #'adder.pages/app {:port port}))


Hierarchy of XML Schema datatypes

Hierarchy of XML Schema datatypes

error: pathspec 'src/clj/sparqlab/xml_schema.clj' did not match any file(s) known to git

--- src/clj/sparqlab/xml_schema.clj
+++ src/clj/sparqlab/xml_schema.clj
@@ -0,0 +1,43 @@
+(ns sparqlab.xml-schema
+  "XML Schema 1.1 built-in datatypes <http://www.w3.org/TR/xmlschema-2/#built-in-datatypes>")
+
+(derive ::boolean ::string)
+(derive ::base64binary ::string)
+(derive ::hexBinary ::string)
+(derive ::float ::string)
+(derive ::decimal ::string)
+(derive ::double ::string)
+(derive ::anyURI ::string)
+(derive ::QName ::string)
+(derive ::NOTATION ::string)
+(derive ::duration ::string)
+(derive ::dateTime ::string)
+(derive ::time ::string)
+(derive ::date ::string)
+(derive ::gYearMonth ::string)
+(derive ::gYear ::string)
+(derive ::gMonthDay ::string)
+(derive ::gDay ::string)
+(derive ::gMonth ::string)
+(derive ::normalizedString ::string)
+(derive ::token ::normalizedString)
+(derive ::language ::token)
+(derive ::Name ::token)
+(derive ::NMToken ::token)
+(derive ::NCName ::Name)
+(derive ::ID ::NCName)
+(derive ::IDREF ::NCName)
+(derive ::ENTITY ::NCName)
+(derive ::integer ::decimal)
+(derive ::nonPositiveInteger ::integer)
+(derive ::long ::integer)
+(derive ::nonNegativeInteger ::integer)
+(derive ::negativeInteger ::nonPositiveInteger)
+(derive ::int ::long)
+(derive ::short ::int)
+(derive ::byte ::short)
+(derive ::unsignedLong ::nonNegativeInteger)
+(derive ::positiveInteger ::nonNegativeInteger)
+(derive ::unsignedInt ::unsignedLong)
+(derive ::unsignedShort ::unsignedInt)
+(derive ::unsignedByte ::unsignedShort)


Demo that Midje and `ns-unmap` don't play nicely together

error: pathspec 'test/com/nomistech/clojure_the_language/c_800_libraries/s_100_midje/minutiae/ns_unmap.clj' did not match any file(s) known to git

--- test/com/nomistech/clojure_the_language/c_800_libraries/s_100_midje/minutiae/ns_unmap.clj
+++ test/com/nomistech/clojure_the_language/c_800_libraries/s_100_midje/minutiae/ns_unmap.clj
@@ -0,0 +1,24 @@
+(ns com.nomistech.clojure-the-language.c-800-libraries.s-100-midje.minutiae.ns-unmap
+  (:require [midje.sweet :refer :all]))
+
+;;;; ___________________________________________________________________________
+;;;; Midje and `ns-unmap` don't play nicely together, because Midje holds on
+;;;; to the old var.
+
+(do ; This is OK:
+  (ns-unmap *ns* 'x1)
+  (def x1 43)
+  (fact x1 => 43))
+
+(let [] ; This uses the old var:
+  (ns-unmap *ns* 'x1)
+  (def x1 43)
+  (fact x1 => #(= (type %) clojure.lang.Var$Unbound)))
+
+(do ; This is a workaround:
+  (def ^:dynamic *x1*)
+  (let []
+    (ns-unmap *ns* 'x1)
+    (def x1 43)
+    (binding [*x1* x1]
+      (eval (fact *x1* => 43)))))


Titulu guztiak lortu

Titulu guztiak lortu

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/lnmnd/magnet.bez.git/'


added testing namespace

added testing namespace

error: pathspec 'test/forma/hadoop/jobs/cdm_test.clj' did not match any file(s) known to git

--- test/forma/hadoop/jobs/cdm_test.clj
+++ test/forma/hadoop/jobs/cdm_test.clj
@@ -0,0 +1,5 @@
+(ns forma.hadoop.jobs.cdm-test
+  (:use cascalog.api
+        forma.hadoop.jobs.cdm
+        [midje sweet cascalog]))
+


started welch

started welch


Add identity spec tests.

Add identity spec tests.

error: pathspec 'spec/cats/monad/identity_spec.cljx' did not match any file(s) known to git

--- spec/cats/monad/identity_spec.cljx
+++ spec/cats/monad/identity_spec.cljx
@@ -0,0 +1,42 @@
+(ns cats.monad.identity-spec
+  #+cljs
+  (:require [speclj.core :as s :include-macros true]
+            [cats.builtin :as b]
+            [cats.protocols :as p]
+            [cats.monad.identity :as id]
+            [cats.core :as m :include-macros true])
+  #+clj
+  (:require [speclj.core :as s]
+            [cats.builtin :as b]
+            [cats.protocols :as p]
+            [cats.monad.identity :as id]
+            [cats.core :as m]))
+
+(s/describe "identity-monad"
+  (s/it "Test fmap"
+    (s/should= (id/identity 2)
+               (m/fmap inc (id/identity 1))))
+
+  (s/it "The first monad law: left identity"
+    (s/should= (id/identity 2)
+               (m/>>= (p/mreturn id/identity-monad 2) id/identity)))
+
+  (s/it "The second monad law: right identity"
+    (s/should= (id/identity 2)
+               (m/>>= (id/identity 2) m/return)))
+
+  (s/it "The third monad law: associativity"
+    (s/should= (m/>>= (m/mlet [x (id/identity 2)
+                               y (id/identity (inc x))]
+                        (m/return y))
+                      (fn [y] (id/identity (inc y))))
+               (m/>>= (id/identity 2)
+                      (fn [x] (m/>>= (id/identity (inc x))
+                                     (fn [y] (id/identity (inc y)))))))))
+(def identity-vector-transformer (id/identity-transformer b/vector-monad))
+
+(s/describe "identity-transformer"
+  (s/it "It is a trivial transformer which yields the inner monad"
+    (s/should= (id/identity [2])
+               (m/with-monad identity-vector-transformer
+                 (m/return 2)))))


removes errant console.log

removes errant console.log


adjust layout for pricing/billig card in create form


tracking playbate rate changed

tracking playbate rate changed

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/wilkerlucio/youtube-looper.git/'


remove unused component

remove unused component


Started working on the new appengine-update task.

error: pathspec 'src/leiningen/appengine_update.clj' did not match any file(s) known to git

--- src/leiningen/appengine_update.clj
+++ src/leiningen/appengine_update.clj
@@ -0,0 +1,7 @@
+(ns leiningen.appengine-update
+  "Deploys the application to the production Google App Engine.")
+
+
+(defn appengine-update [project & [app-name]]
+  ;; TODO: Implement me.
+  )


[WM] Fix new logging fn call

[WM] Fix new logging fn call

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/partner-works.git/'