GM: Add datalist page and form components

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

--- src/cljs/ona/dataset.cljs
+++ src/cljs/ona/dataset.cljs
@@ -0,0 +1,204 @@
+(ns ona.dataset
+  (:require-macros [cljs.core.async.macros :refer [go go-loop]]
+                   [dommy.macros :refer [sel sel1]])
+  (:require [cljs.core.async :refer [<! chan mult tap put!]]
+            [cljsjs.moment]
+            [clojure.string :as s]
+            [om.core :as om :include-macros true]
+            [ona.api.io :as io]
+            [ona.api.http :refer [parse-http]]
+            [ona.state :refer [update-form-state! forms-state]]
+            [ona.utils.dom :refer [click-fn]]
+            [ona.utils.interop :refer [safe-regex]]
+            [ona.utils.numeric :as n]
+            [sablono.core :refer-macros [html]]))
+
+(enable-console-print!)
+
+(def dataset-container "dataset-container")
+
+(def sorters
+  {"Date Created " {:func :date_created :comp >}
+   "Alphabetical " {:func #(-> % :title s/lower-case) :comp <}
+   "Last Submission " {:func #(if-not (empty? (:last_submission_time %))
+                               (:last_submission_time %)
+                               "1970-01-01") :comp >}
+   "No. of Submissions " {:func :num_of_submissions :comp >}})
+
+(defn show-inactive-forms
+  [show app-state]
+  (if show
+    (om/update! app-state :active-forms (concat (:active-forms @forms-state)
+                                                (remove :downloadable (:forms @forms-state))))
+    (om/update! app-state :active-forms (filter :downloadable (:forms @forms-state)))))
+
+(defn- no-forms-content []
+  "Message to display when there are no forms"
+  [:div {:class "empty-placeholders"}
+   [:p {:id "no-forms"} "You don't have any forms!!" [:br]]])
+
+
+(defn sort-forms [sorter owner event-chan]
+  (om/set-state! owner :sorter sorter)
+  (put! event-chan {:sort-list-by sorter}))
+
+(defn filter-list
+  "Takes a query string, and searches if any forms/projects in the view include
+   that query, ignoring case, in either the title or the description."
+  [query list]
+  (if (s/blank? query)
+    list
+    (filter #(re-find (safe-regex query)
+                      (str (:title %) (:description %) (:name %))) list)))
+
+(defn handle-events [event-chan app-state]
+  (go (while true
+        (let [{:keys [sort-list-by filter-by
+                      show-inactive]} (<! event-chan)]
+          (when filter-by
+            (let [forms (:forms @app-state)
+                  form-list (if (:show-inactive @app-state)
+                              forms
+                              (filter :downloadable forms))]
+              (om/update! app-state :active-forms
+                          (filter-list filter-by form-list))))
+          (when sort-list-by
+            (let [{:keys [func comp]} (sorters sort-list-by)
+                  sort-fn #(sort-by func comp %)]
+              (om/transact! app-state :active-forms sort-fn)
+              (om/transact! app-state :forms sort-fn)))
+          (when show-inactive
+            (let [show (:show show-inactive)]
+              (om/update! app-state :show-inactive show)
+              (show-inactive-forms show app-state)))))))
+
+
+(defn form-list-header
+  "The header for the form listing. Includes search / sort / add form elements"
+  [cursor owner]
+  (reify
+    om/IInitState
+    (init-state [_]
+      {:sorter "Last Submission "})
+    om/IWillMount
+    (will-mount [_]
+      (let [event-chan (om/get-shared owner [:event-chan])
+            sorter (om/get-state owner [:sorter]) ]
+        (sort-forms sorter
+                    owner
+                    event-chan)))
+    om/IRenderState
+    (render-state [_ state]
+      (let [event-chan (om/get-shared owner [:event-chan])
+            sorter (om/get-state owner [:sorter])]
+        (html [:div {:class "cfix pure-g-r forms-filter"}
+               [:div {:class "pure-u-1-5 page-header borderless"}
+                [:h2 "Forms"]]
+
+               [:div {:class "pure-u-1-2 sortbox"} "Sort by: "
+                [:div {:class "dropdown drop-hover" :id "filter"}
+                 [:span {:class "filter-criteria" :id "filter-criteria"} sorter]
+                 [:i {:class "fa fa-angle-down"}]
+                 [:ul {:class "submenu"}
+                  (for [sorter (keys sorters)]
+                    [:li [:a {:on-click (click-fn
+                                          #(sort-forms sorter owner event-chan))
+                              :href "#"} sorter]])]]
+                [:span {:class "pure-u-1-3 show-inactive"}
+                 [:input {:type "checkbox" :id "show-inactive"
+                          :on-click #(put! event-chan {:show-inactive {:show (.. % -target -checked)}})}]
+                 " Show inactive"]]
+
+               [:div {:class "pure-u-1-3 form-search right"}
+                [:form {:id "search-form"
+                        :class "pure-form inline-block search-wrap right"}
+                 [:input {:name "query"
+                          :id "search-query"
+                          :type "text"
+                          :on-key-up #(put! event-chan
+                                            {:filter-by (.. % -target -value)})}]
+                 [:button {:class "pure-button" :type "submit"
+                           :id "submit-search"}
+                  [:i {:class "fa fa-search"}]]]]])))))
+
+(defn form-item
+  "An indivdual form on the project view."
+  [{:keys [form]} owner]
+  (reify
+    om/IRenderState
+    (render-state [_ state]
+      (let [{:keys [formid title description downloadable metadata
+                    num_of_submissions last_submission_time date_created]} form
+            created_on (.format (js/moment date_created) "MMM DD, YYYY")
+            ago-str (str "last " (.fromNow (js/moment last_submission_time)))
+            form-url (io/make-url "forms" formid)]
+        (html [:tr
+               [:td
+                [:a {:class "dataset-url" :href form-url}
+                 (if downloadable
+                   [:span {:class "pager-icon-red num-datasets-pager"}]
+                   [:span {:class "pager-icon-grey num-datasets-pager"}])]]
+               [:td
+                (if downloadable
+                  {:class "move-holder"}
+                  {:class "move-holder inactive-form"})
+                [:div {:class "pure-g-r project-row cfix form-info"}
+                 [:div {:class "pure-u-1-3"}
+                  [:strong
+                   [:a {:class "dataset-name" :href form-url} title
+                    (if-not downloadable " (inactive)")]]]
+
+                 [:div {:class "pure-u-5-8 form-meta"}
+                  [:span {:class "num-submissions"
+                          :title (n/pluralize-number num_of_submissions "record")}
+                   (n/shorten-number num_of_submissions)]
+                  [:span {:class "date-created"}
+                   [:i {:class "fa fa-clock-o"}]
+                   [:span {:class "date-text"} created_on]]
+                  [:span {:class "submissions"}
+                   [:span {:class "sub-last-when"}
+                    (if (pos? num_of_submissions)
+                      [:span {:class "t-grey when"} ago-str]
+                      [:span {:class "t-grey when"} " (no records)" ])]]]]]])))))
+
+(defn datalist-page
+  "Component for loading the datasets page"
+  [cursor owner]
+  (reify
+    om/IWillMount
+    (will-mount [_]
+      (handle-events (om/get-shared owner [:event-chan]) cursor))
+    om/IRender
+    (render [_]
+      (let [{:keys [active-forms forms]} cursor]
+        (html [:div
+               (om/build form-list-header cursor)
+               [:div {:class "forms-table"}
+                 (cond
+                   (empty? forms) (no-forms-content)
+                   (empty? active-forms) [:div "Sorry, no results found!"]
+                   :else [:table {:id "datasets-table"
+                                  :class "pure-table pure-table-horizontal"}
+                          [:tbody (for [form active-forms]
+                                    (om/build form-item
+                                              {:form form}))]])]])))))
+
+(defn init-form-state [forms]
+  (update-form-state! forms)
+  forms-state)
+
+
+(defn ^:export init [username auth-token]
+  (go (let [valid-token (<! (io/validate-token auth-token username))
+            forms-url (io/make-url "forms.json")
+            ;; Find out why the login pop comes up
+            forms-chan (io/get-url forms-url {} valid-token :no-cache? true)
+            forms (-> (<! forms-chan) :body flatten)
+            app-state (init-form-state forms)
+            shared-state {:username username
+                          :auth-token valid-token
+                          :event-chan (chan)}]
+        (om/root datalist-page app-state
+                 {:target (. js/document (getElementById dataset-container))
+                  :shared shared-state}))))
+


Fold tests link into user-guide item

Fold tests link into user-guide item

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


Added Clojure command line version.

Added Clojure command line version.

error: pathspec 'clj/src/gobs-program/main.clj' did not match any file(s) known to git

--- clj/src/gobs-program/main.clj
+++ clj/src/gobs-program/main.clj
@@ -0,0 +1,16 @@
+
+
+(defn gobs-program
+  []
+  (print "Gob's Program Y/N? ")
+  (flush)
+  (let [answer (read-line)])
+  (while true (do (println "Penus Penus Penus Penus Penus Penus")))
+)
+
+
+(defn -main
+  [& args]
+  (gobs-program))
+
+


Implement 75% of clojure.string naively.

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

--- src/cljs/cljs/string.cljs
+++ src/cljs/cljs/string.cljs
@@ -0,0 +1,113 @@
+;   Copyright (c) Rich Hickey. All rights reserved.
+;   The use and distribution terms for this software are covered by the
+;   Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
+;   which can be found in the file epl-v10.html at the root of this distribution.
+;   By using this software in any fashion, you are agreeing to be bound by
+;   the terms of this license.
+;   You must not remove this notice, or any other, from this software.
+
+(ns cljs.string
+  (:require [goog.string :as gstring]
+            [goog.string.StringBuffer :as gstringbuf]))
+
+(defn blank?
+  "True is s is nil, empty, or contains only whitespace."
+  [s]
+  (let [s (str s)]
+    (if (or
+         (not s)
+         (= "" s)
+         (re-matches #"\s+" s))
+      true
+      false)))
+
+(defn capitalize
+  "Converts first character of the string to upper-case, all other characters to lower-case."
+  [s]
+  (let [[x & xs] (str s)]
+    (str (.toUpperCase x ()) (apply str xs))))
+
+(defn escape
+  "Return a new string, using cmap to escape each character ch
+   from s as follows:
+
+   If (cmap ch) is nil, append ch to the new string.
+   If (cmap ch) is non-nil, append (str (cmap ch)) instead."
+  [s cmap])
+
+(defn join
+  "Returns a string of all elements in coll, separated by
+  an optional separator.  Like Perl's join."
+  ([coll]
+     (join "" coll))
+  ([separator coll]
+     (apply str (interpose separator coll))))
+
+(defn lower-case
+  "Converts string to all lower-case."
+  [s]
+  (.toLowerCase (str s) ()))
+
+(defn replace
+  "Replaces all instance of match with replacement in s.
+   match/replacement can be:
+
+   string / string
+   char / char
+   pattern / (string or function of match).
+
+   See also replace-first."
+  [s match replacement])
+
+(defn replace-first
+  "Replaces the first instance of match with replacement in s.
+   match/replacement can be:
+
+   char / char
+   string / string
+   pattern / (string or function of match).
+
+   See also replace-all."
+  [s match replacement])
+
+;; Conflicts with core/reverse, need refer exclusions.
+;;
+;; (defn reverse
+;;   "Returns s with its characters reversed."
+;;   [s]
+;;   (apply str (cljs.core/reverse s)))
+
+(defn split
+  "Splits string on a regular expression. Optional argument limit is
+  the maximum number of splits. Not lazy. Returns vector of the splits."
+  ([s re]
+     (vec (.split (str s) re)))
+  ([s re limit]
+     (vec (.split (str s) re limit))))
+
+(defn split-lines
+  "Splits s on \n or \r\n."
+  [s]
+  (split (str s) #"\n|\r\n"))
+
+(defn trim
+  "Removes whitespace from both ends of string."
+  [s])
+
+(defn trim-newline
+  "Removes all trailing newline \n or return \r characters from
+  string. Similar to Perl's chomp."
+  [s])
+
+(defn triml
+  "Removes whitespace from the left side of the string."
+  [s])
+
+(defn trimr
+  "Removes whitespace from the right side of the string."
+  [s])
+
+(defn upper-case
+  "Converts s to all upper-case."
+  [s]
+  (.toUpperCase (str s) ()))


Add polkadots sketch

Add polkadots sketch

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


don't clean when signature file not present

fixes #413

--- plugin/src/leiningen/figwheel.clj
+++ plugin/src/leiningen/figwheel.clj
@@ -178,10 +178,10 @@

 (defn on-stamp-change [{:keys [file signature]} f]
   {:pre [(string? signature) (= (type file) java.io.File)]}
-  (let [old-val (when (.exists ^java.io.File file) (slurp file))]
-    (when-not (= signature old-val) (f))
-    (.mkdirs (.getParentFile (io/file (.getAbsolutePath ^java.io.File file))))
-    (spit file signature)))
+  (when-let [old-val (when (.exists ^java.io.File file) (slurp file))]
+    (when-not (= signature old-val) (f)))
+  (.mkdirs (.getParentFile (io/file (.getAbsolutePath ^java.io.File file))))
+  (spit file signature))

 (defn clean-on-dependency-change [{:keys [target-path dependencies] :as project}]
   (when (and target-path dependencies)


ok ...

ok ...

fatal: remote error: upload-pack: not our ref 54853ee43258497c4eb5b969ecae5798175d07c7
fatal: the remote end hung up unexpectedly


Add support for summary nodes and point queries

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/leif47/immutabledb-experimental.git/'


filter out deps.cljs file

filter out deps.cljs file

fixes #147

--- sidecar/src/figwheel_sidecar/repl.clj
+++ sidecar/src/figwheel_sidecar/repl.clj
@@ -241,9 +241,12 @@
   (when (and (:compiler-env build)
              (:source-paths build))
     (env/with-compiler-env (:compiler-env build)
-      (let [files (map :source-file
-                       (cbuild/files-like [".cljs" ".cljc"]
-                                          (:source-paths build)))
+      (let [files
+            (filter
+             (fn [f] (not (= (.getName f) "deps.cljs")))
+             (map :source-file
+                  (cbuild/files-like [".cljs" ".cljc"]
+                                     (:source-paths build))))
             ;; TODO refactor this or clause repeated to many times
             opts (or (:build-options build) (:compiler build))]
         (doseq [f files] (ana/analyze-file f opts))


faster gcd implementaition

faster gcd implementaition

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


clojure utility function to build cascading flows for wikipedia

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

--- src/corpusmaker/cascading/wikipedia.clj
+++ src/corpusmaker/cascading/wikipedia.clj
@@ -0,0 +1,34 @@
+;;   Copyright (c) Olivier Grisel, 2010
+;;   The use and distribution terms for this software are covered by the
+;;   Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
+;;   which can be found in the file epl-v10.html at the root of this distribution.
+;;   By using this software in any fashion, you are agreeing to be bound by
+;;   the terms of this license.
+;;   You must not remove this notice, or any other, from this software.
+
+;; utilities to build cascading flows for Wikipedia content
+
+(ns corpusmaker.cascading.wikipedia
+  (:require (cascading.clojure [api :as c]))
+  (:import corpusmaker.cascading.scheme.WikipediaPageScheme
+    info.bliki.wiki.model.WikiModel
+    corpusmaker.wikipedia.LinkAnnotationTextConverter
+    corpusmaker.wikipedia.Annotation))
+
+(defn wikipedia-page-scheme
+  "Build WikipediaPageScheme with article title and markup fields"
+  {:fields ["title" "markup"]}
+  []
+  (WikipediaPageScheme.))
+
+(defn wikipedia-tap
+  "Build a source tap from a wikipedia XML dump"
+  [input-path-or-file]
+  (c/hfs-tap (wikipedia-page-scheme) input-path-or-file))
+
+
+
+
+
+
+


Keys needed for api.

Keys needed for api.

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


updated Selmer for locale improvements

updated Selmer for locale improvements

--- src/leiningen/new/cryogen/project.clj
+++ src/leiningen/new/cryogen/project.clj
@@ -5,7 +5,7 @@
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[org.clojure/clojure "1.6.0"]
                  [hiccup "1.0.5"]
-                 [selmer "0.7.2"]
+                 [selmer "0.7.3"]
                  [markdown-clj "0.9.57"
                   :exclusions [com.keminglabs/cljx]]
                  [ring/ring-devel "1.1.0"]


auto skip

auto skip

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


started work on cards

started work on cards

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


add cljs files

add cljs files

error: pathspec 'src_cljs/bookmarks/corecljs.cljs' did not match any file(s) known to git

--- src_cljs/bookmarks/corecljs.cljs
+++ src_cljs/bookmarks/corecljs.cljs
@@ -0,0 +1 @@
+(ns bookmarks.corecljs)


add message.clj for converting database format -> network protocol format

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

--- src/ruuvi_server/message.clj
+++ src/ruuvi_server/message.clj
@@ -0,0 +1,70 @@
+(ns ruuvi-server.message
+  "Functions to convert database entities to protocol messages."
+  (:require [ruuvi-server.util :as util])
+  (:use [clojure.tools.logging :only (debug info warn error)]))
+
+(defn- select-extension-data
+  "Convert extension_data to name value pairs. Skip extension data if name is missing."
+  [extension-data]
+
+  (filter identity
+          (map (fn [data]
+                 (when-let [name (:name data)]
+                   {name (:value data)}))
+               extension-data)))
+
+(defn- select-location-data [location-data]
+  (when location-data
+    (let [selected-data (select-keys location-data
+                                     [:longitude :latitude :altitude
+                                      :heading :satellite_count :speed
+                                      :horizontal_accuracy :vertical_accuracy])
+          renamed-data (util/modify-map selected-data
+                                        {:horizontal_accuracy :accuracy}
+                                        {})]
+      (util/remove-nil-values renamed-data)
+      )))
+
+(defn select-event-data [event-data]
+  (let [selected-data (select-keys event-data
+                                   [:id :event_time :tracker_id
+                                    :event_session_id :created_on])
+        renamed-data (util/modify-map selected-data
+                                      {:created_on :store_time}
+                                      {})
+        renamed-data (util/stringify-id-fields renamed-data)
+        location-data (select-location-data
+                       (get (event-data :event_locations)
+                            0))
+        extension-data (select-extension-data
+                        (event-data :event_extension_values))]
+
+    (util/remove-nil-values (merge renamed-data
+                                   {:location location-data
+                                    :extension_values extension-data}))
+    ))
+
+(defn select-events-data [data-map]
+  {:events
+   (map select-event-data (data-map :events))}
+  )
+
+(defn select-event-session-data [session-data]
+  (let [selected-data (select-keys session-data
+                                   [:id :tracker_id :session_code
+                                    :first_event_time :latest_event_time])
+        selected-data (util/stringify-id-fields selected-data)]
+    (util/remove-nil-values selected-data)))
+
+(defn select-event-sessions-data [data-map]
+  {:sessions
+   (map select-event-session-data (data-map :event_sessions))})
+
+(defn select-tracker-data [data-map]
+  (let [selected (select-keys data-map [:id :tracker_code :name
+                                        :latest_activity :created_on])
+        renamed (util/modify-map selected nil {:id str})]
+    (util/remove-nil-values renamed)))
+
+(defn select-trackers-data [data-map]
+  {:trackers (map select-tracker-data (data-map :trackers))})


Tool to dump db.

Tool to dump db.

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

--- src/viewer/dbtool.clj
+++ src/viewer/dbtool.clj
@@ -0,0 +1,9 @@
+(ns viewer.dbtool
+  (:require [viewer.model.ship :as ship]
+            [viewer.model.mastery :as mastery]))
+
+(defn dump-csv [f]
+  (spit f (pr-str (map (fn [s] {:ship s :masteries (mastery/all (:typeid s))}) (ship/all)))))
+
+(defn -main [& args]
+  (dump-csv (first args)))


adding stub backend test

adding stub backend test

error: pathspec 'test/cljs/ohds/backend-test.cljs' did not match any file(s) known to git

--- test/cljs/ohds/backend-test.cljs
+++ test/cljs/ohds/backend-test.cljs
@@ -0,0 +1,2 @@
+(ns ohds.backend-test
+  (:require [ohds.backend :as backend]))


default empty-plan func

default empty-plan func

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


defmarker macro

defmarker macro


[WM] fix 2 namespace refs

[WM] fix 2 namespace refs

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


Add test for 2nd exclusive consumer queue takeover

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


Remove unnecessary printout

Remove unnecessary printout

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/DajanaStiberova/green-recipes.git/'


More multipart test examples

More multipart test examples

--- test/yada/multipart_test.clj
+++ test/yada/multipart_test.clj
@@ -248,3 +248,48 @@
       ;  (is (= 48 (:body-offset p))))
       )))

+
+
+(deftest big-file-test
+  (let [[chunk-size window-size] [16384 (* 4 16384)]
+        spec {:chunk-size chunk-size :window-size window-size}]
+    (let [parts
+          (->> (s/->source (to-chunks (slurp-byte-array (io/resource "yada/multipart-4")) chunk-size))
+               (parse-multipart "IIKwJwJU_tJT6hjEW8f_JHXCqjFM_zjBrl936VG" (:window-size spec) (:chunk-size spec))
+               (s/transform (comp (xf-add-header-info) (xf-parse-content-disposition)))
+               (s/reduce reduce-piece {:consumer (->DefaultPartConsumer) :state {:parts []}})
+               deref
+               :parts
+               )]
+
+      (is (= [:part] (mapv :type parts)))
+                                        ;(let [p (first parts)]
+                                        ;  (is (= (count "Malcolm") (- (count (:bytes p)) (:body-offset p)))))
+                                        ;(let [p (last parts)]
+                                        ;  (is (= [65130 49154 49152 49152 49152 49152 28929] (mapv :bytes (:pieces p))))
+                                        ;  (is (= (+ header-size image-size) (count (:bytes p))))
+                                        ;  (is (= 48 (:body-offset p))))
+      )))
+
+(deftest big-file-test-2
+  (let [[chunk-size window-size] [16384 (* 4 16384)]
+        spec {:chunk-size chunk-size :window-size window-size}]
+    (let [parts
+          (->> (s/->source (to-chunks (slurp-byte-array (io/resource "yada/multipart-5")) chunk-size))
+               (parse-multipart "E4KpbkJMX9ceMQct1J0gOStbUStnW3N" (:window-size spec) (:chunk-size spec))
+               (s/transform (comp (xf-add-header-info) (xf-parse-content-disposition)))
+               (s/reduce reduce-piece {:consumer (->DefaultPartConsumer) :state {:parts []}})
+               deref
+               :parts
+               )]
+
+      (is (= [:part] (mapv :type parts)))
+                                        ;(let [p (first parts)]
+                                        ;  (is (= (count "Malcolm") (- (count (:bytes p)) (:body-offset p)))))
+                                        ;(let [p (last parts)]
+                                        ;  (is (= [65130 49154 49152 49152 49152 49152 28929] (mapv :bytes (:pieces p))))
+                                        ;  (is (= (+ header-size image-size) (count (:bytes p))))
+                                        ;  (is (= 48 (:body-offset p))))
+      )))
+
+


Initial commit of CyberSpeed by Maria Jackson

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

--- spectacles/src/spectacles/cyberspeed.clj
+++ spectacles/src/spectacles/cyberspeed.clj
@@ -0,0 +1,23 @@
+(ns spectacles.cyberspeed)
+  (:require [quil.core :as q]))
+
+;; Life In Lights sketch
+;; Title: CyberSpeed
+;; Author: Maria Jackson
+
+(defn setup [])
+
+(defn draw []
+  (q/fill 255 0 0)
+  (q/line 0 0   (q/random 0 1000)  (q/random 0 1000))
+  (q/ellipse 50 50 100 100)
+  (q/stroke 255 (q/random 0 255) (q/random 0 255))
+  (q/fill 255 255 255 2)
+  (q/rect 0 0 (q/width) (q/height)))
+
+;; (q/defsketch CyberSpeed
+;;   :title "CyberSpeed"
+;;   :size [500 500]
+;;   :setup setup
+;;   :draw draw
+;;   :features [:keep-on-top])


fix function name

fix function name

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


works on diffing catalogs.

works on diffing catalogs.

still marks some catalogs for removal inappropriately


create lists of builtin symbols as clojure code

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

--- builtins.clj
+++ builtins.clj
@@ -0,0 +1,565 @@
+(def specials
+  [
+    "def",
+    "if",
+    "do",
+    "quote",
+    "var",
+    "recur",
+    "throw",
+    "catch",
+    "try",
+    "monitor-enter",
+    "monitor-exit",
+    ".",
+    "new",
+    "set!",
+    "fn*",
+    "let*",
+    "loop*",
+    "letfn*",
+    "case*",
+    "deftype*",
+    "reify*",
+    "clojure.core/import*",
+  ])
+
+(def keywords
+  [
+    "true",
+    "false",
+    "nil",
+  ])
+
+(def other
+  [
+    "*1",
+    "*2",
+    "*3",
+    "*clojure-version*",
+    "*data-readers*",
+    "*default-data-reader-fn*",
+    "*e",
+    "&",
+    "default-data-readers",
+    "unquote",
+    "unquote-splicing",
+  ])
+
+(def macros
+  [
+    "->",
+    "->>",
+    "..",
+    "add-doc-and-meta",
+    "amap",
+    "and",
+    "areduce",
+    "as->",
+    "assert",
+    "binding",
+    "bound-fn",
+    "case",
+    "comment",
+    "cond",
+    "cond->",
+    "cond->>",
+    "condp",
+    "declare",
+    "definline",
+    "defmacro",
+    "defmethod",
+    "defmulti",
+    "defn",
+    "defn-",
+    "defonce",
+    "defstruct",
+    "delay",
+    "doseq",
+    "dosync",
+    "dotimes",
+    "doto",
+    "fn",
+    "for",
+    "future",
+    "if-let",
+    "if-not",
+    "if-some",
+    "import",
+    "io!",
+    "lazy-cat",
+    "lazy-seq",
+    "let",
+    "letfn",
+    "locking",
+    "loop",
+    "memfn",
+    "ns",
+    "or",
+    "pvalues",
+    "refer-clojure",
+    "some->",
+    "some->>",
+    "sync",
+    "time",
+    "when",
+    "when-first",
+    "when-let",
+    "when-not",
+    "when-some",
+    "while",
+    "with-bindings",
+    "with-in-str",
+    "with-loading-context",
+    "with-local-vars",
+    "with-open",
+    "with-out-str",
+    "with-precision",
+    "with-redefs",
+  ])
+
+(def funcs
+  [
+    "*",
+    "*'",
+    "+",
+    "+'",
+    "-",
+    "-'",
+    "/",
+    "<",
+    "<=",
+    "=",
+    "==",
+    ">",
+    ">=",
+    "accessor",
+    "aclone",
+    "add-classpath",
+    "add-watch",
+    "agent",
+    "agent-error",
+    "agent-errors",
+    "aget",
+    "alength",
+    "alias",
+    "all-ns",
+    "alter",
+    "alter-meta!",
+    "alter-var-root",
+    "ancestors",
+    "apply",
+    "array-map",
+    "aset",
+    "assoc",
+    "assoc!",
+    "assoc-in",
+    "associative?",
+    "atom",
+    "await",
+    "await-for",
+    "await1",
+    "bases",
+    "bigdec",
+    "bigint",
+    "biginteger",
+    "bit-and",
+    "bit-and-not",
+    "bit-clear",
+    "bit-flip",
+    "bit-not",
+    "bit-or",
+    "bit-set",
+    "bit-shift-left",
+    "bit-shift-right",
+    "bit-test",
+    "bit-xor",
+    "boolean",
+    "boolean-array",
+    "booleans",
+    "bound-fn*",
+    "bound?",
+    "butlast",
+    "byte",
+    "byte-array",
+    "bytes",
+    "cast",
+    "char",
+    "char?",
+    "char-array",
+    "chars",
+    "chunk",
+    "chunk-append",
+    "chunk-buffer",
+    "chunk-cons",
+    "chunk-first",
+    "chunk-next",
+    "chunk-rest",
+    "chunked-seq?",
+    "class",
+    "class?",
+    "clear-agent-errors",
+    "clojure-version",
+    "coll?",
+    "commute",
+    "comp",
+    "comparator",
+    "compare",
+    "compare-and-set!",
+    "compile",
+    "complement",
+    "concat",
+    "conj",
+    "conj!",
+    "cons",
+    "constantly",
+    "contains?",
+    "count",
+    "counted?",
+    "create-ns",
+    "create-struct",
+    "cycle",
+    "dec",
+    "dec'",
+    "decimal?",
+    "delay?",
+    "deliver",
+    "denominator",
+    "deref",
+    "derive",
+    "descendants",
+    "destructure",
+    "disj",
+    "disj!",
+    "dissoc",
+    "dissoc!",
+    "distinct",
+    "distinct?",
+    "doall",
+    "dorun",
+    "double",
+    "double-array",
+    "doubles",
+    "drop",
+    "drop-last",
+    "drop-while",
+    "empty",
+    "empty?",
+    "ensure",
+    "enumeration-seq",
+    "error-handler",
+    "error-mode",
+    "eval",
+    "even?",
+    "every-pred",
+    "every?",
+    "ex-data",
+    "ex-info",
+    "false?",
+    "ffirst",
+    "file-seq",
+    "filter",
+    "filterv",
+    "find",
+    "find-keyword",
+    "find-ns",
+    "find-var",
+    "first",
+    "flatten",
+    "float",
+    "float-array",
+    "float?",
+    "floats",
+    "flush",
+    "fn?",
+    "fnext",
+    "fnil",
+    "force",
+    "format",
+    "frequencies",
+    "future-call",
+    "future-cancel",
+    "future-cancelled?",
+    "future-done?",
+    "future?",
+    "gensym",
+    "get",
+    "get-in",
+    "get-method",
+    "get-thread-bindings",
+    "get-validator",
+    "group-by",
+    "hash",
+    "hash-map",
+    "hash-ordered-coll",
+    "hash-set",
+    "hash-unordered-coll",
+    "identical?",
+    "identity",
+    "ifn?",
+    "inc",
+    "inc'",
+    "instance?",
+    "int",
+    "int-array",
+    "ints",
+    "integer?",
+    "interleave",
+    "intern",
+    "interpose",
+    "into",
+    "into-array",
+    "isa?",
+    "iterate",
+    "iterator-seq",
+    "juxt",
+    "keep",
+    "keep-indexed",
+    "key",
+    "keys",
+    "keyword",
+    "keyword?",
+    "last",
+    "line-seq",
+    "list",
+    "list*",
+    "list?",
+    "load",
+    "load-reader",
+    "load-string",
+    "loaded-libs",
+    "long",
+    "long-array",
+    "longs",
+    "macroexpand",
+    "macroexpand-1",
+    "make-array",
+    "make-hierarchy",
+    "map",
+    "map-indexed",
+    "map?",
+    "mapcat",
+    "mapv",
+    "max",
+    "max-key",
+    "memoize",
+    "merge",
+    "merge-with",
+    "meta",
+    "methods",
+    "min",
+    "min-key",
+    "mix-collection-hash",
+    "mod",
+    "name",
+    "namespace",
+    "neg?",
+    "newline",
+    "next",
+    "nfirst",
+    "nil?",
+    "nnext",
+    "not",
+    "not-any?",
+    "not-empty",
+    "not-every?",
+    "not=",
+    "ns-aliases",
+    "ns-imports",
+    "ns-interns",
+    "ns-map",
+    "ns-name",
+    "ns-publics",
+    "ns-refers",
+    "ns-resolve",
+    "ns-unalias",
+    "ns-unmap",
+    "nth",
+    "nthnext",
+    "nthrest",
+    "num",
+    "number?",
+    "numerator",
+    "object-array",
+    "odd?",
+    "parents",
+    "partial",
+    "partition",
+    "partition-all",
+    "partition-by",
+    "pcalls",
+    "peek",
+    "persistent!",
+    "pmap",
+    "pop",
+    "pop!",
+    "pop-thread-bindings",
+    "pos?",
+    "pr",
+    "pr-str",
+    "prefer-method",
+    "prefers",
+    "print",
+    "print-str",
+    "printf",
+    "println",
+    "println-str",
+    "prn",
+    "prn-str",
+    "promise",
+    "push-thread-bindings",
+    "quot",
+    "rand",
+    "rand-int",
+    "rand-nth",
+    "range",
+    "ratio?",
+    "rational?",
+    "rationalize",
+    "re-find",
+    "re-groups",
+    "re-matcher",
+    "re-matches",
+    "re-pattern",
+    "re-seq",
+    "read",
+    "read-line",
+    "read-string",
+    "realized?",
+    "reduce",
+    "reduce-kv",
+    "reduced",
+    "reduced?",
+    "reductions",
+    "ref",
+    "ref-history-count",
+    "ref-max-history",
+    "ref-min-history",
+    "ref-set",
+    "refer",
+    "release-pending-sends",
+    "rem",
+    "remove",
+    "remove-all-methods",
+    "remove-method",
+    "remove-ns",
+    "remove-watch",
+    "repeat",
+    "repeatedly",
+    "replace",
+    "replicate",
+    "require",
+    "reset!",
+    "reset-meta!",
+    "resolve",
+    "rest",
+    "restart-agent",
+    "resultset-seq",
+    "reverse",
+    "reversible?",
+    "rseq",
+    "rsubseq",
+    "second",
+    "select-keys",
+    "send",
+    "send-off",
+    "send-via",
+    "seq",
+    "seq?",
+    "seque",
+    "sequence",
+    "sequential?",
+    "set",
+    "set-agent-send-executor!",
+    "set-agent-send-off-executor!",
+    "set-error-handler!",
+    "set-error-mode!",
+    "set-validator!",
+    "set?",
+    "short",
+    "short-array",
+    "shorts",
+    "shuffle",
+    "shutdown-agents",
+    "slurp",
+    "some",
+    "some-fn",
+    "some?",
+    "sort",
+    "sort-by",
+    "sorted-map",
+    "sorted-map-by",
+    "sorted-set",
+    "sorted-set-by",
+    "sorted?",
+    "special-symbol?",
+    "spit",
+    "split-at",
+    "split-with",
+    "str",
+    "string?",
+    "struct",
+    "struct-map",
+    "subs",
+    "subseq",
+    "subvec",
+    "supers",
+    "swap!",
+    "symbol",
+    "symbol?",
+    "take",
+    "take-last",
+    "take-nth",
+    "take-while",
+    "test",
+    "the-ns",
+    "thread-bound?",
+    "to-array",
+    "to-array-2d",
+    "trampoline",
+    "transient",
+    "tree-seq",
+    "true?",
+    "type",
+    "unchecked-add",
+    "unchecked-add-int",
+    "unchecked-byte",
+    "unchecked-char",
+    "unchecked-dec",
+    "unchecked-dec-int",
+    "unchecked-divide-int",
+    "unchecked-double",
+    "unchecked-float",
+    "unchecked-inc",
+    "unchecked-inc-int",
+    "unchecked-int",
+    "unchecked-long",
+    "unchecked-multiply",
+    "unchecked-multiply-int",
+    "unchecked-negate",
+    "unchecked-negate-int",
+    "unchecked-remainder-int",
+    "unchecked-short",
+    "unchecked-subtract",
+    "unchecked-subtract-int",
+    "underive",
+    "unsigned-bit-shift-right",
+    "update-in",
+    "use",
+    "val",
+    "vals",
+    "var-get",
+    "var-set",
+    "var?",
+    "vary-meta",
+    "vec",
+    "vector",
+    "vector?",
+    "with-bindings*",
+    "with-meta",
+    "with-redefs-fn",
+    "xml-seq",
+    "zero?",
+    "zipmap",
+  ])
+


Create anagram.clj

Create anagram.clj

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

--- code/anagram.clj
+++ code/anagram.clj
@@ -0,0 +1,31 @@
+; i am trying to learn the functional language clojure,
+; as an alternative to java which i don't enjoy writing
+; in. whilst this is a short program with no algorithmic
+; complexity, it's main purpose is to give me a beginning
+; of a familiarity with clojure's syntax.
+
+; namespace: anagram
+(ns anagram)
+
+; clojure code isn't usually formatted like the code
+; below, but i have seperated it out onto many lines
+; to fully annotate what each part of the program is
+; doing.
+
+; define function with params 's1' and 's2'
+(defn anagrams? [s1, s1]
+  ; check for equality between n>1 items
+  (=
+    ; our 2 items to check for equality are
+    ; the parameters, s1 and s2, but sorted.
+    ; they are both in their own set of
+    ; parentheses, so rather than
+    ; s1.sort() or sort(s1),
+    ; we have a list, as always in clojure,
+    ; which is why we read
+    ; (sort s1).
+    (sort s1) (sort s2)
+
+; the following code is strangely lisp-esque
+  )
+)


Adds tests for growth

Adds tests for growth

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/thorsteinson/cljs-snake.git/'


Add rfwu/SwitchDelay extra-ugen metadata

error: pathspec 'src/overtone/sc/machinery/ugen/metadata/extras/rfwu.clj' did not match any file(s) known to git

--- src/overtone/sc/machinery/ugen/metadata/extras/rfwu.clj
+++ src/overtone/sc/machinery/ugen/metadata/extras/rfwu.clj
@@ -0,0 +1,47 @@
+(ns overtone.sc.machinery.ugen.metadata.extras.rfwu
+  (:use [overtone.sc.machinery.ugen common check]))
+
+(def specs
+  [
+   {:name "SwitchDelay"
+    :summary "Feedback delay line implementing switch-and-ramp buffer jumping"
+    :args [{:name "in"
+            :doc "Signal to be filtered"}
+
+           {:name "dry-level"
+            :default 1
+            :doc "Level of dry signal"}
+
+           {:name "wet-level"
+            :default 1
+            :doc "Level of delayed signal"}
+
+           {:name "delay-time"
+            :default 1
+            :doc "Number of seconds to delay signal"}
+
+           {:name "delay-factor"
+            :default 0.7
+            :doc "Multiplier for feedback level, affects the length of
+                  the feedback tail. Limited slightly below 1 to avoid
+                  speaker damaging mistakes."}
+
+           {:name "max-delay-time"
+            :default 20
+            :doc "The maximum duration of the delay in seconds."}]
+    :rates #{:ar}
+    :doc "A feedback delay line which allows moving the buffer read
+          position using the switch-and-ramp technique as described by
+          Miller S. Puckette in his Theory and Techniques of Electronic
+          Music book:
+
+          http://crca.ucsd.edu/~msp/techniques/latest/book.pdf (chapter
+          4)
+
+          Altering the buffer read position, in order to affect the
+          perceived delay speed/timing, creates a discontinuity in the
+          signal, typically causing unwanted audible artefacts. The
+          switch-and-ramp technique seeks to neutralise these artefacts
+          and allow switching with minimal clicks."}
+
+   ])


Do not trigger watchers when value is not affected...

on the atom focus and foci types.

--- src/cats/labs/lens.cljc
+++ src/cats/labs/lens.cljc
@@ -291,7 +291,10 @@
        clojure.lang.IRef
        (addWatch [self key cb]
          (add-watch a key (fn [key _ oldval newval]
-                            (cb key self (focus lens oldval) (focus lens newval)))))
+                            (let [old' (focus lens oldval)
+                                  new' (focus lens newval)]
+                              (if (not= old' new')
+                                (cb key self old' new'))))))
        (removeWatch [_ key]
          (remove-watch a key))]

@@ -301,8 +304,11 @@

        IWatchable
        (-add-watch [self key cb]
-        (add-watch a key (fn [key _ oldval newval]
-                           (cb key self (focus lens oldval) (focus lens newval)))))
+         (add-watch a key (fn [key _ oldval newval]
+                            (let [old' (focus lens oldval)
+                                  new' (focus lens newval)]
+                              (if (not= old' new')
+                                (cb key self old' new'))))))
        (-remove-watch [_ key]
          (remove-watch a key))

@@ -357,7 +363,10 @@
        clojure.lang.IRef
        (addWatch [self key cb]
          (add-watch a key (fn [key _ oldval newval]
-                            (cb key self (foci trav oldval) (foci trav newval)))))
+                            (let [old' (foci trav oldval)
+                                  new' (foci trav newval)]
+                              (if (not= old' new')
+                                (cb key self old' new'))))))
        (removeWatch [_ key]
          (remove-watch a key))]

@@ -367,8 +376,11 @@

        IWatchable
        (-add-watch [self key cb]
-        (add-watch a key (fn [key _ oldval newval]
-                           (cb key self (foci trav oldval) (foci trav newval)))))
+         (add-watch a key (fn [key _ oldval newval]
+                            (let [old' (foci trav oldval)
+                                  new' (foci trav newval)]
+                              (if (not= old' new')
+                                (cb key self old' new'))))))
        (-remove-watch [_ key]
          (remove-watch a key))


Changed read-string to Integer/parseInt

Changed read-string to Integer/parseInt

--- 2-collectors/clojure-collector/src/snowplow/clojure_collector/config.clj
+++ 2-collectors/clojure-collector/src/snowplow/clojure_collector/config.clj
@@ -42,7 +42,7 @@
 (def duration
   "Get the duration (in days) the
    cookie should last for"
-  (-> (get-var duration-varnames default-duration) read-string))
+  (-> (get-var duration-varnames default-duration) Integer/parseInt))

 (def p3p-header
   "Get the P3P header.


mesos: act on groups of actions

mesos: act on groups of actions

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


Update dependencies.

Update dependencies.

--- project.clj
+++ project.clj
@@ -10,17 +10,20 @@
   :java-source-paths ["src/java"]
   :javac-options ["-target" "1.6" "-source" "1.6"]
   :dependencies [[org.clojure/clojure "1.6.0"]
-                 [org.apache.avro/avro "1.7.5"]
+                 [org.apache.avro/avro "1.7.7"]
                  [cheshire/cheshire "5.3.1"]]
   :plugins [[codox/codox "0.6.4"]]
   :codox {:include [abracad.avro abracad.avro.edn]}
   :aliases {"test-all" ["with-profile" ~(str "clojure-1-4:"
                                              "clojure-1-5:"
-                                             "clojure-1-6")
+                                             "clojure-1-6:"
+                                             "clojure-1-7")
                         ,              "test"]}
   :profiles {:clojure-1-4 {:dependencies
                            [[org.clojure/clojure "1.4.0"]]}
              :clojure-1-5 {:dependencies
                            [[org.clojure/clojure "1.5.1"]]}
              :clojure-1-6 {:dependencies
-                           [[org.clojure/clojure "1.6.0"]]}})
+                           [[org.clojure/clojure "1.6.0"]]}
+             :clojure-1-7 {:dependencies
+                           [[org.clojure/clojure "1.7.0-alpha4"]]}})


