Skip to content

Instantly share code, notes, and snippets.

View hiredman's full-sized avatar

Kevin Downey hiredman

View GitHub Profile
;; use spec to define stateful protocols inspired by UBF(b)
;; https://ubf.github.io/ubf/ubf-user-guide.en.html
(require '[clojure.spec.alpha :as s]
'[clojure.core.async :as async])
(defn ubfish
"Takes a protocol definition and four channels. Checks for protocol
violations while copying from-server to-client and from-client
to-server."
(defn header-encoder% [client-channel]
(let-cont%
[header-encode-service (return% (cml/channel))
_ (fork%
(let-cont%
[ten (label%)
frame (sync% (cml/rx header-encode-service))
_ (if (cml/event? frame)
(let-cont%
[eleven (label%)
(ns deployer
(:require [clojure.tools.deps.alpha :as deps]
[clojure.tools.deps.alpha.reader :as reader]
[clojure.java.io :as io]
[clojure.string :as string])
(:import (java.security MessageDigest)
(com.jcraft.jsch JSch)
(java.net URI)))
(def hex-alphabet (vec "0123456789ABCDEF"))
(defn unfold [continue? producer seed]
(reify
clojure.core.protocols/CollReduce
(coll-reduce [_ f]
(loop [init seed
seed seed]
(if (reduced? init)
@init
(if (continue? seed)
(let [next (producer seed)]
(delete-other-windows)
(let* ((left-window (selected-window))
(right-top-window (split-window-right))
(_ (select-window right-top-window))
(right-bottom-window (split-window-below)))
(progn
(select-window left-window)
(find-file "~/src/thursday/thursday.clj")
(select-window right-top-window)

The Problems With Clojure AOT Compilation.

  1. The name is not clear.
    • The name is short hand for something, but it can easily be bandied about and ends up being used without understanding what it signifies.
    • The compilation model
      • reader
      • compiler
        • not interpreted
#!/bin/sh
VPN_IF="wg0"
LAN_IF="eno1"
MAPPED="192.168.38.1/24"
LAN="192.168.1.0/24"
VPN="10.20.40.0/24"
ifconfig eno1 add 192.168.1.27
(require '[clojure.core.async.impl.protocols :as impl]
'[clojure.core.async.impl.dispatch :as dispatch]
'[clojure.core.async.impl.channels :as c]
'[clojure.core.async :as async])
;;=> nil
(defn wait [watchable expected?]
(reify
impl/ReadPort
@hiredman
hiredman / q.clj
Last active November 27, 2019 18:08
(defn message-queue-read-port [take-message ack-message nack-message]
(let [q (java.util.concurrent.LinkedBlockingQueue.)]
(async/thread
(loop [msg nil
handler nil]
(cond (and msg handler)
(let [_ (.lock handler)
take-cb (when (and (clojure.core.async.impl.protocols/active? handler)
(clojure.core.async.impl.protocols/commit handler))
handler)
user=> (require '[clojure.core.async :as async])
nil
user=> (def ^java.net.Socket s nil)
#'user/s
user=> (defn f [] (async/go (.getOutputStream s)))
#'user/f
user=> (defn f [] (async/go (try (.getOutputStream s) (catch Exception e nil))))
#'user/f
user=>