Skip to content

Instantly share code, notes, and snippets.

View whamtet's full-sized avatar

Matthew Molloy whamtet

  • Tokyo
View GitHub Profile
@whamtet
whamtet / svg.cljs
Created January 20, 2022 05:55
Preprocess svgs
#!/opt/homebrew/bin/planck
(require '[planck.core :refer [*in* slurp]])
(require '[clojure.string :as string])
(require '[cljs.reader :refer [read-string]])
(def in (slurp *in*))
(def subsections
(map second
(re-seq #"d=\"([^\"]+)" in)))
is_debug = false # To get a release build
target_cpu = "arm64"
v8_target_cpu = "arm64"
is_clang = false # To build with GCC instead of clan
treat_warnings_as_errors = false
is_component_build=true
use_custom_libcxx=false
;; deploy to clojars
{:auth {:repository-auth {#"clojars" {:username "whamtet" :password "app-pw"}}}
;; then go lein deploy clojars
(defn flatten-all [m] (->> m (tree-seq coll? seq) (remove coll?)))
(defn- pluralize [todo last-num done]
(if (empty? todo)
done
(let [[f & r] todo]
(recur
r
(if (number? f) f last-num)
(conj done
(if (coll? f)
((if (= 1 last-num) first second) f)
@whamtet
whamtet / htmx-files.js
Created January 28, 2021 16:24
Keep selected files
var files;
htmx.defineExtension('file', {
onEvent: function(type, evt) {
if (type === 'htmx:beforeSwap') {
files = htmx.findAll(evt.target, 'input[type="file"]');
}
if (type === 'htmx:afterSwap') {
for (file of files) {
const target = document.getElementsByClassName(file.className)[0];
sudo ifconfig lo0 alias 127.0.0.2
@whamtet
whamtet / primes.clj
Last active February 16, 2021 18:14
(defn next-prime
([] (concat [2 3] (next-prime [2 3])))
([primes]
(loop [candidate (-> primes peek (+ 2))]
(if (->> primes
(take-while #(<= % (Math/sqrt candidate)))
(some #(zero? (mod candidate %))))
(recur (+ candidate 2))
(lazy-seq (cons candidate (next-prime (conj primes candidate))))))))
#!/usr/local/bin/planck
(require '[planck.core :refer [*in* slurp]])
(require '[planck.shell :refer [sh]])
(->> "ifconfig"
sh
:out
(re-find #"inet (192\S+)")
second
(sh "pbcopy" :in))
using clojure.lang;
IFn load = clojure.clr.api.Clojure.var("clojure.core", "load-string");
load.invoke("(clojure.core.server/start-server {:port 5555 :name \"repl\" :accept 'clojure.core.server/repl})" +
"(println \"serving!\")");
// telnet localhost 5555