Skip to content

Instantly share code, notes, and snippets.

View jcf's full-sized avatar
❤️

James Conroy-Finn jcf

❤️
View GitHub Profile
@jcf
jcf / datomic.clj
Created March 17, 2014 13:50
Tagging an EC2 instance in a Pallet crate
(defplan tag
[instance-id]
(let [settings (get-settings :datomic {:instance-id instance-id})]
(node/tag! (target-node) "Datomic Version" (:version settings))))
@jcf
jcf / error.clj
Created March 28, 2014 09:41
Require pallet-ec2 stacktrace
clojure.lang.Compiler$CompilerException: java.lang.UnsupportedOperationException: Unknown Collection type, compiling:(clojure/core/async/impl/protocols.clj:39)
at clojure.lang.Compiler.analyzeSeq (Compiler.java:6462)
clojure.lang.Compiler.analyze (Compiler.java:6262)
clojure.lang.Compiler.eval (Compiler.java:6508)
clojure.lang.Compiler.eval (Compiler.java:6500)
clojure.lang.Compiler.load (Compiler.java:6952)
clojure.lang.RT.loadResourceScript (RT.java:359)
clojure.lang.RT.loadResourceScript (RT.java:350)
clojure.lang.RT.load (RT.java:429)
clojure.lang.RT.load (RT.java:400)
@jcf
jcf / names.txt
Created May 25, 2014 23:56
Some customers of Fastly's SSL
'*.a.ssl.fastly.net', 'a.ssl.fastly.net', 'fast.wistia.com', 'purge.fastly.net', 'mirrors.fastly.net', '*.imgix.net', 'signin.epek.com', '*.parsecdn.com', '*.fastssl.net', 'voxer.com', 'www.voxer.com', '*.firebase.com', 'sites.yammer.com', 'sites.staging.yammer.com', '*.skimlinks.com', '*.skimresources.com', 'assets.wantful.com', 'cdn.thinglink.me', '*.fitbit.com', '*.hosts.fastly.net', 'control.fastly.net', '*.perfectaudience.com', '*.wikia-inc.com', '*.wikia.com', 'f.cloud.github.com', '*.digitalscirocco.net', '*.etsy.com', '*.etsystatic.com', '*.addthis.com', '*.addthiscdn.com', 'fast.wistia.net', 'raw.github.com', 'www.userfox.com', '*.assets-yammer.com', '*.staging.assets-yammer.com', 'assets.huggies-cdn.net', 'api.kinja.com', 'orbit.shazamid.com', 'about.jstor.org', '*.global.ssl.fastly.net', 'web.voxer.com', 'pypi.python.org', '*.12wbt.com', 'www.holderdeord.no', 'secured.indn.infolinks.com', 'play.vidyard.com', 'play-staging.vidyard.com', 'secure.img.wfrcdn.com', 'secure.img.josscdn.com', '*.gocardles
@jcf
jcf / place-details.http
Created June 3, 2014 09:34
Place search
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 602
Content-Type: application/vnd.listora.v1+json;profile="https://api.listora.com/schemas/place";charset=UTF-8
Date: Tue, 03 Jun 2014 09:31:38 GMT
Link: <https://api.listora.com/schemas/place>; rel="describedBy"
Server: http-kit
Strict-Transport-Security: max-age=31536000; includeSubdomains
Vary: Accept-Encoding
@jcf
jcf / setup.sh
Last active August 29, 2015 14:10
Setup Emacs on Travis CI
#!/bin/sh
export USER='ubuntu'
sudo mkdir /usr/local/evm
sudo chown $USER:$USER /usr/local/evm
export PATH="/home/$USER/.cask/bin:$PATH"
export PATH="/home/$USER/.evm/bin:$PATH"
@jcf
jcf / javascript_date_string.clj
Created February 24, 2015 13:10
Parse stringified Javascript Date with Joda and clj-time
(require '[clj-time.format :as f])
(def javascript-date-string-formatter
(f/formatter "EEE MMM dd YYYY HH:mm:ss zZ '('z')'"))
(f/parse javascript-date-string-formatter "Tue Feb 24 2015 13:09:43 GMT+0000 (GMT)")
;; => #<DateTime 2015-02-24T13:09:43.000Z>
@jcf
jcf / date.clj
Last active August 29, 2015 14:16
clj-time: Parse datetime string with many formats, and original time zone intact
(require '[clj-time.core :as t])
(require '[clj-time.format :as f])
(defn parse-date [s]
(.. (f/formatter (t/default-time-zone)
"YYYY-MM-dd'T'HH:mm:ss.SSSZZ"
"YYYY-MM-dd'T'HH:mm:ssZZ"
"YYYY-MM-dd HH:mm:ss ZZ"
"EEE MMM dd YYYY HH:mm:ss zZ '('z')'")
withOffsetParsed
@jcf
jcf / uuid.clj
Created April 1, 2015 18:51
Generate deterministic type-4 UUIDs with Clojure's test.check
(require '[clojure.string :as str])
(require '[clojure.test.check.generators :as gen])
(def gen-hex-char
(gen/elements (concat (map char (range (int \a) (int \f)))
(range 0 9))))
(defn gen-hex-string [len]
(gen/fmap str/join (gen/vector gen-hex-char len len)))
@jcf
jcf / cors.clj
Created June 5, 2015 14:12
CORS interceptors (use `:io.pedestal.http/allowed-origins` instead)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; CORS
(def ^:const ^:private allowed-cors-headers
(str/join ", " #{"Authorization"
"Content-Type"
"If-Match"
"If-Modified-Since"
"If-None-Match"
"If-Unmodified-Since"
@jcf
jcf / reference.clj
Created June 10, 2015 15:12
Prismatic schema for reference-types (deferrable) like atoms and futures.
(defrecord Reference [schema]
s/Schema
(walker [_]
(let [sub-walker (s/subschema-walker schema)]
(fn [x] (sub-walker @x))))
(explain [_] (list 'reference (s/explain schema))))
(defn reference
[schema]
(Reference. schema))