Skip to content

Instantly share code, notes, and snippets.

(ns com.widdindustries.minimal-ssl-context
(:import (java.security SecureRandom)
(javax.net.ssl SSLContext X509ExtendedTrustManager)))
(let [context (SSLContext/getInstance "TLS")]
(.init context nil
(into-array [(proxy [X509ExtendedTrustManager] []
(checkClientTrusted [& _])
(checkServerTrusted [& _]))])
@henryw374
henryw374 / tanstack-importmap-demo.js
Created November 7, 2023 16:50
tanstack react-router no build step
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>demo</title>
</head>
<body>
<div id="app" style="min-height:100%">
Hello world!
@henryw374
henryw374 / rounding_numbers.cljc
Last active September 23, 2023 10:59
teaching my children how to get a computer to do their maths homework
(ns rounding-numbers
"teaching my child how to get a computer to do their maths homework"
)
(defn round-number [original round-to]
(let [small-bit (mod original round-to)
round-up? (>= small-bit (* 5 (/ round-to 10)))
medium-bit (mod original (* 10 round-to))
number-that-goes-up-or-stays-the-same (- medium-bit small-bit)
big-bit (- original medium-bit)]
(ns com.widdindustries.kaocha-cljs2-ns-pattern-hook
"the only way I can find to filter kaocha-cljs2 tests by pattern. see comment block for usage"
(:require [kaocha.core-ext :as core-ext]
[kaocha.load :as load]))
(defn ns-filter [plan]
;(def plan plan)
;(println "About to start loading!")
(update plan :kaocha.test-plan/tests
(ns protocol-proxy
"for when you have an object foo, which satisfies some protocols and you want to make adhoc changes to
one or more of the protocol methods, but just on foo.
Can be handy for testing.
"
(:refer-clojure :exclude [proxy])
(:require [clojure.string :as string]))
;(remove-ns 'protocol-proxy)
(ns async-play
(:require [manifold.stream :as ms]
[clojure.core.async :as a]))
(comment ; memory leak. puts are queued up indefinitely
(def s (ms/stream))
(dotimes [n 100]
(ms/put! s n))
(ms/consume println s)
(ns contiguous-spans
"takes pre-sorted dates and returns contiguous periods contained therein.
see comment block for demo
"
(:require [tick.core :as t]))
(defn contiguous-spans
"takes pre-sorted dates and returns contiguous periods contained.
dates a and b are contiguous if a plus span-length is equal to b "
@henryw374
henryw374 / kroki-read.bb
Last active July 4, 2022 17:50
encode and decode files as kroki url diagrams https://kroki.io/#try
#!/usr/local/bin/bb
(import '[java.io ByteArrayOutputStream])
(import '[java.util Base64]) ;
(import '[java.util.zip Inflater]) ;
(defn uncompress [source-bytes]
(let [inflater (doto (Inflater.)
(.setInput source-bytes))
outputStream (new ByteArrayOutputStream (count source-bytes))
@henryw374
henryw374 / adhoc_file_server.bb
Last active July 5, 2022 09:51
babashka adhoc file server
#!/usr/bin/env bb
; run the script from any dir to serve its files
(require '[babashka.deps])
(def deps '{:deps {io.github.babashka/http-server
{:git/sha "b38c1f16ad2c618adae2c3b102a5520c261a7dd3"}}})
(babashka.deps/add-deps deps)
@henryw374
henryw374 / same_thread_executor.clj
Created June 8, 2022 08:18
clojure executorservice concurrency testing
(ns same-thread-executor
"handy in unit tests to have things happen straight away"
(:import (java.util.concurrent ExecutorService Future)))
(defn executor []
(reify ExecutorService
(^Future submit [_ ^Callable f]
(let [r (f)]
(reify Future
(get [_] r))))))