Updated irefweb unary interactions rule to work with ccp ext ontology

error: pathspec 'resources/rules/post_identifier_merge/temp/irefweb/irefweb_unary_interactions.clj' did not match any file(s) known to git

--- resources/rules/post_identifier_merge/temp/irefweb/irefweb_unary_interactions.clj
+++ resources/rules/post_identifier_merge/temp/irefweb/irefweb_unary_interactions.clj
@@ -0,0 +1,99 @@
+;; ----------------------------------------------
+;; --------- IRefWeb Unary Interactions ---------
+;; ----------------------------------------------
+`{:name "irefweb-unary-interactions"
+  :description "This rule generates bio-representations for all unary (intra-molecular) protein interactions cataloged by IRefWeb"
+  :head (
+         ;; create subclasses of interaction type and id
+         (?/interaction rdfs/subClassOf ?/interaction_type_id) ;interaction
+         (?/interaction rdfs/label ?/interaction_type_label) ; transfer label to the subclass
+
+         ;; create subclasses of the proteins
+         (?/protein1_sc rdfs/subClassOf ?/protein1)
+         (?/protein1_sc rdfs/label ?/protein1_label)
+
+         ;; create restriction for protein interator
+         (?/restriction rdf/type owl/Restriction)
+         (?/restriction owl/onProperty obo/RO_0000057) ; RO:has_participant
+         (?/restriction owl/someValuesFrom ?/protein1_sc)
+
+         ;; create a cardinality restriction of 2 on the has_participant property
+         (?/card_restriction rdf/type owl/Restriction)
+         (?/card_restriction owl/onProperty obo/RO_0000057) ; RO:has_participant
+         (?/card_restriction owl/cardinality 1) ;; unary interactions must have 1 participant.
+
+         ;; join interaction restrictions
+         (?/interaction rdfs/subClassOf ?/restriction)
+         (?/interaction rdfs/subClassOf ?/card_restriction))
+
+  :body (
+         ;; get n-ary interaction records
+         (?/interaction_record rdf/type ccp/IAO_EXT_0000064) ; ccp:IRefWeb_interaction_record
+         (?/interaction_record obo/BFO_0000051 ?/edge_type_field_value) ; BFO:has_part
+
+         ;; get interaction edge type
+         (?/edge_type_field_value rdf/type ccp/IAO_EXT_0000741) ; ccp:IRefWeb_interaction_record__edge_type_field_value
+         (?/edge_type_field_value rdf/type ?/edge_type_ice_id)
+         (?/edge_type_ice_id obo/IAO_0000219 ?/edge_type) ; IAO:denotes
+         (= ?/edge_type "Y") ; "Y" signifies intra-molecular interaction
+
+         ;; get the unique interaction identifier
+         (?/interaction_record obo/BFO_0000051 ?/interaction_checksum_field_value) ; BFO:has_part
+         (?/interaction_checksum_field_value rdf/type ccp/IAO_EXT_0000735) ; ccp:IRefWeb_interaction_record__check_sum_interaction_field_value
+         (?/interaction_checksum_field_value rdf/type ?/edge_type_ice_id)
+         (?/edge_type_ice_id obo/IAO_0000219 ?/unique_interaction_id) ; IAO:denotes
+
+         ;; get the interaction type name and ID
+         (?/interaction_type_record rdf/type ccp/IAO_EXT_0000716) ; ccp:IRefWeb_interaction_type_record
+         (?/interaction_type_record obo/BFO_0000051 ?/int_type_id_field) ; BFO:has_part
+         (?/int_type_id_field rdf/type ccp/IAO_EXT_0000753) ; ccp:IRefWeb_interaction_type_record__interaction_type_identifier_field_value
+         (?/int_type_id_field rdf/type ?/int_type_id_ice)
+         (?/int_type_id_ice obo/IAO_0000219 ?/int_type_id) ; IAO:denotes
+         (?/int_type_id rdfs/label ?/int_type_label)
+         ;; retrieve the interaction type name
+         (?/interaction_type_record obo/BFO_0000051 ?/int_type_name_field) ; BFO:has_part
+         (?/int_type_name_field rdf/type ccp/IAO_EXT_0000754) ; ccp:IRefWeb_interaction_type_record__interaction_type_name_field_value
+         (?/int_type_name_field rdfs/label ?/int_type_name)
+
+         ;; get the detection method
+         (?/interaction_record rdf/type ccp/IAO_EXT_0000715) ; ccp:IRefWeb_interaction_detection_method_record
+         (?/interaction_record obo/BFO_0000051 ?/interaction_detection_method_record) ; BFO:has_part
+         (?/interaction_detection_method_record rdf/type ccp/IAO_EXT_0000748) ; ccp:IRefWeb_interaction_detection_method_record__detection_method_identifier_field_value
+         (?/interaction_detection_method_record rdf/type ?/detection_method_id_field)
+         (?/detection_method_id_field obo/IAO_0000219 ?/detection_method_id) ; IAO:denotes
+
+         ;; there is a "super" record in IRefWeb that contains references to the interaction record and interactor record(s)
+         (?/super_record obo/BFO_0000051 ?/interaction_record) ; BFO:has_part
+
+         ;; select the other interactor
+         (?/super_record obo/BFO_0000051 ?/interactor_record1) ; BFO:has_part
+
+         ;; get the bioentity (protein) corresponding to interactor 1
+         (?/interaction_record1 rdf/type ccp/IAO_EXT_0000715) ; ccp:IRefWeb_interaction_detection_method_record
+         (?/interaction_record1 obo/BFO_0000051 ?/interaction_detection_method_record) ; BFO:has_part
+         (?/interaction_detection_method_record rdf/type ccp/IAO_EXT_0000748) ; ccp:IRefWeb_interaction_detection_method_record__detection_method_identifier_field_value
+         (?/interaction_detection_method_record rdf/type ?/detection_method_id_field)
+         (?/detection_method_id_field obo/IAO_0000219 ?/detection_method_id) ; IAO:denotes
+
+         ;; get the bioentity (protein) corresponding to interactor 1
+         (?/interaction_record1 rdf/type ccp/IAO_EXT_0000065) ; ccp:IRefWeb_interactor_record
+         (?/interaction_record1 obo/BFO_0000051 ?/id_field1) ; BFO:has_part
+         (?/id_field1 rdf/type ccp/IAO_EXT_0000755) ; ccp:IRefWeb_interactor_record__unique_identifier_field_value
+         (?/id_field1 rdf/type ?id1)
+         (?/id1 obo/IAO_0000219 ?/protein1) ; IAO:denotes
+         (!= ?/id1 ?/unique_interaction_id)
+
+         ;; get the protein label
+         (?/protein1 rdfs:label ?/protein1_label))
+
+  :reify ([?/interaction {:ln (:sha-1 ?/unique_interaction_id)
+                          :ns "ccp" :prefix "I_"}]
+          [?/restriction {:ln (:restriction)
+                          :ns "ccp" :prefix "R_"}]
+          [?/card_restriction {:ln (:restriction)
+                               :ns "ccp" :prefix "R_"}]
+          [?/protein1_sc {:ln (:sha-1 ?/interaction ?/protein1)
+                          :ns "ccp" :prefix "P_"}])
+
+  :options {:magic-prefixes [["franzOption_clauseReorderer" "franz:identity"]]}
+  }


Added a Clojure unit test for population.clj

error: pathspec 'clojure/test/net/auxesia/test/population.clj' did not match any file(s) known to git

--- clojure/test/net/auxesia/test/population.clj
+++ clojure/test/net/auxesia/test/population.clj
@@ -0,0 +1,81 @@
+;; The MIT License
+;;
+;; Copyright (c) 2011 John Svazic
+;;
+;; Permission is hereby granted, free of charge, to any person obtaining a copy
+;; of this software and associated documentation files (the "Software"), to deal
+;; in the Software without restriction, including without limitation the rights
+;; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+;; copies of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+;;
+;; The above copyright notice and this permission notice shall be included in
+;; all copies or substantial portions of the Software.
+;;
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+;; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+;; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+;; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+;; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+;; THE SOFTWARE.
+
+(ns net.auxesia.test.population
+  (:use [net.auxesia.population :as population] :reload)
+  (:use [clojure.test]))
+
+(deftest test-crossover
+  (testing "crossover property"
+    (let [p1 (population/generate 1024 0.8 0.1 0.05)
+		  p2 (population/generate 1024 0.0 0.1 0.05)
+		  p3 (population/generate 1024 1.0 0.1 0.05)]
+	  (is (= 80 (int (* 100 (:crossover p1)))))
+	  (is (= 0 (int (* 100 (:crossover p2)))))
+	  (is (= 100 (int (* 100 (:crossover p3))))))))
+
+(deftest test-elitism
+  (testing "elitism property"
+    (let [p1 (population/generate 1024 0.8 0.1 0.05)
+		  p2 (population/generate 1024 0.8 0.0 0.05)
+		  p3 (population/generate 1024 0.8 0.99 0.05)]
+	  (is (= 10 (int (* 100 (:elitism p1)))))
+	  (is (= 0 (int (* 100 (:elitism p2)))))
+	  (is (= 99 (int (* 100 (:elitism p3))))))))
+
+(deftest test-mutation
+  (testing "mutation property"
+    (let [p1 (population/generate 1024 0.8 0.1 0.05)
+		  p2 (population/generate 1024 0.8 0.1 0.0)
+		  p3 (population/generate 1024 0.8 0.1 1.0)]
+	  (is (= 5 (int (* 100 (:mutation p1)))))
+	  (is (= 0 (int (* 100 (:mutation p2)))))
+	  (is (= 100 (int (* 100 (:mutation p3))))))))
+
+(deftest test-population
+  (testing "population property"
+    (let [p (population/generate 1024 0.8 0.1 0.5)
+		  c (vec (sort-by #(:fitness %) (:population p)))]
+	  (testing "population size"
+	    (is (= 1024 (count (:population p))))
+		(is (= 1024 (count c))))
+	  (testing "The population is actually sorted"
+	    (loop [idx (int 0)]
+		  (when (< (count c) idx)
+		    (do
+			  (is (= (get c idx) (get (:population p) idx)))
+			  (recur (inc idx)))))))))
+
+(deftest test-evolve
+  (testing "evolve function"
+    (let [p1 (population/generate 1024 0.8 0.1 0.05)
+	      p2 (population/evolve p1)
+		  elitism (int (Math/round (* (count (:population p1)) (:elitism p1))))]
+	  (testing "to ensure the population properties were carried through an evolution"
+	    (is (= (:crossover p1) (:crossover p2)))
+		(is (= (:elitism p1) (:elitism p2)))
+		(is (= (:mutation p1) (:mutation p2)))
+		(is (= (count (:population p1)) (count (:population p2)))))
+	  (testing "to ensure the proper elitism took place"
+	    ;; Store the values for p2 into a map
+		(let [elitism-map (zipmap (:population p2) (repeat (count (:population p2)) 1))]
+		  (is (<= elitism (count (doall (filter #(contains? elitism-map %) (:population p1)))))))))))


[WM SD] set test server port to something unique

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-http-api.git/'


kata2: add linear search with iterate and for

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/schaueho/clojure-codekata.git/'


breaddth-first-search mock

breaddth-first-search mock

error: pathspec 'Breadth' did not match any file(s) known to git
error: pathspec 'First' did not match any file(s) known to git
error: pathspec 'Search' did not match any file(s) known to git
error: pathspec 'Shortest' did not match any file(s) known to git
error: pathspec 'Reach.clj' did not match any file(s) known to git


remove extraneous profile merging check

remove extraneous profile merging check

--- plugin/src/leiningen/figwheel.clj
+++ plugin/src/leiningen/figwheel.clj
@@ -175,29 +175,27 @@
      :excluded-profiles (or (-> project meta :excluded-profiles) [])}))

 (defn run-figwheel [project config-source-data paths-to-add build-ids]
-  (let [profile-merging (profile-merging? project)]
-    (run-local-project
-     project paths-to-add
-     '(require 'figwheel-sidecar.repl-api)
-     (figwheel-exec-body
-      `(do
-         (figwheel-sidecar.repl-api/system-asserts)
-         (figwheel-sidecar.repl-api/launch-from-lein
-          '~(create-config-source project config-source-data)
-        '~(vec build-ids)))))))
+  (run-local-project
+   project paths-to-add
+   '(require 'figwheel-sidecar.repl-api)
+   (figwheel-exec-body
+    `(do
+       (figwheel-sidecar.repl-api/system-asserts)
+       (figwheel-sidecar.repl-api/launch-from-lein
+        '~(create-config-source project config-source-data)
+        '~(vec build-ids))))))

 (defn run-config-check [project config-source-data options]
-  (let [profile-merging (profile-merging? project)]
-    (run-local-project
-     project
-     []
-     '(require 'figwheel-sidecar.repl-api)
-     (figwheel-exec-body
-      `(do
-         (figwheel-sidecar.repl-api/system-asserts)
-         (figwheel-sidecar.repl-api/validate-figwheel-conf
-          '~(create-config-source project config-source-data)
-          '~options))))))
+  (run-local-project
+   project
+   []
+   '(require 'figwheel-sidecar.repl-api)
+   (figwheel-exec-body
+    `(do
+       (figwheel-sidecar.repl-api/system-asserts)
+       (figwheel-sidecar.repl-api/validate-figwheel-conf
+        '~(create-config-source project config-source-data)
+        '~options)))))

 (defn run-build-once [project config-source-data paths-to-add build-ids]
   (run-local-project


Add initial code for slack-rtm lib

Add initial code for slack-rtm lib

error: pathspec 'src/in/co/sdslabs/slack_lens/lib/slack_rtm.clj' did not match any file(s) known to git

--- src/in/co/sdslabs/slack_lens/lib/slack_rtm.clj
+++ src/in/co/sdslabs/slack_lens/lib/slack_rtm.clj
@@ -0,0 +1,31 @@
+(ns in.co.sdslabs.slack-lens.lib.slack-rtm
+  (:require [clj-slack.rtm :as rtm]
+            [aleph.http :as http]
+            [manifold.stream :as s]))
+
+(defn- get-connection-map
+  [url token]
+  {:api-url url
+   :token token})
+
+(defn- get-rtm-ws-url
+  [url token]
+  (-> (get-connection-map url token)
+      rtm/start
+      :url))
+
+(defn- get-rtm-ws-connection
+  [url]
+  (if-let [socket (try
+                    @(http/websocket-client url)
+                    (catch Exception e
+                      nil))]
+    socket
+    nil))
+
+(defn connect
+  [url token]
+  (let [ws-url (get-rtm-ws-url url token)
+        conn (get-rtm-ws-connection ws-url)]
+    @(s/take! conn)
+    conn))


prun unused code

prun unused code

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/AustinC/persistent-internals.git/'


Introducing Clojure runner/test-suite

Introducing Clojure runner/test-suite

error: pathspec 'frameworks/clojure/clojure/test/codewars.clj' did not match any file(s) known to git

--- frameworks/clojure/clojure/test/codewars.clj
+++ frameworks/clojure/clojure/test/codewars.clj
@@ -0,0 +1,44 @@
+(ns clojure.test.codewars
+  (:require
+   [clojure.test :refer :all]
+   [clojure.stacktrace :as stack]))
+
+(defmulti codewars-report :type)
+
+(defmethod codewars-report :pass [m]
+  (with-test-out
+    (when (seq *testing-contexts*)
+      (->> (testing-contexts-str) (str "<IT::>") println))
+    (-> "<PASSED::>Test Passed" println with-test-out)))
+
+(defmethod codewars-report :fail [m]
+  (with-test-out
+    (when (seq *testing-contexts*)
+      (->> (testing-contexts-str) (str "<IT::>") println))
+    (print "<FAILED::>")
+    (when-let [message (:message m)] (print message "- "))
+    (print "expected:" (pr-str (:expected m)))
+    (println " actual:" (pr-str (:actual m)))))
+
+(defmethod codewars-report :error [m]
+  (with-test-out
+    (when (seq *testing-contexts*)
+      (->> (testing-contexts-str) (str "<IT::>") println))
+    (print "<ERROR::>")
+    (when-let [message (:message m)] (print message "- "))
+    (print "expected:" (pr-str (:expected m)))
+    (println " actual: ")
+    (let [actual (:actual m)]
+      (if (instance? Throwable actual)
+        (stack/print-cause-trace actual *stack-trace-depth*)
+        (prn actual)))))
+
+(defmethod codewars-report :begin-test-ns [_])
+(defmethod codewars-report :end-test-ns [_])
+
+(defmethod codewars-report :begin-test-var [m]
+  (with-test-out
+    (print "<DESCRIBE::>")
+    (-> m :var (. sym) println)))
+(defmethod codewars-report :end-test-var [_])
+(defmethod codewars-report :summary [_])


Create day8.clj

Create day8.clj

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

--- src/adventofcode/day8.clj
+++ src/adventofcode/day8.clj
@@ -0,0 +1,39 @@
+(ns adventofcode.day8
+  (:require [clojure.java.io :as io]
+            [clojure.string :as str]))
+
+(def input (-> "day8.clj"
+                io/resource
+                io/file
+                slurp
+                str/split-lines))
+
+
+(def replace-all-trash
+  (comp
+    #(str/replace % #"(\\.)" "#")
+    #(str/replace % #"(\\x[0-9a-f]{1,2})" "#")
+    #(str/replace % #"(\\\\)" "#")))
+
+(def text-symbols-count
+  (->> input
+    (map #(replace-all-trash %))
+	(map #(- (count %) 2))
+	(apply +)))
+
+(def escaped-text-symbols-count
+  (->> input
+    (map #(str/escape % {\" "\\\"" \\ "\\\\"}))
+    (map #(+ 2 (count %)))
+    (apply +)))
+
+(def code-symbols-count
+  (->> input
+  (map count)
+  (apply +)))
+
+(defn part-one []
+  (- code-symbols-count text-symbols-count))
+
+(defn part-two []
+  (- escaped-text-symbols-count code-symbols-count))


Very basic Clojure collections

Very basic Clojure collections

error: pathspec 'clojure/count_and_conj.clj' did not match any file(s) known to git

--- clojure/count_and_conj.clj
+++ clojure/count_and_conj.clj
@@ -0,0 +1,10 @@
+(use 'clojure.test)
+(let [a-list '(1 2 3) a-vec [1 2 3] a-set #{1 2 3} a-map {1 2 3 4}]
+  (is (= (count a-list) 3))
+  (is (= (count a-vec) 3))
+  (is (= (count a-set) 3))
+  (is (= (count a-map) 2))                   ; num of key-val pairs
+  (is (= (conj a-list 4) '(4 1 2 3)))        ; list: conj to front
+  (is (= (conj a-vec 4) [1 2 3 4]))          ; vec: conj adds to end
+  (is (= (conj a-set 4) #{3 2 1 4}))         ; order is irrelevant
+  (is (= (conj a-map [5 6]) {1 2 5 6 3 4}))) ; adds a new pair


lazy annoyances and beginning 'world generation'.

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/'


Type in leibniz code from the book as a strawman.

I translated it from Common Lisp while typing but IT DOES NOT WORK YET.
Also not all the rules are even typed in.

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

--- src/chapter3/leibniz.cljs
+++ src/chapter3/leibniz.cljs
@@ -0,0 +1,57 @@
+(ns chapter3.leibniz
+  (:refer chapter3.match :only [match atom?]))
+(defn nested-diff-sum? [d v]
+  (when-let [d2 (and (not (atom? v)) (match '(+ (? e1) (? e2)) v))]
+    (merge d d2)))
+(defn nested-diff-x1? [d v]
+  (assoc d :e1 v))
+(defn nested-diff-x2? [d v]
+  (= v (d :e1)))
+(def diff-sum-rule
+  ['differentiate
+   '(d (nested-diff-sum? e3) (? v1))
+   #(list '+ (list 'd (% :e1) (% :v1)) (list 'd (% :e2) (% :v1)))
+   "diff-sum-rule"])
+(def diff-x-rule
+  ['differentiate
+   '(d (nested-diff-x1? e1) (nested-diff-x2? e2))
+   1
+   "diff-x-rule"])
+; other rules go here ...
+
+(def rules
+  [diff-sum-rule diff-x-rule])
+;;; control scheme ;;;
+; (I don't know--that's just what the book calls it)
+(defn control []
+  ; TODO: current-formula is unbound
+  (loop [current-formula '()]
+      (if-let [new-formula (try-rules rules current-formula)]
+        (recur new-formula)
+        current-formula)))
+(defn try-rules [rules formula]
+  (loop [rules-left rules]
+    (cond
+      (empty? rules-left) nil ; no rules applied -- fail
+      (atom? formula) nil ; ??? (reduced to an atom?) -- fail
+      :else (if-let [new-formula (try-rule (first rules-left) formula)]
+              new-formula
+              (recur (rest rules-left) formula)))))
+(defn try-rule [rule expression]
+  (if (= current-goal (rule-goal rule))
+    (try-rule1 rule expression)))
+(defn try-rule1 [rule expression]
+  (cond
+    (atom? expression) nil
+    (match-state (rule-pattern rule) expression) (fire rule)
+    :else (try-rule-on-list rule expression)))
+(defn try-rule-on-list [rule expressions]
+  (if (empty? expression-list)
+    nil
+    (if-let [temp (try-rule1 rule (first expression-list))]
+      (cons temp (rest expression-list))
+      (when-let [temp (try-rule-on-list rule (rest expression-list))]
+        (cons (first expression-list) temp)))))
+(defn fire [rule]
+  (printfn (rule-name rule) " fires.")
+  ((rule-action rule)))


Remove debug printlns

Remove debug printlns

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/couragelabs/freefrog.git/'


[TH DG] STOP HIDING ERRORS!!!

[TH DG] STOP HIDING 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/form-works.git/'


these are basically routers

these are basically routers

trying to sort out the one that will handle the index page

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/seanhagen/baddit.git/'


A change

A change

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/batasrki/blog-post-app.git/'


clarify dox

clarify dox

--- src/metabase/api/card.clj
+++ src/metabase/api/card.clj
@@ -21,8 +21,8 @@
 (defendpoint GET "/"
   "Get all the `Cards` for an `Org`. With param `f` (default is `all`), restrict cards as follows:

-   *  `all`  Return all `Cards` for `Org`
-   *  `mine` Return all `Cards` created by current user for `Org`
+   *  `all`  Return all `Cards` for `Org` which were create by current user or are publicly visible
+   *  `mine` Return all `Cards` for `Org` created by current user
    *  `fav`  Return all `Cards` favorited by the current user"
   [org f]
   {org Required, f CardFilterOption}


better ella-test

better ella-test

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/burner-432e4b5d76/scrapefruit.git/'


Updated irefweb n-ary interactions rule to work with ccp ext ontology

error: pathspec 'resources/rules/post_identifier_merge/temp/irefweb/irefweb_n_ary_interactions.clj' did not match any file(s) known to git

--- resources/rules/post_identifier_merge/temp/irefweb/irefweb_n_ary_interactions.clj
+++ resources/rules/post_identifier_merge/temp/irefweb/irefweb_n_ary_interactions.clj
@@ -0,0 +1,99 @@
+;; ----------------------------------------------
+;; --------- IRefWeb N-Ary Interactions ---------
+;; ----------------------------------------------
+`{:name "irefweb-n-ary-interactions"
+  :description "This rule generates bio-representations for all n-ary protein interactions cataloged by IRefWeb, where n>2"
+  :head (
+         ;; create subclasses of interaction type and id
+         (?/interaction rdfs/subClassOf ?/interaction_type_id) ;interaction
+         (?/interaction rdfs/label ?/interaction_type_label) ; transfer label to the subclass
+
+         ;; create subclasses of the proteins
+         (?/protein1_sc rdfs/subClassOf ?/protein1)
+         (?/protein1_sc rdfs/label ?/protein1_label)
+
+         ;; create restriction for protein interator
+         (?/restriction rdf/type owl/Restriction)
+         (?/restriction owl/onProperty obo/RO_0000057) ; RO:has_participant
+         (?/restriction owl/someValuesFrom ?/protein1_sc)
+
+         ;; create a cardinality restriction of >2 on the has_participant property
+         (?/card_restriction rdf/type owl/Restriction)
+         (?/card_restriction owl/onProperty obo/RO_0000057) ; RO:has_participant
+         (?/card_restriction owl/minCardinality 3) ; n-ary interactions must have >2 participant
+
+         ;; join interaction restrictions
+         (?/interaction rdfs/subClassOf ?/restriction)
+         (?/interaction rdfs/subClassOf ?/card_restriction))
+
+  :body (
+         ;; get n-ary interaction records
+         (?/interaction_record rdf/type ccp/IAO_EXT_0000064) ; ccp:IRefWeb_interaction_record
+         (?/interaction_record obo/BFO_0000051 ?/edge_type_field_value) ; BFO:has_part
+
+         ;; get interaction edge type
+         (?/edge_type_field_value rdf/type ccp/IAO_EXT_0000741) ; ccp:IRefWeb_interaction_record__edge_type_field_value
+         (?/edge_type_field_value rdf/type ?/edge_type_ice_id)
+         (?/edge_type_ice_id obo/IAO_0000219 ?/edge_type) ; IAO:denotes
+         (= ?/edge_type "C") ; "C" signifies "complex" in IRefWeb, but really mean n-ary interaction where n>2
+
+         ;; get the unique interaction identifier
+         (?/interaction_record obo/BFO_0000051 ?/interaction_checksum_field_value) ; BFO:has_part
+         (?/interaction_checksum_field_value rdf/type ccp/IAO_EXT_0000735) ; ccp:IRefWeb_interaction_record__check_sum_interaction_field_value
+         (?/interaction_checksum_field_value rdf/type ?/edge_type_ice_id)
+         (?/edge_type_ice_id obo/IAO_0000219 ?/unique_interaction_id) ; IAO:denotes
+
+         ;; get the interaction type name and ID
+         (?/interaction_type_record rdf/type ccp/IAO_EXT_0000716) ; ccp:IRefWeb_interaction_type_record
+         (?/interaction_type_record obo/BFO_0000051 ?/int_type_id_field) ; BFO:has_part
+         (?/int_type_id_field rdf/type ccp/IAO_EXT_0000753) ; ccp:IRefWeb_interaction_type_record__interaction_type_identifier_field_value
+         (?/int_type_id_field rdf/type ?/int_type_id_ice)
+         (?/int_type_id_ice obo/IAO_0000219 ?/int_type_id) ; IAO:denotes
+         (?/int_type_id rdfs/label ?/int_type_label)
+         ;; retrieve the interaction type name
+         (?/interaction_type_record obo/BFO_0000051 ?/int_type_name_field) ; BFO:has_part
+         (?/int_type_name_field rdf/type ccp/IAO_EXT_0000754) ; ccp:IRefWeb_interaction_type_record__interaction_type_name_field_value
+         (?/int_type_name_field rdfs/label ?/int_type_name)
+
+         ;; get the detection method
+         (?/interaction_record rdf/type ccp/IAO_EXT_0000715) ; ccp:IRefWeb_interaction_detection_method_record
+         (?/interaction_record obo/BFO_0000051 ?/interaction_detection_method_record) ; BFO:has_part
+         (?/interaction_detection_method_record rdf/type ccp/IAO_EXT_0000748) ; ccp:IRefWeb_interaction_detection_method_record__detection_method_identifier_field_value
+         (?/interaction_detection_method_record rdf/type ?/detection_method_id_field)
+         (?/detection_method_id_field obo/IAO_0000219 ?/detection_method_id) ; IAO:denotes
+
+         ;; there is a "super" record in IRefWeb that contains references to the interaction record and interactor record(s)
+         (?/super_record obo/BFO_0000051 ?/interaction_record) ; BFO:has_part
+
+         ;; select the other interactor
+         (?/super_record obo/BFO_0000051 ?/interactor_record1) ; BFO:has_part
+
+         ;; get the bioentity (protein) corresponding to interactor 1
+         (?/interaction_record1 rdf/type ccp/IAO_EXT_0000715) ; ccp:IRefWeb_interaction_detection_method_record
+         (?/interaction_record1 obo/BFO_0000051 ?/interaction_detection_method_record) ; BFO:has_part
+         (?/interaction_detection_method_record rdf/type ccp/IAO_EXT_0000748) ; ccp:IRefWeb_interaction_detection_method_record__detection_method_identifier_field_value
+         (?/interaction_detection_method_record rdf/type ?/detection_method_id_field)
+         (?/detection_method_id_field obo/IAO_0000219 ?/detection_method_id) ; IAO:denotes
+
+         ;; get the bioentity (protein) corresponding to interactor 1
+         (?/interaction_record1 rdf/type ccp/IAO_EXT_0000065) ; ccp:IRefWeb_interactor_record
+         (?/interaction_record1 obo/BFO_0000051 ?/id_field1) ; BFO:has_part
+         (?/id_field1 rdf/type ccp/IAO_EXT_0000755) ; ccp:IRefWeb_interactor_record__unique_identifier_field_value
+         (?/id_field1 rdf/type ?id1)
+         (?/id1 obo/IAO_0000219 ?/protein1) ; IAO:denotes
+         (!= ?/id1 ?/unique_interaction_id)
+
+         ;; get the protein label
+         (?/protein1 rdfs:label ?/protein1_label))
+
+  :reify ([?/interaction {:ln (:sha-1 ?/unique_interaction_id)
+                          :ns "ccp" :prefix "I_"}]
+          [?/restriction {:ln (:restriction)
+                          :ns "ccp" :prefix "R_"}]
+          [?/card_restriction {:ln (:restriction)
+                               :ns "ccp" :prefix "R_"}]
+          [?/protein1_sc {:ln (:sha-1 ?/interaction ?/protein1)
+                          :ns "ccp" :prefix "P_"}])
+
+  :options {:magic-prefixes [["franzOption_clauseReorderer" "franz:identity"]]}
+  }


Bumbing cheshire/json version

Bumbing cheshire/json 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/ChallenHB/samsara.git/'


Fixes team.permissions for ADMIN

Fixes team.permissions for ADMIN

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/'


add sasuga

add sasuga

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

--- src/panpan/sasuga.clj
+++ src/panpan/sasuga.clj
@@ -0,0 +1,28 @@
+(ns panpan.sasuga
+  (:require
+    [clojure.string  :as str]
+    [jubot.scheduler :as js]
+    [jubot.handler   :as jh]
+    [jubot.brain     :as jb]))
+
+(def ^:const SASUGA_KEY "sasugaore")
+
+(defn- get-sasuga-count
+  []
+  (if-let [i (jb/get SASUGA_KEY)] i 0))
+
+(defn sasuga-handler
+  [{:keys [user] :as arg}]
+  (jh/regexp arg
+    #"^s$"
+    (fn [& _]
+      (let [i (get-sasuga-count)]
+        (jb/set SASUGA_KEY (inc i))
+        (str "さすが俺" (str/join (repeat i "！")))))))
+
+(def sasuga-schedule
+  (js/schedules
+    "0 0 9 * * * *"
+    (fn [& _]
+      (str "昨日は " (get-sasuga-count) "さすが だったよ")
+      (jb/set SASUGA_KEY 0))))


Use our latest handle-errors

Use our 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/electorate-works.git/'


Disable media-type print-method

Disable media-type print-method

It causes problems

--- src/yada/media_type.clj
+++ src/yada/media_type.clj
@@ -46,7 +46,8 @@
            (apply str (for [[k v] (:parameters mt)]
                         (str ";" k "=" v))))))))

-(defmethod clojure.core/print-method MediaTypeMap
+;; (Causes problems)
+#_(defmethod clojure.core/print-method MediaTypeMap
   [mt ^java.io.Writer writer]
   (.write writer (format "#yada.media-type[%s%s%s]"
                          (media-type mt)


Add executor abstraction.

Add executor abstraction.

error: pathspec 'src/uxbox/msgbus/executor.clj' did not match any file(s) known to git

--- src/uxbox/msgbus/executor.clj
+++ src/uxbox/msgbus/executor.clj
@@ -0,0 +1,53 @@
+;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
+;; All rights reserved.
+
+(ns uxbox.msgbus.executor
+  "A basic abstraction for executor services."
+  (:import java.util.concurrent.ForkJoinPool
+           java.util.concurrent.Executor
+           java.util.concurrent.Executors
+           java.util.concurrent.ThreadFactory))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; The main abstraction definition.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defprotocol IExecutor
+  (-execute [_ task] "Execute a task in a executor."))
+
+;; (defprotocol IExecutorService
+;;   (-submit [_ task] "Submit a task and return a promise."))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Implementation
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(extend-type Executor
+  IExecutor
+  (-execute [this task]
+    (.execute this ^Runnable task)))
+
+(defn- thread-factory-adapter
+  "Adapt a simple clojure function into a
+  ThreadFactory instance."
+  [func]
+  (reify ThreadFactory
+    (^Thread newThread [_ ^Runnable runnable]
+      (func runnable))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Public Api
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(def ^:const +default+ (ForkJoinPool/commonPool))
+(def ^:const +default-thread-factory+ (Executors/defaultThreadFactory))
+
+(defn execute!
+  "Execute a task in a provided executor.
+
+  A task is a plain clojure function or
+  jvm Runnable instance."
+  ([task]
+   (-execute +default+ task))
+  ([executor task]
+   (-execute executor task)))


Add beginnings of a zip helper ns

Add beginnings of a zip helper ns

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

--- src/overtone/helpers/zip.clj
+++ src/overtone/helpers/zip.clj
@@ -0,0 +1,84 @@
+(ns
+    ^{:doc "Useful zip manipulation fns"
+      :author "Sam Aaron"}
+  overtone.helpers.zip
+  (:import [java.util.zip ZipFile ZipEntry ZipInputStream]
+           [java.io StringWriter File FileInputStream FileOutputStream])
+  (:use [overtone.helpers file])
+  (:require [org.satta.glob :as satta-glob]
+            [clojure.java.io :as io]))
+
+(defn zip-file
+  "Returns an open java.util.zip.ZipFile object representing the zip file
+  pointed to by path."
+  [path]
+  (let [path (resolve-tilde-path path)
+        file (File. path)]
+    (ZipFile. file)))
+
+(defn zip-entry
+  "Returns a java.util.zip.ZipEntry object representing the entry with name
+  entry-name within the zipfile pointed to by path. Ensures zipfile is closed.
+  Returns nil if entry-name not found within zipfile."
+  [path entry-name]
+  (let [zip   (zip-file path)
+        entry (.getEntry zip entry-name)]
+    (.close zip)
+    entry))
+
+(defn zip-ls
+  "Returns a seq of java.util.zip.ZipEntry objects representing the contents of
+   the zip file at the specified path. Ensures zipfile is closed"
+  [path]
+  (let [zip     (zip-file path)
+        entries (.entries zip)
+        entries (doall (enumeration-seq entries))]
+    (.close zip)
+    entries))
+
+(defn zip-cat
+  "Returns a string containing the contents of the specified entry within the
+  zipfile pointed to by path. Ensures zipfile is closed. Returns nil if
+  entry-name not found within zipfile."
+  [path entry-name]
+  (let [sw    (StringWriter.)
+        zip   (zip-file path)
+        entry (zip-entry path entry-name)]
+    (if (and zip entry)
+      (do
+        (io/copy (.getInputStream zip entry) sw)
+        (.close zip)
+        (.toString sw))
+      (do
+        (.close zip)
+        nil))))
+
+(defn unzip
+  "Unzip a zip file pointed to by zip-path into dest-path dir. Does not allow
+  zip file content paths to contain .. parent shortcut for security reasons i.e.
+  all unzipped files will be extracted beneath dest-path. If zip file contains
+  compressed subdirectories, these will be created too."
+  [zip-path dest-path]
+  (let [zip-path  (resolve-tilde-path zip-path)
+        dest-path (resolve-tilde-path dest-path)]
+    (when-not (dir-exists? dest-path)
+      (throw (Exception. (str "Destination directory does not exist: " dest-path))))
+    (when-not (file-exists? zip-path)
+      (throw (Exception. (str "Source zip file does not exist: " zip-path))))
+
+    (let [zip     (zip-file zip-path)
+          entries (.entries zip)
+          entries (doall (enumeration-seq entries))]
+          (dorun
+     (map
+      (fn [entry]
+        (let [name           (.getName entry)
+              full-dest-path (mk-path dest-path name)]
+          (when (contains-parent-shortcut? full-dest-path)
+            (throw (Exception. "Security warning - attempted to specify a path which contains the .. previous dir shortcut. Aborting operation.")))
+          (if (.isDirectory entry)
+            (mkdir-p! full-dest-path)
+            (let [is (.getInputStream zip entry)
+                  fs (FileOutputStream. full-dest-path)]
+              (io/copy is fs)))))
+      entries)))))


apropos is sometimes useful in nrepl

apropos is sometimes useful in nrepl

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/sw1nn/dotfiles.git/'


bump cider-nrepl version.

bump cider-nrepl version.


clear out old crap that causes trouble

clear out old crap that causes trouble


more smart interactions

more smart interactions

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/'


Rule to attach DrugBank names to drugs

Rule to attach DrugBank names to drugs

error: pathspec 'kabob-build/src/main/resources/edu/ucdenver/ccp/kabob/build/rules/bio_labels/drugs.clj' did not match any file(s) known to git

--- kabob-build/src/main/resources/edu/ucdenver/ccp/kabob/build/rules/bio_labels/drugs.clj
+++ kabob-build/src/main/resources/edu/ucdenver/ccp/kabob/build/rules/bio_labels/drugs.clj
@@ -0,0 +1,38 @@
+{:name "drug-labels-DrugBank"
+
+ ;; The query pattern used to retrieve the data that will be used to construct
+ ;; the new triples.
+ :body
+ '(;; field value that contains the identifier
+   (_/drugbank_id_field kiao/hasTemplate iaodrugbank/DrugBankDrugRecord_drugBankIdDataField1)
+   (_/drugbank_id_field rdf/type kiao/FieldValue)
+   ;; the file record in which the field value appeared (record has-part
+   ;; field-value)
+   (_/record obo/BFO_0000051 _/drugbank_id_field)
+   (_/record kiao/hasTemplate iaodrugbank/DrugBankDrugRecordSchema1)
+   ;; the record will also have fields for the drug name
+   (_/record obo/BFO_0000051 _/drug_name_field)
+   (_/drug_name_field kiao/hasTemplate iaodrugbank/DrugBankDrugRecord_drugNameDataField1)
+   (_/drug_name_field obo/IAO_0000219 ?/drug_name)
+   ;; ICE that denotes a subclass of drug .
+   (_/drugbank_id_field obo/IAO_0000219 _/ice)
+   (_/ice kiao/denotesSubClassOf obo/CHEBI_23888) ;; CHEBI:drug
+   (_/ice obo/IAO_0000219 ?/bio))
+
+ ;; The form of the new triples that will be constructed.
+ :head
+ '((?/bio rdfs/label ?/drug_name))
+
+ ;; In this case no `:reify` entry is required, since all of the data required
+ ;; to form the new triples already exist.
+
+ :options
+ {:magic-prefixes
+  [;; AllegroGraph processing directives; http://franz.com/agraph/support/documentation/current/sparql-reference.html#header2-138
+
+   ;; AllegroGraph should use "chunk at a time" processing.
+   ;; This reduces memory consumption at the cost of query
+   ;; execution time.  Given that the BIO entity set is
+   ;; potentially quite large and that this is not a realtime
+   ;; operation, this is not an unreasonable trade-off.
+   ["franzOption_chunkProcessingAllowed" "franz:yes"]]}}


move lein profile under dot/

move lein profile under dot/

error: pathspec 'dot/lein/profiles.clj' did not match any file(s) known to git

--- dot/lein/profiles.clj
+++ dot/lein/profiles.clj
@@ -0,0 +1,10 @@
+{:user {:plugins [[lein-vanity "0.1.0"]
+                  [jonase/eastwood "0.0.2"]
+                  [lein-swank "1.4.4"]]
+        :dependencies {clj-stacktrace "0.2.4"}
+        :injections [(let [orig (ns-resolve (doto 'clojure.stacktrace require)
+                                            'print-cause-trace)
+                           new (ns-resolve (doto 'clj-stacktrace.repl require)
+                                           'pst)]
+                       (alter-var-root orig (constantly @new)))]}}
+


Double db connection pool size

Double db connection pool size

We are getting timeouts trying to acquire db connections, so we'll see
if a larger pool helps.

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/'


A little REPL convenience.

A little REPL convenience.

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/mtravers/incidents.git/'


check the specific appender so this is actually correct

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/election-mail-works.git/'


Create mongowrapper.clj

Create mongowrapper.clj

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

--- src/extras/mongowrapper.clj
+++ src/extras/mongowrapper.clj
@@ -0,0 +1,40 @@
+; Iyye - AI agent
+; Copyright (C) 2016-2017  Sasha Yumzya
+
+; This program is free software: you can redistribute it and/or modify
+; it under the terms of the GNU Affero General Public License as
+; published by the Free Software Foundation, either version 3 of the
+; License, or (at your option) any later version.
+
+; This program is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+; GNU Affero General Public License for more details.
+
+; You should have received a copy of the GNU Affero General Public License
+; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+(ns extras.mongowrapper
+  (:require [monger.core :as mg]
+            [monger.collection :as mc])
+  (:import [com.mongodb MongoOptions ServerAddress]
+           [com.mongodb DB WriteConcern]
+           (org.bson.types ObjectId)))
+
+(defn add-entry [doc dbname entry]
+  (let [conn (mg/connect)
+        db (mg/get-db conn (str "iyye-" dbname))]
+    (mc/insert db doc entry)))
+
+(defn get-entry [doc dbname key]
+  (let [conn (mg/connect)
+        db (mg/get-db conn (str "iyye-" dbname))]
+    (mc/find-maps db doc key)))
+
+; drop all
+;var dbs = db.getMongo().getDBNames()
+;for(var i in dbs) {
+; db              = db.getMongo () .getDB (dbs [i])          ;
+; print           ("dropping db " + db.getName ())           ;
+; db.dropDatabase ()                                         ;
+; }


immutant scheduler wrapper added

immutant scheduler wrapper added

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

--- src/hellhound/scheduler.clj
+++ src/hellhound/scheduler.clj
@@ -0,0 +1,7 @@
+(ns hellhound.scheduler
+  "A wrapper around the immutant scheduling namespace."
+  (:require [immutant.scheduling :as s]))
+
+
+(def schedule s/schedule)
+(def stop     s/stop)


fix queue/initialize - thanks mrichards

fix queue/initialize - thanks mrichards

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/election-authority-works.git/'


Updated rgd gene uniprot protein coding rule to work with ccp ext ontology

error: pathspec 'resources/rules/post_identifier_merge/ice_to_bio/rgd_gene_uniprot_protein_mapping.clj' did not match any file(s) known to git

--- resources/rules/post_identifier_merge/ice_to_bio/rgd_gene_uniprot_protein_mapping.clj
+++ resources/rules/post_identifier_merge/ice_to_bio/rgd_gene_uniprot_protein_mapping.clj
@@ -0,0 +1,32 @@
+;; ----------------------------------------------------
+;; --------- RGD Gene Uniprot Protein Mapping ---------
+;; ----------------------------------------------------
+`{:name "rgd-gene-uniprot-protein-mapping"
+   :description "This rule maps rgd genes to uniprot proteins"
+   :head (
+          ;; map proteins to genes
+          (?/protein kso/has_indirect_template ?/gene)
+
+          ;; create has indirect template restriction
+          (?/indirect_template_restriction rdf/type owl/Restriction)
+          (?/indirect_template_restriction owl/onProperty kso/has_indirect_template)
+          (?/indirect_template_restriction owl/someValuesFrom ?/gene)
+          (?/protein rdfs/subClassOf ?/indirect_template_restriction))
+
+    :body ((?/record rdf/type ccp/IAO_EXT_0000XXX) ; ccp:RGD_gene_record
+           (?/record obo/BFO_0000051 ?/field_1_field_value) ; BFO:has_part
+           (?/field_1_field_value rdf/type ccp/IAO_EXT_0000XXX) ; ccp:RGD_gene_record__UniProt_identifier_field_value
+           (?/field_1_field_value rdf/type ?/field_1_ice_id)
+           (?/field_1_ice_id obo/IAO_0000219 ?/protein) ; IAO:denotes
+
+           ;; retrieve the external exact match identifier
+           (?/record obo/BFO_0000051 ?/field_2_field_value) ; BFO:has_part
+           (?/field_2_field_value rdf/type ccp/IAO_EXT_0000XXX) ; ccp:RGD_gene_record__gene_identifier_field_value
+           (?/field_2_field_value rdf/type ?/field_2_ice_id)
+           (?/field_2_ice_id obo/IAO_0000219 ?/gene)) ; IAO:denotes
+
+    :reify ([?/indirect_template_restriction1 {:ln (:restriction)
+                   :ns "ccp" :prefix "R_"}])
+
+    :options {:magic-prefixes [["franzOption_clauseReorderer" "franz:identity"]]}
+}


Clean up mounting logic a bit

Clean up mounting logic a bit

Make it so that unmounting always cleans up directory

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


Kitt example

Kitt example

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

--- src/examples/kitt.clj
+++ src/examples/kitt.clj
@@ -0,0 +1,58 @@
+(ns examples.kitt
+  (:require [launchpad.core :as lp])
+  (:gen-class))
+
+(defn dim
+  "Dim the row, e.g. 3 becomes 2 and 0 stays 0."
+  [row]
+  (vec (map #(max 0 (dec %)) row)))
+
+(defn next-posdir
+  "Returns [pos dir] for the next position and direction."
+  [pos dir]
+  (let [ops {:right +, :left -}
+        pos ((ops dir) pos 1)]
+    (cond
+      (< pos 0)
+      [1 :right]
+
+      (> pos 7)
+      [6 :left]
+
+      :else
+      [pos dir])))
+
+(defn render
+  "Row (vector of red intensity) to launchpad state"
+  [row state]
+  (assoc state :grid
+         (reduce merge {}
+                 (map (fn [x v] {[x 0] [v 0]})
+                      (range 8) row))))
+
+(defn calc-dur
+  "The duration in milliseconds for one step"
+  [bpm]
+  (* 1000 ; to milliseconds
+     60 ; to seconds
+     (/ 1.0 ; to minutes
+        bpm
+        8))) ; per step
+
+(defn run
+  [bpm]
+  (let [ms (calc-dur bpm)
+        pad (lp/get-launchpad)]
+    (.reset pad)
+    (loop [row (vec (repeat 8 0))
+           [pos dir] [0 :right]]
+      (let [row (dim row)
+            row (assoc row pos 3)]
+        (.update pad (partial render row))
+        (Thread/sleep ms)
+        (recur row (next-posdir pos dir))))))
+
+(defn -main
+  ([] (run 100))
+  ([bpm] (run (read-string bpm))))
+


start extracting bundle from history

start extracting bundle from history


Additional four tests added into server_test.clj

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

--- src/emender_jenkins/server_test.clj
+++ src/emender_jenkins/server_test.clj
@@ -0,0 +1,89 @@
+;
+;  (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 emender-jenkins.core-test
+  (:require [clojure.test :refer :all]
+            [emender-jenkins.server :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))
+
+;
+; Tests for various function definitions
+;
+
+
+(deftest test-return-file-existence
+    "Check that the emender-jenkins.server/return-file definition exists."
+    (testing "if the emender-jenkins.server/return-file definition exists."
+        (is (callable? 'emender-jenkins.server/return-file))))
+
+
+(deftest test-render-front-page-existence
+    "Check that the emender-jenkins.server/render-front-page definition exists."
+    (testing "if the emender-jenkins.server/render-front-page definition exists."
+        (is (callable? 'emender-jenkins.server/render-front-page))))
+
+
+(deftest test-render-error-page-existence
+    "Check that the emender-jenkins.server/render-error-page definition exists."
+    (testing "if the emender-jenkins.server/render-error-page definition exists."
+        (is (callable? 'emender-jenkins.server/render-error-page))))
+
+
+(deftest test-get-hostname-existence
+    "Check that the emender-jenkins.server/get-hostname definition exists."
+    (testing "if the emender-jenkins.server/get-hostname definition exists."
+        (is (callable? 'emender-jenkins.server/get-hostname))))
+
+
+(deftest test-get-api-command-existence
+    "Check that the emender-jenkins.server/get-api-command definition exists."
+    (testing "if the emender-jenkins.server/get-api-command definition exists."
+        (is (callable? 'emender-jenkins.server/get-api-command))))
+
+
+(deftest test-api-call-handler-existence
+    "Check that the emender-jenkins.server/api-call-handler definition exists."
+    (testing "if the emender-jenkins.server/api-call-handler definition exists."
+        (is (callable? 'emender-jenkins.server/api-call-handler))))
+
+
+(deftest test-restcall-options-handler-existence
+    "Check that the emender-jenkins.server/restcall-options-handler definition exists."
+    (testing "if the emender-jenkins.server/restcall-options-handler definition exists."
+        (is (callable? 'emender-jenkins.server/restcall-options-handler))))
+
+
+(deftest test-restcall-head-handler-existence
+    "Check that the emender-jenkins.server/restcall-head-handler definition exists."
+    (testing "if the emender-jenkins.server/restcall-head-handler definition exists."
+        (is (callable? 'emender-jenkins.server/restcall-head-handler))))
+
+
+(deftest test-non-api-call-handler-existence
+    "Check that the emender-jenkins.server/non-api-call-handler definition exists."
+    (testing "if the emender-jenkins.server/non-api-call-handler definition exists."
+        (is (callable? 'emender-jenkins.server/non-api-call-handler))))
+
+
+(deftest test-handler-existence
+    "Check that the emender-jenkins.server/handler definition exists."
+    (testing "if the emender-jenkins.server/handler definition exists."
+        (is (callable? 'emender-jenkins.server/handler))))
+


Play with mud

Play with mud

error: pathspec 'src/overtone_workspace/mud-work.clj' did not match any file(s) known to git

--- src/overtone_workspace/mud-work.clj
+++ src/overtone_workspace/mud-work.clj
@@ -0,0 +1,59 @@
+(use '[overtone.live])
+(use '[mud.core])
+(require '[mud.timing :as time])
+
+;;set the rate
+(ctl time/root-s :rate 8.)
+
+;;Set timing controls on a Synth
+
+(defsynth seqer
+"Plays a single channel audio buffer."
+[buf 0 rate 1 out-bus 0 beat-num 0 pattern 0  num-steps 8
+ beat-bus (:count time/main-beat)     ;; Our beat count
+ beat-trg-bus (:beat time/main-beat)  ;; Our beat trigger
+ amp 0.7
+ rate-start 0.1
+ rate-limit 0.9]
+(let [cnt      (in:kr beat-bus)
+      rander (mod cnt 1)
+      beat-trg (in:kr beat-trg-bus)
+      bar-trg  (and (buf-rd:kr 1 pattern cnt)
+                    (= beat-num (mod cnt num-steps))
+                    beat-trg)
+      vol      (set-reset-ff bar-trg)]
+  (out out-bus (* vol amp (scaled-play-buf :num-channels 2 :buf-num buf :rate (t-rand:kr rate-start rate-limit rander) :trigger bar-trg)))))
+
+
+(defonce kick-seq (buffer 256))
+(doall (map #(seqer :beat-num %1 :pattern kick-seq :num-steps 8 :buf (freesound-sample 194114)) (range 0 8)))
+
+(pattern! kick-seq [1 0 0 1 0 0 0]
+                   [1 0 0 1 0 1 0]
+                   [1 0 0 1 0 0 0]
+                   [1 0 0 1 0 1 0])
+
+(pattern! kick-seq [1 1 1 1 [0 1] 1 1 1])
+
+(stop)
+
+(defonce pulse-s (freesound-sample 194114))
+
+;;Every 256 beat trigger sample
+(on-beat-trigger 256 #(mono-player pulse-s))
+
+;;Dividing beats into 32 parts play sample at 31st beat
+(sample-trigger 31 32 #(mono-player pulse-s))
+
+;;Or express as a list pattern with 1 => hit.
+(sample-trigger [1 0 0 0 1 0 1 0] #(mono-player pulse-s))
+
+;;Fire once on beat 0 dividing beats into 128 parts and then remove callback.
+(one-time-beat-trigger 0 128 #(mono-player pulse-s))
+
+;;Callbacks can take the current beat as an argument, useful for varying a sample:
+(one-time-beat-trigger 0 128 (fn [beat] (mono-player pulse-s :rate (if (= 0 (mod beat 256)) 1.0 1.1))))
+
+;;Remove all registered triggers
+(remove-all-sample-triggers)
+(remove-all-beat-triggers)


Fix typo

Fix typo

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 http

add http

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/mprokopov/privat24-manager.git/'


Placeholder for random number generating component

error: pathspec 'src/polismath/components/random.clj' did not match any file(s) known to git


Adapt Groovy VideoExample to Clojure

Adapt Groovy VideoExample to Clojure

error: pathspec 'language-adaptors/rxjava-clojure/src/examples/clojure/rx/lang/clojure/examples/video_example.clj' did not match any file(s) known to git

--- language-adaptors/rxjava-clojure/src/examples/clojure/rx/lang/clojure/examples/video_example.clj
+++ language-adaptors/rxjava-clojure/src/examples/clojure/rx/lang/clojure/examples/video_example.clj
@@ -0,0 +1,161 @@
+(ns rx.lang.clojure.examples.video-example
+  (:import [rx Observable Observer Subscription]))
+
+; Adapted from language-adaptors/rxjava-groovy/src/examples/groovy/rx/lang/groovy/examples/VideoExample.groovy
+
+(declare get-video-grid-for-display)
+(declare get-list-of-lists)
+(declare video-list)
+(declare video-list->videos)
+(declare video->metadata)
+(declare video->bookmark)
+(declare video->rating)
+
+; just use a simple lock to keep multi-threaded output fr beiom ng a interlea llved
+(def print-lock (Object.))
+
+(defn example1
+  [on-complete]
+  (println "Starting example 1")
+  ; this will print the dictionary for each video and is a good representation of
+  ; how progressive rendering could work
+  (println "---- sequence of video dictionaries ----")
+  (-> (get-video-grid-for-display 1)
+    (.subscribe #(locking print-lock (println %))
+                #(locking print-lock (println "Error: " %))
+                #(do
+                   (println "Finished example 1")
+                   (on-complete)))))
+
+(defn example2
+  [on-complete]
+  (println "Starting example 2")
+  ; onNext will be called once with a list and demonstrates how a sequence can be combined
+  ; for document style responses (most webservices)
+  (-> (get-video-grid-for-display 1)
+    .toList
+    (.subscribe #(println "\n ---- single list of video dictionaries ----\n" %)
+                #(println "Error: " %)
+                #(do
+                   (println "Finished Example 2")
+                   (println "Exiting")
+                   (on-complete)))))
+
+(defn -main
+  [& args]
+  ; Run example1 followed by example2, then exit
+  (example1 (fn [] (example2 #(System/exit 0)))))
+
+(defn ^Observable get-video-grid-for-display
+  "
+  Demonstrate how Rx is used to compose Observables together such as
+  how a web service would to generate a JSON response.
+
+  The simulated methods for the metadata represent different services
+  that are often backed by network calls.
+
+  This will return a sequence of maps like this:
+
+   {:id 1000, :title video-1000-title, :length 5428, :bookmark 0,
+    :rating {:actual 4 :average 3 :predicted 0}}
+  "
+  [user-id]
+  (-> (get-list-of-lists user-id)
+    (.mapMany (fn [list]
+                ; for each VideoList we want to fetch the videos
+                (-> (video-list->videos list)
+                  (.take 10) ; we only want the first 10 of each list
+                  (.mapMany (fn [video]
+                              ; for each video we want to fetch metadata
+                              (let [m (-> (video->metadata video)
+                                          (.map (fn [md]
+                                                  ; transform to the data and format we want
+                                                  {:title  (:title md)
+                                                  :length (:duration md) })))
+                                    b (-> (video->bookmark video user-id)
+                                          (.map (fn [position]
+                                                  {:bookmark position})))
+                                    r (-> (video->rating video user-id)
+                                          (.map (fn [rating]
+                                                  {:rating {:actual    (:actual-star-rating rating)
+                                                            :average   (:average-star-rating rating)
+                                                            :predicted (:predicted-star-rating rating) }})))]
+                                ; join these together into a single, merged map for each video
+                                (Observable/zip m b r (fn [m b r]
+                                                        (merge {:id video} m b r)))))))))))
+
+
+; A little helper to make the future-based observables a little less verbose
+; this has possibilities ...
+(defn- ^Observable future-observable
+  "Returns an observable that executes (f observer) in a future, returning a
+  subscription that will cancel the future."
+  [f]
+  (Observable/create (fn [^Observer observer]
+                       (let [f (future (f observer))]
+                         (Observable/createSubscription #(future-cancel f))))))
+
+(defn ^Observable get-list-of-lists
+  "
+  Retrieve a list of lists of videos (grid).
+
+  Observable<VideoList> is the \"push\" equivalent to List<VideoList>
+  "
+  [user-id]
+  (future-observable (fn [^Observer observer]
+                       (Thread/sleep 180)
+                       (dotimes [i 15]
+                         (.onNext observer (video-list i)))
+                       (.onCompleted observer))))
+
+
+(comment (.subscribe (get-list-of-lists 7777) println))
+
+(defn video-list
+  [position]
+  {:position position
+   :name     (str "ListName-" position) })
+
+(defn ^Observable video-list->videos
+  [{:keys [position] :as video-list}]
+  (Observable/create (fn [^Observer observer]
+                       (dotimes [i 50]
+                         (.onNext observer (+ (* position 1000) i)))
+                       (.onCompleted observer)
+                       (Observable/noOpSubscription))))
+
+(comment (.subscribe (video-list->videos (video-list 2)) println))
+
+(defn ^Observable video->metadata
+  [video-id]
+  (Observable/create (fn [^Observer observer]
+                       (.onNext observer {:title (str "video-" video-id "-title")
+                                          :actors ["actor1" "actor2"]
+                                          :duration 5428 })
+                       (.onCompleted observer)
+                       (Observable/noOpSubscription))))
+
+(comment (.subscribe (video->metadata 10) println))
+
+(defn ^Observable video->bookmark
+  [video-id user-id]
+  (future-observable (fn [^Observer observer]
+                       (Thread/sleep 4)
+                       (.onNext observer (if (> (rand-int 6) 1) 0 (rand-int 4000)))
+                       (.onCompleted observer))))
+
+(comment (.subscribe (video->bookmark 112345 99999) println))
+
+(defn ^Observable video->rating
+  [video-id user-id]
+  (future-observable (fn [^Observer observer]
+                       (Thread/sleep 10)
+                       (.onNext observer {:video-id              video-id
+                                          :user-id               user-id
+                                          :predicted-star-rating (rand-int 5)
+                                          :average-star-rating   (rand-int 5)
+                                          :actual-star-rating    (rand-int 5) })
+                       (.onCompleted observer))))
+
+(comment (.subscribe (video->rating 234345 8888) println))
+


Failing tests around quirky clj-expr parsing

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/'


Testing Swift task

Testing Swift task

error: pathspec 'test/desdemona/tasks/swift_test.clj' did not match any file(s) known to git

--- test/desdemona/tasks/swift_test.clj
+++ test/desdemona/tasks/swift_test.clj
@@ -0,0 +1,19 @@
+(ns desdemona.tasks.swift-test
+  (:require [clojure.test :refer [deftest is]]
+            [desdemona.tasks.swift :refer [add-swift-output]]))
+
+(deftest add-swift-output-test
+  (let [job {:catalog []}
+        no-opts (add-swift-output job :task-name {})
+        with-opts (add-swift-output job :other-task-name {:one 1})]
+    (is (= {:catalog [{:onyx/name :task-name
+                       :onyx/plugin :desdemona.plugins.swift/write-batch
+                       :onyx/type :output
+                       :onyx/medium :swift
+                       :onyx/doc "Write segments to Swift"}]} no-opts))
+    (is (= {:catalog [{:onyx/name :other-task-name
+                       :onyx/plugin :desdemona.plugins.swift/write-batch
+                       :onyx/type :output
+                       :onyx/medium :swift
+                       :onyx/doc "Write segments to Swift"
+                       :one 1}]} with-opts))))


[EN] Remove unused var in macro

[EN] Remove unused var in macro

To remove confusion about why it's there.

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/form-works.git/'


Add problem53.clj

Add problem53.clj

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

--- euler_clojure/src/euler_clojure/problem53.clj
+++ euler_clojure/src/euler_clojure/problem53.clj
@@ -0,0 +1,18 @@
+;; problem53.clj
+;;
+;; How many, not necessarily distinct, values of nCr, for 1 ≤ n ≤ 100, are greater
+;; than one-million?
+
+(ns euler.problem53)
+
+(defn factorial [n]
+  (reduce *' (range 1 (inc n))))
+
+(defn num-combinations [n r]
+  (/ (factorial n) (*' (factorial r) (factorial (- n r)))))
+
+(defn problem53 []
+  (reduce + (for [n (range 1 (inc 100))
+                  r (range 1 (inc n))
+                  :when (> (num-combinations n r) 1e6)]
+              1)))


Fix tests including link to stats

Fix tests including link to stats

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/'


Initial sketch of index catalog.

Initial sketch of index catalog.

error: pathspec 'src/vault/index/catalog.clj' did not match any file(s) known to git

--- src/vault/index/catalog.clj
+++ src/vault/index/catalog.clj
@@ -0,0 +1,63 @@
+(ns vault.index.catalog
+  (:require
+    [clj-time.core :as time]
+    [vault.blob.store :as store]
+    [vault.index.engine :as engine]))
+
+
+;;;;; HELPER FUNCTIONS ;;;;;
+
+(defn- get-blob-index
+  [catalog]
+  (get (:indexes catalog) (:blob-key catalog)))
+
+
+
+;;;;; INDEX CATALOG ;;;;;
+
+(defrecord IndexCatalog
+  [indexes blob-key])
+
+; Blob index schema:
+#_
+{:blob      HashID      ; blob hash-id (pk)
+ :size      Long        ; blob byte length
+ :type      Keyword     ; data type
+ :label     String      ; type-specific annotation
+ :stored-at DateTime}   ; time added to index
+
+(extend-type IndexCatalog
+  store/BlobStore
+
+  (enumerate
+    [this opts]
+    (store/select-ids opts
+      ; TODO: this is where being able to do real queries would help;
+      ; specifically, for :after and :prefix.
+      (engine/search (get-blob-index this) {} nil)))
+
+
+  (stat
+    [this id]
+    (-> (get-blob-index this)
+        (engine/search {:blob id} nil)
+        first))
+
+
+  (put! [this blob]
+    ; TODO: check whether blob has been seen
+    (when blob
+      ; TODO: ensure blob has been parsed?
+      (for [index (vals (:indexes this))]
+        (when-let [projection (:projection index)]
+          (for [record (projection blob)]
+            (engine/update! index record))))
+      blob)))
+
+
+(defn index-catalog
+  "Creates a new catalog out of the given indexes. The keyword given names
+  the index to look up blob stats from."
+  [indexes blob-key]
+  {:pre [(contains? indexes blob-key)]}
+  (IndexCatalog. indexes blob-key))


Confirm schema maint, action cleanup rules work in CLJ, CLJS

error: pathspec 'src/cljs/libx/todomvc/rules_debug.cljc' did not match any file(s) known to git

--- src/cljs/libx/todomvc/rules_debug.cljc
+++ src/cljs/libx/todomvc/rules_debug.cljc
@@ -0,0 +1,68 @@
+(ns libx.todomvc.rules-debug
+  (:require [clara.rules.accumulators :as acc]
+            [clara.rules :as cr]
+            [libx.spec.sub :as sub]
+            [libx.todomvc.schema :refer [app-schema]]
+            [libx.util :refer [insert! insert-unconditional! retract! attr-ns guid]]
+            #?(:clj [libx.tuplerules :refer [def-tuple-rule]])
+            #?(:cljs [libx.tuplerules :refer-macros [def-tuple-session def-tuple-rule]])
+            [libx.schema :as schema]
+            [libx.util :as util]))
+
+(defn trace [& args]
+  (apply prn args))
+
+(def-tuple-rule all-facts
+  [?fact <- [:all]]
+  =>
+  (println "FACT" ?fact))
+
+(def-tuple-rule action-cleanup
+  {:group :cleanup}
+  [?action <- [_ :action]]
+  ;[?actions <- (acc/all) :from [:action]]
+  ;[:test (> (count ?actions) 0)]
+  =>
+  (trace "CLEANING actions" ?action)
+  ;(doseq [action ?actions]
+  (cr/retract! ?action))
+
+(cr/defrule remove-older-unique-identity-facts
+  {:super true :salience 100}
+  [:unique-identity (= ?a (:a this)) (= ?t1 (:t this))]
+  [?fact2 <- :unique-identity (= ?a (:a this)) (= ?t2 (:t this))]
+  [:test (> ?t1 ?t2)]
+  =>
+  (trace (str "SCHEMA MAINT - :unique-identity " ?a))
+  (retract! ?fact2))
+
+(cr/defrule remove-older-unique-value-facts
+  {:super true :salience 100}
+  [:unique-value (= ?e (:e this)) (= ?a (:a this)) (= ?t1 (:t this))]
+  [?fact2 <- :unique-value (= ?e (:e this)) (= ?a (:a this)) (= ?t2 (:t this))]
+  [:test (> ?t1 ?t2)]
+  =>
+  (trace (str "SCHEMA MAINT - removing :unique-value " ?a))
+  (retract! ?fact2))
+
+(def groups [:action :calc :report :cleanup])
+(def activation-group-fn (util/make-activation-group-fn :calc))
+(def activation-group-sort-fn (util/make-activation-group-sort-fn groups :calc))
+(def hierarchy (schema/schema->hierarchy app-schema))
+(def ancestors-fn (util/make-ancestors-fn hierarchy))
+
+(cr/defsession app-session
+  'libx.todomvc.rules-debug
+  :fact-type-fn :a
+  :ancestors-fn ancestors-fn
+  :activation-group-fn activation-group-fn
+  :activation-group-sort-fn activation-group-sort-fn)
+
+
+(-> app-session
+  (util/insert [(guid) :entry/foo-action :tag])
+  (util/insert [[(guid) :entry/title "Hello."]
+                [(guid) :entry/title "Hello???"]
+                [1 :todo/title "H"]
+                [1 :todo/title "Hi"]])
+  (cr/fire-rules))


[#2059] Fix Missing definitions for refs

:akvo.lumen.component.error-tracker/error-tracker

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


tweaks

tweaks

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/jeelabs/jet.git/'


fixing typo

fixing typo

--- src/clj_http/core.clj
+++ src/clj_http/core.clj
@@ -213,7 +213,7 @@
   [{:keys [request-method scheme server-name server-port uri query-string
            headers body multipart socket-timeout conn-timeout proxy-host
            proxy-ignore-hosts proxy-port proxy-user proxy-pass as cookie-store
-           retry-handler response-interceptor digest-auth ntml-auth connection-manager
+           retry-handler response-interceptor digest-auth ntlm-auth connection-manager
            client-params]
     :as req}]
   (let [^ClientConnectionManager conn-mgr
@@ -244,11 +244,11 @@
        (.getCredentialsProvider http-client)
        (AuthScope. nil -1 nil)
        (UsernamePasswordCredentials. user pass)))
-    (when-let [[user password host domain] ntml-auth]
+    (when-let [[user password host domain] ntlm-auth]
       (.setCredentials
        (.getCredentialsProvider http-client)
        (AuthScope. nil -1 nil)
-       (NTCredentials. user pass host domain)))
+       (NTCredentials. user password host domain)))

     (when (and proxy-user proxy-pass)
       (let [authscope (AuthScope. proxy-host proxy-port)


Intermediate functions to parse params

Intermediate functions to parse params

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/acessocard/microscope.git/'


creation call works

creation call works

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

--- src/docker/client.clj
+++ src/docker/client.clj
@@ -0,0 +1,38 @@
+(ns docker.client
+  "Docker client"
+  (:require
+    [clojure.string :as s]
+    [docker.remote :as r])
+ )
+
+(defn camel-to-dash
+  [s]
+  (apply str
+    (map #(if (Character/isUpperCase %) (str "-" (s/lower-case %)) %) s)))
+
+(def defaults
+  {:hostname "" :user "" :memory-swap 0
+    :attach-stdin false :attach-stdout true
+    :attach-stderr true :port-specs nil :tty false
+    :open-stdin false :stdin-once false :env nil
+    :cmd ["/bin/bash"] :dns nil
+    :volumes { "/tmp"  {} } :volumes-from ""
+    :working-dir "" :exposed-ports { "22/tcp" {}}})
+
+(defn create
+   "Create a new container instance"
+   [node spec]
+  {:pre [(every? (partial contains? spec) [:image :memory] )]}
+  (r/docker-post node "containers/create" (merge defaults spec)))
+
+
+
+(comment
+  (celestial.model/set-env :dev
+  (try
+    (create :local {:image "8dbd9e392a96" :memory 0})
+   (catch Throwable e
+     (clojure.pprint/pprint e)
+     )
+    )))
+


RDC - Add coordinate place conversions for a cell.

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

--- src/icfp2015/cell.clj
+++ src/icfp2015/cell.clj
@@ -0,0 +1,17 @@
+(ns icfp2015.cell)
+
+(defn offset->cube
+  "Convert offset coordinate plane into cube coordinate plane"
+  [[row col]]
+  (let [x (- col (/ (- row (bit-and row 1)) 2))
+        y row
+        z (- (- x) y)]
+    [x y z]))
+
+(defn cube->offset
+  "Convert cube coordinate place to offset coordinate plane"
+  [[x y z]]
+  (let [col (+ x (/ (- y (bit-and y 1)) 2))
+        row y]
+    [row col]))
+


allow redis pool options

allow redis pool options

--- src/org/spootnik/fleet/transport/redis.clj
+++ src/org/spootnik/fleet/transport/redis.clj
@@ -53,10 +53,10 @@
       (join ":" (butlast parts)))))

 (defn redis-transport
-  [{:keys [inbuf] :or {inbuf 10}} codec signer]
+  [{:keys [inbuf pool] :or {inbuf 10 pool {}}} codec signer]

   (let [ch   (chan inbuf)
-        pool (rpool {})
+        pool (rpool pool)
         pub  (pub ch get-chan)
         ptrn "fleet:*"]


Use the correct path for the default config

--- src/clojars/config.clj
+++ src/clojars/config.clj
@@ -33,7 +33,9 @@
     x))

 (def default-config
-  (aero/read-config (io/resource "resources/default_config.edn")))
+  (if-let [cfg (io/resource "default_config.edn")]
+    (aero/read-config cfg)
+    (println "WARNING: failed to find default_config.edn")))

 ;; we attempt to read a file defined on clojars.config.file property at load time
 ;; this is handy for interactive development and unit tests


Update library dependencies

Update library dependencies

--- project.clj
+++ project.clj
@@ -6,12 +6,12 @@
                  [compojure "1.5.1"]
                  [ring "1.5.0"]
                  [ring/ring-defaults "0.2.1"]
-                 [org.postgresql/postgresql "9.4.1211"]
+                 [org.postgresql/postgresql "9.4.1212"]
                  [org.clojure/java.jdbc "0.6.2-alpha2"]
                  [honeysql "0.8.1"]
-                 [clj-time "0.12.0"]
+                 [clj-time "0.12.2"]
                  [cheshire "5.6.3"]
-                 [selmer "1.0.9"]
+                 [selmer "1.10.0"]
                  [clj-http "2.3.0"]
                  [org.clojure/tools.logging "0.3.1"]
                  [org.slf4j/slf4j-log4j12 "1.7.21"]]


Update prismatic/plumbing -> 0.5.3

Update prismatic/plumbing -> 0.5.3

--- project.clj
+++ project.clj
@@ -8,7 +8,7 @@
                  [org.quartz-scheduler/quartz-jobs "2.2.1"]
                  [org.clojure/tools.logging "0.3.1"]
                  [com.stuartsierra/component "0.2.2"]
-                 [prismatic/plumbing "0.3.5"]
+                 [prismatic/plumbing "0.5.3"]
                  [org.clojure/core.async "0.1.346.0-17112a-alpha"]]
   :javac-options ["-source" "1.6" "-target" "1.6" "-g"]
   :java-source-paths ["java"]


fix typo, remove empty line, etc...

fix typo, remove empty line, etc...

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject om-starter "0.1.0-SNAPSHOT"
+(defproject om-next-leaflet "0.1.0-SNAPSHOT"
   :description "My first Om program!"
   :dependencies [[org.clojure/clojure "1.8.0"]
                  [org.clojure/clojurescript "1.9.293"]
@@ -15,32 +15,21 @@
                  [cljs-http "0.1.42" :exclusions
                   [org.clojure/clojure org.clojure/clojurescript
                    com.cognitect/transit-cljs]]]
-
   :plugins [[lein-cljsbuild "1.1.1"]
             [lein-environ "1.0.1"]]
-
   :min-lein-version "2.6.1"
-
   :source-paths ["src/clj" "src/cljc" "dev/src/clj"]
-
   :test-paths ["test/clj"]
-
   :clean-targets ^{:protect false} [:target-path :compile-path "resources/public/js"]
-
   :uberjar-name "om-next-leaflet.jar"
-
   :main om-next-leaflet.server
-
   :repl-options {:init-ns user}
-
   :cljsbuild {:builds
               {:dev
                {:source-paths ["src/cljs"]
-
                 :figwheel true
                 ;; Alternatively, you can configure a function to run every time figwheel reloads.
-                ;; :figwheel {:on-jsload "om-next-leaflet.core/on-figwheel-reload"}
-
+                ;; :figwheel {:on-jsload "om-next-leaflet.core/init!"}
                 :compiler {:main om-next-leaflet.core
                            :asset-path    "js"
                            :output-to     "resources/public/js/main.js"
@@ -48,8 +37,8 @@
                            :source-map-timestamp true
                            :verbose true
                            :optimizations :none}}}}
-
-  :profiles {:dev
+  :profiles {:uberjar {:aot :all}
+             :dev
              {:dependencies [[figwheel-sidecar "0.5.0-6"]
                              [com.cemerick/piggieback "0.2.1"]
                              [org.clojure/tools.nrepl "0.2.12"]


Version 1.1.2

Version 1.1.2

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.zalando.stups/friboo "1.1.2-SNAPSHOT"
+(defproject org.zalando.stups/friboo "1.1.2"
   :description "A utility library to write microservices in clojure."
   :url "https://github.com/zalando-stups/friboo"


Updated all dependencies.

Updated all dependencies.

fatal: unable to access 'https://github.com/Element84/vdd-core.git/': The requested URL returned error: 403


Whitespace

Whitespace

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject grafter "0.3.0-SNAPSHOT"
+(defproject grafter/grafter "0.3.0-SNAPSHOT"
   :description "Tools for the hard graft of data processing"
   :url "http://grafter.org/"
   :license {:name "Eclipse Public License - v1.0"
@@ -40,23 +40,18 @@

   :repack [{:subpackage "rdf.common"
             :dependents #{"templater"}
-            :path "src/rdf-common"
-            }
+            :path "src/rdf-common"}
            {:subpackage "templater"
-            :path "src/templater"
-            }
+            :path "src/templater"}
            {:type :clojure
             :path "src/ontologies"
-            :levels 2
-            }
+            :levels 2}
            {:type :clojure
             :path "src/pipeline"
-            :levels 2
-            }
+            :levels 2}
            {:type :clojure
             :path "src/rdf"
-            :levels 1
-            }
+            :levels 1}
            {:type :clojure
             :path "src/tabular"
             :levels 2}
@@ -66,7 +61,7 @@

              :dev {:plugins [[com.aphyr/prism "0.1.1"] ;; autotest support simply run: lein prism
                              [codox "0.8.10"]
-                             [lein-repack "0.2.4" :exclusions [org.clojure/clojure
+                             [org.clojars.rickmoynihan/lein-repack "0.2.5-SNAPSHOT" :exclusions [org.clojure/clojure
                                                                org.codehaus.plexus/plexus-utils]]]

                    :dependencies [[com.aphyr/prism "0.1.1"]]


Version 0.1.0

Version 0.1.0

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject com.mdrogalis/onyx "0.1.0-SNAPSHOT"
+(defproject com.mdrogalis/onyx "0.1.0"
   :description "Distributed data processing"
   :url "https://github.com/MichaelDrogalis/onyx"
   :license {:name "Eclipse Public License"


add prod build

add prod build

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/lols14/markup-1.git/'


Use port 5672 by default

Use port 5672 by default

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/'


ratelimiting works

ratelimiting works

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/m1dnight/clojbot.git/'


Changes to support validation UI

Changes to support validation UI

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/hudren/ebook-novel.git/'


remove stray js/console.log

remove stray js/console.log

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/'


No need to qualify fns in defelem.

No need to qualify fns in defelem.

--- src/react/who/core.cljx
+++ src/react/who/core.cljx
@@ -1,6 +1,6 @@
 (ns react.who.core
   (:refer-clojure :exclude [replace])
-  (:require [clojure.string :refer [replace]]
+  (:require [clojure.string :refer [replace upper-case]]
             [clojure.walk :refer [postwalk-replace]]
             [react.who.util :refer [as-str to-uri]]
             #+clj [react.who.compiler :as compiler])
@@ -63,13 +63,13 @@
   "Include a list of external javascript files."
   [& scripts]
   (for [script scripts]
-    [:script {:type "text/javascript", :src (react.who.util/as-str script)}]))
+    [:script {:type "text/javascript", :src (as-str script)}]))

 (defn include-css
   "Include a list of external stylesheet files."
   [& styles]
   (for [style styles]
-    [:link {:type "text/css", :href (react.who.util/as-str style), :rel "stylesheet"}]))
+    [:link {:type "text/css", :href (as-str style), :rel "stylesheet"}]))

 (defn javascript-tag
   "Wrap the supplied javascript up in script tags and a CDATA section."
@@ -80,7 +80,7 @@
 (defelem link-to
   "Wraps some content in a HTML hyperlink with the supplied URL."
   [url & content]
-  [:a {:href (react.who.util/as-str url)} content])
+  [:a {:href (as-str url)} content])

 (defelem mail-to
   "Wraps some content in a HTML hyperlink with the supplied e-mail
@@ -101,8 +101,8 @@

 (defelem image
   "Create an image element."
-  ([src] [:img {:src (react.who.util/as-str src)}])
-  ([src alt] [:img {:src (react.who.util/as-str src), :alt alt}]))
+  ([src] [:img {:src (as-str src)}])
+  ([src alt] [:img {:src (as-str src), :alt alt}]))

 (def ^:dynamic *group* [])

@@ -110,7 +110,7 @@
   "Group together a set of related form fields for use with the Ring
   nested-params middleware."
   [group & body]
-  `(binding [react.who.core/*group* (conj react.who.core/*group* (react.who.util/as-str ~group))]
+  `(binding [react.who.core/*group* (conj react.who.core/*group* (as-str ~group))]
      (list ~@body)))

 (defn- make-name
@@ -171,7 +171,7 @@
   ([group checked? value]
      [:input {:type "radio"
               :name (make-name group)
-              :id   (make-id (str (react.who.util/as-str group) "-" (react.who.util/as-str value)))
+              :id   (make-id (str (as-str group) "-" (as-str value)))
               :value value
               :checked checked?}]))

@@ -197,7 +197,7 @@
 (defelem text-area
   "Creates a text area element."
   ([name] (text-area name nil))
-  ([name value] [:textarea {:name (make-name name), :id (make-id name)} (react.who.util/as-str value)]))
+  ([name value] [:textarea {:name (make-name name), :id (make-id name)} (as-str value)]))

 (defelem file-upload
   "Creates a file upload input."
@@ -224,8 +224,8 @@
   e.g. (form-to [:put \"/post\"]
          ...)"
   [[method action] & body]
-  (let [method-str (clojure.string/upper-case (name method))
-        action-uri (react.who.util/to-uri action)]
+  (let [method-str (upper-case (name method))
+        action-uri (to-uri action)]
     (-> (if (contains? #{:get :post} method)
           [:form {:method method-str, :action action-uri}]
           [:form {:method "POST", :action action-uri}


www/insert_norobots.txt: temporary stop-gap to insert norobots META tags

error: pathspec 'src/org/altlaw/www/insert_norobots.clj' did not match any file(s) known to git

--- src/org/altlaw/www/insert_norobots.clj
+++ src/org/altlaw/www/insert_norobots.clj
@@ -0,0 +1,13 @@
+(ns org.altlaw.www.insert-norobots
+  (:require [org.altlaw.db.content :as content]))
+
+(def *meta-tag* "<meta name=\"robots\" content=\"noindex\" />")
+
+(defn insert-norobots-tag [docid]
+  (let [path (str "v1/cases/" docid ".html")
+        original (content/get-page path)]
+    (if (.contains original *meta-tag*)
+      :no-change-needed
+      (let [modified (.replaceFirst original "" (str *meta-tag* ""))]
+        (content/put-page-string path modified "text/html")
+        :changed))))


retires -> retries

retires -> retries

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/'


Adding piano roll example

Adding piano roll example

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

--- src/overtone/examples/gui/pianoroll.clj
+++ src/overtone/examples/gui/pianoroll.clj
@@ -0,0 +1,16 @@
+(ns overtone.examples.gui.pianoroll
+  (:use overtone.live
+        overtone.inst.synth
+        overtone.gui.control
+        overtone.gui.pianoroll))
+
+(def m (metronome 280))
+
+(synth-controller tb303)
+(def roll (piano-roll m tb303
+                      :octaves 3 :offset 36
+                      :measures 1 :beats-per-measure 4
+                      :steps-per-beat 4))
+
+; Currently set notes can be retrieved like this:
+; (:notes @(:state roll))


thanks to errors I realized DOT3 is overloaded with corresponding indices

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/aamedina/swg.git/'


Start adding some tests for basic expr stuff.

error: pathspec 'test/algebolic/expression/expression_test.clj' did not match any file(s) known to git

--- test/algebolic/expression/expression_test.clj
+++ test/algebolic/expression/expression_test.clj
@@ -0,0 +1,9 @@
+(ns algebolic.expression.expression-test
+  (:use [clojure.test])
+  (:require [algebolic.expression.interpreter :as interpreter]))
+
+(def coords [[1.0 1.0] [3.0 4.0] [-1.0 -2.0]])
+(def arithmetic-expr [:times [:plus 'x 4.0] [:minus 3.0 'y]])
+
+(deftest evaluation
+  (is (= (interpreter/evaluate arithmetic-expr '[x y] coords) [10.0 -7.0 15.0])))


Interpose a Seq solved

Interpose a Seq solved

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

--- src/4clojure/interpose.clj
+++ src/4clojure/interpose.clj
@@ -0,0 +1,29 @@
+;; Interpose a Seq
+;; http://www.4clojure.com/problem/40
+
+(defn __ [x coll]
+  (butlast (reduce #(conj %1 %2 x) [] coll)))
+
+(= (__ 0 [1 2 3]) [1 0 2 0 3])
+
+(= (apply str (__ ", " ["one" "two" "three"])) "one, two, three")
+
+(= (__ :z [:a :b :c :d]) [:a :z :b :z :c :z :d])
+
+
+;; 4Clojure copy paste
+(fn [x coll] (butlast (reduce #(conj %1 %2 x) [] coll)))
+
+;; other solutions
+;; _artem_uv's solution:
+#(rest (interleave (repeat (count %2) %1) %2))
+
+;; _pcl's solution:
+(fn [sep xs]
+  (drop-last (mapcat list xs (repeat sep))))
+
+;; aceeca1's solution:
+(fn [s x] (cons (first x) (mapcat #(list s %) (next x))))
+
+;; adereth's solution:
+#(butlast (interleave %2 (repeat %1)))


minor cleanup

minor 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/tiagoantao/turtle.git/'


[DC] add election day to voter-reg-method-schema

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/election-authority-works.git/'


Show params only when in debug mode

Show params only when in debug mode

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-Digital/pdg-core.git/'


remove comment

remove comment


split form into individual components

split form into individual components

for less repetition and easier maintenance


Working on 147...

Working on 147...

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

--- src/project_euler/problem_0147.clj
+++ src/project_euler/problem_0147.clj
@@ -0,0 +1,26 @@
+(ns project-euler.problem_0147)
+
+;; In a 3x2 cross-hatched grid, a total of 37 different rectangles could be situated within that grid
+;; as indicated in the sketch.
+
+;; There are 5 grids smaller than 3x2, vertical and horizontal dimensions being important,
+;; i.e. 1x1, 2x1, 3x1, 1x2 and 2x2.
+;; If each of them is cross-hatched,
+;; the following number of different rectangles could be situated within those smaller grids:
+
+;; 1x1: 1
+;; 2x1: 4
+;; 3x1: 8
+;; 1x2: 4
+;; 2x2: 18
+
+;; Adding those to the 37 of the 3x2 grid, a total of 72 different rectangles could be situated
+;; within 3x2 and smaller grids.
+
+;; How many different rectangles could be situated within 47x43 and smaller grids?
+
+(defn count-sub-segments [l]
+  (/ (* (inc l) l) 2))
+
+(defn count-hv-rect [w h]
+  (* (count-sub-segments w) (count-sub-segments h)))


Add missing RefHeader component

Add missing RefHeader component

error: pathspec 'src/app/components/ref_header.cljs' did not match any file(s) known to git

--- src/app/components/ref_header.cljs
+++ src/app/components/ref_header.cljs
@@ -0,0 +1,20 @@
+(ns app.components.ref-header
+  (:require [om.next :as om :refer-macros [defui]]
+            [om.dom :as dom]))
+
+(defui RefHeader
+  static om/Ident
+  (ident [this props]
+    [:ref/by-name (:name props)])
+  static om/IQuery
+  (query [this]
+    [:name :head])
+  Object
+  (render [this]
+    (let [{:keys [name head]} (om/props this)]
+      (dom/p #js {:className "ref-header"}
+        (dom/strong nil "Branch:")
+        (dom/span nil name)
+        (dom/span nil (some->> head :sha1 (str "@")))))))
+
+(def ref-header (om/factory RefHeader {:keyfn :name}))


Add simple wireframe for clojure protocol extensions

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

--- src/clojure/gpu/matrix.clj
+++ src/clojure/gpu/matrix.clj
@@ -0,0 +1,25 @@
+; This is the main interface to exntending core.matrix's protocols
+
+(ns gpu.matrix
+  (:require [clojure.core.matrix.protocols :as mp])
+  (:import gpu.matrix.NDArray))
+
+(extend-protocol mp/PImplementation
+  NDArray
+  (implementation-key [m] :gpu-matrix)
+  (meta-info [m] {})
+  (construct-matrix [m data]
+    ; TODO
+    (let [ndims (mp/dimensionality data)]
+      ))
+  (new-vector [m length]
+    ; TODO
+    )
+  (new-matrix [m rows columns]
+    ; TODO
+    )
+  (new-matrix-nd [m shape]
+    ; TODO
+    )
+  (supports-dimensionality? [m dimensions]
+    true))


hypothesis

hypothesis

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/'


Fix docs

Fix docs

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/'


Update cache version

Update cache version

Signed-off-by: Roman Selmeci <bb938fc7591901d0e874df22e3ae174886bcb931@infones.com>

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/infones/http-kit.git/'


Beta 12

Beta 12

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/'


bump version

bump version


chore(core): update core version to 2.8.23

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/'


lein-release plugin: bumped version from 0.2.8 to 0.2.9-SNAPSHOT for next development cycle

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject sablono "0.2.8"
+(defproject sablono "0.2.9-SNAPSHOT"
   :description "Lisp style templating for Facebook's React."
   :url "http://github.com/r0man/sablono"
   :author "Roman Scherer"


Fix cyclic dependency error

Fix cyclic dependency error

...I hope

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/turbovote-http-api.git/'


Version 0.2.3-SNAPSHOT

Version 0.2.3-SNAPSHOT

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/'


Version 0.3.7-SNAPSHOT

Version 0.3.7-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject sablono "0.3.6"
+(defproject sablono "0.3.7-SNAPSHOT"
   :description "Lisp style templating for Facebook's React."
   :url "http://github.com/r0man/sablono"
   :author "r0man"


dependency version updates

dependency version updates

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/CraZySacX/glitter.git/'


Release 0.12.9

Release 0.12.9

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clojars-web "0.12.8"
+(defproject clojars-web "0.12.9"
   :dependencies [[org.clojure/clojure "1.4.0"]
                  [org.clojure/tools.cli "0.2.1"]
                  [org.apache.maven/maven-model "3.0.4"