Start 0.3.11-SNAPSHOT

Start 0.3.11-SNAPSHOT

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


Punt by blowing off AOT completely?

Punt by blowing off AOT completely?

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


Version 130-SNAPSHOT

Version 130-SNAPSHOT

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


Releasing 0.7

Releasing 0.7

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


Add cider as a part of the projects dependencies

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


Update compliment

Update compliment


Put the indentation back!

Put the indentation back!

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


[WM] use pedestal-toolbox 0.6.1 instead of SNAPSHOT

This is the same code it was running before, but no longer changing
underneath its feet.

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


Update lein-fruit

Update lein-fruit

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


Prepare 0.2.2 release

Prepare 0.2.2 release

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject lein-droid/lein-droid "0.2.1"
+(defproject lein-droid/lein-droid "0.2.2"
   :description "Plugin for easy Clojure/Android development and deployment"
   :url "https://github.com/clojure-android/lein-droid"
   :license {:name "Eclipse Public License"


Update Datomic to 0.9.5661

Update Datomic to 0.9.5661

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


Library upgrade.

Library upgrade.


Version 1.15.12-SNAPSHOT

Version 1.15.12-SNAPSHOT


Update dependencies.

Update dependencies.

--- project.clj
+++ project.clj
@@ -8,7 +8,7 @@
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[com.facebook/react "0.9.0.1"]
                  [org.clojure/clojure "1.6.0"]
-                 [org.clojure/clojurescript "0.0-2197"]]
+                 [org.clojure/clojurescript "0.0-2202"]]
   :cljsbuild {:builds []}
   :profiles {:dev {:dependencies [[reagent "0.4.2"]
                                   [crate "0.2.5"]
@@ -16,7 +16,7 @@
                    :plugins [[com.keminglabs/cljx "0.3.2"] ;; Must be before Austin: https://github.com/cemerick/austin/issues/37
                              [com.cemerick/austin "0.1.4"]
                              [com.cemerick/clojurescript.test "0.3.0"]
-                             [lein-cljsbuild "1.0.2"]]
+                             [lein-cljsbuild "1.0.3"]]
                    :hooks [cljx.hooks leiningen.cljsbuild]
                    :cljx {:builds [{:source-paths ["src"]
                                     :output-path "target/classes"


add :min-lein-version

add :min-lein-version


Prepare 0.0.8 release

Prepare 0.0.8 release

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject lein-droid/lein-droid "0.0.8-SNAPSHOT"
+(defproject lein-droid/lein-droid "0.0.8"
   :description "Plugin for easy Clojure/Android development and deployment"
   :url "https://github.com/alexander-yakushev/lein-droid"
   :license {:name "Eclipse Public License"


Bump restql.core

Bump restql.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/B2W-BIT/restQL-server.git/'


Update kehaar to 1.0.2

Update kehaar to 1.0.2

... which includes a fix for streaming consumers

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


Beta9

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


Add option for connection timeout.

Add option for connection timeout.

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


button hacking

button hacking


upload.clj route

upload.clj route

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

--- webui/src/webui/routes/upload.clj
+++ webui/src/webui/routes/upload.clj
@@ -0,0 +1,26 @@
+(ns webui.routes.upload
+  (:require [noir.response :as resp]
+            [noir.session :as session]))
+
+(defmacro in-try-catch [& body]
+  `(try
+     ~@(butlast body)
+     (resp/status 200 ~(last body))
+     (catch Throwable t#
+       (.printStackTrace t#)
+       (resp/status 500 "error"))))
+
+;(defn list-files []
+;  (db/list-files))
+
+(defn get-file [name]
+  (if-let [{:keys [name type data]} (name)]
+    (resp/content-type type (new java.io.ByteArrayInputStream data))
+    (resp/status 404 (resp/empty))))
+
+(defn upload-file! [file]
+  (in-try-catch
+   (file)))
+
+(defn delete-file! [name]
+  (in-try-catch (name)))


Appending CID to all protocols

Appending CID to all protocols

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


Dependency updates

Dependency updates

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


upgrade to latest version of clojure

upgrade to latest version of clojure

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


Version 51

Version 51

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


Release 0.9.0.

Release 0.9.0.

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


created an untested, preliminary Leiningen project file

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

--- project.clj
+++ project.clj
@@ -0,0 +1,6 @@
+(defproject fnparse "2.2.4"
+  :description "A library for creating functional parsers in Clojure."
+  :dependencies [[org.clojure/clojure "1.0.0"]
+                 [org.clojure/clojure "1.0.0-SNAPSHOT"]]
+  :dev-dependencies [[lein-clojars "1.0.0"]])
+


Exclude org.apache.httpcomponents/httpclient

See: https://github.com/aws/aws-sdk-java/issues/1919

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


bump version to 2.8.8

bump version to 2.8.8


Updating project to use 1.3 snapshot version to get message bearing assert capabilities

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


Release 0.13.7

Release 0.13.7

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


make run-on-doc easier to use in threading macro

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/tokenmill/clj-gate.git/'


set us up the dev conveniences

set us up the dev conveniences

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


Log mock sftp requests

Log mock sftp requests

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


in progress

in progress

error: pathspec 'src/hackerrank/fp/perimeter-polygon.clj' did not match any file(s) known to git

--- src/hackerrank/fp/perimeter-polygon.clj
+++ src/hackerrank/fp/perimeter-polygon.clj
@@ -0,0 +1,36 @@
+;; Compute the Perimeter of a Polygon
+;; https://www.hackerrank.com/challenges/lambda-march-compute-the-perimeter-of-a-polygon
+
+;; compute distance between all pairs of points
+;; sum them up = answer
+;; 1. distance between 2 points
+;; https://www.mathsisfun.com/algebra/distance-2-points.html
+
+(def point vector)
+(def x first)
+(def y second)
+;; https://clojuredocs.org/clojure.core/memfn
+;; (def sqrt (memfn Math/sqrt number))
+;; (memfn Math/sqrt)
+
+(def p (point 1 2))
+(x p)
+(y p)
+
+(Math/sqrt 4)
+
+(defn square [n]
+  (* n n))
+
+(defn distance [a b]
+  (Math/sqrt (+ (square (- (x a) (x b)))
+                (square (- (y a) (y b))))))
+
+(distance (point 0 0) (point 0 1)) ; => 1
+
+(def input [[0 0]
+            [0 1]
+            [1 1]
+            [1 0]])
+
+;; (reduce #(+ %1 (distance )))


fix trasform -> transform typo

fix trasform -> transform typo

--- src/me/shenfeng/http/client.clj
+++ src/me/shenfeng/http/client.clj
@@ -9,7 +9,7 @@

 (def no-proxy Proxy/NO_PROXY)

-(defn- trasform-header [headers keyify?]
+(defn- transform-header [headers keyify?]
   (reduce (fn [m [k v]]
             (assoc m (if keyify? (keyword (str/lower-case k))
                          (str/lower-case k)) v))
@@ -20,14 +20,14 @@
     (BinaryRespListener. (reify IBinaryHandler
                            (onSuccess [this status headers bytes]
                              (cb {:body bytes
-                                  :headers (trasform-header headers keyify?)
+                                  :headers (transform-header headers keyify?)
                                   :status status}))
                            (onThrowable [this t]
                              (cb {:body t}))))
     (TextRespListener. (reify ITextHandler
                          (onSuccess [this status headers str]
                            (cb {:body str
-                                :headers (trasform-header headers keyify?)
+                                :headers (transform-header headers keyify?)
                                 :status status}))
                          (onThrowable [this t]
                            (cb {:body t}))))))


put comments on their own line.

put comments on their own line.

--- src/metabase/api/meta/field.clj
+++ src/metabase/api/meta/field.clj
@@ -40,10 +40,11 @@
    special_type FieldSpecialType
    display_name NonEmptyString}
   (write-check Field id)
-  (check-500 (m/mapply upd Field id (merge {:description  description                                              ; you're allowed to unset description and special_type
-                                            :special_type special_type}                                            ; but field_type and preview_display must be replaced
+  ;; update the Field.  start with keys that may be set to NULL then conditionally add other keys if they have values
+  (check-500 (m/mapply upd Field id (merge {:description  description
+                                            :special_type special_type}
                                            (when display_name               {:display_name display_name})
-                                           (when field_type                 {:field_type field_type})              ; with new non-nil values
+                                           (when field_type                 {:field_type field_type})
                                            (when-not (nil? preview_display) {:preview_display preview_display}))))
   (Field id))


Fixing compilation error

Fixing compilation error

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


Don't need a (print)

Don't need a (print)


Get stop! working well.  Fix documentation strings

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


Begin work on next patch iteration.

Begin work on next patch iteration.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject com.damballa/abracad "0.4.1"
+(defproject com.damballa/abracad "0.4.2-SNAPSHOT"
   :description "De/serialize Clojure data structures with Avro."
   :url "http://github.com/damballa/abracad"
   :licenses [{:name "Eclipse Public License"


Update lein-fruit

Update lein-fruit

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


add ring handler to project.clj

add ring handler to project.clj

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


Set java.awt.headless=true

Set java.awt.headless=true

This prevents a useless dock icon from appearing when you run this code
on a macOS machine. It irks me.

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


lein-release plugin: preparing 0.1.6 release

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


0.0.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/QuiltProject/sedan.git/'


Raise signal:noise ratio of test output

Raise signal:noise ratio of test output

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


Version 1.11.0-SNAPSHOT

Version 1.11.0-SNAPSHOT

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


Version 1.6.1

Version 1.6.1


Removed defaulting to dev env

Removed defaulting to dev env

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/amedw/mud-server.git/'


bump blueprints dependency

bump blueprints dependency


bump blueprints

bump blueprints


Version 50-SNAPSHOT

Version 50-SNAPSHOT

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


Version 0.16.2

Version 0.16.2

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


Update kehaar to 0.10.4

Update kehaar to 0.10.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/email-works.git/'


project miscellany

project miscellany


Release 0.14.5

Release 0.14.5

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


[WM] Update datomic-toolbox to 2.0.1

[WM] Update datomic-toolbox to 2.0.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/democracyworks/election-authority-works.git/'


Bump version to 0.10.2-SNAPSHOT.

Bump version to 0.10.2-SNAPSHOT.

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


[EN] Add Immutant dependency and plugin

[EN] Add Immutant dependency and plugin

Immutant/WildFly deployment is as simple as:

> lein immutant war -o /path/to/wildlfy

OR

> lein immutant war
> cp target/path-to-war.war /path/to/wildfly/standalone/deployments

I ran both of these and confirmed that they ran.

Documentation:

http://immutant.org/documentation/2.0.0-beta2/apidoc/guide-wildfly.html
http://immutant.org/documentation/2.0.0-beta2/apidoc/guide-installation.html

The org.immutant/immutant dependency is required to build the war.

fatal: unable to access 'https://github.com/democracyworks/ballot-notification-works.git/': The requested URL returned error: 403


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


e-mail output updates

e-mail output updates

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


Add overtone101

Add overtone101

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

--- src/overtone_workspace/overtone101.clj
+++ src/overtone_workspace/overtone101.clj
@@ -0,0 +1,95 @@
+(ns overtone-workspace.overtone101)
+
+;;;;;;
+;; Clojure
+
+;; hello world
+;;  System.out.println("Hello Clojure!")
+(println "Hello Clojure!")
+
+;; 関数
+(defn hello-fn [msg]
+  (println msg))
+(hello-fn "Hello Clojure function!")
+
+;; 変数
+(def message "Hello Clojure variable!")
+(hello-fn message)
+
+;; Javaを呼出す
+;;  java.lang.Math.PI
+(. Math PI)
+
+
+;;;;;;
+;; Overtone
+(use 'overtone.live)
+
+(volume 0.8)
+
+;; demo function
+(demo (sin-osc))
+
+;; defsynth
+(defsynth synth-beep [freq 440 amp 0.1] (out 0 (pan2 (* amp (sin-osc freq)))))
+(synth-beep)
+(stop)
+
+;; definst
+(definst inst-beep [freq 440 amp 0.1] (pan2 (* amp (sin-osc freq))))
+(inst-beep)
+(stop)
+
+;; simple-beep
+(definst simple-beep [freq 440 amp 0.1]
+  (let [env (env-gen (perc 0.1 0.2) :action FREE)]
+    (* amp (* env (sin-osc freq)))))
+
+;; 減衰後Freeして開放してるので、(stop)する必要は無い
+(simple-beep)
+
+;; now function
+;;  Returns the current time in ms
+(now)
+(odoc now)
+
+;; at function
+;; 2秒後にsimple-beepシンセをトリガー
+(at (+ (now) 2000) (simple-beep))
+
+;; apply-at function
+;; 2秒後にfn-beep関数を起動
+(defn fn-beep [] (simple-beep))
+(apply-at (+ (now) 2000) fn-beep [])
+
+;; apply-by function
+;; 処理に時間が掛かりそうな場合とかに使用
+;; 1.7(2 - 0.3)秒後にfn-beep関数を起動
+(apply-by (+ (now) 2000) fn-beep [])
+
+;; loop
+(defn scheduled-beep [curr-t sep-t]
+  (let [new-t (+ curr-t sep-t)]
+    (at new-t (simple-beep))
+    (apply-by new-t scheduled-beep [new-t sep-t])))
+(scheduled-beep (now) 1000)
+(stop)
+
+;; Steve Reich's Piano Phase
+(def piece [:E4 :F#4 :B4 :C#5 :D5 :F#4 :E4 :C#5 :B4 :F#4 :D5 :C#5])
+(definst beep [freq 440 amp 0.1]
+  (let [env (env-gen (perc 0.1 0.2) :action FREE)]
+    (* amp (* env (sin-osc freq)))))
+(defn piano-phase
+  [t speed notes]
+  (let [n      (first notes)
+        notes  (next notes)
+        t-next (+ t speed)]
+    (when n
+      (at t
+        (beep (midi->hz (note n))))
+      (apply-by t-next piano-phase [t-next speed notes]))))
+(let [t (now)]
+  (piano-phase t (/ 338 2) (cycle piece))
+  (piano-phase t (/ 335 2) (cycle piece)))
+(stop)


Prevent copy of :subtitle and :asin when creating new book

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


binary search (clojure)

binary search (clojure)

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

--- src/main/clojure/bsearch/bsearch3.clj
+++ src/main/clojure/bsearch/bsearch3.clj
@@ -0,0 +1,34 @@
+(ns bsearch.bsearch3
+  (:use clojure.test))
+
+(defn binary-search
+  ([value seq]
+    (binary-search value seq 0))
+  ([value seq shift]
+  (if (empty? seq) -1
+    (let [mid-index (unchecked-divide-int (count seq) 2)
+          mid-value (nth seq mid-index)]
+      (cond (= value mid-value) (+ mid-index shift)
+            (< value mid-value) (binary-search value (take mid-index seq) shift)
+            :else (binary-search value (drop (+ 1 mid-index) seq) (+ 1 mid-index shift)))))))
+
+
+(deftest should-find-index-of-element-in-a-vector
+  (is (= (binary-search 1 []) -1))
+
+  (is (= (binary-search 0 [1]) -1))
+  (is (= (binary-search 1 [1]) 0))
+  (is (= (binary-search 2 [1]) -1))
+
+  (is (= (binary-search 0 [1 2]) -1))
+  (is (= (binary-search 1 [1 2]) 0))
+  (is (= (binary-search 2 [1 2]) 1))
+  (is (= (binary-search 3 [1 2]) -1))
+
+  (is (= (binary-search 0 [1 2 3]) -1))
+  (is (= (binary-search 1 [1 2 3]) 0))
+  (is (= (binary-search 2 [1 2 3]) 1))
+  (is (= (binary-search 3 [1 2 3]) 2))
+  (is (= (binary-search 4 [1 2 3]) -1))
+)
+(run-tests)


Brute force forward declarations by catching 'Unable to resolve symbol' exceptions

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


Add initial SICP chapter 1 notes file

Add initial SICP chapter 1 notes file

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

--- clojure/sicp/chapter_1/section_1_1.clj
+++ clojure/sicp/chapter_1/section_1_1.clj
@@ -0,0 +1,93 @@
+;
+; Chapter 1.1 - Notes
+;
+
+; defining a function
+(defn square [x]
+  (* x x))
+
+; using the function as a building block in other functions
+(defn sum-of-squares [x y]
+  (+ (square x) (square y)))
+
+; once again, using functions as building blocks
+(defn f [x]
+  (sum-of-squares (* x 2) (+ x 10)))
+
+; expressing conditional with `cond`
+(defn abs [x]
+  (cond
+    (> x 0) x
+    (< x 0) (- x)
+    (= x 0) 0))
+
+; conditional with `cond` + `else`
+(defn abs [x]
+  (cond
+    (< x 0) (- x)
+    :else x))
+
+; conditional with `if`
+(defn abs [x]
+  (if (< x 0)
+    (- x)
+    x))
+
+; using logical `and`
+(defn between [n x y]
+  (and (> n x) (< n y)))
+
+; using logical `or`
+(defn gte [x y]
+  (or (> x y) (= x y)))
+
+; using `not`
+(defn lte [x y]
+  (not (> x y)))
+
+;
+; Chapter 1.1 - Exercises
+;
+
+; Ex 1.1:
+; What are the results of each expression?
+
+; 10
+
+; (+ 5 3 4)
+
+; (- 9 1)
+
+; (/ 6 2)
+
+; (+ (* 2 4) (- 4 6))
+
+; (define a 3)
+; (define b (+ a 1))
+; (+ a b (* a b))
+
+; (= a b)
+
+; (if (and (> b a) (< b (* a b)))
+;  b
+;  a)
+
+; (cond ((= a 4) 6)
+;  ((= b 4) (+ 6 7 a))
+;  (else 25))
+
+; (+ 2 (if (> b a) b a))
+
+; (* (cond ((> a b) a)
+;  ((< a b) b)
+;  (else -1))
+;  (+ a 1))
+
+
+; Ex 1.2:
+; Translate the following expression into prefix form:
+; (5 + 4 + (2 - (3 - (6 + 0.8)))) / (3 * (6 - 2) * (2 - 7))
+
+; Ex 1.3:
+; Define a procedure that takes three numbers as arguments
+; and returns the sum of the squares of the two larger numbers.


Moar and reorganized achievements.

Moar and reorganized achievements.

--- src-clj/acha/achievement.clj
+++ src-clj/acha/achievement.clj
@@ -73,26 +73,28 @@
            :username author
            :time time}])))])

-(def leo-tolstoy
-  [:leo-tolstoy
+(defn make-message-scanner [achievement-id message-predicate]
+  [achievement-id
    (fn [{:keys [message author time]}]
-     (when (>= (count (str/split-lines message)) 10)
+     (when (message-predicate message)
        {:username author
         :time time}))])

+(def leo-tolstoy
+  (make-message-scanner
+    :leo-tolstoy
+    #(>= (count (str/split-lines %)) 10)))
+
 (def man-of-few-words
-  [:man-of-few-words
-   (fn [{:keys [message author time]}]
-     (when (< (count message) 4)
-       {:username author
-        :time time}))])
+  (make-message-scanner
+    :man-of-few-words
+    #(< (count %) 4)))

 (def no-more-letters
-  [:no-more-letters
-   (fn [{:keys [message author time]}]
-     (when-not (some #(Character/isLetter (.charValue %)) message)
-       {:username author
-        :time time}))])
+  (make-message-scanner
+    :no-more-letters
+    (fn [message]
+      (some #(Character/isLetter (.charValue %)) message))))

 (def narcissist
   [:narcissist
@@ -101,6 +103,74 @@
          {:username author
           :time time}))])

+(def change-of-mind
+  [:change-of-mind
+   (fn [{:keys [changed-files author time]}]
+     (let [edited-files (->> changed-files
+                             (filter #(= (first %) :add))
+                             (map (comp :path last)))]
+       (when (some #{"LICENSE"} edited-files)
+         {:username author
+          :time time})))])
+
+; TODO date achievement
+(def professional-pride
+  [:professional-pride
+   (fn [commit-info]
+     nil)])
+(def turkey-day
+  [:turkey-day
+   (fn [commit-info]
+     nil)])
+(def owl
+  [:owl
+   (fn [commit-info]
+     nil)])
+(def dangerous-game
+  [:dangerous-game
+   (fn [commit-info]
+     nil)])
+(def time-get
+  [:time-get
+   (fn [commit-info]
+     nil)])
+
+; TODO diff achievements
+(def eraser
+  [:eraser
+   (fn [commit-info]
+     nil)])
+(def massive
+  [:massive
+   (fn [commit-info]
+     nil)])
+(def easy-fix
+  [:easy-fix
+   (fn [commit-info]
+     nil)])
+(def mover
+  [:mover
+   (fn [commit-info]
+     nil)])
+(def world-balance
+  [:world-balance
+   (fn [commit-info]
+     nil)])
+
+; TODO sha achievements
+(def lucky
+  [:lucky
+   (fn [commit-info]
+     nil)])
+(def mark-of-the-beast
+  [:mark-of-the-beast
+   (fn [commit-info]
+     nil)])
+(def commit-get
+  [:commit-get
+   (fn [timeline]
+     nil)])
+
 ; TODO commit-info achievements
 (def borat
   [:borat
@@ -110,104 +180,52 @@
   [:cool-kid
    (fn [commit-info]
      nil)])
-(def eraser
-  [:eraser
-   (fn [commit-info]
-     nil)])
-(def massive
-  [:massive
-   (fn [commit-info]
-     nil)])
-(def professional-pride
-  [:professional-pride
-   (fn [commit-info]
-     nil)])
-(def turkey-day
-  [:turkey-day
-   (fn [commit-info]
-     nil)])
-(def owl
-  [:owl
-   (fn [commit-info]
-     nil)])
-(def easy-fix
-  [:easy-fix
-   (fn [commit-info]
-     nil)])
 (def multilingual
   [:multilingual
    (fn [commit-info]
      nil)])
-(def mover
-  [:mover
-   (fn [commit-info]
-     nil)])
-(def world-balance
-  [:world-balance
-   (fn [commit-info]
-     nil)])
+(def commenter
+  [:commenter
+   (fn [commit-info]
+     nil)])
+(def ocd
+  [:ocd
+   (fn [commit-info]
+     nil)])
+(def holy-war
+  [:holy-war
+   (fn [commit-info]
+     nil)])
+(def fat-ass
+  [:fat-ass
+   (fn [commit-info]
+     nil)])
+(def deal-with-it
+  [:deal-with-it
+   (fn [commit-info]
+     nil)])
+(def empty-commit
+  [:empty-commit
+   (fn [commit-info]
+     nil)])
+(def for-stallman
+  [:for-stallman
+   (fn [commit-info]
+     nil)])
+(def wrecking-ball
+  [:wrecking-ball
+   (fn [commit-info]
+     nil)])
+(def alzheimers
+  [:alzheimers
+   (fn [commit-info]
+     nil)])
+
+; TODO timeline achievements
 (def blamer
   [:blamer
-   (fn [commit-info]
-     nil)])
-(def lucky
-  [:lucky
-   (fn [commit-info]
-     nil)])
-(def mark-of-the-beast
-  [:mark-of-the-beast
-   (fn [commit-info]
-     nil)])
-(def commenter
-  [:commenter
-   (fn [commit-info]
-     nil)])
-(def ocd
-  [:ocd
-   (fn [commit-info]
-     nil)])
-(def holy-war
-  [:holy-war
-   (fn [commit-info]
-     nil)])
-(def fat-ass
-  [:fat-ass
-   (fn [commit-info]
-     nil)])
-(def deal-with-it
-  [:deal-with-it
-   (fn [commit-info]
-     nil)])
-(def dangerous-game
-  [:dangerous-game
-   (fn [commit-info]
-     nil)])
-(def empty-commit
-  [:empty-commit
-   (fn [commit-info]
-     nil)])
-(def time-get
-  [:time-get
-   (fn [commit-info]
-     nil)])
-(def for-stallman
-  [:for-stallman
-   (fn [commit-info]
-     nil)])
-(def change-of-mind
-  [:change-of-mind
-   (fn [commit-info]
-     nil)])
-(def wrecking-ball
-  [:wrecking-ball
-   (fn [commit-info]
-     nil)])
-(def alzheimers
-  [:alzheimers
-   (fn [commit-info]
-     nil)])
-
-; TODO timeline achievements
+   (fn [timeline]
+     nil)])
 (def catchphrase
   [:catchphrase
    (fn [timeline]
@@ -230,10 +248,6 @@
      nil)])
 (def necromancer
   [:necromancer
-   (fn [timeline]
-     nil)])
-(def commit-get
-  [:commit-get
    (fn [timeline]
      nil)])
 (def collision
@@ -360,7 +374,6 @@
      mover
      world-balance
      narcissist
-     blamer
      lucky
      mark-of-the-beast
      commenter
@@ -379,6 +392,7 @@
 (def all-timeline-scanners
   [catchphrase
    anniversary
+   blamer
    flash
    waste
    loneliness


Yeah...

Yeah...

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


gen-class for core for uberjar

gen-class for core for uberjar


Coercion to java.nio.file.Path

Coercion to java.nio.file.Path

Makes for a better API

--- src/yada/resources/file_resource.clj
+++ src/yada/resources/file_resource.clj
@@ -148,17 +148,27 @@
      (ex-info "Redirect"
               {:status 302 :headers {"Location" (str (:uri req) index-file)}}))))

+(defprotocol PathCoercion
+  (as-path [_] "Coerce to java.nio.file.Path"))
+
+(extend-protocol PathCoercion
+  java.io.File
+  (as-path [f] (when f (.toPath f)))
+  String
+  (as-path [f] (when f (as-path (io/file f)))))
+
 (defn safe-relative-path
   "Given a parent java.nio.file.Path, return a child that is
   guaranteed not to ascend the parent. This is to ensure access cannot
   be made to files outside of the parent root."
-  [^java.nio.file.Path parent ^String path]
-  (when (and parent path)
-    (let [child (.normalize (.resolve parent path))]
-      (when (.startsWith child parent) child))))
+  [parent ^String path]
+  (let [parent (as-path parent)]
+    (when (and parent path)
+      (let [child (.normalize (.resolve parent path))]
+        (when (.startsWith child parent) child)))))

 (defn safe-relative-file
-  [^java.nio.file.Path parent ^String path]
+  [parent ^String path]
   (when-let [path (safe-relative-path parent path)]
     (.toFile path)))


core-allocate-iter*

core-allocate-iter*

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


Handling byte arrays representing private keys

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


add test file

add test file

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

--- test/deathrow/test.cljs
+++ test/deathrow/test.cljs
@@ -0,0 +1,16 @@
+(ns deathrow.test
+    (:require [cemerick.cljs.test :as t]))
+
+(def test-offender
+	{
+    :age 42
+    :lastName "Aguilar"
+    :lastStmtUrl "http://www.tdcj.state.tx.us/death_row/dr_info/aguilarjesuslast.html"
+    :dateExecuted "05/24/2006"
+    :executionNo 365
+    :firstName "Jesus"
+    :race "Hispanic"
+    :profileUrl "http://www.tdcj.state.tx.us/death_row/dr_info/aguilarjesus.jpg"
+    :_id 999191
+    :lastStmt " Aguilar, Jesus Ledesma\n Last Statement:\n Yes sir.  I would like to say to my family, I am alright. (Spanish) Where are you Leo; are you there Leo? (Spanish) Don't lie man.  Be happy.  Are you happy?  Are you all happy? (Spanish)  "
+  })


Added a 'toolbox' widget. Work in progress.

TODO:
 * add icons to default tool-specs.
 * add support for a 'secondary' tool.
 * add a way to synchronously retrive the new selection (like seesaw/input).

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

--- src/overtone/gui/toolbox.clj
+++ src/overtone/gui/toolbox.clj
@@ -0,0 +1,85 @@
+(ns overtone.gui.toolbox
+  (:use [seesaw.core])
+  (:import javax.swing.JWindow
+           java.awt.MouseInfo))
+
+(defn tool
+  "Returns a new tool (a tqoggle-button for now) for the given tool-spec."
+  [& tool-spec]
+  (let [tool-spec (if (= (count tool-spec) 1)
+                    (first tool-spec)
+                    tool-spec)
+        tool-spec ((comp flatten seq) tool-spec)]
+
+  (apply toggle tool-spec)))
+
+(def ^:private pointer-spec
+  {:id :pointer
+   :text "Pointer"
+   :selected? true})
+
+(def ^:private hand-spec
+  {:id :hand
+   :text "Hand"})
+
+(defn toolbox-bg
+  [& tool-specs]
+  (let [tool-specs (or (not-empty tool-specs)
+                       [pointer-spec hand-spec])
+        tools      (map tool tool-specs)]
+
+    (button-group :buttons tools)))
+
+(defn toolbox
+  "Create a temporary popup window containing a set of selectable tools."
+  ([]
+     (toolbox (toolbox-bg)))
+  ([tools-bg]
+     (invoke-now
+      (let [popup (JWindow.)
+            tools (enumeration-seq (.getElements tools-bg))
+            body (flow-panel :align :left :items tools)]
+
+        (listen tools-bg :mouse-clicked (fn [e] (hide! popup)))
+
+        (doto popup
+          (.add body)
+          (.pack))
+        popup))))
+
+(def ^:dynamic *toolbox* (toolbox))
+
+;;TODO: move to seesaw? or overtone.gui.util?
+(defn mouse-location [] (.getLocation (MouseInfo/getPointerInfo)))
+
+(defn current-tool
+  "Returns the id of the currently selected tool."
+  ([]
+     (current-tool *toolbox*))
+  ([tbox]
+     ((comp key first) (filter (comp true? val)
+                               (value tbox)))))
+
+(defn popup-toolbox
+  "Show the toolbox until clicked."
+  ([]
+     (popup-toolbox *toolbox* :to (mouse-location)))
+  ([tbox]
+     (popup-toolbox tbox :to (mouse-location)))
+  ([tbox & opts]
+     (apply move! tbox opts)
+     (show! tbox)))
+
+(comment
+
+  ;; global toolbox
+  (popup-toolbox)
+  (current-tool)
+
+  ;;local toolbox
+  (toolbox (toolbox-bg))
+
+  ;; thread-local toolbox.
+  (binding [*toolbox* (toolbox)]
+    (popup-toolbox))
+  )


Query Perf example

Query Perf example

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

--- tutorial/query_perf.clj
+++ tutorial/query_perf.clj
@@ -0,0 +1,42 @@
+;   Copyright (c) Cognitect, Inc. All rights reserved.
+;   The use and distribution terms for this software are covered by the
+;   Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
+;   which can be found in the file epl-v10.html at the root of this distribution.
+;   By using this software in any fashion, you are agreeing to be bound by
+;   the terms of this license.
+;   You must not remove this notice, or any other, from this software.
+
+;; Install sample data per https://github.com/Datomic/mbrainz-import
+
+;; get connected
+(require '[datomic.client.api.alpha :as d])
+(def cfg (read-string (slurp "config.edn")))
+(def client (d/client cfg))
+(def db-name "mbrainz-1968-1973")
+(def conn (d/connect client {:db-name db-name}))
+(def db (d/db conn))
+(set! *print-length* 100)
+
+(def mccartney [:artist/gid #uuid "ba550d0e-adac-4864-b88b-407cab5e76af"])
+
+;; This query leads with a where clause that must consider *all* releases
+;; in the database.  SLOW.
+(dotimes [_ 5]
+  (time
+   (d/q '[:find ?name
+          :in $ ?artist
+          :where [?release :release/name ?name]
+                 [?release :release/artists ?artist]]
+        db
+        mccartney)))
+
+;; The same query, but reordered with a more selective where clause first.
+;; significantly faster.
+(dotimes [_ 5]
+  (time
+   (d/q '[:find ?name
+          :in $ ?artist
+          :where [?release :release/artists ?artist]
+                 [?release :release/name ?name]]
+        db
+        mccartney)))


Initial db namespace

Initial db namespace

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


Added in redirect capabilities (not yet wired in)

--- 2-collectors/clojure-collector/src/snowplow/clojure_collector/responses.clj
+++ 2-collectors/clojure-collector/src/snowplow/clojure_collector/responses.clj
@@ -21,6 +21,7 @@
            (java.util UUID)))

 (def ^:const cookie-name "sp")
+(def ^:const id-name "uid")

 (def pixel (Base64/decodeBase64 (.getBytes "R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="))) ; Can't define ^:const on this as per http://stackoverflow.com/questions/13109958/why-cant-i-use-clojures-const-with-a-java-byte-array
 (def ^:const pixel-length (str (alength pixel)))
@@ -52,18 +53,38 @@
   [cookies]
   (get (cookies cookie-name) :value (uuid)))

+(defn- send-pixel
+  "Respond wtih a transparent pixel"
+  [cookies headers]
+    {:status  200
+     :headers (assoc headers
+                    "Content-Type"   "image/gif"
+                    "Content-Length"  pixel-length)
+     :cookies cookies
+     :body    (ByteArrayInputStream. pixel)})
+
+(defn- send-redirect
+  "Respond wtih a 303 redirect"
+  [cookies headers url]
+    {:status  303
+     :headers (assoc headers
+                    "Location" url)
+     :cookies cookies
+     :body    ""})
+
+(defn- attach-id
+  "Attach a user ID to the redirect"
+  [url id]
+    (str url "&" id-name "=" id))
+
 (defn send-cookie-and-pixel-or-redirect
   "Respond with the cookie and either a transparent pixel or a redirect"
   [cookies duration domain p3p-header] ; TODO: add in redirect support
-  (let [id (generate-id cookies)
-        cookie-contents (set-cookie id duration domain)]
-    {:status  200
-     :headers {"Content-Type"   "image/gif"
-               "P3P"             p3p-header
-               "Content-Length"  pixel-length}
-     :cookies {cookie-name cookie-contents}
-     :body    (ByteArrayInputStream. pixel)}))
-
+  (let [id      (generate-id cookies)
+        cookies {cookie-name (set-cookie id duration domain)}
+        headers {"P3P" p3p-header}]
+    ;(send-pixel cookies headers)))
+    (send-redirect cookies headers (attach-id "http://localhost:3000/status?" id))))

 (def send-404
   "Respond with a 404"


Add functions to the screen object

Add functions to the screen object

--- src/play_clj/core.clj
+++ src/play_clj/core.clj
@@ -80,6 +80,8 @@
                        update-screen!))]
     {:screen screen
      :entities entities
+     :execute-fn! execute-fn!
+     :update-fn! update-fn!
      :options options
      :show (fn []
              ; if using a physics engine in a REPL, we need to forcibly dispose


Improve tests

Improve tests

--- test/riemann/test/nagios.clj
+++ test/riemann/test/nagios.clj
@@ -11,8 +11,17 @@

 (def expected
   (let [e test-event]
-  (nagios-message (:host e) (:state e) (:service e) (:description e))))
+    (nagios-message (:host e) (:state e) (:service e) (:description e))))

-(deftest nagios-test
-  (is (= (event->nagios test-event)
-                        expected)))
+(deftest test-event-to-nagios
+  (testing "Transform event to Nagios message"
+    (is (= expected (event->nagios test-event))))
+  (testing "Malformed events are rejected"
+    (is (thrown? IllegalArgumentException (event->nagios (merge test-event {:state "borken"}))))))
+
+(deftest test-stream
+  (testing "Events get transformed and are sent"
+  (let [message (atom nil)]
+    (with-redefs [clj-nsca.core/send-message (fn [_ msg] (reset! message msg))]
+      ((nagios {}) test-event))
+    (is (= expected @message)))))


[TH DG] Abolish all config typos

[TH DG] Abolish all config typos

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 accounts...

added accounts...

error: pathspec '7_languages/Clojure/accounts.clj' did not match any file(s) known to git

--- 7_languages/Clojure/accounts.clj
+++ 7_languages/Clojure/accounts.clj
@@ -0,0 +1,16 @@
+; use refs to create a vector of accounts in memory
+; create debit and credit functions to change the balance of an account
+; debit -
+; credit +
+
+(def accounts (ref [1 2 3 4]))
+
+(defn credit
+  [accounts idx amount]
+  (dosync
+    (alter accounts update idx + amount)))
+
+(defn debit
+  [accounts idx amount]
+  (dosync
+    (alter accounts update idx - amount)))


Add a tentacle test ns

Add a tentacle test ns

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

--- test/doctopus/doctopus/tentacle_test.clj
+++ test/doctopus/doctopus/tentacle_test.clj
@@ -0,0 +1,6 @@
+(ns doctopus.doctopus.tentacle-test
+  (:require [clojure.test :refer :all]
+            [doctopus.doctopus.tentacle :refer :all]
+            [me.raynes.fs :as fs]))
+
+(def one-tentacle)


Add user/reset to refresh namespaces and restart dev app

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


Show exception data from catch ExceptionInfo errors

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


transform test (initial commit)

transform test (initial commit)

error: pathspec 'sass-dsl/test/sass_dsl/transform_test.clj' did not match any file(s) known to git

--- sass-dsl/test/sass_dsl/transform_test.clj
+++ sass-dsl/test/sass_dsl/transform_test.clj
@@ -0,0 +1,8 @@
+(ns sass-dsl.transform-test
+  (:require [clojure.test :refer :all]
+            [sass-dsl.parse :as parse]
+            [sass-dsl.transform :as transform]
+            [sass-dsl.common-test :as common-test]
+            [sass-dsl.parse-test :as parse-test]
+            [sass-dsl.common-test :as common-test]))
+