Skip to content

Instantly share code, notes, and snippets.

@shalicke
shalicke / keybase.md
Created March 22, 2014 16:08
keybase.md

Keybase proof

I hereby claim:

  • I am shalicke on github.
  • I am samhalicke (https://keybase.io/samhalicke) on keybase.
  • I have a public key whose fingerprint is D817 73D8 D2FA E35F B63A B873 16D5 5B3B D140 F197

To claim this, I am signing this object:

@shalicke
shalicke / sortedmapreduce.clj
Last active December 23, 2015 15:59
reducing into a sorted map, dropping if we have seen before
(def id-vec [{:id 1, :rec "one-rec"}, {:id 1, :rec "two-rec"}, {:id 2, :rec "red-rec"}, {:id 2 :rec "blue-rec"}])
(reduce
(fn [m {:keys [id] :as orig}]
(if (contains? m id) m (assoc m id orig)))
(sorted-map)
id-vec)
; {1 {:id 1, :rec "one-rec"}, 2 {:id 2, :rec "red-rec"}}
@shalicke
shalicke / tcp.clj
Created September 7, 2013 12:02
reactor-tcp prototype
(ns clojurewerkz.meltdown.tcp
"Functions for creating a tcp server either in a new reactor or existing one."
(:require [clojurewerkz.meltdown.reactor :as mr
:refer [create maybe-wrap-event environment dispatcher-types]]
[clojurewerkz.meltdown.consumers :as mc
:refer [from-fn]]
[taoensso.timbre :as timbre :refer [info]])
(:import [reactor.core Reactor Environment]
[reactor.core.spec Reactors]
[reactor.tcp TcpConnection TcpServer]
@shalicke
shalicke / aleph-simple.clj
Created September 5, 2013 23:16
simple aleph tcp server control.
; The server-start call returns a function that when called, stops the server.
; So we store it in an atom and call it's deref'd value to stop. Yay.
(def ^:dynamic *tcp-server* (atom nil))
(defn start-server
([] (start-server {:port 5555 :handler tcp-handler}))
([{:keys [port handler]}]
(reset! *tcp-server* (start-tcp-server handler {:port port}))))
@shalicke
shalicke / htmogrify.clj
Created August 31, 2013 21:14
A nice little util I wrote for hiccup-izing the bootstrap examples, yay for rapid prototyping.
(ns htmogrify.core
(:require [clj-http.client :as c]
[me.raynes.laser :as l]
[hickory.core :as h :refer :all]
[clojure.pprint :as pp :refer :all]
[clojure.java.io :as io :refer :all]
[clojure.string :as str]))
(defn pull-clean [url]
(-> url
@shalicke
shalicke / clojure-fizzbuzz.clj
Created August 30, 2013 10:45
the head-wrapping around clojure is starting to take hold.
(defn by-n? [n x]
(if (= (rem x n) 0)
true
false))
; (def n-test (by-n? 5 5))
; (def n-test (by-n? 3 7))
(defn fizzy? [n]
(cond (by-n? 15 n) (str "FizzBuzz")
(def server-state (atom nil))
(defmulti server-control identity)
(defmethod server-control :start
[& config]
(if @server-state
(println "START: Aborting, already initialized. Use :restart")
(let [handler (:handler config)]
(println "START: Starting server...")
(swap! server-state (fn [_] (start-tcp-server handler {:port 3000})))
(println "START: Startup complete"))))
@shalicke
shalicke / gist:6126526
Created July 31, 2013 21:51
ansible template + application god script
#!/usr/bin/env ruby
# vim: ft=ruby
#
RAILS_ROOT='{{webapp_base_dir}}/{{app_name}}'
STATE = "#{RAILS_ROOT}/log/puma.state"
SOCK = "{{puma_sock}}"
God.watch do |w|
w.name = '{{app_name}}'
@shalicke
shalicke / ansible_functions.sh
Last active June 8, 2022 21:15
Various ansible-related notes and helpers.
arole () {
local rolename=$1
if [[ -e $SS_ANSIBLE_HOME/roles/$rolename ]]
then
echo "Role $rolename exists. Changing dir."
cd $SS_ANSIBLE_HOME/roles/$rolename
return 0
fi
echo "Creating role $1..."
cd $SS_ANSIBLE_HOME/roles
# user ssh config file for jump/bridge hosts
HashKnownHosts no
Host *
GSSAPIAuthentication no
ForwardAgent no
Host bridge.yourdomain.com
IdentityFile ~/.ssh/productionkey.pem