Test for column name generator.

Test for column name generator.

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

--- test/grafter/sequences_test.clj
+++ test/grafter/sequences_test.clj
@@ -0,0 +1,8 @@
+(ns grafter.sequences-test
+  (:require [clojure.test :refer :all]
+            [grafter.sequences :refer :all]))
+
+(deftest column-names-seq-test
+  (testing "iterates alphabet repeatedly like it's numeric"
+    (is  (= ["A" "B" "AA" "AB" "BA" "BB" "AAA" "AAB"]
+            (take 8 (column-names-seq "AB"))))))


Move public functions to the bottom

Move public functions to the bottom

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/eureka-client.git/'


...can't forget some experiment code

...can't forget some experiment code

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


org-group-membership "type" is `GroupMembership`

fatal: unable to access 'https://github.com/physion/ovation-webapi.git/': The requested URL returned error: 403


Add utilities for showing titles

Add utilities for showing titles

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

--- src/re_demo/utils.cljs
+++ src/re_demo/utils.cljs
@@ -0,0 +1,35 @@
+(ns re-demo.utils
+  (:require [re-com.core     :refer [title]]
+            [reagent.core    :as    reagent]))
+
+
+(def panel-title-style {
+    :font-family "Ubuntu"
+    :font-weight "300"
+    ;; :font-style  "bold"
+    :font-size   "24px"
+    :color       "#FF6522"    ;; orange
+    :margin-top  "7px"
+   })
+
+(defn panel-title
+  "The text shown at the top of each Tab Panel"
+  [text]
+  [title
+    :label      text
+    :underline? false
+    :style      panel-title-style
+    ])
+
+
+
+
+(defn component-title
+  "Used when you want a notes title like [something ... ]"
+  [component-name style]
+  [title
+   :h          :h4   ;; [:h4 .. ]
+   :label      component-name
+   :style      (merge style {:color "#555"})
+   :underline? false
+   ])


undo - conj app-explain to :undo-explanations subscription - add optional argument to :undo :redo handlers to specify number of undos/redos. Default 1 when not specified. - correct comment and event name typos

--- src/re_frame/undo.cljs
+++ src/re_frame/undo.cljs
@@ -27,7 +27,7 @@
 ;; Seems really ugly to have mirrored vectors, but ...
 ;; the code kinda falls out when you do. I'm feeling lazy.
 (def ^:private app-explain (reagent/atom ""))         ;; mirrors app-db
-(def ^:private undo-explain-list (reagent/atom []))   ;; mirrors undo-liat
+(def ^:private undo-explain-list (reagent/atom []))   ;; mirrors undo-list
 (def ^:private redo-explain-list (reagent/atom []))   ;; mirrors redo-list

@@ -43,7 +43,7 @@
   "stores the value currently in app-db, so the user can later undo"
   [explanation]
   (reset! redo-list [])           ;; clear and redo state created by previous undos
-  (reset! redo-explain-list [])           ;; clear and redo state created by previous undos
+  (reset! redo-explain-list [])   ;; clear and redo state created by previous undos
   (reset! undo-list (vec (take
                            @max-undos
                            (conj @undo-list @app-db))))
@@ -78,23 +78,23 @@

 (subs/register
-  :undo-explantions
+  :undo-explanations
   (fn handler
-    ; "returns a vector of string explnations
+    ; "return a vector of string explanations ordered oldest to most recent"
     [_ _]
-    (reaction (deref undo-explain-list))))
+    (reaction (conj @undo-explain-list @app-explain))))

 (subs/register
-  :redo-explantions
+  :redo-explanations
   (fn handler
-    ; "returns a vector of string explnations
+    ; "returns a vector of string explanations ordered from most recent undo onward"
     [_ _]
     (reaction (deref redo-explain-list))))

 ;; -- event handlers  ----------------------------------------------------------------------------

-(defn undo
+(defn- undo
   [undos cur redos]
   (let [u @undos
         r (cons @cur @redos)]
@@ -102,16 +102,21 @@
     (reset! redos r)
     (reset! undos (pop u))))

+(defn- undo-count
+  "undo until we reach count or run out of undos"
+  [count]
+  (when (and (pos? count) (undos?))
+    (undo undo-list app-db redo-list)
+    (undo undo-explain-list app-explain redo-explain-list)
+    (recur (dec count))))

 (handlers/register-base     ;; not a pure handler
-  :undo                     ;; usage:  (dispatch [:undo])
+  :undo                     ;; usage:  (dispatch [:undo n])
   (fn handler
-    [_ _]
+    [_ event-v]
     (if-not (undos?)
       (warn "re-frame: you did a (dispatch [:undo]), but there is nothing to undo.")
-      (do
-        (undo undo-list app-db redo-list)
-        (undo undo-explain-list app-explain redo-explain-list)))))
+      (undo-count (if (second event-v) (second event-v) 1)))))

 (defn- redo
@@ -122,15 +127,19 @@
     (reset! redos (rest r))
     (reset! undos u)))

-
+(defn- redo-count
+  "redo until we reach count or run out of redos"
+  [count]
+  (when (and (pos? count) (redos?))
+    (redo undo-list app-db redo-list)
+    (redo undo-explain-list app-explain redo-explain-list)
+    (recur (dec count))))

 (handlers/register-base     ;; not a pure handler
-  :redo                     ;; usage:  (dispatch [:redo])
+  :redo                     ;; usage:  (dispatch [:redo n])
   (fn handler
-    [_ _]
+    [_ event-v]
     (if-not (redos?)
       (warn "re-frame: you did a (dispatch [:redo]), but there is nothing to redo.")
-      (do
-        (redo undo-list app-db redo-list)
-        (redo undo-explain-list app-explain redo-explain-list)))))
+      (redo-count (if (second event-v) (second event-v) 1)))))


Add instantaneous item switching on list change...

... Before, when switching between lists, the items would load slowly.
Now, they load instantaneously. The reason that they loaded slowly
was because I had made a hack to ensure that they did not animate
when changing to a different list. I am much more satisfied with
the solution in this commit, which hooks into react lifecycles, and
which works properly.

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/Reefersleep/sleepydo.git/'


Fix repair-metadata test.

Fix repair-metadata test.

The original test relied on directory timestamps fresh from a git
clone. When you have a fresh git clone, all the timestamps are
identical, so it would not sort. We use .setLastModified to get
realistic data here.

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


Create json-core.clj

Create json-core.clj

nächster json Versuch kopiert von
gh  clojure-ring-example/src/compojure_example/core.clj

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


Add world fns

Add world fns

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

