THe future is now.

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


don't seed customer if it already exists

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


Use dev.ovation.io as default endpoint

Use dev.ovation.io as default endpoint

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


linty fix

linty fix

--- src/metabase/driver/mongo/util.clj
+++ src/metabase/driver/mongo/util.clj
@@ -28,6 +28,13 @@
       (.connectTimeout connection-timeout-ms)
       (.serverSelectionTimeout connection-timeout-ms)
       (.build)))
+
+;; The arglists metadata for mg/connect are actually *WRONG* -- the function additionally supports a 3-arg airity where you can pass
+;; options and credentials, as we'd like to do. We need to go in and alter the metadata of this function ourselves because otherwise
+;; the Eastwood linter will complain that we're calling the function with the wrong airity :sad: :/
+(alter-meta! #'mg/connect assoc :arglists '([{:keys [host port uri]}]
+                                            [server-address options]
+                                            [server-address options credentials]))

 (defn -with-mongo-connection
   "Run F with a new connection (bound to `*mongo-connection*`) to DATABASE.


Fix indentation of with-monad macro.

Fix indentation of with-monad macro.

--- src/cats/core.cljc
+++ src/cats/core.cljc
@@ -40,19 +40,19 @@

 #?(:clj
    (defmacro with-monad
-    "Set current context to specific monad."
-    [ctx & body]
-    `(cond
-       (satisfies? p/MonadTrans ~ctx)
-       (binding [*context* ~ctx]
-         ~@body)
-
-       (satisfies? p/MonadTrans *context*)
-       (do ~@body)
-
-       :else
-       (binding [*context* ~ctx]
-         ~@body))))
+     "Set current context to specific monad."
+     [ctx & body]
+     `(cond
+        (satisfies? p/MonadTrans ~ctx)
+        (binding [*context* ~ctx]
+          ~@body)
+
+        (satisfies? p/MonadTrans *context*)
+        (do ~@body)
+
+        :else
+        (binding [*context* ~ctx]
+          ~@body))))

 (defn ^{:no-doc true}
   get-current-context


Fix mempty implementation on cats.core ns.


Implemented Left Strip problem

Implemented Left Strip problem

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

--- src/clojush/problems/software/benchmarks_v2/left_strip.clj
+++ src/clojush/problems/software/benchmarks_v2/left_strip.clj
@@ -0,0 +1,226 @@
+;; left_strip.clj
+;; Tom Helmuth, thelmuth@hamilton.edu
+;;
+;; Problem inspired by: https://www.codewars.com/kata/580479d7357636a9ff000085
+
+(ns clojush.problems.software.benchmarks-v2.left-strip
+  (:use clojush.pushgp.pushgp
+        [clojush pushstate interpreter random util globals]
+        clojush.instructions.tag)
+  (:require [clojure.math.numeric-tower :as nt]))
+
+; Atom generators
+(def atom-generators
+  (make-proportional-atom-generators
+   (concat
+    (registered-for-stacks [:string :char :integer :boolean :exec])
+    (list (tag-instruction-erc [:string :char :integer :boolean :exec] 1000) ; tags
+          (tagged-instruction-erc 1000)))
+   (list 'in1) ; inputs
+   (list 0
+         "") ; constants
+   {:proportion-inputs 0.15
+    :proportion-constants 0.05}))
+
+(def left-strip-chars (map char (range 32 127)))
+
+(defn left-strip-input-string
+  "Creates a string of length len."
+  [len]
+  (apply str
+         (repeatedly len
+                     #(lrand-nth left-strip-chars))))
+
+(defn left-strip-string-biased
+  "Makes a string that a small percent of the time takes
+   chars out of target."
+  [len target]
+  (apply str
+         (repeatedly len
+                     #(if (< (lrand) 0.1)
+                        (lrand-nth target)
+                        (lrand-nth left-strip-chars)))))
+
+(defn left-strip-input
+  "Creates a Left Strip problem input consisting of 2 strings."
+  []
+  (let [chars-to-strip (left-strip-input-string (inc (lrand-int 11)))
+        len-text (if (< (lrand) 0.5)
+                   (lrand-int 21) ; 1/2 time, rand string length [0,20]
+                   (+ 10 (lrand-int 11))) ; 1/2 time, have string length > 10
+        len-removal (lrand-int 21)
+        ; This is really convoluted, but ensures that some of chars-to-strip
+        ; may appear at the left side of text
+        text (apply str
+                    (take len-text
+                          (str
+                           (apply str
+                                  (take (lrand-int (inc len-text)) ; len-text here means the length of the stripped chars is influenced by length of text
+                                        (shuffle
+                                         (apply list
+                                                (apply str (repeat 20 chars-to-strip))))))
+                           (left-strip-string-biased len-text chars-to-strip))))
+        ; This makes sure char-to-strip is in removal (if removal is long enough),
+        ; but the chars in removal are shuffled
+        removal (apply str
+                       (shuffle
+                        (take len-removal
+                              (str chars-to-strip
+                                   (left-strip-input-string 20)))))]
+    [text removal]))
+
+;; A list of data domains. Each domain is a vector containing
+;; a "set" of inputs and two integers representing how many cases from the set
+;; should be used as training and testing cases respectively. Each "set" of
+;; inputs is either a list or a function that, when called, will create a
+;; random element of the set.
+(def data-domains
+  [[(list ["" ""]
+          ["<" "<"]
+          ["<" "]"]
+          ["t" "nddgvo21rgif2tdvq"]
+          ["z" "nddgvo21rgif2tdvq"]
+          ["tttzzztttzzztttzzz" "nddgvo21rgif2tdvq"]
+          ["" "abc 123"]
+          ["abc 123" ""]
+          ["abc 123" "abc"]
+          ["abc 123" "cab"]
+          ["abc 123" " "]
+          ["abc 123" "123"]
+          ["abc 123" "3c2b1a"]
+          ["abc 123" "tabby cat"]
+          ["     #    how #is #" " "]
+          ["     #    how #is #" " #"]
+          ["     #    how #is #" "# "]
+          ["     #    how #is #" "osY"]
+          ["tabby cat" "abc 123"]
+          ["tabby cat" "abc 123 taco"]
+          ["ABCDEFGHIJKLMNOPQRST" "TSRQPONMLKJIHGFEDCBA"]
+          ["ABCDEFGHIJKLMNOPQRST" "TSRQPONMLKJIHGFEDCB"]
+          ["ABCDEFGHIJKLMNOPQRST" "KLINDJTMRBAHCQPEGSFO"]
+          ["5555555555555554535" ""]
+          ["5555555555555554535" "5"]
+          ["5555555555555554535" "45"]
+          ["STRINGS NOT RELATED!" "do_you_want_tea?"]
+          ["STRINGS NOT RELATED!" "DO_YOU_WANT_TEA?"]
+          ["STRINGS ARE RELATED!" "T GRINS"]
+          ["9#9#9#9#9#9#9" "hashtag 9"]) 30 0] ; fixed strings
+   [left-strip-input 170 2000] ; random strings, length [0, 20]
+   ])
+
+(defn in?
+  "true if coll contains elm"
+  [coll elm]
+  (some #(= elm %) coll))
+
+(defn solve-left-strip
+  "Solves the problem given the input."
+  [[text removals]]
+  (loop [answer text]
+    (cond
+      (empty? answer) answer
+      (not (in? removals (first answer))) answer
+      :else (recur (apply str (rest answer))))))
+
+; Helper function for error function
+(defn test-cases
+  "Takes a sequence of inputs and gives IO test cases of the form
+   [[input1 input2] output]."
+  [inputs]
+  (map (fn [in]
+         (vector in
+                 (solve-left-strip in)))
+       inputs))
+
+(defn make-error-function-from-cases
+  "Creates and returns the error function based on the train/test cases."
+  [train-cases test-cases]
+  (fn the-actual-error-function
+    ([individual]
+     (the-actual-error-function individual :train))
+    ([individual data-cases] ;; data-cases should be :train or :test
+     (the-actual-error-function individual data-cases false))
+    ([individual data-cases print-outputs]
+     (let [behavior (atom '())
+           errors (doall
+                   (for [[[input1 input2] correct-output] (case data-cases
+                                                            :train train-cases
+                                                            :test test-cases
+                                                            [])]
+                     (let [final-state (run-push (:program individual)
+                                                 (->> (make-push-state)
+                                                      (push-item input2 :input)
+                                                      (push-item input1 :input)))
+                           result (top-item :string final-state)]
+                       (when print-outputs
+                         (println (format "| Correct output: %s\n| Program output: %s\n" (str correct-output) (str result))))
+                         ; Record the behavior
+                       (swap! behavior conj result)
+                         ; Error is Levenshtein distance
+                       (if (string? result)
+                         (levenshtein-distance correct-output (str result))
+                         1000000) ; penalty for no return value
+                       )))]
+       (if (= data-cases :train)
+         (assoc individual :behaviors @behavior :errors errors)
+         (assoc individual :test-errors errors))))))
+
+(defn get-train-and-test
+  "Returns the train and test cases."
+  [data-domains]
+  (map test-cases
+       (test-and-train-data-from-domains data-domains)))
+
+; Define train and test cases
+(def train-and-test-cases
+  (get-train-and-test data-domains))
+
+(defn initial-report
+  [argmap]
+  (println "Train and test cases:")
+  (doseq [[i case] (map vector (range) (first train-and-test-cases))]
+    (println (format "Train Case: %3d | Input/Output: %s" i (str case))))
+  (doseq [[i case] (map vector (range) (second train-and-test-cases))]
+    (println (format "Test Case: %3d | Input/Output: %s" i (str case))))
+  (println ";;******************************"))
+
+(defn custom-report
+  "Custom generational report."
+  [best population generation error-function report-simplifications]
+  (let [best-test-errors (:test-errors (error-function best :test))
+        best-total-test-error (apply +' best-test-errors)]
+    (println ";;******************************")
+    (printf ";; -*- Find Pair problem report - generation %s\n" generation) (flush)
+    (println "Test total error for best:" best-total-test-error)
+    (println (format "Test mean error for best: %.5f" (double (/ best-total-test-error (count best-test-errors)))))
+    (when (zero? (:total-error best))
+      (doseq [[i error] (map vector
+                             (range)
+                             best-test-errors)]
+        (println (format "Test Case  %3d | Error: %s" i (str error)))))
+    (println ";;------------------------------")
+    (println "Outputs of best individual on training cases:")
+    (error-function best :train true)
+    (println ";;******************************"))) ;; To do validation, could have this function return an altered best individual
+       ;; with total-error > 0 if it had error of zero on train but not on validation
+       ;; set. Would need a third category of data cases, or a defined split of training cases.
+
+
+; Define the argmap
+(def argmap
+  {:error-function (make-error-function-from-cases (first train-and-test-cases)
+                                                   (second train-and-test-cases))
+   :atom-generators atom-generators
+   :max-points 2000
+   :max-genome-size-in-initial-program 250
+   :evalpush-limit 2000
+   :population-size 1000
+   :max-generations 300
+   :parent-selection :lexicase
+   :genetic-operator-probabilities {:uniform-addition-and-deletion 1.0}
+   :uniform-addition-and-deletion-rate 0.09
+   :problem-specific-report custom-report
+   :problem-specific-initial-report initial-report
+   :report-simplifications 0
+   :final-report-simplifications 5000
+   :max-error 1000000})


Implement range solution

Implement range solution

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

--- src/4clojure/range.clj
+++ src/4clojure/range.clj
@@ -0,0 +1,15 @@
+;; Implement range
+;; http://www.4clojure.com/problem/34
+
+(defn my-range [start stop]
+  (take (- stop start) (iterate inc start)))
+
+
+;; (take 4 (iterate inc ))
+
+(= (my-range 1 4) '(1 2 3))
+(= (my-range -2 2) '(-2 -1 0 1))
+(= (my-range 5 8) '(5 6 7))
+
+;; 4clojure copy-paste
+#(take (- %2 %1) (iterate inc %1))


Fixing type annotations, adding exception swallowing to verify-signature

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


Default to exporting names, using Clojure - convention that becomes lowercase underscore instead of always declaring two vars.

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


[TH] return URL of uploaded pdf

[TH] return URL of uploaded pdf

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


FIX: respects http host header

FIX: respects http host header

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


Zati komuna atera

Zati komuna atera

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


Added compression for mobi

Added compression for mobi

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


Reformat: fix fn whitespace

Reformat: fix fn whitespace

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


Start porting LFE version of find_equil_index.js to Clojure.

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

--- content/src/find_equil_index.clj
+++ content/src/find_equil_index.clj
@@ -0,0 +1,90 @@
+#!/usr/bin/env clojure
+; content/src/find_equil_index.clj
+; =============================================================================
+; Usage:
+;   $ curl -sO http://rgolubtsov.github.io/srcs/find_equil_index.clj && \
+;     chmod 700                                 find_equil_index.clj && \
+;                                             ./find_equil_index.clj; echo $?
+; =============================================================================
+; This is a demo script. It has to be run in the Clojure (JVM) runtime
+; environment. Tested and known to run exactly the same way on modern versions
+; of Arch Linux / Arch Linux 32 operating systems.
+;
+; A zero-indexed array A consisting of N integers is given. An equilibrium
+; index of this array is any integer P such that 0 <= P < N and the sum
+; of elements of lower indices is equal to the sum of elements of higher
+; indices, i.e.
+;
+;     A[0] + A[1] + ... + A[P-1] = A[P+1] + ... + A[N-2] + A[N-1].
+;
+; Sum of zero elements is assumed to be equal to 0. This can happen if P = 0
+; or if P = N-1.
+;
+; For example, consider the following array A consisting of N = 8 elements:
+;
+;     A[0] = -1
+;     A[1] =  3
+;     A[2] = -4
+;     A[3] =  5
+;     A[4] =  1
+;     A[5] = -6
+;     A[6] =  2
+;     A[7] =  1
+;
+; P = 1 is an equilibrium index of this array, because:
+;
+;     A[0] = -1 = A[2] + A[3] + A[4] + A[5] + A[6] + A[7]
+;
+; P = 3 is an equilibrium index of this array, because:
+;
+;     A[0] + A[1] + A[2] = -2 = A[4] + A[5] + A[6] + A[7]
+;
+; P = 7 is also an equilibrium index, because:
+;
+;     A[0] + A[1] + A[2] + A[3] + A[4] + A[5] + A[6] = 0
+;
+; and there are no elements with indices greater than 7.
+;
+; P = 8 is not an equilibrium index, because it does not fulfill
+; the condition 0 <= P < N.
+;
+; Write a function:
+;
+;     function solution(A);
+;
+; that, given a zero-indexed array A consisting of N integers, returns any
+; of its equilibrium indices. The function should return -1 if no equilibrium
+; index exists.
+;
+; For example, given array A shown above, the function may return 1, 3 or 7,
+; as explained above.
+;
+; Assume that:
+;
+;     N is an integer within the range [0..100,000];
+;     each element of array A is an integer within the range
+;     [-2,147,483,648..2,147,483,647].
+;
+; Complexity:
+;
+;     expected worst-case time complexity is O(N);
+;     expected worst-case space complexity is O(N), beyond input storage
+;     (not counting the storage required for input arguments).
+;
+; Elements of input arrays can be modified.
+; =============================================================================
+; Copyright (C) 2017-2019 Radislav (Radicchio) Golubtsov
+;
+; (See the LICENSE file at the top of the source tree.)
+;
+
+(defn main
+    "The script entry point."
+    []
+
+    (println "==>")
+)
+
+(main)
+
+; vim:set nu et ts=4 sw=4:


Get nearest neighbour working again.

Get nearest neighbour working again.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


Add stop words source.

Add stop words source.

error: pathspec 'src/cljs-nlp/data/stop-words.cljs' did not match any file(s) known to git

--- src/cljs-nlp/data/stop-words.cljs
+++ src/cljs-nlp/data/stop-words.cljs
@@ -0,0 +1,7 @@
+(ns cljs-nlp.data.stop-words)
+
+(def default-list #{"a" "about" "above" "after" "again" "against" "all" "am" "an" "and" "any" "are" "aren't" "as" "at" "be" "because" "been" "before" "being" "below" "between" "both" "but" "by" "can't" "cannot" "could" "couldn't" "did" "didn't" "do" "does" "doesn't" "doing" "don't" "down" "during" "each" "few" "for" "from" "further" "had" "hadn't" "has" "hasn't" "have" "haven't" "having" "he" "he'd" "he'll" "he's" "her" "here" "here's" "hers" "herself" "him" "himself" "his" "how" "how's" "i" "i'd" "i'll" "i'm" "i've" "if" "in" "into" "is" "isn't" "it" "it's" "its" "itself" "let's" "me" "more" "most" "mustn't" "my" "myself" "no" "nor" "not" "of" "off" "on" "once" "only" "or" "other" "ought" "our" "ours " "ourselves" "out" "over" "own" "same" "shan't" "she" "she'd" "she'll" "she's" "should" "shouldn't" "so" "some" "such" "than" "that" "that's" "the" "their" "theirs" "them" "themselves" "then" "there" "there's" "these" "they" "they'd" "they'll" "they're" "they've" "this" "those" "through" "to" "too" "under" "until" "up" "very" "was" "wasn't" "we" "we'd" "we'll" "we're" "we've" "were" "weren't" "what" "what's" "when" "when's" "where" "where's" "which" "while" "who" "who's" "whom" "why" "why's" "with" "won't" "would" "wouldn't" "you" "you'd" "you'll" "you're" "you've" "your" "yours" "yourself" "yourselves"})
+
+(def mysql-list #{"a's" "able" "about" "above" "according" "accordingly" "across" "actually" "after" "afterwards" "again" "against" "ain't" "all" "allow" "allows" "almost" "alone" "along" "already" "also" "although" "always" "am" "among" "amongst" "an" "and" "another" "any" "anybody" "anyhow" "anyone" "anything" "anyway" "anyways" "anywhere" "apart" "appear" "appreciate" "appropriate" "are" "aren't" "around" "as" "aside" "ask" "asking" "associated" "at" "available" "away" "awfully" "be" "became" "because" "become" "becomes" "becoming" "been" "before" "beforehand" "behind" "being" "believe" "below" "beside" "besides" "best" "better" "between" "beyond" "both" "brief" "but" "by" "c'mon" "c's" "came" "can" "can't" "cannot" "cant" "cause" "causes" "certain" "certainly" "changes" "clearly" "co" "com" "come" "comes" "concerning" "consequently" "consider" "considering" "contain" "containing" "contains" "corresponding" "could" "couldn't" "course" "currently" "definitely" "described" "despite" "did" "didn't" "different" "do" "does" "doesn't" "doing" "don't" "done" "down" "downwards" "during" "each" "edu" "eg" "eight" "either" "else" "elsewhere" "enough" "entirely" "especially" "et" "etc" "even" "ever" "every" "everybody" "everyone" "everything" "everywhere" "ex" "exactly" "example" "except" "far" "few" "fifth" "first" "five" "followed" "following" "follows" "for" "former" "formerly" "forth" "four" "from" "further" "furthermore" "get" "gets" "getting" "given" "gives" "go" "goes" "going" "gone" "got" "gotten" "greetings" "had" "hadn't" "happens" "hardly" "has" "hasn't" "have" "haven't" "having" "he" "he's" "hello" "help" "hence" "her" "here" "here's" "hereafter" "hereby" "herein" "hereupon" "hers" "herself" "hi" "him" "himself" "his" "hither" "hopefully" "how" "howbeit" "however" "i'd" "i'll" "i'm" "i've" "ie" "if" "ignored" "immediate" "in" "inasmuch" "inc" "indeed" "indicate" "indicated" "indicates" "inner" "insofar" "instead" "into" "inward" "is" "isn't" "it" "it'd" "it'll" "it's" "its" "itself" "just" "keep" "keeps" "kept" "know" "known" "knows" "last" "lately" "later" "latter" "latterly" "least" "less" "lest" "let" "let's" "like" "liked" "likely" "little" "look" "looking" "looks" "ltd" "mainly" "many" "may" "maybe" "me" "mean" "meanwhile" "merely" "might" "more" "moreover" "most" "mostly" "much" "must" "my" "myself" "name" "namely" "nd" "near" "nearly" "necessary" "need" "needs" "neither" "never" "nevertheless" "new" "next" "nine" "no" "nobody" "non" "none" "noone" "nor" "normally" "not" "nothing" "novel" "now" "nowhere" "obviously" "of" "off" "often" "oh" "ok" "okay" "old" "on" "once" "one" "ones" "only" "onto" "or" "other" "others" "otherwise" "ought" "our" "ours" "ourselves" "out" "outside" "over" "overall" "own" "particular" "particularly" "per" "perhaps" "placed" "please" "plus" "possible" "presumably" "probably" "provides" "que" "quite" "qv" "rather" "rd" "re" "really" "reasonably" "regarding" "regardless" "regards" "relatively" "respectively" "right" "said" "same" "saw" "say" "saying" "says" "second" "secondly" "see" "seeing" "seem" "seemed" "seeming" "seems" "seen" "self" "selves" "sensible" "sent" "serious" "seriously" "seven" "several" "shall" "she" "should" "shouldn't" "since" "six" "so" "some" "somebody" "somehow" "someone" "something" "sometime" "sometimes" "somewhat" "somewhere" "soon" "sorry" "specified" "specify" "specifying" "still" "sub" "such" "sup" "sure" "t's" "take" "taken" "tell" "tends" "th" "than" "thank" "thanks" "thanx" "that" "that's" "thats" "the" "their" "theirs" "them" "themselves" "then" "thence" "there" "there's" "thereafter" "thereby" "therefore" "therein" "theres" "thereupon" "these" "they" "they'd" "they'll" "they're" "they've" "think" "third" "this" "thorough" "thoroughly" "those" "though" "three" "through" "throughout" "thru" "thus" "to" "together" "too" "took" "toward" "towards" "tried" "tries" "truly" "try" "trying" "twice" "two" "un" "under" "unfortunately" "unless" "unlikely" "until" "unto" "up" "upon" "us" "use" "used" "useful" "uses" "using" "usually" "value" "various" "very" "via" "viz" "vs" "want" "wants" "was" "wasn't" "way" "we" "we'd" "we'll" "we're" "we've" "welcome" "well" "went" "were" "weren't" "what" "what's" "whatever" "when" "whence" "whenever" "where" "where's" "whereafter" "whereas" "whereby" "wherein" "whereupon" "wherever" "whether" "which" "while" "whither" "who" "who's" "whoever" "whole" "whom" "whose" "why" "will" "willing" "wish" "with" "within" "without" "won't" "wonder" "would" "wouldn't" "yes" "yet" "you" "you'd" "you'll" "you're" "you've" "your" "yours" "yourself" "yourselves" "zero"})
+
+(def long-list #{"a" "able" "about" "above" "abst" "accordance" "according" "accordingly" "across" "act" "actually" "added" "adj" "affected" "affecting" "affects" "after" "afterwards" "again" "against" "ah" "all" "almost" "alone" "along" "already" "also" "although" "always" "am" "among" "amongst" "an" "and" "announce" "another" "any" "anybody" "anyhow" "anymore" "anyone" "anything" "anyway" "anyways" "anywhere" "apparently" "approximately" "are" "aren" "arent" "arise" "around" "as" "aside" "ask" "asking" "at" "auth" "available" "away" "awfully" "b" "back" "be" "became" "because" "become" "becomes" "becoming" "been" "before" "beforehand" "begin" "beginning" "beginnings" "begins" "behind" "being" "believe" "below" "beside" "besides" "between" "beyond" "biol" "both" "brief" "briefly" "but" "by" "c" "ca" "came" "can" "cannot" "can't" "cause" "causes" "certain" "certainly" "co" "com" "come" "comes" "contain" "containing" "contains" "could" "couldnt" "d" "date" "did" "didn't" "different" "do" "does" "doesn't" "doing" "done" "don't" "down" "downwards" "due" "during" "e" "each" "ed" "edu" "effect" "eg" "eight" "eighty" "either" "else" "elsewhere" "end" "ending" "enough" "especially" "et" "et-al" "etc" "even" "ever" "every" "everybody" "everyone" "everything" "everywhere" "ex" "except" "f" "far" "few" "ff" "fifth" "first" "five" "fix" "followed" "following" "follows" "for" "former" "formerly" "forth" "found" "four" "from" "further" "furthermore" "g" "gave" "get" "gets" "getting" "give" "given" "gives" "giving" "go" "goes" "gone" "got" "gotten" "h" "had" "happens" "hardly" "has" "hasn't" "have" "haven't" "having" "he" "hed" "hence" "her" "here" "hereafter" "hereby" "herein" "heres" "hereupon" "hers" "herself" "hes" "hi" "hid" "him" "himself" "his" "hither" "home" "how" "howbeit" "however" "hundred" "i" "id" "ie" "if" "i'll" "im" "immediate" "immediately" "importance" "important" "in" "inc" "indeed" "index" "information" "instead" "into" "invention" "inward" "is" "isn't" "it" "itd" "it'll" "its" "itself" "i've" "j" "just" "k" "keep" "keeps" "kept" "kg" "km" "know" "known" "knows" "l" "largely" "last" "lately" "later" "latter" "latterly" "least" "less" "lest" "let" "lets" "like" "liked" "likely" "line" "little" "'ll" "look" "looking" "looks" "ltd" "m" "made" "mainly" "make" "makes" "many" "may" "maybe" "me" "mean" "means" "meantime" "meanwhile" "merely" "mg" "might" "million" "miss" "ml" "more" "moreover" "most" "mostly" "mr" "mrs" "much" "mug" "must" "my" "myself" "n" "na" "name" "namely" "nay" "nd" "near" "nearly" "necessarily" "necessary" "need" "needs" "neither" "never" "nevertheless" "new" "next" "nine" "ninety" "no" "nobody" "non" "none" "nonetheless" "noone" "nor" "normally" "nos" "not" "noted" "nothing" "now" "nowhere" "o" "obtain" "obtained" "obviously" "of" "off" "often" "oh" "ok" "okay" "old" "omitted" "on" "once" "one" "ones" "only" "onto" "or" "ord" "other" "others" "otherwise" "ought" "our" "ours" "ourselves" "out" "outside" "over" "overall" "owing" "own" "p" "page" "pages" "part" "particular" "particularly" "past" "per" "perhaps" "placed" "please" "plus" "poorly" "possible" "possibly" "potentially" "pp" "predominantly" "present" "previously" "primarily" "probably" "promptly" "proud" "provides" "put" "q" "que" "quickly" "quite" "qv" "r" "ran" "rather" "rd" "re" "readily" "really" "recent" "recently" "ref" "refs" "regarding" "regardless" "regards" "related" "relatively" "research" "respectively" "resulted" "resulting" "results" "right" "run" "s" "said" "same" "saw" "say" "saying" "says" "sec" "section" "see" "seeing" "seem" "seemed" "seeming" "seems" "seen" "self" "selves" "sent" "seven" "several" "shall" "she" "shed" "she'll" "shes" "should" "shouldn't" "show" "showed" "shown" "showns" "shows" "significant" "significantly" "similar" "similarly" "since" "six" "slightly" "so" "some" "somebody" "somehow" "someone" "somethan" "something" "sometime" "sometimes" "somewhat" "somewhere" "soon" "sorry" "specifically" "specified" "specify" "specifying" "still" "stop" "strongly" "sub" "substantially" "successfully" "such" "sufficiently" "suggest" "sup" "sure" "t" "take" "taken" "taking" "tell" "tends" "th" "than" "thank" "thanks" "thanx" "that" "that'll" "thats" "that've" "the" "their" "theirs" "them" "themselves" "then" "thence" "there" "thereafter" "thereby" "thered" "therefore" "therein" "there'll" "thereof" "therere" "theres" "thereto" "thereupon" "there've" "these" "they" "theyd" "they'll" "theyre" "they've" "think" "this" "those" "thou" "though" "thoughh" "thousand" "throug" "through" "throughout" "thru" "thus" "til" "tip" "to" "together" "too" "took" "toward" "towards" "tried" "tries" "truly" "try" "trying" "ts" "twice" "two" "u" "un" "under" "unfortunately" "unless" "unlike" "unlikely" "until" "unto" "up" "upon" "ups" "us" "use" "used" "useful" "usefully" "usefulness" "uses" "using" "usually" "v" "value" "various" "'ve" "very" "via" "viz" "vol" "vols" "vs" "w" "want" "wants" "was" "wasn't" "way" "we" "wed" "welcome" "we'll" "went" "were" "weren't" "we've" "what" "whatever" "what'll" "whats" "when" "whence" "whenever" "where" "whereafter" "whereas" "whereby" "wherein" "wheres" "whereupon" "wherever" "whether" "which" "while" "whim" "whither" "who" "whod" "whoever" "whole" "who'll" "whom" "whomever" "whos" "whose" "why" "widely" "willing" "wish" "with" "within" "without" "won't" "words" "world" "would" "wouldn't" "www" "x" "y" "yes" "yet" "you" "youd" "you'll" "your" "youre" "yours" "yourself" "yourselves" "you've" "z" "zero"})


Tutorial 2 - brepl enabled

Tutorial 2 - brepl enabled

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

--- src/cljs/modern_cljs/connect.cljs
+++ src/cljs/modern_cljs/connect.cljs
@@ -0,0 +1,4 @@
+(ns modern-cljs.connect
+  (:require [clojure.browser.repl :as repl]))
+
+(repl/connect "http://localhost:9000/repl")


update vbm links and fix formatting

update vbm links and fix formatting

updated links:
ME Maine:
http://www.maine.gov/cgi-bin/online/AbsenteeBallot/index.pl

UT Utah:
https://secure.utah.gov/voterreg/index.html

ND North Dakota:
https://vip.sos.nd.gov/absentee

VA Virginia:
https://vote.elections.virginia.gov/VoterInformation

DC:
https://www.vote4dc.com/ApplyInstructions/Absentee

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


:bug: Add missing viewer lightbox data

:bug: Add missing viewer lightbox data

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

--- frontend/src/uxbox/view/data/lightbox.cljs
+++ frontend/src/uxbox/view/data/lightbox.cljs
@@ -0,0 +1,46 @@
+;; 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) 2016 Andrey Antukh <niwi@niwi.nz>
+
+(ns uxbox.view.data.lightbox
+  (:require [beicon.core :as rx]
+            [lentes.core :as l]
+            [potok.core :as ptk]
+            [uxbox.view.store :as st]))
+
+;; --- Show Lightbox
+
+(defrecord ShowLightbox [name params]
+  ptk/UpdateEvent
+  (update [_ state]
+    (let [data (merge {:name name} params)]
+      (assoc state :lightbox data))))
+
+(defn show-lightbox
+  ([name]
+   (ShowLightbox. name nil))
+  ([name params]
+   (ShowLightbox. name params)))
+
+;; --- Hide Lightbox
+
+(defrecord HideLightbox []
+  ptk/UpdateEvent
+  (update [_ state]
+    (dissoc state :lightbox)))
+
+(defn hide-lightbox
+  []
+  (HideLightbox.))
+
+;; --- Direct Call Api
+
+(defn open!
+  [& args]
+  (st/emit! (apply show-lightbox args)))
+
+(defn close!
+  [& args]
+  (st/emit! (apply hide-lightbox args)))


microbench wip

microbench wip

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


fix the mongo connection error

fix the mongo connection error

--- test/metabase/test/data/mongo.clj
+++ test/metabase/test/data/mongo.clj
@@ -22,8 +22,8 @@
   (create-physical-db! [_ _])

   (drop-physical-db! [this database-definition]
-    (mg/drop-db (mg/connect (database->connection-details this database-definition))
-                (escaped-name database-definition)))
+    (with-open [mongo-connection (mg/connect (database->connection-details this database-definition))]
+      (mg/drop-db mongo-connection (escaped-name database-definition))))

   ;; Nothing to do here, collection is created when we add documents to it
   (create-physical-table! [_ _ _])


Extracted functions, corrected blank cid

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


Clojure Collector: retrieve configuration only through JVM properties (closes #3709)

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


add an example based on AWS sample template

error: pathspec 'test/crucible/samples/vpc_single_instance_in_subnet.clj' did not match any file(s) known to git

--- test/crucible/samples/vpc_single_instance_in_subnet.clj
+++ test/crucible/samples/vpc_single_instance_in_subnet.clj
@@ -0,0 +1,73 @@
+(ns crucible.samples.vpc-single-instance-in-subnet
+  (:require [crucible.core :refer [template resource ref join]]
+            [crucible.resources.aws.ec2 :as ec2]))
+
+(defn network-acl-entry
+  [rule-number from-port to-port & {:keys [egress]}]
+  (ec2/network-acl-entry :network-acl-id (ref :network-acl)
+                         :rule-number (str rule-number)
+                         :protocol "6" ;;tcp
+                         :rule-action "allow"
+                         :egress (if egress "true" "false")
+                         :cidr-block "0.0.0.0/0"
+                         :port-range {:from (str from-port) :to (str to-port)}))
+
+(def t (template
+        :description "AWS CloudFormation Sample Template VPC_Single_Instance_In_Subnet: Sample template showing how to create a VPC and add an EC2 instance with an Elastic IP address and a security group. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resources used if you create a stack from this template."
+        :parameters
+        {:instance-type {:description "WebServer EC2 instance type"
+                         :type :string
+                         :default-value "t2.small"
+                         :constraint-description "must be a valid EC2 instance type."}
+         :key-name {:description "Name of an existing EC2 KeyPair to enable SSH access to the instance"
+                    :type :string
+                    :constraint-description "must be the name of an existing EC2 KeyPair."}
+         :ssh-location {:description "The IP address range that can be used to SSH to the EC2 instance"
+                        :type :string
+                        :min-length "9"
+                        :max-length "18"
+                        :default-value "0.0.0.0/0"
+                        :allowed-pattern "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})"
+                        :constraint-description "must be a valid IP CIDR of the form x.x.x.x/x."}}
+        :resources
+        {:vpc (resource (ec2/vpc :cidr-block "10.0.0.0/16"))
+         :subnet (resource (ec2/subnet :cidr-block "10.0.0.0/24"))
+         :internet-gateway (resource (ec2/internet-gateway))
+         :attach-gateway (resource (ec2/vpc-gateway-attachment :vpc-id (ref :vpc)))
+         :route-table (resource (ec2/route-table :vpc-id (ref :vpc)))
+         :route (resource (ec2/route :route-table-id (ref :route-table)
+                                     :destination-cidr-block "0.0.0.0/0"
+                                     :gateway-id (ref :internet-gateway))
+                          :depends-on (ref :attach-gateway))
+         :subnet-route-table-association (resource (ec2/subnet-route-table-association
+                                                    :subnet-id (ref :subnet)
+                                                    :route-table-id (ref :route-table)))
+         :network-acl (resource (ec2/network-acl :vpc-id (ref :vpc)))
+         :inbound-http-network-acl-entry (resource (network-acl-entry 100 80 80))
+         :inbound-ssh-network-acl-entry (resource (network-acl-entry 101 22 22))
+         :inbound-response-ports-network-acl-entry (resource (network-acl-entry 102 1024 65535))
+         :outbound-http-network-acl-entry (resource (network-acl-entry 100 80 80 :egress true))
+         :outbound-https-network-acl-entry (resource (network-acl-entry 101 443 443 :egress true))
+         :outbound-response-ports-network-acl-entry (resource (network-acl-entry 101 1024 65535 :egress true))
+         :subnet-network-acl-association (resource (ec2/subnet-network-acl-association
+                                                    :subnet-id (ref :subnet)
+                                                    :network-acl-id (ref :network-acl)))
+         :iP-address (resource (ec2/eip :domain "vpc" :instance-id (ref :web-server-instance))
+                               :depends-on (ref :attach-gateway))
+         :instance-security-group (resource
+                                   (ec2/security-group
+                                    :vpc-id (ref :vpc)
+                                    :group-description "Enable SSH access via port 22"
+                                    :security-group-ingress
+                                    [{:ip-protocol "tcp"
+                                      :from-port "22" :to-port "22" :cidr-ip (ref :ssh-location)}
+                                     {:ip-protocol "tcp"
+                                      :from-port "80" :to-port "80" :cidr-ip "0.0.0.0/0"}]))
+         :web-server-instance (resource
+                               (ec2/instance
+                                :image-id "xyz"
+                                :instance-type (ref :instance-type)
+                                :key-name (ref :key-name))
+                               :depends-on (ref :attach-gateway)
+                               :creation-policy {:resource-signal {:timeout "PT15M"}})}
+        :outputs {:URL (join ["http://" (ref :web-server-instance :public-ip)])}))


add alternative content types

add alternative content types


Add sane stack traces

Add sane stack traces

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

--- src/clj/introspect/stacktrace.clj
+++ src/clj/introspect/stacktrace.clj
@@ -0,0 +1,30 @@
+(ns introspect.stacktrace)
+
+(defn format-stack-frame
+  [el max-class-name max-file-name]
+  (let [class-name  (.getClassName el)
+        file-name   (or (.getFileName el) "")
+        line-number (.getLineNumber el)]
+    (format (str "\t%"
+                 max-class-name
+                 "s\t%"
+                 max-file-name
+                 "s:\t%20d")
+            class-name
+            file-name
+            line-number)))
+
+(defn format-stack-trace
+  [trace]
+  (let [trace-els      trace
+        max-class-name (->> trace-els
+                            (map #(.getClassName %))
+                            (map count)
+                            (reduce max))
+        max-file-name  (->> trace-els
+                            (map #(or (.getFileName %) ""))
+                            (map count)
+                            (reduce max))]
+    (->> trace-els
+         (map #(format-stack-frame % max-class-name max-file-name))
+         (clojure.string/join "\n"))))


add time before test for scheduler to start up

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


parentheses

parentheses


wait a little longer before issuing jobs


[EN] Make handler for electorate get/create

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


[scamp] add utils ns with common fns

[scamp] add utils ns with common fns

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

--- modules/scamp/src/scamp/util.clj
+++ modules/scamp/src/scamp/util.clj
@@ -0,0 +1,17 @@
+(ns scamp.util
+  (:require [schema.core :as s]))
+
+(defn concatv [coll & colls]
+  (vec (apply concat coll colls)))
+
+(s/defn set-disclude :- #{s/Any}
+  [s :- #{s/Any}
+   to-remove :- s/Any]
+  (into #{} (remove #(= % to-remove) s)))
+
+(s/defn set-swap :- #{s/Any}
+  [s :- #{s/Any}
+   old new]
+  (into #{} (map #(if (= % old) new %) s)))
+
+


initial freenas impl

initial freenas impl

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

--- src/freenas/provider.clj
+++ src/freenas/provider.clj
@@ -0,0 +1 @@
+; http://api.freenas.org/authentication.html


Added Task Queues service implementation.

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

--- src/appengine_magic/services/task_queues.clj
+++ src/appengine_magic/services/task_queues.clj
@@ -0,0 +1,90 @@
+(ns appengine-magic.services.task-queues
+  (:require [appengine-magic.services.datastore :as ds])
+  (:import java.util.Date
+           [com.google.appengine.api.labs.taskqueue Queue QueueFactory
+            TaskOptions$Builder TaskOptions$Method]))
+
+
+(defonce *default-queue* (atom nil))
+(defonce *named-queues* (atom {}))
+
+
+(defonce *task-http-methods*
+  {:post TaskOptions$Method/POST
+   :delete TaskOptions$Method/DELETE
+   :get TaskOptions$Method/GET
+   :head TaskOptions$Method/HEAD
+   :put TaskOptions$Method/PUT})
+
+
+(defn get-task-queue [& {:keys [queue]}]
+  (if (nil? queue)
+      (do (when (nil? @*default-queue*)
+            (reset! *default-queue* (QueueFactory/getDefaultQueue)))
+          @*default-queue*)
+      (let [q (@*named-queues* queue)]
+        (if-not (nil? q)
+            q
+            ((swap! *named-queues* assoc
+                    queue (QueueFactory/getQueue queue))
+             queue)))))
+
+
+(defn add! [& {:keys [queue url join-current-transaction? params headers payload method
+                      countdown-ms eta-ms eta]
+               :or {join-current-transaction? false
+                    params {}
+                    headers {}
+                    method :post}}]
+  (when (or (nil? url) (not (string? url)) (= "" (.trim url)))
+    (throw (IllegalArgumentException. "add! requires a :url argument")))
+  (when-not (map? params)
+    (throw (IllegalArgumentException. "add! :params must be a map")))
+  (let [queue-obj (get-task-queue :keys queue)
+        opts (TaskOptions$Builder/url url)]
+    ;; headers
+    (doseq [[header-name header-value] headers]
+      (.header opts header-name header-value))
+    ;; params
+    (doseq [[param-name param-value] params]
+      (.param opts param-name (cond
+                               (string? param-value) param-value
+                               (instance? (class (.getBytes "")) param-value) param-value
+                               :else (str param-value))))
+    ;; HTTP method for hitting task
+    (.method opts (*task-http-methods* method))
+    ;; payload
+    (cond
+     ;; nothing, no problem
+     (nil? payload) nil
+     ;; just a string
+     (string? payload)
+     (.payload opts payload)
+     ;; string with a charset, or a byte array with a Content-Type
+     (and (sequential? payload) (= 2 (count payload)))
+     (.payload opts (first payload) (second payload))
+     ;; something's wrong
+     :else (throw (IllegalArgumentException. "add! :payload invalid")))
+    ;; scheduling
+    (cond
+     ;; more than one given, blow up
+     (> (count (remove nil? [countdown-ms eta-ms eta])) 1)
+     (throw (IllegalArgumentException. "add! only supports one scheduling parameter at a time"))
+     ;; direct countdown
+     (not (nil? countdown-ms))
+     (.countdownMillis opts (long countdown-ms))
+     ;; direct time given in milliseconds
+     (not (nil? eta-ms))
+     (.etaMillis opts (long eta-ms))
+     ;; direct time given, incorrectly
+     (and (not (nil? eta)) (not (instance? Date eta)))
+     (throw (IllegalArgumentException. "add! :eta requires a java.util.Date argument"))
+     ;; direct time given, correctly, as a Date object
+     (not (nil? eta))
+     (.etaMillis opts (long (.getTime eta)))
+     ;; nothing given, no problem
+     :else nil)
+    ;; transactions and done
+    (if join-current-transaction?
+        (.add queue-obj ds/*current-transaction* opts)
+        (.add queue-obj opts))))


Adding new condition into middleware for displaying mobile website

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


Removed unnecessary file cthulhu/entities.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/Yoshiyuka/cthulhu.git/'


Use mailing-id as filename

Use mailing-id as filename

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


Throw exception for unsupported HTML tags.

--- src/sablono/interpreter.cljx
+++ src/sablono/interpreter.cljx
@@ -17,16 +17,20 @@
 (defn element
   "Render an element vector as a HTML element."
   [element]
-  (let [[tag attrs content] (normalize-element element)
-        dom-fn (aget js/React.DOM (name tag))]
-    (cond
-     (and (sequential? content)
-          (= 1 (count content))
-          (string? (first content)))
-     (dom-fn (attributes attrs) (interpret (first content)))
-     content
-     (dom-fn (attributes attrs) (interpret content))
-     :else (dom-fn (attributes attrs)))))
+  (let [[tag attrs content] (normalize-element element)]
+    (if-let [dom-fn (aget js/React.DOM (name tag))]
+      (dom-fn
+       (attributes attrs)
+       (cond
+        (and (sequential? content)
+             (string? (first content))
+             (empty? (rest content)))
+        (interpret (first content))
+        content
+        (interpret content)
+        :else nil))
+      (throw (ex-info (str "Can't interpret unsupported HTML tag: " (name tag))
+                      {:tag tag :attrs attrs :content content})))))

 (defn- interpret-seq [s]


STORM-183: Replacing RunTime.halt() with RunTime.exit() with a special shutdown hook that allows 1 second for cleanup shutdown hooks and then sends kill -9 to process. Added shutdown hooks for supervisor and worker.

--- storm-core/src/clj/backtype/storm/util.clj
+++ storm-core/src/clj/backtype/storm/util.clj
@@ -430,9 +430,10 @@
    Also adds a function that sleeps for a second and then sends kill -9 to process to avoid any zombie process in case
    cleanup function hangs."
   [func]
-  (.addShutdownHook (Runtime/getRuntime) (Thread. #((func)
-                                                     (sleep-secs 1)
-                                                     (force-kill-process (process-pid))))))
+  (.addShutdownHook (Runtime/getRuntime) (Thread. #(func)))
+  (.addShutdownHook (Runtime/getRuntime) (Thread. #((sleep-secs 1)
+                                                    (.halt (Runtime/getRuntime) 20)))))
+
 (defnk launch-process [command :environment {}]
   (let [builder (ProcessBuilder. command)
         process-env (.environment builder)]


[JE EN] WIP adding race instructions

[JE EN] WIP adding race instructions

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


framework: effectively kill units when asked 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/pyr/bundes.git/'


Add testing support which allows ClojureScript evaluation.

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

--- src/clj/library/test.clj
+++ src/clj/library/test.clj
@@ -0,0 +1,43 @@
+(ns library.test
+  "Support for evaluating ClojureScript code from Clojure tests."
+  (:refer-clojure :exclude [load-file])
+  (:use [cljs.compiler :only (namespaces)]
+        [cljs.repl :only (evaluate-form load-file load-namespace)]))
+
+(def ^:dynamic *eval-env*)
+
+(defn evaluate-cljs
+  "Evaluate a ClojureScript form within the given evaluation
+   environment. The form will also be evaluated in the passed
+   namespace which defaults to 'cljs.user."
+  ([eval-env form]
+     (evaluate-cljs eval-env 'cljs.user form))
+  ([eval-env ns form]
+     (let [env {:context :statement :locals {}}]
+       (cond
+        (and (seq? form) ('#{load-file clojure.core/load-file} (first form)))
+        (load-file eval-env (second form))
+
+        (and (seq? form) ('#{load-namespace} (first form)))
+        (load-namespace eval-env (second form))
+
+        :else
+        (let [ret (evaluate-form env
+                                 (assoc env :ns (@namespaces ns))
+                                 "<testing>"
+                                 form
+                                 (fn [x] `(cljs.core.pr-str ~x)))]
+          (try (read-string ret)
+               (catch Exception e
+                 (if (string? ret)
+                   ret
+                   nil))))))))
+
+(defmacro cljs-eval [ns & forms]
+  `(do ~@(map (fn [x] `(evaluate-cljs *eval-env* (quote ~ns) (quote ~x))) forms)))
+
+(defn pause
+  ([]
+     (pause 500))
+  ([t]
+     (Thread/sleep t)))


Iniit the webhook server

Iniit the webhook server

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


Ah, the joy of exception handling style.

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


Add whitespace to handlers

Add whitespace to handlers


Fix broken test

Fix broken test

DebugLogger prints the CID direct to stdout without encoding it first.

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


pr-str all the things!!!

pr-str all the things!!!

Especially when they are incoming messages. Makes it much easier to
retry them when they fail.

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


Add base-replica

Add base-replica

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

--- src/onyx/log/replica.clj
+++ src/onyx/log/replica.clj
@@ -0,0 +1,30 @@
+(ns onyx.log.replica)
+
+(def base-replica
+  {:peers []
+   :peer-state {}
+   :peer-sites {}
+   :prepared {}
+   :accepted {}
+   :pairs {}
+   :jobs []
+   :task-schedulers {}
+   :tasks {}
+   :allocations {}
+   :task-saturation {}
+   :saturation {}
+   :flux-policies {}
+   :min-required-peers {}
+   :input-tasks {}
+   :output-tasks {}
+   :exempt-tasks {}
+   :sealed-outputs {}
+   :ackers {}
+   :acker-percentage {}
+   :acker-exclude-inputs {}
+   :acker-exclude-outputs {}
+   :task-percentages {}
+   :percentages {}
+   :completed-jobs []
+   :killed-jobs []
+   :exhausted-inputs {}})


[meta] add overview.clj

[meta] add overview.clj

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

--- assets/overview.clj
+++ assets/overview.clj
@@ -0,0 +1,25 @@
+(require '[clojure.java.io :as io])
+(require '[clojure.string :as str])
+
+(def root "/Users/toxi/work/clj/thing/geom/babel/src/thi/ng/geom")
+
+(defn dir-contents
+  [pred tx dir]
+  (->> (file-seq (java.io.File. dir))
+       rest
+       (filter pred)
+       (map tx)))
+
+(defn parse-ns
+  [^java.io.File f]
+  (let [src (first (line-seq (io/reader f)))]
+    (re-find #"thi\.ng\.geom\.[a-z0-9\.]+" src)))
+
+(->> root
+     (dir-contents #(.isDirectory %) identity)
+     (into {}
+       (map
+        (fn [m]
+          [(.getName m)
+           (dir-contents #(re-find #"\.clj*" (.getName %)) parse-ns (.getAbsolutePath m))])))
+     (pprint))


Whitespace/indentation cleanup

Whitespace/indentation 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/tobias/clojars-web.git/'


New module for REST API

New module for REST API

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

--- src/emender_service/rest_api.clj
+++ src/emender_service/rest_api.clj
@@ -0,0 +1,17 @@
+;
+;  (C) Copyright 2016  Pavel Tisnovsky
+;
+;  All rights reserved. This program and the accompanying materials
+;  are made available under the terms of the Eclipse Public License v1.0
+;  which accompanies this distribution, and is available at
+;  http://www.eclipse.org/legal/epl-v10.html
+;
+;  Contributors:
+;      Pavel Tisnovsky
+;
+
+(ns emender-service.rest-api)
+
+(require '[ring.util.response     :as http-response])
+(require '[clojure.data.json      :as json])
+


Revised structural sketch.

Revised structural sketch.

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


clean up tests source (still just a stub)

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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 jdk 8 stuff

Added jdk 8 stuff

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


RP + RS | 36 | Add test file for config

RP + RS | 36 | Add test file for config

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

--- test/stonecutter/test/config.clj
+++ test/stonecutter/test/config.clj
@@ -0,0 +1,14 @@
+(ns stonecutter.test.config
+  (:require [midje.sweet :refer :all]
+            [stonecutter.config :refer [secure?]]))
+
+
+(tabular
+  (fact "secure? is true by default"
+        (secure? {:secure ?secure-env-value}) => ?return-value)
+  ?secure-env-value     ?return-value
+  "true"                true
+  "asdf"                true
+  ""                    true
+  nil                   true
+  "false"               false)


Added stuff/code to collect ... code

Added stuff/code to collect ... code

which is not part of conexp-clj, but strongly related to it.

Signed-off-by: Daniel Borchmann <25857343a15bf1edafebc2912e82ecf775c585c1@mailbox.tu-dresden.de>

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

--- stuff/code/read-wiki.clj
+++ stuff/code/read-wiki.clj
@@ -0,0 +1,210 @@
+;; Copyright (c) Daniel Borchmann. All rights reserved.
+;; The use and distribution terms for this software are covered by the
+;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
+;; which can be found in the file LICENSE at the root of this distribution.
+;; By using this software in any fashion, you are agreeing to be bound by
+;; the terms of this license.
+;; You must not remove this notice, or any other, from this software.
+
+(in-ns 'user)
+
+(use '[clojure.contrib.io :only (with-in-reader)]
+     '[clojure.walk :only (walk)]
+     '[clojure.contrib.def :only (defnk)]
+     '[conexp.base :only (set-of)])
+
+;;;
+
+(defn line-to-pair
+  "Converts RDF line to a pair [role [First Second]]."
+  [line]
+  (let [[A to B] (rest (re-find #"<(.*)> <(.*)> <(.*)>" line))]
+    [to [A B]]))
+
+(defn map-count
+  "Counts overall entries in a map."
+  [hash-map]
+  (reduce + (map #(count (get hash-map %)) (keys hash-map))))
+
+(defn read-lines-from-file [file interesting-role? interesting-A? interesting-B?]
+  (with-in-reader file
+    (binding [*in* (clojure.lang.LineNumberingPushbackReader. *in*)]
+      (loop [map {},
+             line-count 0]
+        (if-let [line (read-line)]
+          (do
+            (when (zero? (mod line-count 10000))
+              (println line-count (map-count map)))
+            (let [[role [A B]] (line-to-pair line)]
+              (recur (if (and (interesting-role? role)
+                              (interesting-A? A)
+                              (interesting-B? B))
+                       (update-in map [role] conj [A B])
+                       map)
+                     (inc line-count))))
+          (do
+            (println line-count)
+            map))))))
+
+(defn role-count
+  "Returns a hash-map from role names to their cardinality."
+  [file]
+  (with-in-reader file
+    (binding [*in* (clojure.lang.LineNumberingPushbackReader. *in*)]
+      (loop [map {},
+             line-count 0]
+        (if-let [line (read-line)]
+          (do
+            (when (zero? (mod line-count 10000))
+              (println line-count (count map)))
+            (let [[role [A B]] (line-to-pair line)]
+              (recur (assoc map role (inc (get map role 0)))
+                     (inc line-count))))
+          map)))))
+
+(defn capitalize [word]
+  (if (empty? word)
+    word
+    (apply str (Character/toUpperCase (first word)) (rest word))))
+
+(defn symbolify [coll]
+  ((fn transform [thing]
+     (cond
+      (string? thing) (symbol (capitalize thing)),
+      (or (sequential? thing)
+          (map? thing)
+          (set? thing))
+      (walk transform identity thing),
+      :else thing))
+   coll))
+
+(defn prepare-for-conexp [hash-map]
+  (into {} (for [[k v] (symbolify hash-map)]
+             [k (set v)])))
+
+(defn role-map->concept-map [role-map]
+  (assert (= 1 (count role-map)))
+  (loop [concept-map {},
+         is-as (get role-map (first (keys role-map)))]
+    (if (empty? is-as)
+      concept-map
+      (let [[A B] (first is-as)]
+        (recur (update-in concept-map [B] conj A)
+               (rest is-as))))))
+
+;;;
+
+(defn read-wiki [roles]
+  "Reads model from wikipedia entries. roles can be any quoted
+  sequence of child, father, mother, influenced, influencedBy, relation,
+  relative, spouse, partner, opponent, ..."
+  (let [relations (read-lines-from-file "/users/lat/borch/wikiprops.nt"
+                                        (set-of (str "http://dbpedia.org/ontology/" role)
+                                                [role roles])
+                                        (constantly true)
+                                        (constantly true)),
+        instances (set (flatten (vals relations))),
+        concepts (role-map->concept-map
+                  (read-lines-from-file "/users/lat/borch/wikiinstances.nt"
+                                        (constantly true)
+                                        #(contains? instances %)
+                                        #(not (re-find #"owl#Thing" %))))]
+    [(prepare-for-conexp concepts), (prepare-for-conexp relations)]))
+
+;;;
+
+(use 'conexp.base
+     'conexp.contrib.profiler
+     'conexp.contrib.dl.framework.syntax
+     'conexp.contrib.dl.framework.boxes
+     'conexp.contrib.dl.framework.semantics
+     'conexp.contrib.dl.languages.EL-gfp
+     'conexp.contrib.dl.languages.EL-gfp-exploration
+     'conexp.contrib.dl.languages.interaction)
+
+(defn read-wiki-model [roles]
+  (let [[concepts, roles] (read-wiki roles)]
+    (interpretation->model concepts roles :base-lang EL-gfp)))
+
+(defn collect [start relation]
+  (let [related (set (for [[x y] relation,
+                           :when (or (contains? start x)
+                                     (contains? start y)),
+                           z [x y]]
+                       z))]
+    (if (= start related)
+      start
+      (recur related relation))))
+
+(defn explore-wiki-model
+  "Computes a basis of gcis holding in wiki-model. Returns a reference
+  to the gcis collected so far, a reference to the gcis returned so
+  far and the thread where the computation is done."
+  [wiki-model]
+  (let [collected-gcis (ref []),
+        resulting-gcis (ref []),
+
+        explore (fn [model]
+                  (binding [expert-refuses? (fn [susu]
+                                              (dosync (alter collected-gcis
+                                                             conj susu))
+                                              false)]
+                    (explore-model model))),
+        thread (Thread. #(let [result (time (explore wiki-model))]
+                           (time (doseq [gci result]
+                                   (dosync (alter resulting-gcis conj gci))))))]
+    (.start thread)
+    (add-watch collected-gcis 1
+               (fn [k r o n]
+                 (println "collected:" (count n) (now))))
+    (add-watch resulting-gcis 1
+               (fn [k r o n]
+                 (println "returned:" (count n) (now))))
+    (start-profiling :thread thread)
+    [collected-gcis, resulting-gcis, thread]))
+
+;;;
+
+(defn number-of-counterexamples
+  "Returns for a model and a gci the number of counterexamples,
+  i.e. the cardinality of the extension of the concept (and A
+  (not B)), where the gci is of the form A -> B."
+  [model A B]
+  (count (interpret model (list 'and A (list 'not B)))))
+
+(defn support
+  "Returns the support of the given concept, i.e. the cardinality of
+  its extension in model."
+  [model A]
+  (count (interpret model A)))
+
+(defn confidence
+  "Returns some kind of confidence for the gci A -> B in model."
+  [model A B]
+  (- 1 (/ (number-of-counterexamples model A B)
+          (count (interpret model A)))))
+
+(defn concept-size
+  "Returns the size of an EL-gfp concept description."
+  [dl-expression]
+  (let [counter (fn counter [term]
+                  (cond
+                   (sequential? term) (reduce + (map counter term)),
+                   (tbox? term) (reduce + 1 (map #(+ 1
+                                                     (counter (definition-target %))
+                                                     (counter (expression-term (definition-expression %))))
+                                                 (tbox-definitions term))),
+                   :else 1))]
+    (counter (expression-term dl-expression))))
+
+(defn dubiousness
+  "Returns some kind of measure for the dubiousness of the gci A -> B
+  in model."
+  [model A B]
+  (/ (concept-size B)
+     (concept-size A)
+     (+ 1 (support model A))))
+
+;;;
+
+nil


[WM] make more authority fields optional in import


minor test -- more needs to be added

minor test -- more needs to be added

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

--- test/pjson/core_test.clj
+++ test/pjson/core_test.clj
@@ -0,0 +1,11 @@
+(ns pjson.core-test
+  (:require [clojure.test :refer :all]
+            [pjson.core :refer :all]))
+
+
+(deftest test-string-escaping
+
+  (is (=
+        (-> "{\"a\":\"1 \\\"  \"}"
+            asObj asString asObj asString asObj)
+        {"a" "1 \\"})))


service ns added to provide shortcuts for creating service maps

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

--- src/clj/hellhound/service.clj
+++ src/clj/hellhound/service.clj
@@ -0,0 +1,33 @@
+(ns hellhound.service
+  "In order to create `service` maps to use with your hellhound
+  application, you have to use `create-service-map` function in
+  this namespace."
+  (:require
+   [io.pedestal.http :as http]
+   [hellhound.core  :as hellhound]))
+
+
+(def default-system-map
+  {:env                  (hellhound/env)
+   ::http/resource-path  (hellhound/fetch-config-key :public-files-path)
+   ::http/secure-headers {:content-security-policy-settings {:object-src "none"}}
+   ::http/type           :immutant
+   ::http/host           (hellhound/fetch-config-key :http-host)
+   ::http/port           (hellhound/fetch-config-key :http-port)
+   ;; TODO: Add immutant related features in the
+   ;; map blow
+   ::http/container-options {:h2c? true
+                             :h2? false}})
+
+
+(defn create-service-map
+  "Creates a system map and fills some default values for the map"
+  [system-map]
+  (merge default-system-map
+         system-map))
+
+(defmacro defservice-map
+  "A short cut for creating service maps using `create-service-map`
+  function."
+  [map-name service-map]
+  `(def ~map-name (hellhound.service/create-service-map ~service-map)))


added failed key predicate

added failed key predicate

--- sidecar/src/figwheel_sidecar/type_check.clj
+++ sidecar/src/figwheel_sidecar/type_check.clj
@@ -446,6 +446,14 @@

 #_(pp)

+(defmethod error-help-message :failed-key-predicate [{:keys [key path not value type-sig] :as error}]
+  [:group "The key "
+   (format-key key :red)
+   " did not satisfy the key predicate. "
+   :line
+   "It should be a "
+    (color (explain-predicate-failure not value) :green)])
+
 (defmethod error-help-message :failed-predicate [{:keys [path not value type-sig] :as error}]
   (concat
    (if (parent-is-sequence? error)
@@ -701,7 +709,7 @@
                                       (str "^ key " (pr-str key) " not recognized")))
                    {:width 40}))

-(pp)
+#_(pp)
 (defmethod print-error :missing-required-key [{:keys [path value type-sig] :as error}]
   (pprint-document (print-path-error error
                                      [:group
@@ -773,6 +781,14 @@
                     (document-key (first correct-type) correction))
                    {:width 40}))

+(defmethod print-error :failed-key-predicate [{:keys [key value orig-error orig-config type-sig path] :as error}]
+  (pprint-document (print-path-error error
+                                     (format-key-value
+                                      (format-key key :red)
+                                      (format-value value)
+                                      (str "^ key " (pr-str key) " failed key predicate"))
+                                     (document-key (first (rest type-sig)) (first (rest path))))
+                   {:width 40}))

 (defmethod print-error :misspelled-key [{:keys [key correction orig-error orig-config type-sig] :as error}]
   (pprint-document (print-path-error error
@@ -791,7 +807,8 @@
 (defn pp []
   (with-schema (index-spec
                 (spec 'RootMap {:figwheel (ref-schema 'FigOpts)
-                                :crappers [(ref-schema 'HeyOpts)]})
+                                :crappers [(ref-schema 'HeyOpts)]
+                                })

                 (or-spec 'Boolean
                          true
@@ -804,9 +821,11 @@
                       :string "A String that describes a string"
                       :magical "How magical do you want to make this?"
                       :what    "Something what like is something goodness"
-                      :boolean "A boolean that tells us whether bolleans are allowed"})
+                      :boolean "A boolean that tells us whether bolleans are allowed"
+                      :builds  "A map of builds"})
                 (spec 'FigOpts
                       {:five 5
+                       :builds  {string? 5}
                        :boolean (ref-schema 'Boolean)
                        :other   (ref-schema 'OtherType)
                        :string   string?
@@ -832,6 +851,7 @@
   (print-errors-test {:figwheel {:five 6
                                  :string 'asdf
                                  :boolean 4
+                                 :builds {5 5}
                                  :what ["resources/public/js/out"
                                         "resources/public/js/out"
                                         "resources/public/js/out"]


More jvm memory

More jvm memory

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


Pass output-dir to compiler

Pass output-dir to compiler

changes default "out" to "target/weasel/repl"

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


Put events exchange decl first in queue ns

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


clojure hello world

clojure hello world

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

--- clojure/hello-world.clj
+++ clojure/hello-world.clj
@@ -0,0 +1,2 @@
+(let [s "Hello, World"]
+  (println s))


replaces checkbox with switch

replaces checkbox with switch

Note - this behavior doesn't trigger the popconfirm that was previously in place
Removing the popconfirm 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/starcity-properties/odin.git/'


Add nth prime problem

Add nth prime problem

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

--- src/clojush/problems/software/nth_prime.clj
+++ src/clojush/problems/software/nth_prime.clj
@@ -0,0 +1,53 @@
+;; given some number number n, return the nth prime
+
+(ns clojush.problems.software.nth-prime
+  (:require [clojush.pushstate :refer [push-item make-push-state top-item registered-for-stacks]]
+            [clojush.instructions.tag :refer [tag-instruction-erc tagged-instruction-erc]]
+            [clojush.interpreter :refer [run-push]]
+            [clojure.math.numeric-tower :refer [abs]]
+            [clojush.random :refer [lrand-int]]))
+
+(let [first-primes [2  3  5  7  11  13  17  19  23  29 31  37  41  43  47  53  59  61  67  71]]
+  (defn nth-prime [n]
+   (first-primes n)))
+
+;; first prime is two
+(assert (= 2 (nth-prime 0)))
+;; 20th prime is 71
+(assert (= 71 (nth-prime 19)))
+
+(defn single-error-function [program n]
+  (as-> (make-push-state) v
+    (push-item n :input v)
+    (run-push program v)
+    (top-item :integer v)
+    (if (number? v)
+      (abs (- v (nth-prime n)))
+      1000)))
+
+;; no integers on stack gives 1000 error
+(assert (= 1000 (single-error-function "hi" 0)))
+;; the right integer on the stack gives 0 error
+(assert (= 0 (single-error-function 2 0)))
+
+(defn error-function [program]
+  (map (partial single-error-function program) (range 20)))
+
+
+(def atom-generators
+    (concat
+      (list
+        0
+        []
+
+        (tag-instruction-erc [:integer :boolean :vector_integer :exec] 1000)
+        (tagged-instruction-erc 1000)
+        'in1)
+      (registered-for-stacks [:integer :boolean :vector_integer :exec])))
+
+
+; Define the argmap
+(def argmap
+  {:error-function error-function
+   :atom-generators atom-generators})
+


forgot to check in this file

forgot to check in this file

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

--- examples/f_check_redefs.clj
+++ examples/f_check_redefs.clj
@@ -0,0 +1,75 @@
+(ns f-check-redefs
+  "Check that all the exported vars actually work"
+  (:require [monadic-define-1 :as mv1]
+            [monadic-define-2 :as mv2]
+            [timbre-define-1 :as tv1]
+            [timbre-define-2 :as tv2]
+            [blancas.morph.core :as mc]
+            [blancas.morph.monads :as m]
+            [clojure.math.numeric-tower :as math])
+  (:use midje.sweet
+        structural-typing.clojure.core))
+
+;; Note: in this version of Morph, two Rights with the same content do not count as equal.
+
+(fact "monadic-define-1"
+  (let [point {:x 1 :y 1}
+        nopoint {}]
+    (m/run-right (mv1/built-like :Point point)) => point
+    (m/run-right (mv1/all-built-like :Point [point])) => [point]
+    (m/run-right (mv1/<>built-like point :Point)) => point
+    (m/run-right (mv1/<>all-built-like [point] :Point)) => [point]
+    (mv1/built-like? :Point point) => true
+
+    (mv1/built-like :Point nopoint) => m/left?
+    (mv1/all-built-like :Point [nopoint]) => m/left?
+    (mv1/<>built-like nopoint :Point) => m/left?
+    (mv1/<>all-built-like [nopoint] :Point) => m/left?
+    (mv1/built-like? :Point nopoint) => false))
+
+
+(fact "monadic-define-2"
+  (let [point {:x 2 :y 2}
+        nopoint {}]
+    (m/run-right (mv2/built-like :Point point)) => point
+    (m/run-right (mv2/all-built-like :Point [point])) => [point]
+    (m/run-right (mv2/<>built-like point :Point)) => point
+    (m/run-right (mv2/<>all-built-like [point] :Point)) => [point]
+    (mv2/built-like? :Point point) => true
+
+    (mv2/built-like :Point nopoint) => m/left?
+    (mv2/all-built-like :Point [nopoint]) => m/left?
+    (mv2/<>built-like nopoint :Point) => m/left?
+    (mv2/<>all-built-like [nopoint] :Point) => m/left?
+    (mv2/built-like? :Point nopoint) => false))
+
+(fact "timbre-define-1"
+  (let [point {:x 1 :y 1}
+        nopoint {}]
+    (tv1/built-like :Point point) => point
+    (tv1/all-built-like :Point [point]) => [point]
+    (tv1/<>built-like point :Point) => point
+    (tv1/<>all-built-like [point] :Point) => [point]
+    (tv1/built-like? :Point point) => true
+
+    (val-and-output (tv1/built-like :Point nopoint)) => (just nil anything)
+    (val-and-output (tv1/all-built-like :Point [nopoint])) => (just nil anything)
+    (val-and-output (tv1/<>built-like nopoint :Point)) => (just nil anything)
+    (val-and-output (tv1/<>all-built-like [nopoint] :Point)) => (just nil anything)
+    (tv1/built-like? :Point nopoint) => false))
+
+(fact "timbre-define-2"
+  (let [point {:x 2 :y 2}
+        nopoint {}]
+    (tv2/built-like :Point point) => point
+    (tv2/all-built-like :Point [point]) => [point]
+    (tv2/<>built-like point :Point) => point
+    (tv2/<>all-built-like [point] :Point) => [point]
+    (tv2/built-like? :Point point) => true
+
+    (val-and-output (tv2/built-like :Point nopoint)) => (just nil anything)
+    (val-and-output (tv2/all-built-like :Point [nopoint])) => (just nil anything)
+    (val-and-output (tv2/<>built-like nopoint :Point)) => (just nil anything)
+    (val-and-output (tv2/<>all-built-like [nopoint] :Point)) => (just nil anything)
+    (tv2/built-like? :Point nopoint) => false))
+


Use throwaway event chans to isolate 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/democracyworks/election-notification-works.git/'


Index bideetan sartu

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


v1 url oinarri gisa erabili

v1 url oinarri gisa erabili

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


07 more readable in clojure

07 more readable in clojure

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

--- Problem007/Clojure/solution_2.clj
+++ Problem007/Clojure/solution_2.clj
@@ -0,0 +1,20 @@
+(defn prime? [n]
+  (= 1 (->> (range 1 (inc (Math/sqrt n)))
+            (map (partial rem n))
+            (filter (partial = 0))
+            (count))))
+
+(defn next-prime
+  [n]
+  (loop [candidate n]
+    (if (prime? candidate)
+      candidate
+      (recur (+ candidate 1)))))
+
+(defn prime-seq
+  ([] (prime-seq 2))
+  ([n] (cons n (lazy-seq (prime-seq (next-prime (+' 1 n )))))))
+
+(str (last (take 10001 (prime-seq))))
+
+


testing

testing

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

--- src/cljs/russyll/usertest_test.cljs
+++ src/cljs/russyll/usertest_test.cljs
@@ -0,0 +1,29 @@
+(ns usertest_test
+         (:require-macros [cemerick.cljs.test
+                           :refer (is deftest is with-test run-tests testing test-var)])
+         (:require        [cemerick.cljs.test :as t])
+  (:use
+   [usertest :only [calc-stats]
+    ]
+   ;; [orphoep :only [unpal-e hard-pron cluster-assim
+   ;; end-assim reg-assim-repl reg-pal
+   ;; ogo-ovo chto-trans dash-rep dubcon
+   ;; orpho-single --]]
+   ))
+
+(def words {"подмоск*овный" "по-дмо-ск*о-вный" ;[0 1 1 0 0]
+            "волш*ебный" "вол-ш*еб-ный" ;[0 0 0 1 0]
+            "контр*актный" "кон-тр*акт-ный" ;[0 0 0 1 0]
+            "карт*ошка"  "кар-т*ош-ка" ;[0 0 0 0 1]
+            "конц*епция" "кон-ц*еп-ци-я" ;[0 0 0 1 0]
+            "к*арточка" "к*ар-точ-ка" ;[0 0 0 0 1]
+            "комф*ортно" "ком-ф*орт-но" ;[0 0 0 1 0]
+            "нарком*анка" "на-рко-м*ан-ка" ;[1 0 0 0 1]
+            }
+  )
+(deftest stats-t
+  (testing "The correctness of stats"
+    (do (is (= [1 1 1 4 2] (calc-stats words))))
+    ))
+
+;;;;;;;;;;;; This file autogenerated from test/cljx/usertest_test.cljx


add basic example on how to test a pipeline

error: pathspec 'test/clj/lambdacd/example/pipeline_test.clj' did not match any file(s) known to git

--- test/clj/lambdacd/example/pipeline_test.clj
+++ test/clj/lambdacd/example/pipeline_test.clj
@@ -0,0 +1,17 @@
+(ns lambdacd.example.steps-test
+  (:require [clojure.test :refer [deftest testing is]]
+            [conjure.core :as c]
+            [lambdacd.steps.git :as git]
+            [todopipeline.steps :as steps]
+            [todopipeline.pipeline :as pipeline]
+            [lambdacd.steps.shell :as shell]
+            [lambdacd.internal.execution :as execution]
+            [lambdacd.testsupport.data :refer [some-ctx]]))
+
+(deftest todopipeline-test
+  (testing "a successful pipeline run" ; this isn't a particularly interesting test but it's a start
+    (c/stubbing [git/wait-with-details {:status :success}
+                 shell/bash {:status :success
+                             :exit 0}]
+                (is (= :success (:status (execution/run pipeline/pipeline-def (some-ctx)))))
+                (is (c/verify-called-once-with-args shell/bash )))))


Expose Filtered DBs API to js

Expose Filtered DBs API to js

--- src/datascript/js.cljs
+++ src/datascript/js.cljs
@@ -1,4 +1,5 @@
 (ns datascript.js
+  (:refer-clojure :exclude [filter])
   (:require
     [datascript :as d]
     [datascript.core :as dc]
@@ -87,6 +88,7 @@
 (def ^:export entity    d/entity)
 (def ^:export touch     d/touch)
 (def ^:export entity_db d/entity-db)
+(def ^:export filter d/filter)

 (defn ^:export create_conn [& [schema]]
   (d/create-conn (schema->clj schema)))
@@ -108,7 +110,7 @@

 (defn ^:export resolve_tempid [tempids tempid]
   (aget tempids (str tempid)))
-
+
 (defn ^:export datoms [db index & components]
   (->> (apply d/datoms db (keywordize index) components)
        into-array))


added 57 task

added 57 task

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


Refactor towards purer components

Refactor towards purer components

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


Adds revision `procedures` link

Adds revision `procedures` link

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-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/'


First sketch of network model.

First sketch of network model.

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

--- src/cbfg/net.cljs
+++ src/cbfg/net.cljs
@@ -0,0 +1,49 @@
+(ns cbfg.net
+  (:require-macros [cbfg.ago :refer [achan-buf ago ago-loop aalts
+                                     aput aput-close atake]]))
+
+(defn make-net [actx request-listen-ch request-connect-ch max-msgs-per-stream]
+  (let [clean-up #()]
+    (ago-loop net actx
+              [ts 0
+               request-listen-ch request-listen-ch
+               request-connect-ch request-connect-ch
+               listens {} ; Keyed by [addr port], value is accept-ch.
+               streams {}] ; A conn is represented by dual streams, where streams
+                           ; is keyed by send-ch and a value of...
+                           ; {:send-addr :send-port :send-ch
+                           ;  :recv-addr :recv-port :recv-ch
+                           ;  :accept-addr :accept-port
+                           ;  :msgs :tot-msgs}.
+              (let [deliveries (mapcat (fn [send-ch stream]
+                                         (when-let [[deliver-at msg] (first (:msgs stream))]
+                                           (when (>= ts deliver-at)
+                                             [[(:recv-ch stream) (first (:msgs stream))]])))
+                                       streams)
+                    sendables (mapcat (fn [send-ch stream]
+                                       (when (< (count (:msgs stream)) max-msgs-per-stream)
+                                         [(:send-ch stream)]))
+                                      streams)
+                    listenables (vals listens) ; TODO: Handle too many ports case.
+                    [v ch] (aalts net (vec (concat [request-listen-ch request-connect-ch]
+                                                   deliveries sendables listenables)))]
+                (cond
+                 (= ch request-listen-ch)
+                 (when-let [[addr port accept-ch] v]
+                   (if (get listens [addr port])
+                     (recur (inc ts) request-listen-ch request-connect-ch listens streams)
+                     (recur (inc ts) request-listen-ch request-connect-ch listens streams)))
+                 (= ch request-connect-ch)
+                 (when v
+                   (recur (inc ts) request-listen-ch request-connect-ch listens streams))
+                 (contains? listenables ch)
+                 (if v
+                   (recur (inc ts) request-listen-ch request-connect-ch listens streams)
+                   (recur (inc ts) request-listen-ch request-connect-ch listens streams))
+                 (contains? sendables ch)
+                 (if v
+                   (recur (inc ts) request-listen-ch request-connect-ch listens streams)
+                   (recur (inc ts) request-listen-ch request-connect-ch listens streams))
+                 :else ; Must be a deliverable.
+                 (recur (inc ts) request-listen-ch request-connect-ch listens streams))))))
+


clean up duplicated logic

clean up duplicated logic


quicksort test comparison ; just random/test

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

--- src/temporary/tests/sorttest.clj
+++ src/temporary/tests/sorttest.clj
@@ -0,0 +1,144 @@
+(ns temporary.tests.sorttest)
+;sources from here: http://rosettacode.org/wiki/Sorting_algorithms/Quicksort#Clojure
+;and here: https://clojurefun.wordpress.com/2012/08/29/a-fast-quicksort-in-clojure/
+;and here: http://java.dzone.com/articles/benchmarking-scala-against
+
+
+;public static void quickSort(int[] array, int left, int right) {
+;    if (right <= left) {
+;        return;
+;    }
+;    int pivot = array[right];
+;    int p = left;
+;    int i = left;
+;    while (i < right) {
+;        if (array[i] < pivot) {
+;            if (p != i) {
+;                int tmp = array[p];
+;                array[p] = array[i];
+;                array[i] = tmp;
+;            }
+;            p += 1;
+;        }
+;        i += 1;
+;    }
+;    array[right] = array[p];
+;    array[p] = pivot;
+;    quickSort(array, left, p - 1);
+;    quickSort(array, p + 1, right);
+;}
+
+(def howmany ;10000)
+  1000000)
+
+(def lowrange1 1)
+(def highrange1 (+ lowrange1 (* 20 howmany)))
+
+(defn randrange [lowrange highrange]
+  (+ (rand-int (- (+ 1 highrange) lowrange)) lowrange))
+
+(defn randrange1 [] (randrange lowrange1 highrange1))
+
+(def rands (repeatedly randrange1))
+
+(defn qsort [L]
+  (if (empty? L)
+      '()
+      (let [[pivot & L2] L]
+           (lazy-cat (qsort (for [y L2 :when (<  y pivot)] y))
+                     (list pivot)
+                     (qsort (for [y L2 :when (>= y pivot)] y))))))
+
+(defn qsort2 [[pvt & rs]]
+  (if pvt
+    `(~@(qsort (filter #(<  % pvt) rs))
+      ~pvt
+      ~@(qsort (filter #(>= % pvt) rs)))))
+
+(defn qsort3 [[pivot & xs]]
+  (when pivot
+    (let [smaller #(< % pivot)]
+      (lazy-cat (qsort (filter smaller xs))
+		[pivot]
+		(qsort (remove smaller xs))))))
+
+(defn qsort4 [[pvt :as coll]]
+  (when pvt
+    (let [{left -1 mid 0 right 1} (group-by #(compare % pvt) coll)]
+      (lazy-cat (qsort3 left) mid (qsort3 right)))))
+
+(defn qsort5 [[pivot :as coll]]
+  (when pivot
+    (lazy-cat (qsort (filter #(< % pivot) coll))
+              (filter #{pivot} coll)
+              (qsort (filter #(> % pivot) coll)))))
+
+;(def quicksort qsort)
+
+;(time (quicksort (take howmany rands)))
+
+(set! *unchecked-math* true)
+
+(defmacro swap [a i j]
+ `(let [a# ~a
+        i# ~i
+        j# ~j
+        t# (aget a# i#)]
+    (aset a# i# (aget a# j#))
+    (aset a# j# t#)))
+
+(defmacro apartition [a pivot i j]
+ `(let [pivot# ~pivot]
+    (loop [i# ~i
+           j# ~j]
+      (if (<= i# j#)
+        (let [v# (aget ~a i#)]
+          (if (< v# pivot#)
+            (recur (inc i#) j#)
+            (do
+              (when (< i# j#)
+                (aset ~a i# (aget ~a j#))
+                (aset ~a j# v#))
+              (recur i# (dec j#)))))
+        i#))))
+
+(defn qsort6
+  ([^longs a]
+    (qsort a 0 (alength a)))
+  ([^longs a ^long lo ^long hi]
+    (let [lo (int lo)
+          hi (int hi)]
+      (when
+        (< (inc lo) hi)
+        (let [pivot (aget a lo)
+              split (dec (apartition a pivot (inc lo) (dec hi)))]
+          (when (> split lo) (swap a lo split))
+            (qsort a lo split)
+            (qsort a (inc split) hi)))
+      a)))
+
+
+(def allqs [qsort qsort2 qsort3 qsort4 qsort5])
+
+(defn do_all [listoffunx forarray]
+  (loop [
+         f1 (first listoffunx)
+         rest1 (rest listoffunx)
+;         currentIndex
+         ]
+    (time (doall (f1 forarray)))
+    (cond (not-empty rest1)
+      (recur (first rest1) (rest rest1))
+      )
+  )
+)
+
+;(do_all allqs (take howmany rands))
+
+(def xs (let [rnd (java.util.Random.)]
+  (long-array (repeatedly howmany #(.nextLong rnd)))))
+
+(dotimes [i 10]
+  (let [ys (long-array xs)]
+    (time (last (qsort ys)))))
+


just extract the auth token from env instead of a map

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


JSON-decoded events now have correct timestamps.

Millseconds are not seconds.

--- src/riemann/common.clj
+++ src/riemann/common.clj
@@ -77,9 +77,11 @@
 (defn iso8601->unix
   "Transforms ISO8601 strings to unix timestamps."
   [iso8601]
-  (->> iso8601
-    (clj-time.format/parse (:date-time-parser clj-time.format/formatters))
-    (clj-time.coerce/to-long)))
+  (-> (->> iso8601
+          (clj-time.format/parse (:date-time-parser clj-time.format/formatters))
+          (clj-time.coerce/to-long))
+      (/ 1000)
+      long))

 ; Events
 (defn post-load-event


GET-ak entzun bidez

GET-ak entzun bidez


Erregistratzean profilera joan

Erregistratzean profilera joan


Add lein user profile.

Add lein user profile.

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

--- .lein/profiles.clj
+++ .lein/profiles.clj
@@ -0,0 +1 @@
+{:user {:plugins [[lein-lobos "1.0.0-beta1"]]}}


Add styling of 3 main horizontal bars so that...

... the first horizontal bar - the one on the left, which will eventally
become the list of lists, settings and so on - has a static horizontal
size regardless of what happens with the others. The one on the right,
the item details, will have a static size when popping in. The one in
the center, which is the list in focus, will take up the remaining
horizontal space.


Added a little something else

Added a little something else

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


fix failing tests

fix failing tests

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


[EN] transform routing code

[EN] transform routing code

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


Early work towards random sentence generator IRC bot.

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

--- Clojure/spraff.clj
+++ Clojure/spraff.clj
@@ -0,0 +1,23 @@
+; :mode=clojure:
+
+;(def input-corpus (slurp "input.txt"))
+
+(def sentence-delimiter-pattern #"\.\s")
+
+(def word-extractor-pattern #"\w+")
+
+(defn split
+    [s re]
+    (vec (.split re s)))
+
+(defn extract
+    [s re]
+    (let [
+        m (.matcher re s)
+        f (fn [r] (if (.find m) (recur (conj r (.group m))) r))
+        ]
+    (f [])))
+
+(map #(extract % word-extractor-pattern) (split "This is a test. This is another." sentence-delimiter-pattern))
+
+


add a few tests to start

add a few tests to start

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

--- test/babel/test/es.clj
+++ test/babel/test/es.clj
@@ -0,0 +1,28 @@
+(ns babel.test.es
+  (:refer-clojure :exclude [get-in])
+  (:require [babel.engine :as engine]
+            [babel.english :as en]
+            [babel.espanol :as es]
+            [babel.espanol.morphology :refer [fo]]
+            [babel.writer :as writer]
+            [clojure.string :as string]
+            [clojure.test :refer :all]
+            [clojure.tools.logging :as log]
+            [dag-unify.core :refer [get-in]]))
+
+
+(deftest generate-conditional
+  (let [result (engine/generate {:synsem {:subcat '()
+                                          :sem {:pred :dormire
+                                                :subj {:pred :io}
+                                                :tense :conditional}}}
+                                es/small
+                                :enrich true)]
+    (is (= :1st (get-in result [:comp :synsem :agr :person])))
+    (is (= :sing (get-in result [:comp :synsem :agr :number])))
+    (is (= "yo dormiría" (fo result)))))
+
+
+
+
+