Skip to content

Instantly share code, notes, and snippets.

View whamtet's full-sized avatar

Matthew Molloy whamtet

  • Tokyo
View GitHub Profile
(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
@whamtet
whamtet / open.cljs
Last active December 6, 2021 13:20
#!/opt/homebrew/bin/planck
(require '[planck.core :refer [*in* slurp]])
(require '[planck.shell :refer [sh]])
(defn round-nth [s i]
(nth s (mod i (count s))))
(let [to-open
(as-> *in* $
(slurp $)
(ns analyze.spit-sheets)
(import com.google.api.services.sheets.v4.SheetsScopes)
(require 'google-apps-clj.credentials)
(require '[google-apps-clj.google-sheets-v4 :as gs4])
(def scopes [SheetsScopes/DRIVE SheetsScopes/SPREADSHEETS])
(def creds (google-apps-clj.credentials/default-credential scopes))
;(println (gd/list-files! creds "0BxDSmBQ-JH6xLTZ5R3psbkUzNEE"))
(def service (gs4/build-service creds))
;compile "ring:ring-core:1.5.0"
;compile "ring:ring-servlet:1.5.0"
;compile "ring:ring-defaults:0.2.1"
;compile "org.clojure:tools.nrepl:0.2.12"
;compile "org.clojure:clojure:1.8.0"
(require '[ring.util.servlet :as servlet])
(defn merge-servlet-keys [request-map servlet-context request response]
(merge request-map