work in progress: index lists topics

work in progress: index lists topics

the index page should list out the topics from the groups the user is
subscribed to

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


Add total downloads count to recently pushed jars

Conflicts:
	src/clojars/web/dashboard.clj

--- src/clojars/web/dashboard.clj
+++ src/clojars/web/dashboard.clj
@@ -1,14 +1,20 @@
 (ns clojars.web.dashboard
   (:require [clojars.web.common :refer [html-doc html-doc-with-large-header jar-link group-link tag]]
             [clojars.db :refer [jars-by-username find-groupnames recent-jars]]
+            [clojars.stats :as stats]
             [hiccup.element :refer [unordered-list link-to]]))

 (defn recent-jar [jar-map]
-  [:li.col-md-4.col-sm-6
-   [:div.recent-jar
-    [:h3.recent-jar-title
-     (jar-link jar-map)]
-    [:p.recent-jar-description (:description jar-map)]]])
+  (let [stats (stats/all)]
+    [:li.col-md-4.col-sm-6
+     [:div.recent-jar
+      [:h3.recent-jar-title
+       (jar-link jar-map)]
+      [:p.recent-jar-description (:description jar-map)]
+      [:p.total-downloads "Downloads: " (stats/download-count stats
+                                                              (:group_name jar-map)
+                                                              (:jar_name jar-map))]]]))
+

 (defn index-page [account]
   (html-doc-with-large-header account nil


hu-tucker, front-coded dictionary compression

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

--- src/cavm/pfc.clj
+++ src/cavm/pfc.clj
@@ -0,0 +1,131 @@
+(ns
+  ^{:author "Brian Craft"
+    :doc "front coding"}
+  cavm.pfc
+  (:import [java.util.concurrent ArrayBlockingQueue])
+  (:require [clojure.data.json :as json])
+  (:require [cavm.huffman :as huffman]))
+
+;
+; vbyte
+;
+
+; XXX use unchecked math?
+(defn vbyte0 [i] (byte-array [(bit-or 0x80 i)]))
+(defn vbyte1 [i] (byte-array
+                     [(bit-shift-right i 7)
+                      (bit-or 0x80 (bit-and i 0x7f))]))
+(defn vbyte2 [i] (byte-array
+                     [(bit-and (bit-shift-right i 14) 0x7f)
+                      (bit-and (bit-shift-right i 7) 0x7f)
+                      (bit-or 0x80 (bit-and i 0x7f))]))
+(defn vbyte3 [i] (byte-array
+                     [(bit-and (bit-shift-right i 21) 0x7f)
+                      (bit-and (bit-shift-right i 14) 0x7f)
+                      (bit-and (bit-shift-right i 7) 0x7f)
+                      (bit-or 0x80 (bit-and i 0x7f))]))
+
+; Note we don't handle things over 0x10000000
+(defn vbyte-encode [i]
+    (cond
+        (< i 0x80) (vbyte0 i)
+        (< i 0x4000) (vbyte1 i)
+        (< i 0x200000) (vbyte2 i)
+        :else (vbyte3 i)))
+
+;(into [] (vbyte-encode 16500))
+;(into [] (vbyte-encode 129))
+;(into [] (vbyte-encode 5))
+
+; XXX not very efficient. For testing.
+(defn vbyte-decode
+    ([w] (vbyte-decode w 0 0))
+    ([w acc offset]
+     (let [n (first w)]
+         (if (pos? (bit-and 0x80 n))
+             (bit-or acc (bit-shift-left (bit-and 0x7F n) offset))
+             (recur (rest w) (bit-or acc (bit-shift-left n offset)) (+ offset 7))))))
+
+;
+; pfc
+;
+
+(defn common-prefix
+    ([a b] (common-prefix a b 0))
+    ([^String a ^String b n]
+     (if (and (> (.length a) n)
+              (> (.length b) n)
+              (= (.charAt a n) (.charAt b n)))
+         (recur a b (inc n))
+         n)))
+
+(defn diff-rec [[^String a ^String b]]
+    (let [n (common-prefix a b)]
+        [(vbyte-encode n) (.getBytes (.substring b n)) [0]]))
+
+(defn decompress [[init diffs]]
+    (reductions (fn [^String prev [n suffix]] (str (.substring prev 0 n) suffix))
+                init diffs))
+
+(defn compress-bin [strings]
+    {:header (into-array Byte/TYPE (concat (.getBytes ^String (first strings)) [0]))
+     :inner (mapcat diff-rec (partition 2 1 strings))})
+
+(defn compress-pfc [strings bin-size]
+    (let [ordered (sort strings)
+          bins (partition-all bin-size ordered)
+          compressed (map compress-bin bins)
+          sizes (map #(apply + (map count %)) compressed)]
+        [sizes (into-array Byte/TYPE (apply concat (apply concat compressed)))]))
+
+; Compress string collection with front-coding and huffman coding.
+; Strings are split into bins, and each bin front-coded.
+; Each bin is thus a full string ("header"), and a list of [prefix length, suffix],
+; "inner strings".
+; A huffman dictionary is computed over the inner strings (lens & suffixes),
+; and each inner string bin is compressed against the huffman dict.
+; A hu-tucker dictionary is computed over the headers, to allow
+; binary search over the bins.
+; The returned buffer is
+; [header dictionary]
+; [bin dictionary]
+; [bin sizes]
+; [concatenated bins]
+
+; Is there a faster way to do the huffman encoding, than lazily
+; consuming each byte array? It's a bit crazy. Reducer? Transducer?
+; Run some profiles.
+
+; Is it worth trying to minimize byte copying?
+(defn get-bytes [method this & args]
+    (let [out (java.io.ByteArrayOutputStream. 1000)]
+        (apply method this out args)
+        (.toByteArray out)))
+
+(defn compress-htfc [strings bin-size]
+     (let [out (java.io.ByteArrayOutputStream. 1000)
+           ordered (sort strings)
+           bins (partition-all bin-size ordered)
+           front-coded (map compress-bin bins)
+           ht (huffman/make-hu-tucker (map #(:header %) front-coded))
+           compressed-headers (map #(get-bytes huffman/write ht (:header %))
+                                   front-coded)
+           huff (huffman/make-huffman (mapcat :inner front-coded))
+           compressed (map #(get-bytes huffman/write huff (apply concat (:inner %)))
+                           front-coded)
+           sizes (map #(+ (count %1) (count %2)) compressed-headers compressed)
+           offsets (reductions + 0 (take (dec (count sizes)) sizes))]
+         (huffman/write-dictionary ht out)
+         (huffman/write-dictionary huff out)
+         (huffman/write-int (count offsets) out)
+         (doseq [s offsets]
+             (huffman/write-int s out))
+         (doseq [[header inner]  (map #(-> [%1 %2])
+                                      compressed-headers
+                                      compressed)]
+             (.write out ^bytes header)
+             (.write out ^bytes inner))
+         (let [total (.size out)] ; align to word boundary
+             (dotimes [i (rem (- 4 (rem total 4)) 4)]
+                 (.write out 0)))
+         (.toByteArray out)))


move implicit ssl config

move implicit ssl config

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


Added streamable_intl.clj for intl listeners

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

--- streamable_intl.clj
+++ streamable_intl.clj
@@ -0,0 +1,84 @@
+(require 'leiningen.exec)
+(leiningen.exec/deps '[[org.clojure/clojure "1.7.0"]
+                       [environ "1.0.1"]
+                       [korma "0.4.2"]
+                       [org.xerial/sqlite-jdbc "3.8.11.2"]
+                       [adamwynne/feedparser-clj "0.5.2"]
+                       [clj-http "2.0.0"]
+                       [throttler "1.0.0"]])
+
+(require '[feedparser-clj.core :as feedparser]
+         '[environ.core :refer [env]]
+         '[korma.db :as kdb]
+         '[korma.core :as kcore]
+         '[clojure.java.io :as io]
+         '[clojure.pprint :refer :all]
+         '[clj-http.client :as http]
+         '[throttler.core :refer [throttle-fn]])
+
+(def sqll (kdb/sqlite3 {:db "episodes.db"}))
+(kdb/defdb db sqll)
+(kcore/defentity episodes)
+
+(def unogs-key (env :unogs-key))
+
+(def countries-of-interest
+  #{"GB" "FR" "AU" "CA" "DE" "ZA"})
+
+(defn assoc-streaming-options [ep]
+  (println "Getting options for" (:media_title ep))
+  (flush)
+  (let [resp (http/get
+               "http://unogs.com/cgi-bin/nf.cgi?"
+               {:query-params {:t "loadvideo"
+                               :q (:netflix_id ep)
+                               :api unogs-key}
+                :accept :json
+                :as :json})]
+    (some->> resp
+             :body
+             :RESULT
+             :country
+             (map second)
+             (map clojure.string/upper-case)
+             set
+             (clojure.set/intersection countries-of-interest)
+             (assoc ep :streaming_options))))
+
+(def throttled-options (throttle-fn assoc-streaming-options 1 :second))
+
+(defn format-results [eps]
+  (let [countries (->> eps
+                       (mapcat :streaming_options)
+                       set
+                       (sort-by
+                         #(condp = %
+                            "CA" "AAA"
+                            "GB" "AAB"
+                            %)))]
+    (apply str
+      (flatten
+        (list
+          "Episode"
+          (for [country countries] (str " | " country))
+          "\n:---"
+          (for [_ countries] "|:---:")
+          "\n"
+          (for [ep eps]
+            (list
+              (:episode_title ep)
+              (for [country countries]
+                (if
+                  ((:streaming_options ep) country)
+                  "|✓"
+                  "|"))
+              "\n")))))))
+
+(let [episode-data (kcore/select episodes
+                     (kcore/where {:ignore 0}))]
+  (->> episode-data
+       (map throttled-options)
+       (remove (comp empty? :streaming_options))
+       (sort-by :episode_id)
+       format-results
+       print))


Added check of sufficiently new clojure version.

This should prevent users of old clojure versions
from running koans and getting strange results.

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


Fix tests

Fix tests

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


Avoid rerendering all of the things by deriving the highlighted status in a om projection :fn .

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


Speed up streams.test/rate-fast

Speed up streams.test/rate-fast

--- test/riemann/test/streams.clj
+++ test/riemann/test/streams.clj
@@ -391,20 +391,19 @@
 (deftest rate-fast
          (let [output (ref [])
                interval 1
-               total 1000000
+               total 10000
                threads 4
                r (rate interval
                         (fn [event] (dosync (alter output conj event))))
                t0 (unix-time)]

-           (time
-             (doseq [f (map (fn [t] (future
-               (let [c (ref 0)]
-                 (dotimes [i (/ total threads)]
-                         (let [e {:metric 1.0 :time (unix-time)}]
-                           (dosync (commute c + (:metric e))))))))
-                            (range threads))]
-               (deref f)))
+           (doseq [f (map (fn [t] (future
+             (let [c (ref 0)]
+               (dotimes [i (/ total threads)]
+                       (let [e {:metric 1.0 :time (unix-time)}]
+                         (dosync (commute c + (:metric e))))))))
+                          (range threads))]
+             (deref f))

            ; Generate events
            (doseq [f (map (fn [t] (future


Refactor running namespace

Refactor running 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/aaronlahey/coconut.git/'


update doc string for auto-jump-to-source-on-error

--- sidecar/src/figwheel_sidecar/schemas/config.clj
+++ sidecar/src/figwheel_sidecar/schemas/config.clj
@@ -639,18 +639,21 @@
   :heads-up-display false")

 (def-key ::auto-jump-to-source-on-error boolean?
-  "When an error occurs immediately send an open file command message to the
-:open-file-command script. This will immediately jump to the error in the file
-when a compile error of compile warning occurs.
-
-Normally, you would click on the heads up display to jump the error.
+  "Normally, when the client receives a notification that a compile error
+occured you would have an opportunity to jump to the source location in an
+editor (this only works if :open-file-command is configured properly)
+
+With this setting is set to true, when the client receives an error
+notification the client immediately sends an open file command message
+to the :open-file-command script. This will have the affect of
+immediately jumping to the error in the file when a compile error or
+compile warning occurs.

 Default: false

   :auto-jump-to-source-on-error true")

 (def-key ::load-warninged-code  boolean?
-
   "If there are warnings in your code emitted from the compiler, figwheel
 does not refresh. If you would like Figwheel to load code even if
 there are warnings generated set this to true.
@@ -659,7 +662,6 @@
   :load-warninged-code true")

 (def-key ::open-urls   (s/every non-blank-string? :min-count 1 :into [] :kind sequential?)
-
   "A Vector of URLs that you would like to have opened at the end of the
 initial compile. These URLs must be Strings.


WIP pulse animation

WIP pulse animation

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/dominikzarzecki/meteor-impacts-timelapse.git/'


Gogokoetan sartu

Gogokoetan sartu

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


lz77 algo (initial commit)

lz77 algo (initial commit)

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

--- src/sandbox/lz77.clj
+++ src/sandbox/lz77.clj
@@ -0,0 +1,23 @@
+(ns sandbox.lz77
+  (:require [clojure.set :as cset]))
+
+
+(defn expand
+  [the-vector
+   distance
+   length]
+  (->> (take-last distance the-vector)
+       (cycle)
+       (take length)))
+
+(defn un-LZ77
+  [bytes]
+  (loop [result []
+         remaining bytes]
+    (if (seq remaining)
+      (let [current (first remaining)
+            the-rest (rest remaining)]
+        (if-not (vector? current)
+          (recur (conj result current) the-rest)
+          (recur (into result (expand result (current 0) (current 1))) the-rest)))
+      result)))


added test for system stream

added test for system stream

--- test/clj/backtype/storm/integration_test.clj
+++ test/clj/backtype/storm/integration_test.clj
@@ -101,6 +101,26 @@
                (read-tuples results "4")))
         ))))

+(defbolt identity-bolt ["num"]
+  [tuple collector]
+  (emit-bolt! collector (.getValues tuple) :anchor tuple)
+  (ack! collector tuple))
+
+(deftest test-system-stream
+  ;; this test works because mocking a spout splits up the tuples evenly among the tasks
+  (with-simulated-time-local-cluster [cluster]
+      (let [topology (thrift/mk-topology
+                      {"1" (thrift/mk-spout-spec (TestWordSpout. true) :p 3)}
+                      {"2" (thrift/mk-bolt-spec {"1" ["word"] ["1" "__system"] :global} identity-bolt :p 1)
+                       })
+            results (complete-topology cluster
+                                       topology
+                                       :mock-sources {"1" [["a"] ["b"] ["c"]]}
+                                       :storm-conf {TOPOLOGY-WORKERS 2})]
+        (is (ms= [["a"] ["b"] ["c"] ["startup"] ["startup"] ["startup"]]
+                 (read-tuples results "2")))
+        )))
+
 (deftest test-shuffle
   (with-simulated-time-local-cluster [cluster :supervisors 4]
     (let [topology (thrift/mk-topology
@@ -217,11 +237,6 @@

 (defbolt ack-bolt {}
   [tuple collector]
-  (ack! collector tuple))
-
-(defbolt identity-bolt ["num"]
-  [tuple collector]
-  (emit-bolt! collector (.getValues tuple) :anchor tuple)
   (ack! collector tuple))

 (deftest test-acking


Stop using removed subscription bool in tests

We're removing the redundant subscription attribute in
election-mail-works, so let's stop using it in the tests in here too.

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


Solve 20 in Clojure (alterantive solution)

error: pathspec 'Problem020/Clojure/solution_2.clj' did not match any file(s) known to git

--- Problem020/Clojure/solution_2.clj
+++ Problem020/Clojure/solution_2.clj
@@ -0,0 +1,9 @@
+(defn solution
+  []
+  (->> (range 1 100)
+       (reduce *')
+       (str)
+       (seq)
+       (pmap #(Character/getNumericValue %))
+       (reduce +)
+       (str)))


Create Main.clj

Create Main.clj

result:
https://paiza.jp/poh/ando/share/c94cab5b

error: pathspec 'POH7/Mizugi/Main.clj' did not match any file(s) known to git

--- POH7/Mizugi/Main.clj
+++ POH7/Mizugi/Main.clj
@@ -0,0 +1,37 @@
+; Try POH
+; author: Leonardone @ NEETSDKASU
+
+(def gs read-line)
+(defn gi [] (read-string (gs)))
+(defn gss [] (list* (.split (gs) " ")))
+(defn gis [] (map read-string (gss)))
+(defn ngt [n f] (for [_ (range n)] (f)))
+(defn ngs [n] (ngt n gs))
+(defn ngi [n] (ngt n gi))
+(defn ngss [n] (ngt n gss))
+(defn ngis [n] (ngt n gis))
+
+
+(defn modval [v] (mod v 1000000000))
+(defn reject [d v c]
+    (loop [v v c c]
+        (if (= (mod v d) 0) (recur (/ v d) (inc c))
+            [v c]
+        )))
+(defn solve [n]
+    (loop [v n r 1 c 0]
+        (if (= v 1) (loop [r r c c] (if (= c 0) r (recur (modval (* r 2)) (dec c))))
+            (let [[x c1] (reject 5 v 0)
+                  [y c2] (reject 2 x (- c1))
+                 ]
+                (recur (dec v) (modval (* r y)) (+ c c2))
+            ))))
+
+
+(defn main []
+    (let [n (gi) ans (solve n)]
+        (println ans)
+    ))
+
+
+(main)


Update dependencies

Update dependencies

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


Latest instaparse breaks our parsing. Excluding it for now.

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


add :uberjar profile and 'slim' core.typed used in :uberjar profile.

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


[TH] upgrade to latest libraries

[TH] upgrade to latest libraries

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


Add schedules submodule.

Add schedules submodule.


updated clojurescript version

updated clojurescript version

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


Add dependency to core.async

Add dependency to core.async

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

--- project.clj
+++ project.clj
@@ -0,0 +1,7 @@
+(defproject clj-tutorials "0.1.0-SNAPSHOT"
+  :description "FIXME: write description"
+  :url "http://example.com/FIXME"
+  :license {:name "Eclipse Public License"
+            :url "http://www.eclipse.org/legal/epl-v10.html"}
+  :dependencies [[org.clojure/clojure "1.6.0"]
+                 [org.clojure/core.async "0.1.346.0-17112a-alpha"]])


Version 1.3.0

Version 1.3.0

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


Initial Clojure STM demo

Initial Clojure STM demo

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

--- clojure/stm.clj
+++ clojure/stm.clj
@@ -0,0 +1,13 @@
+(def savings (ref 10000))
+(def checking (ref 500))
+
+(assert (and (= @savings 10000) (= @checking 500)))
+
+;(alter savings 200)
+
+(dosync
+  (let [amount 100]
+    (alter savings - amount)
+    (alter checking + amount)))
+
+(assert (and (= @savings 9900) (= @checking 600)))


Websockets close logging on clojure side

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/OttoJursch/sched-system.git/'


commented out dev helpers in example project.clj

--- example/project.clj
+++ example/project.clj
@@ -47,7 +47,6 @@
                          :notify-command ["notify"]
                          :figwheel { :websocket-host "localhost"
                                      :on-jsload      example.core/fig-reload
-
                                     :on-message     example.core/on-message
                                     ; :open-urls ["http://localhost:3449/index.html"]
                                     ; :debug true
@@ -103,10 +102,14 @@
                                     [org.clojure/tools.namespace "0.2.11"]
                                     [org.clojure/tools.nrepl "0.2.12"]
                                     [leiningen-core "2.6.1"]]
-
+                    ;; this is testing profile merging
+                    #_:figwheel #_{
+                                   :recompile-dependents false
+                                   }
                     :source-paths ["src" "dev"]
                     :repl-options {:init (set! *print-length* 50)}
                     :plugins [[cider/cider-nrepl "0.11.0"]]}}
+

   ; :repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}

@@ -120,8 +123,7 @@

              ;; Start an nREPL server into the running fighweel
              ;; process
-
-
+
              ;; :nrepl-port 7888

              :nrepl-middleware ["cider.nrepl/cider-middleware"
@@ -141,7 +143,12 @@
              ;; if your project.clj contains conflicting builds,
              ;; you can choose to only load the builds specified
              ;; on the command line
-             ;;:load-all-builds false ; default is true
+
+             ;; :load-all-builds false ; default is true

-             ;;:ansi-color-output false
+             ;; :ansi-color-output false
+
+             ;; this doesn't belong here its here for testing config errors
+             ;; :recompile-dependents false
+
              })


Add intrinsics (cos, sin)

Add intrinsics (cos, sin)

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


Iruzkinen eragiketak transakzio barnean burutu

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


Wire up the view's widgets with an event handler function.

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

--- src/fm/simrunner/gui/wiring.clj
+++ src/fm/simrunner/gui/wiring.clj
@@ -0,0 +1,73 @@
+(ns fm.simrunner.gui.wiring
+  ^{:doc
+
+  "Wire up the Widgets of the SimRunner GUI with an Event Handler."
+
+    :author "Frank Mosebach"}
+  (:import
+    (java.awt BorderLayout)
+    (java.awt.event ActionListener)
+    (javax.swing.event DocumentListener)))
+
+(def ^{:private true} actions #{:open-config
+                                :save-config
+                                :save-config-as
+                                :run-simulation})
+
+(defmulti wire-input ^{:private true} (fn [input & _] (type input)))
+
+(defmethod wire-input :text-input [input on-event]
+  (-> input
+      :widget
+      .getDocument
+      (.addDocumentListener (reify
+                              DocumentListener
+                              (insertUpdate [this event]
+                                (on-event :input-changed input))
+                              (removeUpdate [this event]
+                                (on-event :input-changed input))
+                              (changedUpdate [this event]
+                                (on-event :input-changed input))))))
+
+(defmethod wire-input :checkbox-input [input on-event]
+  (-> input
+      :widget
+      (.addActionListener (reify
+                            ActionListener
+                            (actionPerformed [this event]
+                              (on-event :input-changed input))))))
+
+(defmethod wire-input :select-input [input on-event]
+  (let [select-text   (-> input :contents :select-text)
+        select-button (-> input :contents :select-button)]
+  (-> select-button
+      :widget
+      (.addActionListener (reify
+                            ActionListener
+                            (actionPerformed [this event]
+                              (on-event :input-changed input)))))))
+
+(defn- wire-button [button on-event]
+  (println button)
+  (-> button
+      :widget
+      (.addActionListener (reify
+                            ActionListener
+                            (actionPerformed [this event]
+                              (on-event :action-performed button))))))
+
+(defn- wire-toolbar-buttons [view on-event]
+  (let [buttons (->> (get-in view [:contents :tool-bar :contents])
+                     vals
+                     (filter #(-> % meta :action actions)))]
+    (doseq [button buttons]
+      (wire-button button on-event))))
+
+(defn- wire-inputs [view on-event]
+    (doseq [input (get-in view [:contents :config-editor :contents :inputs])]
+      (wire-input input on-event)))
+
+(defn wire-up [view on-event]
+  (wire-toolbar-buttons view on-event)
+  (wire-inputs view on-event))
+


Fix issue where changed files were removed then copied again

--- boot/pod/src/boot/file.clj
+++ boot/pod/src/boot/file.clj
@@ -149,7 +149,8 @@
 (defmethod patch-cp? :hash    [_ a b] (not= (digest/md5 a) (digest/md5 b)))

 (defn patch [pred before after]
-  (let [[rm cp] (time-diff before after)]
+  (let [[x cp] (time-diff before after)
+        rm     (set/difference x cp)]
     (concat
       (for [x rm] [:rm x (get-in before [:file x])])
       (for [x cp :let [b (get-in before [:file x])


membership analysis attempt

membership analysis attempt

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

--- src/mljalfa/finance/voucher.clj
+++ src/mljalfa/finance/voucher.clj
@@ -0,0 +1,38 @@
+(ns mljalfa.finance.voucher
+  (:require
+    [clojure.string :as cs]
+    [clojure.set :as cset]
+    [cheshire.core :as js]))
+
+(defn fdir
+  [fname]
+  (str "resources/aug18/" fname))
+
+(defn save-edn
+  [fname data]
+  (spit (str (fdir fname) ".edn") data))
+
+(defn save-json
+  [fname data]
+  (spit (str (fdir fname) ".json")
+        (js/generate-string data)))
+
+(defn open-edn
+  [fname]
+  (->> (str (fdir fname) ".edn") slurp read-string))
+
+(defn open-csv
+  [fname]
+  (->> (str (fdir fname) ".csv") slurp))
+
+(defn good-date
+  [asshole]
+  (let [[a b] (-> (java.text.SimpleDateFormat. "MM yyyy")
+                  (.format asshole)
+                  (cs/split #" "))
+        mapi (zipmap (map #(if (< % 10)
+                            (str 0 %)
+                            (str %))
+                          (range 1 13))
+                     (range 1 13))]
+    {:month (mapi a) :year (Integer/parseInt b)}))


Leaving myself a note.

Leaving myself a note.

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


rev v/wmeta helpers

rev v/wmeta helpers

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


Added simple class

Added simple class

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/johnprince/coding-demo.git/'


Response handler should be a record not a type

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


add q12

add q12

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

--- src/puzzule/q12.clj
+++ src/puzzule/q12.clj
@@ -0,0 +1,14 @@
+(ns puzzule.q12
+  (:require [clojure.string :as string]))
+
+(defn ten-chars? [c-list]
+  (= 10 (count c-list)))
+
+(defn full-num-10? [num]
+  (ten-chars? (distinct (take 10 (string/replace (str (Math/sqrt num)) "." "")))))
+
+(defn full-num-10?? [num]
+  (ten-chars? (distinct (take 10 (second (string/split (str (Math/sqrt num)) #"\."))))))
+
+(first (filter full-num-10? (range)))
+(first (filter full-num-10?? (range)))


trying to build select

trying to build select

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


creating new-db in move.

creating new-db in move.


freqbd test

freqbd test

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

--- test/beat_detector/freqbd_test.clj
+++ test/beat_detector/freqbd_test.clj
@@ -0,0 +1,52 @@
+(ns beat-detector.freqbd-test
+  (:use [beat-detector.freqbd])
+  (:require [clojure.test :refer :all]
+            [beat-detector.core :as core]))
+
+(def ^:dynamic *raw* core/*raw-data*)
+
+(deftest peek-fft-buffer-test
+  (testing "just check size"
+    (is (= (count (peek-fft-buffer *raw* 1024 32)) 32))))
+
+(deftest divide-test
+  (testing "general"
+    (is (= (divide [1 2 3 4 5 6 7 8] 4)
+           [3 7 11 15]))
+    (is (= (divide [1 2 3 4 5 6 7 8] 2)
+           [10 26]))))
+
+(deftest gen-energy-subbands-buffer-test
+  (testing "check subband height"
+    (is (= (count (time (gen-energy-subbands-buffer *raw* 1024 44032 32)))
+           31)))
+  (testing "check subband width"
+    (is (= (count (first (gen-energy-subbands-buffer *raw* 1024 44032 32)))
+           43))))
+
+(comment (deftest next-energy-subbands-buffer-test
+  (testing "general"
+    (is (= (next-energy-subbands-buffer [0 1 2 3] *raw* 2)
+           [1 2 3 5])))
+  (testing "when there are insufficient datas (< instance-num) in raw"
+    (is (= (next-energy-subbands-buffer [0 1 2 3] *raw* 9)
+           [1 2 3 204])))
+  (testing "when there are no more remaining raw"
+    (is (= (next-energy-subbands-buffer [0 1 2 3] '() 2)
+           [1 2 3 0])))
+  (testing "when given buffer is empty (which should not be)"
+    (is (= (next-energy-subbands-buffer [] *raw* 2)
+           nil)))))
+
+
+(comment (deftest initialize-test
+  (testing "general"
+    (let [packet (core/->Packet nil *raw* 0 2 6 nil)
+          {buffer :buffer raw :raw pos :pos} (initialize packet)]
+      (is (= buffer [5 25 61]))
+      (is (= raw '([[7 8] [0 0]])))
+      (is (= pos 3))))
+  (testing "when raw is completely consumed"
+    (let [packet (core/->Packet nil *raw* 0 2 8 nil)]
+      (is (= (take 2 (vals (initialize packet)))
+             '([5 25 61 113] ())))))))


added a test implementation of a state/history tracking visitor

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

--- test/dalap/test/state_tracking.clj
+++ test/dalap/test/state_tracking.clj
@@ -0,0 +1,55 @@
+(ns dalap.test.state_tracking
+  (:use [clojure.test])
+  (:require [clojure.core.match :as match])
+
+  (:use [dalap.walk :only
+         [IWalkerState get-state conj-state update-state update-in-state
+          gen-walker walk]])
+  (:require [dalap.defaults :as df])
+  (:import [clojure.lang Named ISeq Seqable])
+  (:import [dalap.walk Walker]))
+
+
+(defprotocol Visitable
+  (visit [o w]))
+
+(extend-protocol Visitable
+  Object
+  (visit [o w] (df/visit o w)))
+
+(defrecord InnerWrap [children]
+  Visitable
+  (visit [o w]
+    (map (comp w #(vector :div %)) children)))
+
+(defn wrap-map [wrapper walker container]
+  (map (comp walker
+             (fn [e] (with-meta (wrapper e) {::dyn-wrapper true})))
+       container))
+
+(deftype OuterWrap [children]
+  Visitable
+  (visit [o w]
+    (wrap-map ->InnerWrap w children)))
+
+(def inner-wrapper? #(instance? InnerWrap %))
+(defn state-tracking-visitor
+  [x w0]
+  (let [w (update-in-state w0
+                           ::visited #(conj % x))
+        history (::visited w)]
+    (match/match [x history]
+      [(k :when keyword?) _]
+      [k " "]
+
+      [_ ([_current (_parent :when inner-wrapper?) & r] :seq)]
+      (visit ["*" x " "] w)
+
+      [_ _] (visit x w))))
+
+(deftest test-state
+  (is (= "*:div a *:div 1 *:div foo *:div 0123456789 *:div b "
+         (apply str
+                (flatten
+                 (walk (OuterWrap. [ "a" [1 'foo (range 10)] "b"])
+                       state-tracking-visitor))))))


db updates

db updates

--- src-clj/acha/db.clj
+++ src-clj/acha/db.clj
@@ -4,7 +4,7 @@
 (def db
   {:classname   "org.sqlite.JDBC"
    :subprotocol "sqlite"
-   :subname     "db/database.db"
+   :subname     "sqlite/acha.db"
    })

 (defn create-db []
@@ -22,21 +22,21 @@
                                          [:timestamp :text])
                        (create-table-ddl :achievement
                                          [:id "integer primary key autoincrement"]
-                                         [:type :keyword]
+                                         [:type :text]
                                          [:level :integer]
                                          [:user-id :integer]
                                          [:repo-id :integer]))
        (catch Exception e (println e))))

-(def testdata
-  {:name "test",
-   :email "t@email.com"})
+;(def testdata
+;  {:name "test",
+;   :email "t@email.com"})

-(create-db)
-(insert! db :users testdata)
+;(create-db)
+;(insert! db :users testdata)

-(def output
+(defn get-all-users []
   (query db "select * from users"))

-(keys (first output))
-(:body (first output))+;(keys (first output))
+;(:body (first output))


added clj version of squuid

added clj version of squuid

--- src/datascript.cljc
+++ src/datascript.cljc
@@ -251,15 +251,24 @@
       :else   s)))

 (defn squuid []
-  (UUID.
-    (str
-          (-> (js/Date.) (.getTime) (/ 1000) (Math/round) (to-hex-string 8))
-      "-" (-> (rand-bits 16) (to-hex-string 4))
-      "-" (-> (rand-bits 16) (bit-and 0x0FFF) (bit-or 0x4000) (to-hex-string 4))
-      "-" (-> (rand-bits 16) (bit-and 0x3FFF) (bit-or 0x8000) (to-hex-string 4))
-      "-" (-> (rand-bits 16) (to-hex-string 4))
-          (-> (rand-bits 16) (to-hex-string 4))
-          (-> (rand-bits 16) (to-hex-string 4)))))
+  #?(:clj
+      (let [uuid     (java.util.UUID/randomUUID)
+            time     (int (/ (System/currentTimeMillis) 1000))
+            high     (.getMostSignificantBits uuid)
+            low      (.getLeastSignificantBits uuid)
+            new-high (bit-or (bit-and high 0x00000000FFFFFFFF)
+                             (bit-shift-left time 32)) ]
+        (java.util.UUID. new-high low))
+     :cljs
+       (UUID.
+         (str
+               (-> (js/Date.) (.getTime) (/ 1000) (Math/round) (to-hex-string 8))
+           "-" (-> (rand-bits 16) (to-hex-string 4))
+           "-" (-> (rand-bits 16) (bit-and 0x0FFF) (bit-or 0x4000) (to-hex-string 4))
+           "-" (-> (rand-bits 16) (bit-and 0x3FFF) (bit-or 0x8000) (to-hex-string 4))
+           "-" (-> (rand-bits 16) (to-hex-string 4))
+               (-> (rand-bits 16) (to-hex-string 4))
+               (-> (rand-bits 16) (to-hex-string 4))))))

 (defn squuid-time-millis [uuid]
   (-> (subs (.-uuid uuid) 0 8)


bootstrap render on page load

bootstrap render on page load

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


Minor fixes.

Minor fixes.

--- src/cljx/cats/monad/maybe.cljx
+++ src/cljx/cats/monad/maybe.cljx
@@ -46,16 +46,17 @@
       (= v (.-v other))
       false))

+  #+clj
+  (toString [self]
+    (with-out-str (print [v])))
+
   #+cljs
   cljs.core/IEquiv
   #+cljs
   (-equiv [_ other]
     (if (instance? Just other)
       (= v (.-v other))
-      false))
-
-  (toString [self]
-    (with-out-str (print [v]))))
+      false)))

 (deftype Nothing []
   proto/Context
@@ -68,14 +69,15 @@
   (equals [_ other]
     (instance? Nothing other))

+  #+clj
+  (toString [_]
+    (with-out-str (print "")))
+
   #+cljs
   cljs.core/IEquiv
   #+cljs
   (-equiv [_ other]
-    (instance? Nothing other))
-
-  (toString [_]
-    (with-out-str (print ""))))
+    (instance? Nothing other)))

 (defn maybe?
   [v]


refactor geometry node

refactor geometry node

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


Oops, fixing figwheel

Oops, fixing figwheel

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/BravoLT/time-ui.git/'


Parser that can handle variable assignment and blocks.

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

--- src/isla/parser.clj
+++ src/isla/parser.clj
@@ -0,0 +1,123 @@
+(ns isla.parser
+  (:use [clojure.pprint])
+  (:use [isla.lexer])
+  (:require [clojure.string :as str]))
+
+(defn nnode [tag data]
+  {:tag tag :content data})
+
+(declare expression-types atom-types value-types
+         parse matched-nodes is-type pattern-sequence
+         -root -block -expression -atom -assignment
+         -nl -integer -is -string -assignee -value)
+
+(defn parse [code]
+  (-root (lex code)))
+
+(defn matched-nodes [input types] ;; bit round the houses
+  (vec (map (fn [t] (t input)) ;; get nodes for each matching type
+            (filter (fn [t] (not= nil (t input))) ;; get matching types
+                    types))))
+
+(defmulti is-type (fn [matcher token] (class matcher)))
+
+(defmethod is-type clojure.lang.Keyword [symbol token]
+  (= symbol token))
+
+(defmethod is-type java.util.regex.Pattern [re token]
+  (if (keyword? token)
+    false
+    (if (not= nil (re-matches re token))
+      true
+      false)))
+
+
+(defn -root [tokens]
+  (nnode :root [(-block tokens [])]))
+
+(defn -block [tokens collected]
+  (let [{expr :expr left-tokens :left-tokens} (-expression tokens [])]
+    (if (= expr nil)
+      (nnode :block collected) ;; no more exprs, return block
+      (-block left-tokens (conj collected expr))))) ;; no more exprs, return block
+
+;; expressions
+
+(defn -expression [tokens collected]
+  (def expressions (matched-nodes tokens expression-types)) ;; candidates
+  (if (> (count expressions) 0)
+    (let [{expr :expr left-tokens :left-tokens} (first expressions)]
+      {:expr (nnode :expression [expr]) :left-tokens left-tokens}) ;; return expr
+    {:expr nil :left-tokens tokens})) ;; no expr match - return
+
+(defn -assignment [tokens]
+  (if (> (count tokens) 3)
+    (let [nodes (pattern-sequence tokens [-assignee -is -value -nl] [])]
+      (if (= (count nodes) 4)
+        {:expr (nnode :assignment (take 3 nodes)) :left-tokens (nthrest tokens 4)}
+        nil))
+    nil))
+
+(defn pattern-sequence [tokens patterns collected]
+  (if (> (count patterns) 0)
+      (pattern-sequence (rest tokens) (rest patterns)
+                        (conj collected ((first patterns) (first tokens))))
+    collected))
+
+
+
+
+
+
+;; atoms
+
+(defn -atom [token]
+  (def nodes (matched-nodes token atom-types))
+  (if (> (count nodes) 0)
+    (first nodes) ;; return first match
+    (throw (Exception. (str "Could not identify: " token)))))
+
+(defn -nl [token]
+  (if (is-type :nl token)
+    (nnode :nl [token])
+    nil))
+
+(defn -is [token]
+  (if (is-type #"is" token)
+    (nnode :is [:is])
+    nil))
+
+;; values
+
+(defn -value [token]
+  (def nodes (matched-nodes token value-types))
+  (if (> (count nodes) 0)
+    (nnode :value [(first nodes)])
+    nil))
+
+(defn -assignee [token]
+  (if (is-type #"[A-Za-z]+" token)
+    (nnode :assignee [token])
+    nil))
+
+(defn -identifier [token]
+  (if (is-type #"(?!^is$)[A-Za-z]+" token)
+    (nnode :identifier [token])
+    nil))
+
+(defn -integer [token]
+  (if (is-type #"[0-9]+" token)
+    (nnode :integer [(Integer/parseInt token)])
+    nil))
+
+(defn -string [token]
+  (if (is-type #"'[A-Za-z0-9 ]+'" token)
+    (nnode :string [(str/replace token "'" "")])
+    nil))
+
+
+;; types
+
+(def expression-types [-assignment])
+(def atom-types [-nl])
+(def value-types [-string -integer -identifier])


Add remap-symbol pre-cond

Add remap-symbol pre-cond


try another some search

try another some search

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


easing functions

easing functions

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

--- src/bardo/ease.cljs
+++ src/bardo/ease.cljs
@@ -0,0 +1,97 @@
+(ns bardo.ease)
+
+(defn clamp
+  [f]
+  (fn [t]
+    (if (< t 0)
+      0
+      (if (< 1 t)
+        1
+        (f t)))))
+
+(defn reverse
+  [f]
+  (fn [t]
+    (- 1 (f (- 1 t)))))
+
+(defn reflect
+  [f]
+  (fn [t]
+    (* 0.5 (if (< t 0.5)
+             (f (* 2 t))
+             (- 2 (f (- 2 (* 2 t))))))))
+
+(def modes {:in identity
+            :out reverse
+            :in-out reflect
+            :out-in (comp reflect reverse)})
+
+;; Adapted from https://github.com/warrenm/AHEasing and
+;; and https://github.com/mbostock/d3/blob/master/src/interpolate/ease.js
+
+(def PI   (.-PI js/Math))
+(def PI_2 (/ (.-PI js/Math) 2))
+
+(def linear identity)
+
+(defn quad
+  "Modeled after the parabola y = x^2"
+  [t]
+  (* t t))
+
+(defn cubic
+  "Modeled after the cubic y = x^3"
+  [t]
+  (* t t t))
+
+(defn poly
+  [e]
+  (fn [t]
+    (.pow js/Math t e)))
+
+(defn sine
+  "Modeled after quarter-cycle of sine wave"
+  [t]
+  (inc (.sin js/Math (* (dec t) PI_2))))
+
+(defn circle
+  "Modeled after shifted quadrant IV of unit circle"
+  [t]
+  (- 1 (.sqrt js/Math (- 1 (* t t )))))
+
+(defn exp
+  "Modeled after the exponential function y = 2^(10(x - 1))"
+  [t]
+  (if (= t 0)
+    t
+    (.pow js/Math 2 (* 10 (dec t)))))
+
+(defn elastic
+  "Modeled after the damped sine wave y = sin(13PI_2*x)*pow(2, 10 * (x - 1))"
+  [t]
+  (* (.sin js/Math (* 13 PI_2 t))
+     (.pow js/Math 2 (* 10 (dec t)))))
+
+(defn back
+  "Modeled after the overshooting cubic y = x^3-x*sin(x*pi)"
+  [t ]
+  (- (* t t t)
+     (* t (.sin js/Math (* t PI)))))
+
+(defn bounce
+  "Modeled after some fun bouncing stuff"
+  [t]
+  (cond
+    (< t (/ 1 2.75))    (* 7.5625 t t)
+    (< t (/ 2 2.75))    (+ (* 7.5625
+                              (- t (/ 1.5 2.75))
+                              (- t (/ 1.5 2.75)))
+                           0.75)
+    (< t (/ 2.5 2.75))  (+ (* 7.5625
+                              (- t (/ 2.5 2.75))
+                              (- t (/ 2.5 2.75)))
+                           0.9375)
+    :else               (+ (* 7.5625
+                              (- t (/ 2.625 2.75))
+                              (- t (/ 2.625 2.75)))
+                           0.984375)))


cleanup

cleanup

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


kata4: add nrepl dependency for test

kata4: add nrepl dependency for test

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


Modified to check book.edn for changes when building epub

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


Fix for loading local.clj

Fix for loading local.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/dominikzarzecki/meteor-impacts-timelapse.git/'


from-cache -> cached-rf

from-cache -> cached-rf

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


Promise that can be checked if it was delivered. How cool is that?

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

--- src/async/http/client/util.clj
+++ src/async/http/client/util.clj
@@ -0,0 +1,49 @@
+; Copyright 2010 Hubert Iwaniuk
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;   http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+(ns async.http.client.util
+  "Async HTTP Client - Clojure - Utils"
+  {:author "Hubert Iwaniuk"})
+
+(defn promise
+  "Alpha - subject to change.
+  Returns a promise object that can be read with deref/@, and set,
+  once only, with deliver. Calls to deref/@ prior to delivery will
+  block. All subsequent derefs will return the same delivered value
+  without blocking."
+  {:added "1.1"}
+  []
+  (let [d (java.util.concurrent.CountDownLatch. 1)
+        v (atom nil)]
+    ^{:delivered?
+      (fn []
+        (locking d
+          (zero? (.getCount d))))}
+    (reify
+     clojure.lang.IDeref
+      (deref [_] (.await d) @v)
+     clojure.lang.IFn
+      (invoke [this x]
+        (locking d
+          (if (pos? (.getCount d))
+            (do (reset! v x)
+                (.countDown d)
+                this)
+            (throw (IllegalStateException. "Multiple deliver calls to a promise"))))))))
+
+(defn delivered?
+  "Alpha - subject to change.
+  Returns true if promise has been delivered, else false"
+  [p]
+  ((:delivered? (meta p))))


joints should recursively nest

joints should recursively nest


[WM] remove unneeded start-event-handler! fn

HTTP API gateways shouldn't be getting any incoming RabbitMQ messages. They just relay incoming web requests and the responses.

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


Add missing icons related events ns.

Add missing icons related events ns.

error: pathspec 'src/uxbox/main/data/icons.cljs' did not match any file(s) known to git

--- src/uxbox/main/data/icons.cljs
+++ src/uxbox/main/data/icons.cljs
@@ -0,0 +1,328 @@
+;; This Source Code Form is subject to the terms of the Mozilla Public
+;; License, v. 2.0. If a copy of the MPL was not distributed with this
+;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
+;;
+;; Copyright (c) 2015-2016 Andrey Antukh <niwi@niwi.nz>
+;; Copyright (c) 2015-2016 Juan de la Cruz <delacruzgarciajuan@gmail.com>
+
+(ns uxbox.main.data.icons
+  (:require [cuerdas.core :as str]
+            [beicon.core :as rx]
+            [uxbox.util.uuid :as uuid]
+            [uxbox.util.rstore :as rs]
+            [uxbox.util.router :as r]
+            [uxbox.main.state :as st]
+            [uxbox.main.repo :as rp]))
+
+;; --- Initialize
+
+(declare fetch-collections)
+(declare collections-fetched?)
+
+(defrecord Initialize [type id]
+  rs/UpdateEvent
+  (-apply-update [_ state]
+    (let [type (or type :builtin)
+          id (or id (if (= type :builtin) 1 nil))
+          data {:type type :id id :selected #{}}]
+      (-> state
+          (assoc-in [:dashboard :icons] data)
+          (assoc-in [:dashboard :section] :dashboard/icons)))))
+
+  ;; rs/EffectEvent
+  ;; (-apply-effect [_ state]
+  ;;   (when (nil? (:icon-colls-by-id state))
+  ;;     (reset! st/loader true)))
+
+  ;; rs/WatchEvent
+  ;; (-apply-watch [_ state s]
+  ;;   (if (nil? (:icon-colls-by-id state))
+  ;;     (rx/merge
+  ;;      (rx/of (fetch-collections))
+  ;;        (->> (rx/filter collections-fetched? s)
+  ;;             (rx/take 1)
+  ;;             (rx/do #(reset! st/loader false))
+  ;;             (rx/ignore)))
+  ;;     (rx/empty))))
+
+(defn initialize
+  [type id]
+  (Initialize. type id))
+
+;; --- Select a Collection
+
+(defrecord SelectCollection [type id]
+  rs/WatchEvent
+  (-apply-watch [_ state stream]
+    (rx/of (r/navigate :dashboard/icons
+                       {:type type :id id}))))
+
+(defn select-collection
+  ([type]
+   (select-collection type nil))
+  ([type id]
+   {:pre [(keyword? type)]}
+   (SelectCollection. type id)))
+
+;; --- Color Collections Fetched
+
+;; (defrecord CollectionsFetched [items]
+;;   rs/UpdateEvent
+;;   (-apply-update [_ state]
+;;     (reduce (fn [state item]
+;;               (let [id (:id item)
+;;                     item (assoc item :type :own)]
+;;                 (assoc-in state [:icon-colls-by-id id] item)))
+;;             state
+;;             items)))
+
+;; (defn collections-fetched
+;;   [items]
+;;   (CollectionsFetched. items))
+
+;; --- Fetch Color Collections
+
+;; (defrecord FetchCollections []
+;;   rs/WatchEvent
+;;   (-apply-watch [_ state s]
+;;     (->> (rp/req :fetch/icon-collections)
+;;          (rx/map :payload)
+;;          (rx/map collections-fetched))))
+
+;; (defn fetch-collections
+;;   []
+;;   (FetchCollections.))
+
+;; --- Collection Created
+
+;; (defrecord CollectionCreated [item]
+;;   rs/UpdateEvent
+;;   (-apply-update [_ state]
+;;     (let [item (assoc item :type :own)]
+;;       (-> state
+;;           (assoc-in [:icon-colls-by-id (:id item)] item)
+;;           (assoc-in [:dashboard :collection-id] (:id item))
+;;           (assoc-in [:dashboard :collection-type] :own)))))
+
+;; (defn collection-created
+;;   [item]
+;;   (CollectionCreated. item))
+
+;; --- Create Collection
+
+;; (defrecord CreateCollection []
+;;   rs/WatchEvent
+;;   (-apply-watch [_ state s]
+;;     (let [coll {:name "Unnamed collection"
+;;                 :id (uuid/random)}]
+;;       (->> (rp/req :create/icon-collection coll)
+;;            (rx/map :payload)
+;;            (rx/map collection-created)))))
+
+;; (defn create-collection
+;;   []
+;;   (CreateCollection.))
+
+;; (defn collections-fetched?
+;;   [v]
+;;   (instance? CollectionsFetched v))
+
+;; --- Collection Updated
+
+;; (defrecord CollectionUpdated [item]
+;;   rs/UpdateEvent
+;;   (-apply-update [_ state]
+;;     (update-in state [:icon-colls-by-id (:id item)]  merge item)))
+
+;; (defn collection-updated
+;;   [item]
+;;   (CollectionUpdated. item))
+
+;; --- Update Collection
+
+;; (defrecord UpdateCollection [id]
+;;   rs/WatchEvent
+;;   (-apply-watch [_ state s]
+;;     (let [item (get-in state [:icon-colls-by-id id])]
+;;       (->> (rp/req :update/icon-collection item)
+;;            (rx/map :payload)
+;;            (rx/map collection-updated)))))
+
+;; (defn update-collection
+;;   [id]
+;;   (UpdateCollection. id))
+
+;; --- Rename Collection
+
+;; (defrecord RenameCollection [id name]
+;;   rs/UpdateEvent
+;;   (-apply-update [_ state]
+;;     (assoc-in state [:icon-colls-by-id id :name] name))
+
+;;   rs/WatchEvent
+;;   (-apply-watch [_ state s]
+;;     (rx/of (update-collection id))))
+
+;; (defn rename-collection
+;;   [item name]
+;;   (RenameCollection. item name))
+
+;; --- Delete Collection
+
+;; (defrecord DeleteCollection [id]
+;;   rs/UpdateEvent
+;;   (-apply-update [_ state]
+;;     (update state :icon-colls-by-id dissoc id))
+
+;;   rs/WatchEvent
+;;   (-apply-watch [_ state s]
+;;     (->> (rp/req :delete/icon-collection id)
+;;          (rx/ignore))))
+
+;; (defn delete-collection
+;;   [id]
+;;   (DeleteCollection. id))
+
+;; --- Icon Created
+
+;; (defrecord IconCreated [item]
+;;   rs/UpdateEvent
+;;   (-apply-update [_ state]
+;;     (update-in state [:icon-colls-by-id (:collection item) :icons]
+;;                #(conj % item))))
+
+;; (defn icon-created
+;;   [item]
+;;   (IconCreated. item))
+
+;; --- Create Icon
+
+;; (defrecord CreateIcons [coll-id files]
+;;   rs/WatchEvent
+;;   (-apply-watch [_ state s]
+;;     (let [files-to-array (fn [js-col]
+;;                            (-> (clj->js [])
+;;                                (.-slice)
+;;                                (.call js-col)
+;;                                (js->clj)))
+;;           icons-data (map (fn [file] {:coll coll-id
+;;                                        :id (uuid/random)
+;;                                        :file file}) (files-to-array files))]
+;;       (->> (rx/from-coll icons-data)
+;;            (rx/flat-map #(rp/req :create/icon %))
+;;            (rx/map :payload)
+;;            (rx/map icon-created)))))
+
+;; (defn create-icons
+;;   [coll-id files]
+;;   (CreateIcons. coll-id files))
+
+;; --- Icons Fetched
+
+;; (defrecord IconsFetched [coll-id items]
+;;   rs/UpdateEvent
+;;   (-apply-update [_ state]
+;;     (assoc-in state [:icon-colls-by-id coll-id :icons] (set items))))
+
+;; (defn icons-fetched
+;;   [coll-id items]
+;;   (IconsFetched. coll-id items))
+
+;; --- Load Icons
+
+;; (defrecord FetchIcons [coll-id]
+;;   rs/WatchEvent
+;;   (-apply-watch [_ state s]
+;;     (let [params {:coll coll-id}]
+;;       (->> (rp/req :fetch/icons params)
+;;            (rx/map :payload)
+;;            (rx/map #(icons-fetched coll-id %))))))
+
+;; (defn fetch-icons
+;;   [coll-id]
+;;   (FetchIcons. coll-id))
+
+;; --- Delete Icons
+
+;; (defrecord DeleteIcon [coll-id icon]
+;;   rs/UpdateEvent
+;;   (-apply-update [_ state]
+;;     (update-in state [:icon-colls-by-id coll-id :icons] disj icon))
+
+;;   rs/WatchEvent
+;;   (-apply-watch [_ state s]
+;;     (->> (rp/req :delete/icon (:id icon))
+;;          (rx/ignore))))
+
+;; (defn delete-icon
+;;   [coll-id icon]
+;;   (DeleteIcon. coll-id icon))
+
+;; --- Remove Icon
+
+;; (defrecord RemoveIcons [id icons]
+;;   rs/UpdateEvent
+;;   (-apply-update [_ state]
+;;     #_(update-in state [:icon-colls-by-id id :data]
+;;                #(set/difference % icons)))
+
+;;   rs/WatchEvent
+;;   (-apply-watch [_ state s]
+;;     (rx/of (update-collection id))))
+
+;; (defn remove-icons
+;;   "Remove icon in a collection."
+;;   [id icons]
+;;   (RemoveIcons. id icons))
+
+
+;; --- Select icon
+
+(defrecord SelectIcon [id]
+  rs/UpdateEvent
+  (-apply-update [_ state]
+    (update-in state [:dashboard :selected] conj id)))
+
+(defrecord DeselectIcon [id]
+  rs/UpdateEvent
+  (-apply-update [_ state]
+    (update-in state [:dashboard :selected] disj id)))
+
+(defrecord ToggleIconSelection [id]
+  rs/WatchEvent
+  (-apply-watch [_ state stream]
+    (let [selected (get-in state [:dashboard :selected])]
+      (rx/of
+       (if (selected id)
+         (DeselectIcon. id)
+         (SelectIcon. id))))))
+
+(defn toggle-icon-selection
+  [id]
+  (ToggleIconSelection. id))
+
+;; --- Delete Selected
+
+;; (defrecord DeleteSelected []
+;;   rs/WatchEvent
+;;   (-apply-watch [_ state stream]
+;;     (let [{:keys [id selected]} (get state :dashboard)]
+;;       (rx/of (remove-icons id selected)
+;;              #(assoc-in % [:dashboard :selected] #{})))))
+
+;; (defn delete-selected
+;;   []
+;;   (DeleteSelected.))
+
+;; --- Update Opts (Filtering & Ordering)
+
+(defrecord UpdateOpts [order filter]
+  rs/UpdateEvent
+  (-apply-update [_ state]
+    (update-in state [:dashboard :icons] merge
+               (when order {:order order})
+               (when filter {:filter filter}))))
+
+(defn update-opts
+  [& {:keys [order filter] :as opts}]
+  (UpdateOpts. order filter))


bind team fields

bind team fields

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


Add aeron health check

Add aeron health check

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

--- src/onyx/peer_query/aeron.clj
+++ src/onyx/peer_query/aeron.clj
@@ -0,0 +1,19 @@
+(ns onyx.peer-query.aeron
+  (:import [io.aeron CommonContext]
+           [java.util.function Consumer]))
+
+(defn media-driver-health []
+  (let [common-context (CommonContext.)
+        log-output (atom [])]
+    (try
+     (let [driver-timout-ms (.driverTimeoutMs common-context)
+           active? (.isDriverActive common-context
+                                    driver-timout-ms
+                                    (reify Consumer
+                                      (accept [this log]
+                                        (swap! log-output conj log))))]
+       {:active active?
+        :driver-timeout-ms driver-timout-ms
+        :log (clojure.string/join "\n" @log-output)})
+     (finally
+      (.close common-context)))))


Fix typo

Fix typo

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


system component refactored

system component refactored

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


add lein profiles.clj

add lein profiles.clj

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

--- tag-clojure/lein/profiles.clj
+++ tag-clojure/lein/profiles.clj
@@ -0,0 +1,15 @@
+{:user {:plugins [[cider/cider-nrepl "0.9.1"]
+                  [lein-exec "0.3.4"]
+                  [lein-pprint "1.1.1"]
+                  [lein-ancient "0.6.0-SNAPSHOT"]
+                  [lein-annotations "0.1.0"]
+                  [lein-autoreload "0.1.0"]
+                  [lein-bikeshed "0.1.7"]
+                  [lein-cprint "1.0.0"]
+                  [lein-ns-dep-graph "0.1.0-SNAPSHOT"]
+                  [lein-vanity "0.2.0"]
+                  [lein-ring "0.8.11"]
+                  [lein-cloudbees "1.0.5"]
+                  [org.clojure/tools.trace "0.7.8"]]
+        :dependencies [[alembic "0.3.2"]
+                       [org.clojure/tools.nrepl "0.2.7"]]}}


test url

test url

fatal: unable to access 'https://github.com/loganmhb/clj-http.git/': The requested URL returned error: 403


Messed it up a bit more.

Messed it up a bit more.

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


add missing file

add missing file

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

--- src/cake/deps.clj
+++ src/cake/deps.clj
@@ -0,0 +1,76 @@
+(ns cake.deps
+  (:use cake uncle.core
+        [cake.file :only [with-root file-exists? rmdir mv file]]
+        [cake.utils :only [cake-exec]]
+        [bake.core :only [log os-name os-arch]]
+        [clojure.java.shell :only [sh]]
+        [clojure.string :only [split]]
+        [useful :only [map-to]])
+  (:require depot.maven
+            [depot.deps :as depot])
+  (:import [org.apache.tools.ant.taskdefs Copy Delete]))
+
+(def default-repos
+  [["clojure"           "http://build.clojure.org/releases"]
+   ["clojure-snapshots" "http://build.clojure.org/snapshots"]
+   ["clojars"           "http://clojars.org/repo"]
+   ["maven"             "http://repo1.maven.org/maven2"]])
+
+(def dep-types [:dependencies :dev-dependencies :ext-dependencies])
+
+(def dep-dest
+  {:dependencies     "lib"
+   :dev-dependencies "lib/dev"
+   :ext-dependencies "lib/ext"})
+
+(def dep-jars (atom nil))
+(def ^{:dynamic true} *overwrite* nil)
+
+(defn subproject-path [dep]
+  (when *config*
+    (or (get *config* (str "subproject." (namespace dep) "." (name dep)))
+        (get *config* (str "subproject." (name dep))))))
+
+(defn install-subprojects! []
+  (doseq [type dep-types
+          dep  (keys (*project* type))]
+    (when-let [path (subproject-path dep)]
+      (with-root path
+        (cake-exec "install")))))
+
+(defn extract-native! [deps]
+  (doseq [jars (vals deps)
+          jar  jars]
+    (ant Copy {:todir (file "lib" "native") :flatten true}
+      (add-zipfileset {:src jar :includes (format "native/%s/%s/*" (os-name) (os-arch))}))
+    (ant Copy {:todir (file "lib" "native") :flatten true}
+      (add-zipfileset {:src jar :includes "lib/*.jar" }))))
+
+(defn fetch-deps [type]
+  (binding [depot/*repositories* default-repos
+            depot/*exclusions*   (when (= :dev-dependencies type)
+                                   '[org.clojure/clojure org.clojure/clojure-contrib])]
+    (depot/fetch-deps *project* type)))
+
+(defn deps [type]
+  (get @dep-jars type))
+
+(defn copy-deps! [deps]
+  (when (and (:copy-deps *project*)
+             (or *overwrite* (not (file-exists? "lib"))))
+    (doseq [[type jars] deps :when jars]
+      (ant Copy {:todir (file "build" (dep-dest type)) :flatten true}
+        (.addFileset (:fileset (meta jars)))))
+    (rmdir "lib")
+    (mv (file "build" "lib") "lib")))
+
+(defn fetch-deps! []
+  (install-subprojects!)
+  (let [deps (map-to fetch-deps dep-types)]
+    (copy-deps! deps)
+    (extract-native! deps)
+    (reset! dep-jars deps)))
+
+(defn clear-deps! []
+  (doseq [type dep-types]
+    (depot/clear-deps *project* type)))


Added training for system and user dictionaries


Comment

Comment

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


plugin type hints

plugin type hints

--- plugin/src/leiningen/figwheel.clj
+++ plugin/src/leiningen/figwheel.clj
@@ -172,9 +172,9 @@

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

 (defn clean-on-dependency-change [{:keys [target-path dependencies] :as project}]
@@ -305,7 +305,7 @@
 (defn command-like? [command]
   (and
    (string? command)
-   (.startsWith command ":")))
+   (.startsWith ^String command ":")))

 (def command? (every-pred command-like? known-commands))


warn instead of error log.

warn instead of error log.

--- test/metabase/test_utils.clj
+++ test/metabase/test_utils.clj
@@ -43,7 +43,7 @@
    (try (ring/run-jetty core/app {:port 3000
                                   :join? false}) ; detach the thread
         (catch java.net.BindException e          ; assume server is already running if port's already bound
-          (log/error "ALREADY RUNNING!")))))       ; e.g. if someone is running `lein ring server` locally. Tests should still work normally.
+          (log/warn "ALREADY RUNNING!")))))       ; e.g. if someone is running `lein ring server` locally. Tests should still work normally.

 (defn start-jetty
   "Start the Jetty web server."


Add basic test

Add basic test

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

--- test/powderkeg/core_test.clj
+++ test/powderkeg/core_test.clj
@@ -0,0 +1,14 @@
+(ns powderkeg.core-test
+  (:require [powderkeg.core :as keg]
+            [clojure.test :refer :all]))
+
+(defn with-local [f]
+  (keg/connect! "local[2]")
+  (f)
+  (keg/disconnect!))
+
+(use-fixtures :once with-local)
+
+(deftest rdd
+  (is (into [] (keg/rdd (range 10)))
+      (into [] (range 10))))


Create more-clojure.clj

Create more-clojure.clj

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

--- code/more-clojure.clj
+++ code/more-clojure.clj
@@ -0,0 +1,19 @@
+;; generate a random integer up to 10
+(def my-num (rand-int 10))
+
+;; create a list of the number 10, 5 times
+(def tens (repeat 5 10))
+
+;; create a list of 5 random integers up to 10
+(def my-randoms (map rand-int (repeat 5 10)))
+
+;; get the sum of a list of 5 random integers up to 10
+(def sum (apply + (map rand-int (repeat 5 10))))
+
+;; write a function to return the sum of a list of
+;; $length random integers up to $limit
+(defn rand-sum [length limit]
+  (apply + (map rand-int (repeat length limit))))
+
+;; use the function
+(def another-sum (rand-sum 5 10))


Create model.migration with roles migration.

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

--- src/cadence/model/migration.clj
+++ src/cadence/model/migration.clj
@@ -0,0 +1,51 @@
+(ns cadence.model.migration
+  (:require (cadence [config :refer [storage]]
+                     [model :as model])
+            [ragtime.core :as rag]
+            (monger [core :as mo]
+                    [collection :as mc]
+                    [operators :refer :all])
+            [monger.ragtime :as monrag])
+  (:import (org.bson.types ObjectId)))
+
+
+;; If not already connected to a database make a connection
+(when-not (bound? #'mo/*mongodb-database*)
+  (model/connect storage))
+
+(def migrations (atom []))
+
+(defn migration [id up down]
+  {:id (ObjectId. id)
+   :up (fn [db] (mo/with-db db (eval up)))
+   :down (fn [db] (mo/with-db db (eval down)))})
+
+(defmacro add-migrations
+  "Take in an arbiraty number of migrations where each is a syntax quoted form
+  with three root elements. Apply the migration function to each of these
+  forms. Each form should look something like:
+
+       `(\"somemongoobjectidhash\"
+           (up form)
+           (down form))
+  "
+  [& more-migrations]
+  `(swap! migrations
+          concat
+          (map (partial apply migration)
+               [~@more-migrations])))
+
+(defn str-id
+  "Helper function for generating an id when adding migrations."
+  [] (str (ObjectId.)))
+
+;; Actually defined some migrations.
+(add-migrations
+  `("5108749844ae8febda9c2ed4"
+      (mc/update "users" {} {$set {:roles [:user]}} :multi true)
+      (mc/update "users" {} {$unset {:roles ""}} :multi true)))
+
+(defn run-migrations
+  "Run defined migrations."
+  ([db] (rag/migrate-all db @migrations))
+  ([] (rag/migrate-all mo/*mongodb-database* @migrations)))


Pribatu egin

Pribatu egin

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


Fix file name pattern in TimeBasedRollingPolicy

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


streams/rate: document expiry better

streams/rate: document expiry better

--- src/riemann/streams.clj
+++ src/riemann/streams.clj
@@ -777,7 +777,7 @@
 (defn rate
   "Take the sum of every event's metric over interval seconds and divide by the
   interval size. Emits one event every interval seconds. Starts as soon as an
-  event is received, stops when an expired event arrives. Uses the most
+  event is received, stops when the most recent event expires. Uses the most
   recently received event with a metric as a template. Event ttls decrease
   constantly if no new events arrive."
   [interval & children]


Hainbat erantzunak ez errepikatu

Hainbat erantzunak ez errepikatu


TWHD is apparently just a bunch of ones

TWHD is apparently just a bunch of ones

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


destructing with let, solutions 4clojure link

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


Update to reflect company rename from Spark to Particle

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


Check in test-wrapper

Check in test-wrapper

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

--- test/discuss/tests.cljs
+++ test/discuss/tests.cljs
@@ -0,0 +1,9 @@
+(ns discuss.tests
+  (:require [cljs.test :refer-macros [deftest is run-all-tests]]
+            [discuss.auth-test]
+            [discuss.clipboard-test]))
+
+(enable-console-print!)
+
+(defn ^:export run []
+  (run-all-tests #"discuss.*-test"))


Add unit tests for `braid.lib.s3`

Add unit tests for `braid.lib.s3`

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


test fix

test fix

--- src/metabase/util/password.clj
+++ src/metabase/util/password.clj
@@ -1,32 +1,27 @@
 (ns metabase.util.password
   (:require [metabase.config :as config]))
+

 (defn- count-occurrences
   "Takes in a Character predicate function which is applied to all characters in the supplied string and uses
    map/reduce to count the number of characters which return `true` for the given predicate function."
-  [f ^String s]
+  [f s]
   {:pre [(fn? f)
          (string? s)]}
-  (reduce + (map #(if (f %) 1 0) s)))
-
-(def ^:private ^:const complexity->min-counts
-  {:weak   {:lower 1, :upper 1, :digit 1, :special 0}
-   :normal {:lower 1, :upper 1, :digit 1, :special 1}
-   :strong {:lower 2, :upper 1, :digit 2, :special 1}})
-
-(def ^:private ^:const char-type->pred-fn
-  {:lower   #(Character/isLowerCase ^java.lang.Character %)
-   :upper   #(Character/isUpperCase ^java.lang.Character %)
-   :digit   #(Character/isDigit ^java.lang.Character %)
-   :special #(not (Character/isLetterOrDigit ^java.lang.Character %))})
+  (reduce + (map #(if (true? (f %)) 1 0) s)))

 (defn is-complex?
   "Check if a given password meets complexity standards for the application."
-  [^String password]
+  [password]
   {:pre [(string? password)]}
-  (when (>= (count password) (config/config-int :mb-password-length))
-    (->> (complexity->min-counts (config/config-kw :mb-password-complexity))
-         (map (fn [[char-type min-count]]
-                (>= (count-occurrences (char-type->pred-fn char-type) password)
-                    min-count)))
-         (reduce #(and %1 %2)))))
+  (let [complexity (config/config-kw :mb-password-complexity)
+        length     (config/config-int :mb-password-length)
+        lowers     (count-occurrences #(Character/isLowerCase ^Character %) password)
+        uppers     (count-occurrences #(Character/isUpperCase ^Character %) password)
+        digits     (count-occurrences #(Character/isDigit ^Character %) password)
+        specials   (count-occurrences #(not (Character/isLetterOrDigit ^Character %)) password)]
+    (if-not (>= (count password) length) false
+      (case complexity
+        :weak   (and (> lowers 0) (> digits 0) (> uppers 0))                    ; weak = 1 lower, 1 digit, 1 uppercase
+        :normal (and (> lowers 0) (> digits 0) (> uppers 0) (> specials 0))     ; normal = 1 lower, 1 digit, 1 uppercase, 1 special
+        :strong (and (> lowers 1) (> digits 0) (> uppers 1) (> specials 0)))))) ; strong = 2 lower, 1 digit, 2 uppercase, 1 special


a lot of config refactoring

a lot of config refactoring

--- sidecar/src/figwheel_sidecar/config.clj
+++ sidecar/src/figwheel_sidecar/config.clj
@@ -11,46 +11,67 @@
   (let [f (io/file fpath)]
     (when-let [dir (.getParentFile f)] (.mkdirs dir))))

-(defn get-build-options
-  ([build]
+(defn get-build-options [build]
    (or (:build-options build) (:compiler build) {}))
-  ([build key]
-   (get (get-build-options build) key)))
-
-(defn ensure-output-dirs* [{:keys [build-options compiler]}]
-  (let [{:keys [output-to]} (or build-options compiler)]
+
+(defn optimizations-none?
+  "Given a map of compiler options returns true if a build will be
+  compiled in :optimizations :none mode"
+  [{:keys [optimizations]}]
+  (or (nil? optimizations) (= optimizations :none)))
+
+;; TODO compiler probably handles this now
+(defn ensure-output-dirs!
+  "Given a build config ensures the existence of the output directories."
+  [build]
+  (let [{:keys [output-to]} (get-build-options build)]
     (when output-to
-      (mkdirs output-to))))
-
-(defn optimizations-none?
-  "returns true if a build has :optimizations set to :none"
-  [build]
-  (let [opt (get-build-options build :optimizations)]
-    (or (nil? opt) (= :none opt))))
-
-;; checking to see if output dir is in right directory
-(defn norm-path
-  "Normalize paths to a forward slash separator to fix windows paths"
-  [p] (string/replace p  "\\" "/"))
-
-(defn relativize-resource-paths
-  "Relativize to the local root just in case we have an absolute path"
-  [resource-paths]
-  (mapv #(string/replace-first (norm-path (.getCanonicalPath (io/file %)))
-                               (str (norm-path (.getCanonicalPath (io/file ".")))
-                                    "/") "") resource-paths))
-
-(defn make-serve-from-display [{:keys [http-server-root resource-paths] :as opts}]
-  (let [paths (relativize-resource-paths resource-paths)]
-    (str "(" (string/join "|" paths) ")/" http-server-root)))
-
-(defn output-dir-in-resources-root?
-  "Check if the build output directory is in or below any of the configured resources directories."
-  [{:keys [output-dir] :as build-options}
-   {:keys [resource-paths http-server-root] :as opts}]
-  (and output-dir
-       (first (filter (fn [x] (.startsWith output-dir (str x "/" http-server-root)))
-                      (relativize-resource-paths resource-paths)))))
+      (mkdirs output-to))
+    build))
+
+(defn no-seqs
+  "Given a walkable Clojure data structure turns the seqs into
+  vectors. This is mainly used to help get build configurations across
+  the serialization boundary from the lein plugin to the subprocess."
+  [b]
+  (walk/postwalk #(if (seq? %) (vec %) %) b))
+
+;; fixing up the :figwheel client side options
+
+(defn fix-symbol-vals
+  "Given a map found make all symbol values into strings."
+  [mappish]
+  (zipmap (keys mappish)
+          (map #(if (symbol? %) (name %) %) (vals mappish))))
+
+(defn append-build-id
+  "Given a build config forward the build :id to the figwheel client config as a :build-id"
+  [figwheel build-id]
+  (if build-id
+    (assoc figwheel :build-id build-id)
+    figwheel))
+
+(defn forward-devcard-option
+  "Given a build-config has a [:figwheel :devcards] config it make
+  sure that the :build-options has :devcards set to true"
+  [{:keys [figwheel] :as build}]
+  (if (and figwheel (:devcards figwheel))
+    (assoc-in build [:build-options :devcards] true)
+    build))
+
+(defn prep-build-for-figwheel-client
+  "Given a build config that has a :figwheel config in it "
+  [{:keys [id figwheel] :as build}]
+  (if figwheel
+    (assoc build :figwheel
+           (-> (if (map? figwheel) figwheel {})
+               (append-build-id id)
+               fix-symbol-vals))
+    build))
+
+(defn figwheel-build? [{:keys [build-options] :as build}]
+  (and (optimizations-none? build-options)
+       (:figwheel build)))

 (defn map-to-vec-builds
   "Cljsbuild allows a builds to be specified as maps. We acommodate that with this function
@@ -129,13 +150,10 @@
                   module-map))
     module-map))

-(defn opt-none? [{:keys [optimizations]}]
-  (or (nil? optimizations) (= optimizations :none)))
-
-;; TODO this is a hack need to check all the places that I'm checking for
+;; TODO this is a hack! need to check all the places that I'm checking for
 ;; :optimizations :none and check for nil? or :none
 (defn default-optimizations-to-none [build-options]
-  (if (opt-none? build-options)
+  (if (optimizations-none? build-options)
     (assoc build-options :optimizations :none)
     build-options))

@@ -170,74 +188,33 @@
     (apply-to-key namify-module-entries :modules)
     (apply-to-key name :main)))

-(defn ensure-id [opts]
-  (if (nil? (:id opts))
-    (assoc opts :id (name (gensym "build_needs_id_")))
-    (assoc opts :id (name (:id opts)))))
-
 (defn move-compiler-to-build-options [build]
-  (if (and (not (:build-options build))
-           (:compiler build))
-    (-> build
-      (assoc :build-options (:compiler build))
-      (dissoc :compiler))
-    build))
-
-(defn fix-build [build]
   (-> build
-    ensure-id
-    move-compiler-to-build-options
-    (update-in [:build-options] fix-build-options)))
-
-(defn fix-builds [builds]
-  (mapv fix-build builds))
-
-(defn no-seqs [b]
-  (walk/postwalk #(if (seq? %) (vec %) %) b))
-
-(defn ensure-output-dirs [builds]
-  (mapv ensure-output-dirs* builds)
-  builds)
-
-(defn figwheel-client-options [{:keys [figwheel]}]
-  (if figwheel
-    (if-not (map? figwheel) {} figwheel)
-    {}))
-
-(comment
-  (figwheel-client-options {:figwheel {:hey 1}})
-
-  (figwheel-client-options {:figwheel true})
-
-  )
-
-(defn fix-figwheel-symbol-keys [figwheel]
-  (into {} (map (fn [[k v]] [k (if (symbol? v) (name v) v)]) figwheel)))
-
-(defn append-build-id [figwheel build]
-  (if (:id build)
-    (assoc figwheel :build-id (:id build))
-    figwheel))
-
-(defn forward-devcard-option [{:keys [figwheel] :as build}]
-  (if (and figwheel (:devcards figwheel))
-    (assoc-in build [:build-options :devcards] true)
-    build))
-
-(defn prep-build-for-figwheel-client [{:keys [figwheel] :as build}]
-  (if figwheel
-    (assoc build :figwheel
-           (-> (figwheel-client-options build)
-             (append-build-id build)
-             (fix-figwheel-symbol-keys)))
-    build))
-
-(defn prep-builds-for-figwheel-client [builds]
-  (mapv (comp prep-build-for-figwheel-client forward-devcard-option) builds))
-
-(defn figwheel-build? [build]
-  (and (= (get-in build [:build-options :optimizations]) :none)
-       (:figwheel build)))
+      (assoc :build-options (get-build-options build))
+      (dissoc :compiler)))
+
+(defn ensure-id
+  "Converts given build :id to a string and if no :id exists generate and id."
+  [opts]
+  (assoc opts
+         :id (name (or
+                    (:id opts)
+                    (gensym "build_needs_id_")))))
+
+(defn prep-build [build]
+  (-> build
+      (dissoc :warning-handlers)
+      ensure-id
+      move-compiler-to-build-options
+      (update-in [:build-options] fix-build-options)
+      prep-build-for-figwheel-client
+      forward-devcard-option
+      ensure-output-dirs!
+      no-seqs
+      (vary-meta assoc ::prepped true)))
+
+(defn prepped? [build]
+  (-> build meta ::prepped))

 (defn update-figwheel-connect-options [figwheel-server build]
   (if (figwheel-build? build)
@@ -275,11 +252,7 @@
 (defn prep-builds [builds]
   (-> builds
       map-to-vec-builds
-      (->> (mapv #(dissoc % :warning-handlers)))
-      fix-builds
-      prep-builds-for-figwheel-client
-      ensure-output-dirs
-      no-seqs))
+      (->> (mapv prep-build))))

 (defn prep-options
   "Normalize various configuration input."


Utility library code (JSON parsing).

Utility library code (JSON parsing).

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

--- src/task_tracker/app/util.cljs
+++ src/task_tracker/app/util.cljs
@@ -0,0 +1,21 @@
+(ns task-tracker.app.util
+  (:require [cognitect.transit :as transit])
+  (:import goog.History))
+
+(def ^:private r (transit/reader :json))
+(def ^:private w (transit/writer :json))
+
+(defn parse-json
+  [raw-json]
+  (transit/read r raw-json))
+
+(defn write-json
+  [clj-data]
+  (transit/write w clj-data))
+
+(defn parse-int
+  [int-str]
+  (when (string? int-str)
+    (.parseInt js/window int-str)))
+
+


moving to records

moving to records

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


java interop

java interop

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

--- test/clj/fractals/css_test.clj
+++ test/clj/fractals/css_test.clj
@@ -0,0 +1,19 @@
+(ns fractals.css-test
+  (:require [clojure.test :refer [deftest is]])
+  (:import [java.io StringReader]
+           [com.steadystate.css.parser CSSOMParser SACParserCSS3]
+           [com.steadystate.css.dom CSSStyleSheetImpl]
+           [com.steadystate.css.format CSSFormat]
+           [org.w3c.css.sac InputSource]
+           ))
+
+(deftest cssparse
+  (let [input-source (InputSource. (StringReader. "h1 { background: #ffcc44; }"))
+        parser (CSSOMParser. (SACParserCSS3. ))]
+    (is (= "h1 { background: #ffcc44 }"
+           (.getCssText (.parseStyleSheet parser input-source nil nil)
+                        (.setRgbAsHex (CSSFormat. ) true))))
+    (= (first (for [meth  (.getMethods CSSOMParser)
+                    :let [name2 (.getName meth)]
+                    :when (re-find #"parse" name2)]
+                name2)) "parseStyleSheet")))


(date)

(date)

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


First attempt at a leftist heap implementation in Clojure.

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


Separated canvas file into geometry & canvas

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

--- src/cljs/drawer/geometry.cljs
+++ src/cljs/drawer/geometry.cljs
@@ -0,0 +1,146 @@
+(ns drawer.geometry
+  (:require [drawer.math :as math]))
+
+(defn default-obj-connections
+  "Returns the default connections
+  of an object with given count of points.
+  e.g {0 [1], 1 [2], 2 [3], ... (dec n) [0]}"
+  [n]
+  (condp = n
+    0 {}
+    (let [nums (take (dec n) math/positive-numbers)]
+      (reduce (fn [m k] (assoc m k [(inc k)])) {(dec n) [0]} nums))))
+
+(defn- obj-center
+  "Find the center of the object
+  from the average of its points."
+  [{:keys [points]}]
+  (->> (apply map vector points)
+       (mapv #(reduce + %))
+       (mapv #(/ % (count points)))))
+
+;; TODO: This is a stub
+(defn- P4->P3
+  "Projects a 4D point onto
+  a 2D plain."
+  [point canvas-info]
+  (pop point))
+
+;; TODO: This is a stub
+(defn- P3->P2
+  "Projects a 3D point onto
+  the 2D plain."
+  [[px py pz] {:keys [h-dist v-dist]}]
+  (if (zero? pz)
+    [px py]
+    [(/ (* px h-dist) pz)
+     (/ (* py v-dist) pz)]))
+
+(defn project-point
+  "Projects a 4D point onto the 2d plain."
+  [point canvas-info]
+  (-> point
+      (P4->P3 canvas-info)
+      (P3->P2 canvas-info)))
+
+(defn project-obj
+  "Projects an object (4D) onto the screen (2D).
+  Doesn't draw the object, just updates its 2D points
+  [obj :points2d]"
+  [obj camera]
+  (assoc obj :points2d
+         (mapv #(project-point %1 camera)
+               (obj :points))))
+
+(defn- get-object-part
+  "Parses a structure like
+  {:name [obj-name] :part point-indices}
+  into an object of the structure
+  {:points points-of-obj}.
+  Used for converting relationships between
+  objects (:rot-center -> other-object) into
+  absolute data (:rot-center -> point-coords)."
+  [{:keys [name part]} objs]
+  (let [ctr-obj (objs name)]
+    {:points (cond
+              (nil? ctr-obj) [[0 0 0 0]]
+              (= :center part) [(obj-center ctr-obj)]
+              (vector? part) (mapv (ctr-obj :points) part))}))
+
+(defn- get-rot-center
+  "Returns an object with fields [:points, :connections]
+  that serves as rotation center for other objects.
+  If the canvas-info [state :canvas] is passed as an
+  argument, also projects the result [:points2d], so it
+  can be drawn on the canvas.
+  Depends on the value of [obj :rotation :center].
+  See create-rot-center for information about its
+  structure."
+  ([obj objs]
+     (let [center-info (get-in obj [:rotation :center])
+           center-value (center-info :value)
+           center (condp = (center-info :type)
+                    :points center-value
+                    :object (get-in objs [center-value :points])
+                    :center [(obj-center obj)]
+                    :object-part ((get-object-part center-value objs) :points)
+                    [(obj-center obj)])
+           center (if (nil? center) [(obj-center obj)] center)] ;; default
+       {:points center
+        :connections (default-obj-connections (count center))}))
+  ([obj objs camera]
+     (project-obj (get-rot-center obj objs) camera)))
+
+;; TODO: Only rotates 2D points!
+(defn- rotate-point
+  [point center deg]
+  (let [dxs (math/vector-from-to center point)
+        angle (math/deg-to-rad deg)
+        nx (- (* (dxs 0) (math/cos angle)) (* (dxs 1) (math/sin angle)))
+        ny (+ (* (dxs 0) (math/sin angle)) (* (dxs 1) (math/cos angle)))]
+    [(+ nx (center 0)) (+ ny (center 1)) (point 2) (point 3)]))
+
+;; TODO: This is just a test-implementation
+(defn- rotate
+  "Rotates an object around
+  another one."
+  [obj objs]
+  (let [center (((get-rot-center obj objs) :points) 0)
+        npoints (mapv #(rotate-point % center ((get-in obj [:rotation :speed]) 0))
+                      (obj :points))]
+    (assoc-in obj [:points] npoints)))
+
+;; TODO: Stub
+(defn- mirror
+  "Mirrors an object."
+  [obj objs]
+  obj)
+
+(defn create-rot-center
+  "Creates an object center with a type
+  of either :object, :canvas-object, :object-part or :center.
+  The value:
+  :points => [[100 40 20 0] [30 50 90 10] ..] ; points
+  :object => 'Object-Name-On-Canvas'
+  :object-part => {:name 'Object-Name-On-Canvas'
+  :part [0 2 5 3 ..] ; point-indices from object with :name
+  or :part :center ; rot. around center of object w/ :name
+  :center => [doesn't matter] ; rotate around center of object"
+  [type value]
+  {:type type
+   :value value})
+
+(defn create-object
+  "Creates a canvas object, which
+  can be drawn on the canvas with draw-object.
+  Contains additional information about the
+  transformations applied to it every frame."
+  ([camera points connections]
+     (create-object camera points (create-rot-center :center nil) [0 0 0 0]))
+  ([camera points connections center speed]
+     {:points points
+      :connections connections
+      :points2d (mapv #(project-point %1 camera) points)
+      :rotation {:active (not (every? zero? speed))
+                 :speed speed
+                 :center center}}))


pattern matching complete

pattern matching complete

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


backport firefox proxy support

backport firefox proxy support

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/zh217/ggcc-lite.git/'


[TH] set authority level to state when it's district (DC)

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


Sort posts in reverse chronological order

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