--- src/robinson/world.clj
+++ src/robinson/world.clj
@@ -0,0 +1,336 @@
+;; Utility functions and functions for manipulating state
+(ns robinson.world
+  (:use     clojure.contrib.core
+            robinson.common
+            robinson.viewport)
+  (:require [ clojure.data.generators :as dg]
+            [taoensso.timbre :as timbre]
+            [pallet.thread-expr :as tx]))
+
+(timbre/refer-timbre)
+
+(defn distance-from-player
+  "Calculate the distance between the player and pos."
+  [state pos]
+  (distance (-> state :world :player :pos) pos))
+
+(defn adjacent-to-player?
+  "Return true is pos is adjacent to the player's pos including diagonals."
+  [state pos]
+  (<= (distance-from-player state pos) 1.5))
+
+(defn with-xygrid
+  "Inclue x y values alongside elements in a grid and preserve the structure
+   of the grid.
+
+       (def grid
+         [[:a :b :c]
+          [:d :e :f]
+          [:g :h :i]])
+
+   Replace each inner element with [element x y]. X and Y start at 0 and increase.
+
+       user=> (first (first grid))
+       :a
+
+       user=> (first (first (with-xygrid grid)))
+       [:a 0 0]"
+  [grid]
+  (map-indexed (fn [y line] (map-indexed (fn [x cell] [cell x y]) line)) grid))
+
+(defn with-xy
+  "Include x y values alongside elements in a grid. Do not preserve the grid
+   structure.
+
+       (def grid
+         [[:a :b :c]
+          [:d :e :f]
+          [:g :h :i]])
+
+   Return a lazy seq of [inner-element x y].
+
+       user=> (first (first grid))
+       :a
+
+       user=> (take 5 (with-xy grid))
+       ([:a 0 0] [:b 1 0] [:c 2 0] [:d 0 1] [:e 1 1])"
+  [grid]
+  (mapcat concat (map-indexed (fn [y line] (map-indexed (fn [x cell] [cell x y]) line)) grid)))
+
+
+(defn update-matching-cells
+  "Update the cells in place for which (p cell) returns true
+   by replacing it with (f cell). Nil cells are skipped."
+  [place p f]
+  (mapv (fn [line] (mapv (fn [cell] (if (and (not (nil? cell))
+                                             (p cell))
+                                        (f cell)
+                                        cell))
+                         line))
+        place))
+
+(defn update-in-xy
+  [place x y f]
+  (update-in place [y x] f))
+
+(defn current-place-id
+  "Retrieve the current place id."
+  [state]
+  (-> state :world :current-place))
+
+(defn current-place
+  "Retrieve the current place."
+  [state]
+  (get-in state [:world :places (current-place-id state)]))
+
+(defn current-state
+  [state]
+  (get-in state [:world :current-state]))
+
+(defn get-time
+  [state]
+  (get-in state [:world :time]))
+
+(defn assoc-current-state
+  [state new-state]
+  (assoc-in state [:world :current-state] new-state))
+
+(defn map-with-xy
+  "Non-lazily call `(f cell x y)` for each cell in the grid."
+  [f grid]
+  (doall
+    (map (fn [e] (apply f e)) (with-xy grid))))
+
+(defn pmap-with-xy
+  "Non-lazily call `(f cell x y)` for each cell in the grid."
+  [f grid]
+  (doall
+    (pmap (fn [e] (apply f e)) (with-xy grid))))
+
+(defn get-cell
+  "Retrieve the cell at the position `[x y]` within the given grid. If `[x y]` is outside the bounds
+   of the grid, return `nil`."
+  [grid x y]
+  (get-in grid [y x]))
+
+(defn get-cell-at-current-place
+  [state x y]
+  (get-cell (current-place state) x y))
+
+(defn update-cell-xy
+  [state x y f]
+  (update-in state [:world :places (current-place-id state) y x] f))
+
+(defn assoc-cell
+  [state x y & keyvals]
+  (reduce (fn [state [k v]]
+            (assoc-in state [:world :places (current-place-id state) y x k] v))
+          state
+          (partition 2 keyvals)))
+
+(defn dissoc-cell
+  [state x y k]
+  (dissoc-in state [:world :places (current-place-id state) y x k]))
+
+(defn player-cellxy
+  "Retrieve the cell at which the player is located."
+  [state]
+  (let [x (-> state :world :player :pos :x)
+        y (-> state :world :player :pos :y)]
+    [(get-cell (current-place state) x y) x y]))
+
+(defn adjacent-xys
+  [x y]
+  [[(dec x) y]
+   [(inc x) y]
+   [x (dec y)]
+   [x (inc y)]])
+
+(defn adjacent-xys-ext
+  [x y]
+  [[(dec x) y]
+   [(inc x) y]
+   [x (dec y)]
+   [x (inc y)]
+   [(dec x) (inc y)]
+   [(inc x) (inc y)]
+   [(dec x) (dec y)]
+   [(inc x) (dec y)]])
+
+(defn adjacent-cells
+  "Return a collection of adjacent cells (diagonals not-included) around pos.
+   Pos is a map with the keys `:x` and `:y`.
+
+   Ex: `(adjacent-cells [...] {:x 0 :y 0})`
+   `[{:type :floor} {:type :water}...]`"
+  [place {x :x y :y}]
+  (map (fn [[x y]] (get-in place [y x]))
+    (adjacent-xys x y)))
+
+(defn adjacent-cells-ext
+  "Return a collection of adjacent cells (diagonals included) around pos.
+   Pos is a map with the keys `:x` and `:y`.
+
+   Ex: `(adjacent-cells [...] {:x 0 :y 0})`
+   `[{:type :floor} {:type :water}...]`"
+  [place {x :x y :y}]
+  (map (fn [[x y]] (get-in place [y x]))
+    (adjacent-xys-ext x y)))
+
+(defn direction->cells
+  [state direction]
+  {:pre [(contains? #{:left :right :up :down} direction)]}
+  (let [{x :x y :y} (get-in state [:world :player :pos])
+        place (current-place state)]
+   (vec
+     (case direction
+       :left  (reverse (take x (get place y)))
+       :right (rest (drop x (get place y)))
+       :up    (reverse (take y (map #(nth % x) place)))
+       :down  (rest (drop y (map #(nth % x) place)))))))
+
+(defn direction->xys
+  [state direction]
+  {:pre [(contains? #{:left :right :up :down} direction)]}
+  (let [{x :x y :y} (get-in state [:world :player :pos])
+        place (current-place state)
+        max-x (count (first place))
+        max-y (count place)]
+    (case direction
+      :left  (reverse (map (fn [x] [x y]) (range 0 x)))
+      :right (map (fn [x] [x y]) (range (inc x) max-x))
+      :up    (reverse (map (fn [y] [x y]) (range 0 y)))
+      :down  (map (fn [y] [x y]) (range (inc y) max-y)))))
+
+(defn direction->cellsxy
+  [state direction]
+  (map (fn [[x y]] [(get-in state [:world :places (current-place-id state) y x]) x y])
+       (direction->xys state direction)))
+
+(defn npc-at-xy
+  "npc at [x y] of the current place. Otherwise `nil`."
+  [state x y]
+  (first (filter (fn [npc] (and (= (get npc :place) (current-place-id state))
+                                (= (-> npc :pos :x) x)
+                                (= (-> npc :pos :y) y)))
+                 (get-in state [:world :npcs]))))
+
+(defn type->collide?
+  [t]
+  (contains? #{:vertical-wall
+               :horizontal-wall
+               :fire
+               :close-door
+               :tree
+               :bamboo
+               :bamboo-water-collector
+               :solar-still
+               :palm-tree
+               :fruit-tree
+               :palisade
+               :dry-hole
+               :freshwater-hole
+               :saltwater-hole} t))
+
+(defn type->water?
+  [t]
+  (contains? #{:water :surf} t))
+
+(defn type->flammable?
+  [t]
+  (contains? #{:tree :palm-tree :fruit-tree :bamboo :tall-grass :short-grass :campfire} t))
+
+(defn type->shelter?
+  [t]
+  (contains? #{:ramada :lean-to :tarp-shelter} t))
+
+(defn type->destroyable?
+  [t]
+  (contains? #{:palisade} t))
+
+(defn collide?
+  "Return `true` if the cell at `[x y]` is non-traverable. Ie: a wall, closed door or simply does
+   not exist. Cells occupied by npcs are considered non-traversable."
+  ([state x y opts]
+    ;; destructure opts into variables with defaults
+    (let [{:keys [include-npcs?
+                  collide-water?]
+           :or {include-npcs? true
+                collide-water? true}} opts
+          cell (get-cell (current-place state) x y)]
+      ;(debug "collide? " cell x y)
+      (or
+        (nil? cell)
+        ;; check the cell to see if it is a wall or closed door
+        (type->collide? (get cell :type))
+        ;; water collides?
+        (and collide-water?
+             (= (cell :type) :water))
+        ;; not a wall or closed door, check for npcs
+        (and include-npcs?
+             (npc-at-xy state x y)))))
+
+  ([state x y]
+  (collide? state x y {})))
+
+(defn collide-in-water?
+  "Return `true` if the cell at `[x y]` is non-traverable. Ie: any non-water cell or simply does
+   not exist. Cells occupied by npcs are considered non-traversable."
+  ([state x y opts]
+    ;; destructure opts into variables with defaults
+    (let [{:keys [include-npcs?
+                  collide-water?]
+           :or {include-npcs? true
+                collide-water? true}} opts
+          cell (get-cell (current-place state) x y)]
+      ;(debug "collide? " cell x y)
+      (or
+        (nil? cell)
+        ;; check the cell to see if it is a wall or closed door
+        (not (type->water? (get cell :type)))
+        ;; check for npcs
+        (and include-npcs?
+             (npc-at-xy state x y)))))
+
+  ([state x y]
+  (collide-in-water? state x y {})))
+
+
+(defn first-collidable-object
+ "Return a map based on the first collidable cell in cellsxy.
+  If an npc is encountered first, return `{:npc npc}`.
+  If a non-npc is encountered first, return `{:cell cell}`.
+  If no collision occurs in any of the cells, return `{}`."
+ [state direction max-distance]
+ {:pre [(contains? #{:up :down :left :right} direction)]}
+  (let [cellsxy (remove (fn [[cell x y]]
+                          (farther-than? (xy->pos x y)
+                                         (get-in state [:world :player :pos])
+                                         max-distance))
+                        (direction->cellsxy state direction))]
+   (loop [[cell x y] (first cellsxy)
+          xs         (rest cellsxy)]
+     (let [npc (npc-at-xy state x y)]
+       (cond
+         (not (nil? npc))
+           {:npc npc :pos (xy->pos x y)}
+         (collide? state x y false)
+           {:cell cell :pos (xy->pos x y)}
+         (empty? xs)
+           {}
+         :else
+           (recur (first xs) (rest xs)))))))
+
+(defn conj-in-cell-items
+  "Adds an item to [x y] in the current place. Simple, right?"
+  [state item x y]
+  (info "Adding" item "to cell @" x y)
+  (conj-in state [:world :places (current-place-id state) y x :items] item))
+
+(defn conj-in-current-cell-items
+  "Adds an item to the player's cell's items."
+  [state item]
+  (let [x (-> state :world :player :pos :x)
+        y (-> state :world :player :pos :y)]
+    (conj-in-cell-items state item x y)))
+


fix fhirplace

fix fhirplace

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


Adding filter tests.

Adding filter tests.

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


Add IFlip test coverage for Bezier{2,3}

Add IFlip test coverage for Bezier{2,3}

fatal: unable to access 'https://github.com/thi-ng/geom.git/': The requested URL returned error: 403


While not runnable, separate files are useful

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


Se pruebas unitárias en la pipeline

Se pruebas unitárias en la pipeline

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/iot-paas-home/telegram-iot-gateway.git/'


Add draft of spec for major components

Add draft of spec for major components

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

--- src/sparkle/spec.clj
+++ src/sparkle/spec.clj
@@ -0,0 +1,31 @@
+(ns sparkle.spec
+  "Specs for important Sparkle components"
+  (:require [clojure.spec :as s]))
+
+(s/def :core/render-state (s/keys :req-un [:core/env :core/model]))
+
+(s/def :core/env (s/keys :opt-un [:env/time]))
+
+(s/def :env/time (s/and long? #(> % 0)))
+
+(s/def :core/model (s/keys :req [:model/shape :model/layers]))
+
+(s/def :model/shape (s/keys :req [:type]))
+
+(s/def :model/layers (s/coll-of :model/layer []))
+
+(s/def :core/layer
+  (s/or :stateless-layer :layer/layer-fn
+        :stateful-layer (s/keys :req-un [:layer/layer-fn :layer/state])))
+
+(s/def :layer/layer-fn (s/fspec :args (s/cat :env :core/env :frame :core/frame)
+                                :ret :layer/layer-return
+                                :fn #(= (count (-> % :args :frame)) (count (:ret)))))
+; TODO: Add constraint about stateful layer arity to layer-fn spec
+
+(s/def :layer/layer-return (s/or :frame :core/frame
+                                 :frame-and-state (s/keys :req-un [:core/frame :layer/state])))
+
+(s/def :layer/state (constantly true))
+
+(s/def :core/frame (constantly true)) ; TODO: spec for frame


add term-query-test

add term-query-test

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

--- test/bzzz/term_query_test.clj
+++ test/bzzz/term_query_test.clj
@@ -0,0 +1,28 @@
+(ns bzzz.term-query-test
+  (:use clojure.test
+        bzzz.core
+        bzzz.util
+        bzzz.index-store
+        bzzz.index-search))
+(def test-index-name "__lein-test-testing-index-term-test")
+
+(deftest test-app
+  (testing "cleanup-before"
+    (delete-all test-index-name))
+
+  (testing "query"
+    (let [stored (store {:index test-index-name
+                         :must-refresh true
+                         :documents [{:name "jack doe"}
+                                     {:name "john doe"}]})
+          r0 (search {:index test-index-name
+                      :query {:term {:field "name"
+                                     :value "doe"}}})
+          r1 (search {:index test-index-name
+                      :query {:term {:field "name"
+                                     :value "jack"}}})]
+      (is (= 1 (:total r1)))
+      (is (= 2 (:total r0)))))
+
+  (testing "cleanup-after"
+    (delete-all test-index-name)))


Upgrade ring-devel

Upgrade ring-devel

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


Refactor out a stats ns

Refactor out a stats ns

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

--- src/cljs/mandelbrot_cljs/stats.cljs
+++ src/cljs/mandelbrot_cljs/stats.cljs
@@ -0,0 +1,53 @@
+(ns mandelbrot-cljs.stats
+  (:require [clojure.string :as string]))
+
+(defn format-comma
+  [x]
+  (letfn [(format-comma' [x]
+            (->> x
+                 str
+                 reverse
+                 (partition-all 3)
+                 (map reverse)
+                 reverse
+                 (map string/join)
+                 (string/join ",")))]
+    (if (neg? x)
+      (str "-" (format-comma' (* -1 x)))
+      (format-comma' x))))
+
+(defn render-stats!
+  [app-state]
+  (let [{:keys [render-speed scale current-x current-y current-iterations max-iterations]
+         :as stats}
+        (get @app-state :stats)]
+    (aset (.getElementById js/document "renderSpeed") "innerHTML"
+          (str "Render Speed: " (format-comma render-speed) " px/s"))
+
+    (aset (.getElementById js/document "scale") "innerHTML"
+          (str "Scale: " (format-comma scale) ))
+
+    (aset (.getElementById js/document "maxIterations") "innerHTML"
+          (str "Max Iterations: " (format-comma max-iterations) ))
+
+    (aset (.getElementById js/document "currentX") "innerHTML"
+          (str "Real: " current-x))
+
+    (aset (.getElementById js/document "currentY") "innerHTML"
+          (str "Imaginary: " current-y ))
+
+    (aset (.getElementById js/document "currentIterations") "innerHTML"
+          (str "Iterations to Escape: " (if (= "infinity" current-iterations)
+                                          "infinity"
+                                          (format-comma current-iterations)) ))))
+
+(defn toggle-stats!
+  "Toggle the stats box"
+  [app-state e]
+  (if (:show-stats? @app-state)
+    (do
+      (swap! app-state assoc :show-stats? false)
+      (aset (aget (.getElementById js/document "stats") "style") "display" "none"))
+    (do
+      (swap! app-state assoc :show-stats? true)
+      (aset (aget (.getElementById js/document "stats") "style") "display" "block"))))


entitate update

entitate update

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/kokosro/kokos-crawler.git/'


Log elastic at startup

Log elastic at startup

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 commit of es/todos

initial commit of es/todos

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

--- src/es.clj
+++ src/es.clj
@@ -0,0 +1,37 @@
+(ns es)
+
+(require '[babel.writer :refer [fill-by-spec fill-verb write-lexicon]])
+(require '[babel.english :as en])
+(require '[babel.espanol :as es :refer [verbs]])
+(require '[babel.korma :refer :all])
+(require '[babel.repair :refer [process]])
+(require '[clojure.tools.logging :as log])
+(require '[dag-unify.core :refer [unify]])
+(require '[korma.core :refer :all])
+(require '[korma.db :refer :all])
+
+(defn todos [ & [count]]
+  (let [count (if count (Integer. count) 10)]
+    (write-lexicon "es" @es/lexicon)
+    (process
+     (reduce concat
+             (map (fn [verb]
+                    (map (fn [tense]
+                           {:fill
+                            {:spec (unify {:root {:espanol {:espanol verb}}}
+                                          tense)
+                             :source-model en/small
+                             :target-model es/small
+                             :count count}})
+                         (shuffle
+                          [
+                           {:synsem {:sem {:aspect :perfect
+                                           :tense :past}}}
+                           {:synsem {:sem {:tense :conditional}}}
+                           {:synsem {:sem {:tense :futuro}}}
+                           {:synsem {:sem {:tense :present}}}
+                           ])
+                         ))
+                  (sort verbs)
+                  )))))
+


websocket component revived

websocket component revived

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

--- src/clj/hellhound/components/websocket.clj
+++ src/clj/hellhound/components/websocket.clj
@@ -0,0 +1,82 @@
+(ns hellhound.components.websocket
+  "Websocket component is responsible for setting up a sente server
+  for client to connect to. In order to use this component all you
+  have to do is, either use `websocket-server` function with
+  `hellhound.system.defsystem` macro or use the `make-websocket` with a
+  traditional system map."
+  (:require
+   [taoensso.sente.packers.transit          :as packer]
+   [taoensso.sente                          :as sente]
+   [taoensso.sente.server-adapters.immutant :refer [get-sch-adapter]]
+
+   [hellhound.connection                    :refer [router-builder]]
+   [hellhound.components                    :as components]
+   [hellhound.components.protocols          :as protocols]))
+
+
+;; This component is responsible for establish a websocket server
+;; Base on Sente
+(defrecord WebSocketServer [web-server-adapter handler options adapter]
+  protocols/Lifecycle
+  (start [component]
+    (let [{:keys [ch-recv send-fn ajax-post-fn ajax-get-or-ws-handshake-fn connected-uids]}
+          (sente/make-channel-socket-server! adapter  options) ;;web-server-adapter
+          component (assoc component
+                           :ring-ajax-post                ajax-post-fn
+                           :ring-ajax-get-or-ws-handshake ajax-get-or-ws-handshake-fn
+                           :ch-chsk                       ch-recv
+                           :chsk-send!                    send-fn
+                           :adapter                       adapter
+                           :connected-uids                connected-uids)]
+
+      (assoc component
+             :router (sente/start-chsk-router!
+                      ch-recv (if (:wrap-component? options)
+                                (handler component)
+                                handler)))))
+  (stop [component]
+    (let [router (:router component)]
+      (if-not (nil? router)
+        (do
+          (router)
+          (assoc component :router nil))
+        component))))
+
+
+
+(defn new-channel-socket-server
+  ([web-server-adapter]
+   (new-channel-socket-server nil web-server-adapter {}))
+  ([event-msg-handler web-server-adapter]
+   (new-channel-socket-server event-msg-handler web-server-adapter {}))
+  ([event-msg-handler web-server-adapter options]
+   ;; TODO: Refactor this `let` statement
+   (let [opts (merge {:packer  (packer/->TransitPacker :json {} {})
+                      ;; TODO: Use something elegant instead of the epoch time for uids
+                      :user-id-fn  (fn [_] (str (quot (System/currentTimeMillis) 1000)))}
+                     options)]
+     (map->WebSocketServer {:web-server-adapter web-server-adapter
+                            :handler event-msg-handler
+                            :options opts
+                            :adapter (get-sch-adapter)}))))
+
+
+(defn new-websocket
+  "Creates a websocket component instance."
+  [{:as options :keys [router]}]
+  (new-channel-socket-server (router-builder router) (get-sch-adapter) options))
+
+
+
+(defn make-instance
+  "Create an instance from websocket component. This function is meant
+  to be used with `hellhound.system.defsystem` macro."
+  ([options]
+   (make-instance options {}))
+
+  ([options instance-opt]
+   (let [{:keys [requirements inputs]} instance-opt]
+     {:websocket (components/create-instance
+                  (new-websocket options)
+                  requirements
+                  inputs)})))


Basic tests for build queue fetcher

Basic tests for build queue fetcher

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

--- test/emender_jenkins/build_queue_fetcher_test.clj
+++ test/emender_jenkins/build_queue_fetcher_test.clj
@@ -0,0 +1,43 @@
+;
+;  (C) Copyright 2017  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.build-queue-fetcher-test
+  (:require [clojure.test :refer :all]
+            [emender-jenkins.build-queue-fetcher :refer :all]
+            [emender-jenkins.results          :as results]))
+
+;
+; Common functions used by tests.
+;
+
+(defn callable?
+    "Test if given function-name is bound to the real function."
+    [function-name]
+    (clojure.test/function? function-name))
+
+
+
+(deftest test-fetch-data-existence
+    "Check that the emender-jenkins.build-queue-fetcher/fetch-data definition exists."
+    (testing "if the emender-jenkins.build-queue-fetcher/fetch-data definition exists."
+        (is (callable? 'emender-jenkins.build-queue-fetcher/fetch-data))))
+
+(deftest test-run-fetcher-in-thread-existence
+    "Check that the emender-jenkins.build-queue-fetcher/run-fetcher-in-thread definition exists."
+    (testing "if the emender-jenkins.build-queue-fetcher/run-fetcher-in-thread definition exists."
+        (is (callable? 'emender-jenkins.build-queue-fetcher/run-fetcher-in-thread))))
+
+
+;
+; Function behaviours
+;
+


Further fixes for routing.

Further fixes for routing.

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/IceRaptor/ca_scheduler.git/'


Fixed naming of variatio 12's file.

Fixed naming of variatio 12's file.

error: pathspec 'src/overtunes/songs/variatio_12.clj' did not match any file(s) known to git

--- src/overtunes/songs/variatio_12.clj
+++ src/overtunes/songs/variatio_12.clj
@@ -0,0 +1,45 @@
+(ns overtunes.songs.variatio-12
+  (:use
+    [overtone.live :only [at now]]
+    [overtone.inst.sampled-piano :only [sampled-piano] :rename {sampled-piano piano}]))
+
+(defn sum-n [series n] (reduce + (take n series)))
+(defn scale [intervals]
+  #(if (neg? %)
+     (let [downward-scale (comp - (scale (reverse intervals)))]
+       (-> % - downward-scale))
+     (sum-n (cycle intervals) %)))
+
+(defn translate [f x y] #(-> % (+ x) f (+ y)))
+(def major (scale [2 2 1 2 2 2 1]))
+(defn modulate [scale mode] (translate scale mode (- (scale mode))))
+(def g-major (translate major 0 74))
+(def scales (repeat g-major))
+
+(defn bpm [per-minute] #(-> % (/ per-minute) (* 60) (* 1000)))
+(defn syncopate [timing durations] #(->> % (sum-n durations) timing))
+(defn run [a b]
+  (if (<= a b)
+    (range a (inc b))
+    (reverse (run b a))))
+
+(def durations (flatten [(repeat 2 1/4) 1/2 (repeat 6 1/4) (repeat 8 1/4) 3/2 (repeat 10 1/4) 1/2 (repeat 2 1/4) 9/4 3/4 (repeat 12 1/4) 1/2 1 1/2 (repeat 12 1/4) 1]))
+(def pitches (flatten [0 (run -1 3) (run 2 0) 4 (run 1 8) (run 7 -1) 0 (run 0 -3) 4 4 (run 2 -3) -1 1 (run 4 6) 1 1 1 2 -1 -2 0 1 -1 -2 (run 5 0)]))
+(def bass (map #(- % 7) (flatten (map #(repeat 3 %) (concat (run 0 -3) (run -5 -3) [-7])))))
+
+(defn melody# [timing notes]
+  (let [note# #(at (timing %1) (piano ((nth scales %1) %2)))]
+    (dorun (map-indexed note# notes))))
+
+(defn play# []
+  (let [timing (-> (bpm 90) (translate 0 (now)))
+        rhythm-from #(syncopate (translate timing % 0) durations)
+        leader pitches
+        follower (->> leader (map -) (map #(- % 4)))]
+    (melody# timing bass)
+    (melody# (rhythm-from 1/2) leader)
+    (melody# (rhythm-from 7/2) follower)
+    (melody# (syncopate (translate timing 23 0) [1 1/4 1/4 1/4 1/4 1]) [-7 -7 -5 -3 -1 0])
+    ))
+
+(play#)


kata5: replace multi-methods with BloomFilterImpl protocol

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


add attachment permissions test placeholder

error: pathspec 'test/clj_money/permissions/attachments_test.clj' did not match any file(s) known to git

--- test/clj_money/permissions/attachments_test.clj
+++ test/clj_money/permissions/attachments_test.clj
@@ -0,0 +1,27 @@
+(ns clj-money.permissions.attachments-test
+  (:require [clojure.test :refer :all]
+            [environ.core :refer [env]]
+            [clojure.pprint :refer [pprint]]
+            [clojure.data :refer [diff]]
+            [clj-time.core :as t]
+            [clj-factory.core :refer [factory]]
+            [slingshot.test :refer :all]
+            [clj-money.factories.user-factory]
+            [clj-money.serialization :as serialization]
+            [clj-money.authorization :refer [apply-scope
+                                             allowed?
+                                             tag-resource]]
+            [clj-money.models.entities :as entities]
+            [clj-money.models.grants :as grants]
+            [clj-money.permissions.entities]
+            [clj-money.test-helpers :refer [reset-db
+                                            with-authentication
+                                            find-commodity
+                                            find-users
+                                            find-entity]]))
+
+(def storage-spec (env :db))
+
+(use-fixtures :each (partial reset-db storage-spec))
+
+; TODO Add attachment permission tests


Add `ss-0100-macro-indentation-demo`

Add `ss-0100-macro-indentation-demo`

error: pathspec 'test/com/nomistech/clojure_the_language/c_950_tools_stuff/s_200_cider/ss_0100_macro_indentation_demo.clj' did not match any file(s) known to git

--- test/com/nomistech/clojure_the_language/c_950_tools_stuff/s_200_cider/ss_0100_macro_indentation_demo.clj
+++ test/com/nomistech/clojure_the_language/c_950_tools_stuff/s_200_cider/ss_0100_macro_indentation_demo.clj
@@ -0,0 +1,28 @@
+(ns com.nomistech.clojure-the-language.c-950-tools-stuff.s-200-cider.ss-0100-macro-indentation-demo)
+
+(defmacro my-macro-with-not-body [_w _x _y _z]
+  42)
+
+(defmacro my-macro-with-body [& _body]
+  42)
+
+(defmacro my-macro-with-body-and-special-indentation
+  {:style/indent 2}
+  [& _body]
+  42)
+
+(comment
+  {:a (my-macro-with-not-body 1
+                              2
+                              3
+                              4)
+   :b (my-macro-with-body 1
+                          2
+                          3
+                          4)
+   :c (my-macro-with-body-and-special-indentation 1
+          2
+        3
+        4)}
+
+  )


realistic timeout for numbers

realistic timeout for numbers

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


Entzun laguntzailea

Entzun laguntzailea

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


Erregistratu menuan

Erregistratu menuan

fatal: unable to access 'https://github.com/lnmnd/magnet.bez.git/': The requested URL returned error: 403


Added more end punctuation

Added more end punctuation

fatal: unable to access 'https://github.com/hudren/ebook-novel.git/': The requested URL returned error: 403


Change influxdb prefix.

Change influxdb prefix.

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/cstorey/nrod.git/'


Added clj-time a joda time wrapper. 	modified:   test/loganalyzer/core_test.clj

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


slight tweak to avoid instantiating File objects we don't need

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/rcarmo/yaki-clj.git/'


Creates parent directories as necessary

Creates parent directories as necessary

--- jvm-runner/src/clojure/codewars/util.clj
+++ jvm-runner/src/clojure/codewars/util.clj
@@ -42,6 +42,7 @@
         (format "Could not write to file %s, because that file already exists.  Perhaps it already contains the setup or test fixture code?\ncode:\n%s" (pr-str base-name) code)))
       ;; else
       (do
+        (-> file-name .getParentFile .mkdirs)
         (spit file-name code)
         {:file-name file-name
          :class-name class-name}))))


Sessions

Sessions

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


Created test for basic map convert, altered OnyxMap interface to be explicit about keyword parameters vs object parameters

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

--- test/onyx_java/test/map_fns.clj
+++ test/onyx_java/test/map_fns.clj
@@ -0,0 +1,12 @@
+(ns onyx-java.test.map-fns
+  (:import org.onyxplatform.api.java.OnyxMap)
+  (:require [clojure.test :refer [deftest is]]
+            [onyx-java.utils.map-fns :as mf]))
+
+(deftest to-onyx-map
+  (let [expected {:a "A" :b 5 :c (java.util.UUID/randomUUID) :d :D }
+        o (mf/to-onyx-map expected) ]
+    (is (= (.toMap o) expected))))
+
+
+


parallel calcs

parallel calcs

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


This needs to be fixed upstream

This needs to be fixed upstream

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/xcthulhu/clj-bitauth.git/'


system exection ns has been added

system exection ns has been added

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

--- core/src/clj/hellhound/system/execution.clj
+++ core/src/clj/hellhound/system/execution.clj
@@ -0,0 +1,9 @@
+(ns hellhound.system.execution)
+
+(defn get-executor
+  [system]
+  (:executor system))
+
+(defn get-execution-model
+  [system]
+  (:execution-model system))


if a User happens to be deleted then cascade deletes to their Activity items due to FK constraints.

--- src/metabase/models/user.clj
+++ src/metabase/models/user.clj
@@ -46,7 +46,8 @@
       (or first_name last_name) (assoc :common_name (str first_name " " last_name))))

   (pre-cascade-delete [_ {:keys [id]}]
-    (cascade-delete 'Session :user_id id)))
+    (cascade-delete 'Session :user_id id)
+    (cascade-delete 'Activity :user_id id)))

 (def ^:const current-user-fields


initial ns for fns that marshall data for templates

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

--- src/navigator/data.clj
+++ src/navigator/data.clj
@@ -0,0 +1,10 @@
+(ns navigator.data
+  (:require [datomic.api :as d]))
+
+;; TODO: make this POC real
+(defn get-comp-map [db-conn ctx]
+  (apply str (interpose " " (map #(d/touch
+                                   (d/entity
+                                    (d/db db-conn)
+                                    (first %)))
+                                 (d/q '[:find ?e :where [?e :db/ident]] (d/db db-conn))))))


remove erroneous authorization on change password

fatal: unable to access 'https://github.com/starcity-properties/odin.git/': The requested URL returned error: 403


add initial tests

add initial tests

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

--- src/test/clj/clojure/core/matrix/test_complex.clj
+++ src/test/clj/clojure/core/matrix/test_complex.clj
@@ -0,0 +1,11 @@
+(ns clojure.core.matrix.test-complex
+  (:use clojure.test)
+  (:require [complex.core :as c]
+            [clojure.core.matrix.complex :as cm]
+            [clojure.core.matrix :as m]))
+
+(deftest test-complex
+  (let [c (c/complex-number 1 2)]
+    (is (== 1 (cm/real c)))
+    (is (== 2 (cm/imag c)))))
+


adjust handler to expect the domain type, not entity

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


Fixing tests.

Fixing tests.

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


provide a user namespace that can be used for REPL testing

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

--- src/user.clj
+++ src/user.clj
@@ -0,0 +1,40 @@
+(ns user
+  (:require [com.stuartsierra.component :as component]
+            [clojure.tools.namespace.repl :as ctnrepl]
+            [taoensso.timbre :as timbre]
+
+            [open-company.config :as c]
+            [open-company.app :as app]
+            [open-company.components :as components]))
+
+(def system nil)
+
+(defn init []
+  (alter-var-root #'system (constantly (components/oc-system {:handler-fn app/app
+                                                              :port 3000}))))
+
+(defn start []
+  (alter-var-root #'system component/start))
+
+(defn stop []
+  (alter-var-root #'system (fn [s] (when s (component/stop s)))))
+
+(defn go []
+  (init)
+  (start))
+
+(defn reset []
+  (stop)
+  (ctnrepl/refresh :after 'user/go))
+
+(comment
+
+  (into {} system)
+
+  (go)
+
+  (do
+    (clojure.tools.namespace.repl/set-refresh-dirs "src")
+    (reset))
+
+  )


Users module for retrieving user IDs from database

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

--- src/chameleon/users.clj
+++ src/chameleon/users.clj
@@ -0,0 +1,9 @@
+(ns chameleon.users
+  (:require [chameleon.db :as db]
+            [monger.collection :as mc]))
+
+(def ^{:private true} coll "users")
+
+(def users (mc/find-maps db/db coll))
+
+(def user-ids (map (fn [e] (long (:_id e))) users))


some cleanup

some 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/ducky427/movies-cljs-rn.git/'


:bug: Remove debugging dropping

:bug: Remove debugging dropping

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/maoo/bot-unfurl.git/'


Remove obsolete assoc

Remove obsolete assoc

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


Add generic `get-value` function on cats.core ns.

--- src/cljx/cats/core.cljx
+++ src/cljx/cats/core.cljx
@@ -435,3 +435,9 @@
     (mlet [a (mf x)
            b (mg a)]
           (return b))))
+
+(defn get-value
+  "Generic function for unwrap/extract
+  the inner value of a container."
+  [v]
+  (p/get-value v))


classic resolve

classic resolve

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


fixed other conditions in match

fixed other conditions in match

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/parenode/clojure-cup-2015.git/'


locate property for onboarding users

locate property for onboarding users


New module config.clj with functions for working with INI files

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

--- src/hurvinek/config.clj
+++ src/hurvinek/config.clj
@@ -0,0 +1,39 @@
+;
+;  (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 hurvinek.config
+    "Module that contains all functions required to to load configuration from the INI file.")
+
+(require '[clojure.pprint :as pprint])
+
+(require '[clojure-ini.core :as clojure-ini])
+
+(defn parse-int
+    "Parse the given string as an integer number."
+    [^String string]
+    (java.lang.Integer/parseInt string))
+
+(defn parse-float
+    "Parse the given string as a float number."
+    [^String string]
+    (java.lang.Float/parseFloat string))
+
+(defn load-configuration
+    "Load configuration from the provided INI file."
+    [^String ini-file-name]
+    (clojure-ini/read-ini ini-file-name :keywordize? true))
+
+(defn print-configuration
+    "Print actual configuration to the output."
+    [configuration]
+    (pprint/pprint configuration))
+


Version 32-SNAPSHOT

Version 32-SNAPSHOT

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


[WM] update to bifrost 0.1.4

[WM] update to bifrost 0.1.4

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


Version 48-SNAPSHOT

Version 48-SNAPSHOT

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


Note to self

Note to self


shen-toplevel based macro a bit to over the top, eval will do


Started Super Anagrams problem

Started Super Anagrams problem

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

--- src/clojush/problems/software/super_anagrams.clj
+++ src/clojush/problems/software/super_anagrams.clj
@@ -0,0 +1,202 @@
+;; super_anagrams.clj
+;; Tom Helmuth, thelmuth@cs.umass.edu
+;;
+;; Problem Source: iJava (http://ijava.cs.umass.edu/)
+;;
+;; Given strings x and y of lowercase letters with length <= 20, return true if
+;; y is a super anagram of x, which is the case if every character in x is in y.
+;; To be true, y may contain extra characters, but must have at least as many
+;; copies of each character as x does.
+;;
+;; input stack has the 2 input strings
+;;
+
+(ns clojush.problems.software.super-anagrams
+  (:use clojush.pushgp.pushgp
+        [clojush pushstate interpreter random util globals]
+        clojush.instructions.tag
+        clojure.math.numeric-tower)
+    (:require [clojure.string :as string]))
+
+; Atom generators
+(def super-anagrams-atom-generators
+  (concat (list
+            ;;; end constants
+            ;;; end ERCs
+            (tag-instruction-erc [:string :char :integer :boolean :exec] 1000)
+            (tagged-instruction-erc 1000)
+            ;;; end tag ERCs
+            'in1
+            'in2
+            ;;; end input instructions
+            )
+          (registered-for-stacks [:string :char :integer :boolean :exec])))
+
+
+;; Define test cases
+(defn super-anagrams-input
+  "Makes a pair of Super Anagrams inputs."
+  [min-length]
+  (let [len (+ min-length (lrand-int (- 11 min-length)))
+        input1 (apply str
+                      (repeatedly len
+                                  (fn []
+                                    (lrand-nth (map char (range 33 127))))))
+        change-char-sometimes-fn (fn [c]
+                                   "Each char has 40% chance of being replaced"
+                                   (if (< (lrand) 0.4)
+                                     (lrand-nth (map char (range 33 127)))
+                                     c))
+        num-chars-to-drop-last (lrand-nth (list 0 0 0 1 1 (lrand-int (inc (count input1)))))
+        input2 (apply str (drop-last num-chars-to-drop-last
+                                     (map change-char-sometimes-fn input1)))]
+    (if (< (lrand) 0.5) ;;Choose random order since len(input1) >= len(input2)
+      [input1 input2]
+      [input2 input1])))
+
+;; A list of data domains for the problem. Each domain is a vector containing
+;; a "set" of inputs and two integers representing how many cases from the set
+;; should be used as training and testing cases respectively. Each "set" of
+;; inputs is either a list or a function that, when called, will create a
+;; random element of the set.
+(def super-anagrams-data-domains
+  [[(list ["" ""]
+          ["" "hi"]
+          ["hereworld" ""]
+          ["a" "a"]
+          ["b" "c"]
+          ["n" "nn"]
+          ["abcde" "c"]
+          ["c" "abcde"]
+          ["abc" "aabc"]
+          ["aabc" "abcde"]
+          ["abcde" "edcba"]
+          ["mo" "moo"]
+          ["moo" "mo"]
+          ["rip" "zipper"]
+          ["flipper" "rip"]
+          ["hi" "zipper"]
+          ["dealer" "dollars"]
+          ["loud" "louder"]
+          ["clinteastwood" "oldwestaction"]
+          ["clinteastwood" "ldwestaction"]
+          ["verificationcomplete" "verificationcomplete"]
+          ["hahahahahahahahahaha" "hhhhhhhhhhaaaaaaaaaa"]
+          ["hahahahahahahahahaha" "aahhhh"]
+
+          [(apply str (repeat 10 \s)) (apply str (repeat 10 \~))]
+          [(apply str (take 10 (cycle (list \> \_ \= \])))) (apply str (take 10 (cycle (list \q \_))))]
+          [(apply str (take 10 (cycle (list \( \))))) (apply str (take 10 (cycle (list \p \p \)))))]
+          [(apply str (take 10 (cycle (list \H \a)))) (apply str (take 10 (cycle (list \H \i))))]) 30 0] ; Edge case inputs
+   [#(super-anagrams-input 2) 170 0] ; Random inputs. Length 1 strings are covered by hand-coded cases
+   [#(super-anagrams-input 1) 0 2000]
+   ])
+
+;;Can make test data like this:
+;(test-and-train-data-from-domains super-anagrams-data-domains)
+
+; Helper function for error function
+(defn super-anagrams-test-cases
+  "Takes a sequence of inputs and gives IO test cases of the form
+   [input output]."
+  [inputs]
+  (map (fn [[in1 in2]]
+         (vector [in1 in2]
+                 (apply str
+                        (interpose \newline
+                                   (map #(apply str (interpose \space (rest %)))
+                                       (filter first (map #(vector (not= %1 %2) %3 %1 %2)
+                                                          in1
+                                                          in2
+                                                          (range))))))))
+       inputs))
+
+; Define error function. For now, each run uses different random inputs
+(defn super-anagrams-error-function
+  "Returns the error function for the Super Anagrams problem. Takes as
+   input Super Anagrams data domains."
+  [data-domains]
+  (let [[train-cases test-cases] (map super-anagrams-test-cases
+                                          (test-and-train-data-from-domains data-domains))]
+    (when true ;; Change to false to not print test cases
+      (doseq [[i case] (map vector (range) train-cases)]
+        (println (format "Train Case: %3d | Input/Output: %s" i (str case))))
+      (doseq [[i case] (map vector (range) test-cases)]
+        (println (format "Test Case: %3d | Input/Output: %s" i (str case)))))
+    (fn the-actual-super-anagrams-error-function
+      ([program]
+        (the-actual-super-anagrams-error-function program :train))
+      ([program data-cases] ;; data-cases should be :train or :test
+        (the-actual-super-anagrams-error-function program data-cases false))
+      ([program data-cases print-outputs]
+        (let [behavior (atom '())
+              errors (doall
+                       (for [[[input1 input2] correct-output] (case data-cases
+                                                                :train train-cases
+                                                                :test test-cases
+                                                                [])]
+                         (let [final-state (run-push program
+                                                     (->> (make-push-state)
+                                                       (push-item input2 :input)
+                                                       (push-item input1 :input)
+                                                       (push-item "" :output)))
+                               result (stack-ref :output 0 final-state)]
+                           (when print-outputs
+                             (println (format "| Correct output: %s\n| Program output: %s\n" (pr-str correct-output) (pr-str result))))
+                           ; Record the behavior
+                           (when @global-print-behavioral-diversity
+                             (swap! behavior conj result))
+                           ; Error is Levenshtein distance of printed strings
+                           (levenshtein-distance correct-output result))))] ;;NOTE: SEE NOTE IN INTRO
+          (when @global-print-behavioral-diversity
+            (swap! population-behaviors conj @behavior))
+          errors)))))
+
+(defn super-anagrams-report
+  "Custom generational report."
+  [best population generation error-function report-simplifications]
+  (let [best-program (not-lazy (:program best))
+        best-test-errors (error-function best-program :test)
+        best-total-test-error (apply +' best-test-errors)]
+    (println ";;******************************")
+    (printf ";; -*- Super Anagrams problem report - generation %s\n" generation)(flush)
+    (println "Test total error for best:" best-total-test-error)
+    (println (format "Test mean error for best: %.5f" (double (/ best-total-test-error (count best-test-errors)))))
+    (when (zero? (:total-error best))
+      (doseq [[i error] (map vector
+                             (range)
+                             best-test-errors)]
+        (println (format "Test Case  %3d | Error: %d" i error))))
+    (println ";;------------------------------")
+    (println "Outputs of best individual on training cases:")
+    (error-function best-program :train true)
+    (println ";;******************************")
+    )) ;; To do validation, could have this function return an altered best individual
+       ;; with total-error > 0 if it had error of zero on train but not on validation
+       ;; set. Would need a third category of data cases, or a defined split of training cases.
+
+
+; Define the argmap
+(def argmap
+  {:error-function (super-anagrams-error-function super-anagrams-data-domains)
+   :atom-generators super-anagrams-atom-generators
+   :max-points 1000
+   :max-points-in-initial-program 500
+   :evalpush-limit 2000
+   :population-size 1000
+   :max-generations 300
+   :parent-selection :lexicase
+   :genetic-operator-probabilities {:alternation 0.2
+                                    :uniform-mutation 0.2
+                                    :uniform-close-mutation 0.1
+                                    [:alternation :uniform-mutation] 0.5
+                                    }
+   :alternation-rate 0.01
+   :alignment-deviation 10
+   :uniform-mutation-rate 0.01
+   :problem-specific-report super-anagrams-report
+   :print-behavioral-diversity true
+   :report-simplifications 0
+   :final-report-simplifications 5000
+   ;:max-error 1
+   })


Update comment in find-by-identifiers

Update comment in find-by-identifiers


Add some confirmatory/explanatory tests for records

fatal: unable to access 'https://github.com/marick/structural-typing.git/': The requested URL returned error: 403


itogo end

itogo end

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/TwiceII/gccnew.git/'


cosmetic changes

cosmetic changes

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/drcabana/euler-fp.git/'


Repo functions reading from the filesystem.

--- src/clojars/repo.clj
+++ src/clojars/repo.clj
@@ -1,6 +1,6 @@
 (ns clojars.repo
   (:require [clojars.auth :refer [with-account require-authorization]]
-            [clojars.db :refer [find-jar add-jar update-jar]]
+            [clojars.db :refer [add-jar update-jar]]
             [clojars.config :refer [config]]
             [clojars.maven :as maven]
             [clojars.event :as ev]
@@ -12,6 +12,27 @@
             [ring.util.response :as response]
             [clj-stacktrace.repl :refer [pst]])
   (:import java.io.StringReader))
+
+(defn versions [group-id artifact-id]
+  (->> (.listFiles (io/file (config :repo) group-id artifact-id))
+       (filter (memfn isDirectory))
+       (sort-by (comp - (memfn last-modified)))
+       (map (memfn getName))))
+
+(defn find-jar
+  ([group-id artifact-id]
+     (find-jar group-id artifact-id (first (versions group-id artifact-id))))
+  ([group-id artifact-id version]
+     (maven/pom-to-map (io/file (config :repo) group-id artifact-id version
+                                (format "%s-%s.%s" artifact-id version "pom")))))
+
+(defn group-artifacts [group-id]
+  (.list (io/file (config :repo) group-id)))
+
+(defn user-artifacts [username]
+  (mapcat group-artifacts (:groups (@users username))))
+
+;; web handlers

 (defn save-to-file [sent-file input]
   (-> sent-file


Add realization file.

Add realization file.

error: pathspec 'src/replikativ/crdt/lwwr/realize.cljc' did not match any file(s) known to git

--- src/replikativ/crdt/lwwr/realize.cljc
+++ src/replikativ/crdt/lwwr/realize.cljc
@@ -0,0 +1,51 @@
+(ns replikativ.crdt.lwwr.realize
+  (:require [clojure.set :as set]
+            [konserve.core :as k]
+            [konserve.memory :refer [new-mem-store]]
+            [replikativ.environ :refer [store-blob-trans-id store-blob-trans-value store-blob-trans]]
+            [replikativ.protocols :refer [-downstream -handshake]]
+            [replikativ.realize :as real]
+            [replikativ.crdt.materialize :refer [ensure-crdt]]
+            [replikativ.crdt.lwwr.core :as core]
+            [replikativ.crdt.lwwr.stage :as ors]
+            #?(:clj [kabel.platform-log :refer [debug info warn]])
+            #?(:clj [superv.async :refer [<? go-try go-loop-super >?]])
+            #?(:clj [clojure.core.async :as async
+                     :refer [>! timeout chan alt! put! sub unsub pub close!]]
+               :cljs [cljs.core.async :as async
+                      :refer [>! timeout chan put! sub unsub pub close!]])))
+
+(defn stream-into-atom! [stage [u id] val-atom]
+  (let [{{[p _] :chans
+          :keys [store err-ch]
+          S :supervisor} :volatile} @stage
+        pub-ch (chan 10000)
+        applied-ch (chan 10000)]
+    (async/sub p :pub/downstream pub-ch)
+    ;; stage is set up, now lets kick the update loop
+    (go-try S
+     (let [lwwr (<? S (ensure-crdt S store (<? S (new-mem-store)) [u id] :lwwr))]
+       (when lwwr
+         (put! pub-ch {:downstream {:method :handshake
+                                    :crdt :lwwr
+                                    :op (-handshake lwwr S)}
+                       :user u :crdt-id id}))
+       (go-loop-super S [{{{register :register :as op} :op
+                         method :method}
+                        :downstream :as pub
+                        :keys [user crdt-id]} (<? S pub-ch)
+                       lwwr lwwr]
+                      (when pub
+                        (debug {:event :streaming-lwwr :id (:id pub)})
+                        (cond (not (and (= user u)
+                                        (= crdt-id id)))
+                              (recur (<? S pub-ch) lwwr)
+
+                              :else
+                              (let [lwwr (-downstream lwwr op)]
+                                (reset! val-atom register)
+                                (>? S applied-ch pub)
+                                (recur (<? S pub-ch)
+                                       lwwr)))))))
+    {:close-ch pub-ch
+     :applied-ch applied-ch}))


move notes

move notes

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


Module for tests for module dictionary-interface

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

--- test/zg/dictionary_interface_test.clj
+++ test/zg/dictionary_interface_test.clj
@@ -0,0 +1,25 @@
+;
+;  (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 zg.dictionary-interface-test
+  (:require [clojure.test :refer :all]
+            [zg.dictionary-interface :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))
+


random cleanup

random cleanup

--- src/clj_http/core.clj
+++ src/clj_http/core.clj
@@ -173,8 +173,7 @@
    Note that where Ring uses InputStreams for the request and response bodies,
    the clj-http uses ByteArrays for the bodies."
   [{:keys [request-method scheme server-name server-port uri query-string
-           headers body multipart debug debug-body
-           socket-timeout conn-timeout  ;; in milliseconds
+           headers body multipart debug debug-body socket-timeout conn-timeout
            insecure? save-request? proxy-host proxy-port as cookie-store
            retry-handler response-interceptor digest-auth connection-manager
            client-params] :as req}]


Skeleton main method

Skeleton main method

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

--- src/karmabot/core.clj
+++ src/karmabot/core.clj
@@ -0,0 +1,5 @@
+(ns karmabot.core
+  (:gen-class))
+
+(defn -main [& args]
+  (println "Hello, world!"))


_actually_ proxy content type

_actually_ proxy content type

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


Try another way

Try another way


Docstring fix

Docstring fix

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


Minor refactoring

Minor refactoring


Making partial lambdas work the way Shen expects


not specifying slave resources

not specifying slave resources

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


erabiltzailea gehitzean kanala itzuli

erabiltzailea gehitzean kanala itzuli

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


bidali-eta-entzun POST-entzat

bidali-eta-entzun POST-entzat


Create profiles.cljs

Create profiles.cljs

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

--- lein/profiles.cljs
+++ lein/profiles.cljs
@@ -0,0 +1,6 @@
+{:user {:plugins [[lein-kibit "0.1.6"]]}
+ :repl {:plugins [[cider/cider-nrepl "0.18.0-SNAPSHOT"]]
+        :dependencies [[org.clojure/tools.nrepl "0.2.13"]
+                       [cider/piggieback "0.3.8"]
+                       [figwheel-sidecar "0.5.16"]
+        :repl-options {:nrepl-middleware [cider.piggieback/wrap-cljs-repl]}}}


Fix auto-runner for exceptions without causes or messages, fixes #16

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/croeder/clojure-koans-work.git/'


Add citizenship-docs

Add citizenship-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/democracyworks/election-notification-works.git/'


Added swank-clojure dev-dependency to ring-core

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


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


Test refactoring.

Test refactoring.

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


Sketching out rpi implementation

Sketching out rpi implementation

error: pathspec 'src/clj_bots/pin_ctrl_rpi/implementation.clj' did not match any file(s) known to git

--- src/clj_bots/pin_ctrl_rpi/implementation.clj
+++ src/clj_bots/pin_ctrl_rpi/implementation.clj
@@ -0,0 +1,75 @@
+(ns clj-bots.pin-ctrl-rpi.implementation
+  "# Raspberry Pi pin-ctrl API implementation"
+  (:require [clj-bots.pin-ctrl
+             [protocols :as pcp]
+             [implementation :as impl]]
+            [clj-bots.pin-ctrl :as pc]
+            [clj-gpio :as gpio]
+            [clojure.core.async :as async :refer [chan >!! <!! go <! >! go-loop]]))
+
+
+
+;; First we'll set up some function declarations and multi-method signatures that we'll be using in the implementations.
+
+(declare current-pin-mode writeable-pin? ok-val?)
+
+(defmulti read-pin*
+  "Inner method for reading from a pin; dispatches on pin mode"
+  pc/current-pin-mode)
+
+(defmulti unset-mode*
+  "Inner method for unsetting a pin mode, in particular for being run before moving to another mode or turned off"
+  pc/current-pin-mode)
+
+(defmulti set-mode*
+  "Inner method for setting the mode of a pin on the board"
+  (fn [board pin-n mode] mode))
+
+(defmulti write-value*
+  "Inner method for writing a value to a pin"
+  (fn [board pin-n val]
+    (pc/current-pin-mode board pin-n)))
+
+
+(defrecord RPiBoard
+  [pin-modes edge-channels config]
+  pcp/PBoard
+  (pin-modes [_] (:pin-modes config))
+  (current-pin-modes [_] @pin-modes)
+  (get-config [_] config)
+  (update-config [this f] (update-in this [:config] f))
+
+  pcp/PPinConfigure
+  (set-mode! [board pin-n mode]
+    (unset-mode* board pin-n)
+    (set-mode* board pin-n mode)
+    (swap! pin-modes assoc pin-n mode))
+
+  pcp/PReadablePin
+  (read-value [board pin-n]
+    (read-pin* board pin-n))
+
+  pcp/PWriteablePin
+  (write-value! [board pin-n val]
+    (write-value* board pin-n val))
+
+  pcp/PEdgeDetectablePin
+  (set-edge! [board pin-n edge buffer]
+    (gpio/set-edge! pin-n edge)
+    (let [[c m] (or (get @edge-channels pin-n)
+                    )]
+      (if (= :none edge)
+        (do (async/close! c)
+            (swap! edge-channels dissoc pin-n))
+        (let [p (open-channel-port
+                  c (create-edge-channel pin-n)
+
+
+      (do (async/close! (@edge-channels pin-n))
+          (swap! edge-channels dissoc pin-n))
+                      (let [c (chan buffer)]
+                        [c (async/mult c)]))
+            (
+
+
+


delete redundant import of core-utility in database.clj

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


Docstrings

Docstrings

--- src/cljx/cats/core.cljx
+++ src/cljx/cats/core.cljx
@@ -205,7 +205,7 @@
   (m-map mf vs))

 (defmacro m-lift
-  "Lifts a function with a fixed number of arguments to a
+  "Lifts a function with the given fixed number of arguments to a
   monadic context.

       (require '[cats.types :as t])
@@ -279,9 +279,9 @@
       (t/state-t)))

 (defn swap-state
-  [f]
   "Return State instance with computation that applies
   specified function to state and return the old state."
+  [f]
   (-> (fn [s] (t/pair s (f s)))
       (t/state-t)))


condp some

condp some

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


[WM DG] WHITESPACE!!!

[WM DG] WHITESPACE!!!

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


s/election-mail-works/election-notification-works


v. minor spelling change

v. minor spelling change


add api/card

add api/card

error: pathspec 'src/metabase/api/card.clj' did not match any file(s) known to git

--- src/metabase/api/card.clj
+++ src/metabase/api/card.clj
@@ -0,0 +1,8 @@
+(ns metabase.api.card
+  (:require [metabase.api.common :refer :all]
+            [metabase.db :refer :all]
+            [metabase.models.card :refer :all]
+            [metabase.models.hydrate :refer [hydrate]]))
+
+(defapi by-id [id]
+  (or-404-> (sel :one Card :id (Integer/parseInt id))))


adding more known items to categories

adding more known items to categories

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/ShaolinSarg/bean_counter.git/'


got rid of unneeded quit atom

got rid of unneeded quit atom

--- sidecar/src/figwheel_sidecar/watching.clj
+++ sidecar/src/figwheel_sidecar/watching.clj
@@ -31,8 +31,7 @@
           (recur (conj collect v)))))))

 (defn watch! [source-paths callback]
-  (let [quit (atom false)
-        throttle-chan (chan)
+  (let [throttle-chan (chan)

         {:keys [files dirs]} (files-and-dirs source-paths)
         individual-file-map   (single-files files)


First attempt at lane model.

First attempt at lane model.

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

--- src/cbfg/lane.cljs
+++ src/cbfg/lane.cljs
@@ -0,0 +1,24 @@
+(ns cbfg.lane
+  (:require-macros [cbfg.ago :refer [ago-loop achan aput atake]]))
+
+(defn make-lane-pump [actx in-ch out-ch make-lane]
+  (ago-loop lane-pump actx [lane-chs {}]
+            (if-let [m (atake lane-pump in-ch)]
+              (if (= (:op m) :close-lane)
+                (if-let [lane-ch (get lane-chs (:lane m))]
+                  (do (aclose lane-pump lane-ch)
+                      ; Although we closed the lane-ch, the lane might
+                      ; still be putting late responses on the out-ch,
+                      ; which the client should be prepared to handle
+                      ; or drop and to also not re-use lane names.
+                      (aput lane-pump out-ch (merge m {:status ok}))
+                      (recur (dissoc lane-chs (:lane m))))
+                  (do (aput lane-pump out-ch (merge m {:status not-found})) ; Unknown lane.
+                      (recur lane-chs)))
+                (let [[lane-ch lane-chs2] (if-let [lane-ch (get lane-chs (:lane m))]
+                                            [lane-ch lane-chs]
+                                            (let [new-lane-ch (make-lane lane-pump (:lane m))]
+                                              [new-lane-ch (assoc lane-chs (:lane m)
+                                                                  new-lane-ch)]))]
+                  (aput lane-pump lane-ch m)
+                  (recur lane-chs2))))))


[WM] sync create schema w/ optional attrs in entity

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


Doh, nil addresses.

Doh, nil addresses.

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


Update UI

Update 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/yhoshino11/tutorial.git/'


New Clojure file

New Clojure file

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

--- clojure/org/gavrog/clojure/orbifoldInvariant3d.clj
+++ clojure/org/gavrog/clojure/orbifoldInvariant3d.clj
@@ -0,0 +1,3 @@
+(ns org.gavrog.clojure.orbifoldInvariant3d
+  (:use (org.gavrog.clojure
+          delaney)))


Try again log stash appender

Try again log stash appender

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


Drag \w char class into Unicode era

Drag \w char class into Unicode era


Remove option unused for transit.

Remove option unused for transit.

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/cstorey/nrod.git/'


repl changes

repl changes

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


Use new java.time API instead of j.u.Date

<-- Old and busted
New hotness -->

<-- Old and busted
New hotness -->

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


Remove prn and change double-click to click...

... for expanding re-lorean event items. More pleasant with just one
click.

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/Reefersleep/sleepydo.git/'


Removing the list of ns as it wasn't working to split it up anyway


Fixes teams/:id/pending proxy

Fixes teams/:id/pending proxy


Version 0.2.22-SNAPSHOT

Version 0.2.22-SNAPSHOT

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


Change version to 0.9.1

Change version to 0.9.1

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


bump deps

bump deps

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


Update Clojure and ClojureScript

Update Clojure and ClojureScript

--- project.clj
+++ project.clj
@@ -8,8 +8,8 @@
   :dependencies [[cljsjs/react "0.14.3-0" :scope "provided"]
                  [cljsjs/react-dom "0.14.3-1" :scope "provided"]
                  [cljsjs/react-dom-server "0.14.3-0" :scope "provided"]
-                 [org.clojure/clojure "1.7.0" :scope "provided"]
-                 [org.clojure/clojurescript "1.7.189" :scope "provided"]]
+                 [org.clojure/clojure "1.8.0" :scope "provided"]
+                 [org.clojure/clojurescript "1.7.228" :scope "provided"]]
   :aliases {"ci" ["do"
                   ["clean"]
                   ["test" ":default"]


Version 1.15.6

Version 1.15.6


bump version to 2.7.0

bump version to 2.7.0

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


Upgrade kehaar to 0.10.3

Upgrade kehaar to 0.10.3

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


downgrade postal due to java.lang.StackOverflowError: null

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


Update deps

Update deps

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


Update cljs to 1.7.170

Update cljs to 1.7.170

--- project.clj
+++ project.clj
@@ -3,13 +3,13 @@
   :license     { :name "Eclipse"
                  :url  "http://www.eclipse.org/legal/epl-v10.html" }
   :url         "https://github.com/tonsky/rum"
-
+
   :dependencies
   [ [org.clojure/clojure        "1.7.0"   :scope "provided"]
-    [org.clojure/clojurescript  "1.7.122" :scope "provided"]
+    [org.clojure/clojurescript  "1.7.170" :scope "provided"]
     [cljsjs/react               "0.13.3-1"]
     [sablono                    "0.3.6"] ]
-
+
   :global-vars
   { *warn-on-reflection* true }


release version 2.5.0

release version 2.5.0

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


updated compiler to set page id

updated compiler to set page id

--- src/leiningen/new/cryogen/src/cryogen/compiler.clj
+++ src/leiningen/new/cryogen/src/cryogen/compiler.clj
@@ -164,7 +164,8 @@
   (spit (str public blog-prefix "/index.html")
         (render-file "templates/html/layouts/home.html"
                      (merge default-params
-                            {:disqus?         disqus?
+                            {:home true
+                             :disqus?         disqus?
                              :post            (get-in default-params [:latest-posts 0])}))))

 (defn compile-archives [default-params posts {:keys [blog-prefix]}]
@@ -172,7 +173,8 @@
   (spit (str public blog-prefix "/archives.html")
         (render-file "templates/html/layouts/archives.html"
                      (merge default-params
-                            {:groups          (group-for-archive posts)}))))
+                            {:archives true
+                             :groups          (group-for-archive posts)}))))

 (defn tag-posts [posts config]
   (map #(update-in % [:tags] (partial map (partial tag-info config))) posts))


adding docs for lein help figwheel

adding docs for lein help figwheel

--- plugin/src/leiningen/figwheel.clj
+++ plugin/src/leiningen/figwheel.clj
@@ -376,8 +376,76 @@
   (build-once project (rest build-ids)))

 (defn figwheel
-  "Autocompile ClojureScript and serve the changes over a websocket (+ plus static file server)."
-  [project & build-ids]
+"Figwheel - a tool that helps you compile and reload ClojureScript.
+
+Figwheel commands usage:
+
+  The common way of invoking Figwheel looks like this:
+
+    lein figwheel build-id build-id ...
+
+  The above will run the default Figwheel :reactor command. See below for
+  a description.
+
+    lein figwheel [command] build-id build-id ...
+
+  Will execute the given [command] on the build-ids supplied.
+  A [command] always starts with a \":\" and should be one of the
+  following.
+
+Commands:
+
+:reactor build-id ...
+
+  If no [command] is supplied then this command will be chosen by
+  default.
+
+  This command will start a Figwheel autobuild process, server and
+  repl based on the supplied configuration. It will start autobuild
+  processes for all the build-ids supplied on the command line
+
+  The build-id supplied must exist in your configuration. If no
+  build-ids are supplied Figwheel will pick the first build in your
+  config with optimizations set to nil or :none.
+
+  You can customize witch builds are started by default, by setting
+  the :builds-to-start key n your config to a vector of the builds you
+  want to start. Example:
+
+    :figwheel {
+      :builds-to-start [\"example\"]
+    }
+
+  The Figwheel system will watch your ClojureScript files for
+  changes. When your files change Figwheel will compile them and
+  attempt to notify a Figwheel client that these changes have occurred
+
+:check-config
+
+  This will run a validation check on your configuration.
+
+  All arguments supplied to this command will be ignored.
+
+:once build-id ..
+
+  This will build all the supplied builds once. No autobuilder or
+  watching process will be launched. If no build-ids are supplied this
+  command will build all the builds in your config.
+
+  The Figwheel ClojureScript will not be injected into any of these
+  builds.
+
+Configuration:
+
+  Figwheel relies on a configuration that is found in the project.clj
+  or in a figwheel.edn file in your project root. If a figwheel.edn is
+  present any Figwheel configuration found in the project.clj will be
+  ignored.
+
+  To learn more about how to configure Figwheel please see the README
+  https://github.com/bhauman/lein-figwheel
+"
+  [project command & build-ids]
   (println "Figwheel: Cutting some fruit, just a sec ...")
   (clean-on-dependency-change project)
-  (fig-dispatch project build-ids))
+  (fig-dispatch project (cons command build-ids)))


Be more forgiving of non-existent phone numbers

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


[WM] fix logging deps

[WM] fix logging deps

This was throwing a warning previously. This syncs it up with the Datomic-recommended logging config that we've used elsewhere.

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


lein-release plugin: bumped version from 0.1.1 to 0.1.2-SNAPSHOT for next development cycle

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


switched to starcity fork of accountant

switched to starcity fork of accountant


move deps under :dev profile

move deps under :dev profile

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


Kehaar 0.7.0 with bounded thread pools

Kehaar 0.7.0 with bounded thread pools

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


Use clojure 1.9 in tests

Use clojure 1.9 in tests

--- project.clj
+++ project.clj
@@ -30,7 +30,7 @@
   {:test
    {
     :dependencies
-    [[org.clojure/clojure "1.8.0"]
+    [[org.clojure/clojure "1.9.0"]

      ;; Logging
      [org.clojure/tools.logging "0.3.1"]


No snapshots

No snapshots

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/delitescere/yada.git/'


adding swank to the lein deps

adding swank to the lein deps

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


Version 1.6.0-SNAPSHOT

Version 1.6.0-SNAPSHOT


Release 0.14.1.

Release 0.14.1.

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


Add project.clj

Add project.clj

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

--- project.clj
+++ project.clj
@@ -0,0 +1,8 @@
+(defproject day8.re-frame/trace "0.0.1-SNAPSHOT"
+  :description "Tracing and developer tools for re-frame apps"
+  :url         "https://github.com/Day8/re-frame-trace"
+  :license     {:name "MIT"}
+  :dependencies [[org.clojure/clojure        "1.8.0"]
+                 [org.clojure/clojurescript  "1.9.227"]
+                 [reagent                    "0.6.0"]]
+  )


Upgrade kehaar to 0.10.3

Upgrade kehaar to 0.10.3

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


Kehaar 0.7.0 with bounded thread pools

Kehaar 0.7.0 with bounded thread pools