Skip to content

Instantly share code, notes, and snippets.

View jarohen's full-sized avatar
⚒️

James Henderson jarohen

⚒️
View GitHub Profile
@jarohen
jarohen / rafting.clj
Last active September 12, 2023 16:12
A quick hack at actually implementing the Raft algorithm to aid my learning - thanks @bbengfort and @krisajenkins for the podcast!
(ns rafting
(:require [clojure.tools.logging :as log])
(:import java.lang.AutoCloseable
(java.util.concurrent CompletableFuture Executors TimeUnit)))
(defn new-timeout-ms []
(+ (System/currentTimeMillis)
200
(rand-int 150)))
(let [bytes (with-open [os (java.io.ByteArrayOutputStream.)
oos (java.io.ObjectOutputStream. os)]
(.writeObject oos false)
(.toByteArray os))]
(with-open [is (java.io.ByteArrayInputStream. bytes)]
(if (.readObject (java.io.ObjectInputStream. is))
:truthy
:falsy))) ; => :truthy
@jarohen
jarohen / blog.service
Created June 7, 2013 06:35
Lein Systemd Service Spec
[Unit]
Description=Website
[Service]
Environment=NOMAD_INSTANCE=PROD
Type=simple
ExecStart=/home/james/bin/lein trampoline run
Restart=always
User=james
WorkingDirectory=/srv/james/src/website
clojure-agent-send-off-pool-3" #24 prio=5 os_prio=0 tid=0x00007f270800b000 nid=0xea3 runnable [0x00007f270eabf000]
java.lang.Thread.State: RUNNABLE
at clojure.lang.Numbers$LongOps.lt(Numbers.java:521)
at clojure.lang.Numbers.gt(Numbers.java:229)
at mranderson046.toolsreader.v0v10v0_alpha3.clojure.tools.reader.reader_types.StringReader.read_char(reader_types.clj:51)
at mranderson046.toolsreader.v0v10v0_alpha3.clojure.tools.reader.reader_types.PushbackReader.read_char(reader_types.clj:86)
at mranderson046.toolsreader.v0v10v0_alpha3.clojure.tools.reader.edn$read_token.invoke(edn.clj:60)
at mranderson046.toolsreader.v0v10v0_alpha3.clojure.tools.reader.edn$read_token.invoke(edn.clj:41)
at mranderson046.toolsreader.v0v10v0_alpha3.clojure.tools.reader.edn$read_symbol.invoke(edn.clj:241)
at mranderson046.toolsreader.v0v10v0_alpha3.clojure.tools.reader.edn$read.invoke(edn.clj:373)
(:require [cljs.core.async :as a]
[dommy.core :as d]
[clidget.widget :refer [defwidget] :include-macros true])
(:require-macros [dommy.macros :refer [node]]
[cljs.core.async.macros :refer [go-loop]]))
(defwidget counter-widget [{:keys [counter]} events-ch]
(node
[:div
[:h2 "counter is now: " counter]
@jarohen
jarohen / handler.clj
Created December 21, 2013 22:35
Example Frodo handler
(ns your-app.handler
(:require [compojure.core :refer [routes GET]]
[compojure.handler :refer [api]]
[ring.util.response :refer [response]]))
(defn app-routes []
(let [system (init-system)]
(routes
(GET "/route/:id" [id]
(response (handle-get system id)))
@jarohen
jarohen / core.clj
Last active December 28, 2015 16:49 — forked from himerzi/core.clj
(ns weather.core
(:require [clj-http.client :as http]))
;; utility Functionsp
(def weather-api
"http://api.openweathermap.org/data/2.5/")
(defn weather-find [something]
(let [response (http/get (str weather-api "find")
{:query-params {:q something}
@jarohen
jarohen / .xmobarrc
Created October 30, 2013 08:29
XMonad conf - 2013-10-30
Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
, bgColor = "black"
, fgColor = "grey"
, position = Top
, allDesktops = True
, lowerOnStart = True
, commands = [ Run Weather "EGLC" ["-t","<station>: <tempC>C, <skyCondition>","-L","2","-H","25","--normal","green","--high","red","--low","blue"] 18000
, Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 5
, Run Memory ["-t","Mem: <usedratio>%"] 10
, Run DynNetwork ["-t", "<dev>: <rx> kB/<tx> kB "] 5
@jarohen
jarohen / init.el
Last active December 24, 2015 21:49
my emacs config
(require 'package)
(package-initialize)
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/") t)
(menu-bar-mode -1)
(if tool-bar-mode
@jarohen
jarohen / delete-objects.clj
Created September 27, 2013 10:22
Deleting all objects in an S3 bucket, from Clojure (probably in a very inefficient way - sorry.)
(loop []
(when-let [objs (seq (map :key (:objects (aws.sdk.s3/list-objects (aws-creds) bucket))))]
(println "Deleting 1000 objs")
(dorun (pmap #(aws.sdk.s3/delete-object (aws-creds) bucket %) objs))
(recur)))