Skip to content

Instantly share code, notes, and snippets.

View kennethkalmer's full-sized avatar

Kenneth Kalmer kennethkalmer

View GitHub Profile
(ns user
(:require [clojure.core.async :as async :refer [<! <!! go-loop]]))
;; Use an agent to print so we don't clobber the output during async prints
(def printer (agent nil))
(defn report [& s]
(send printer
(fn [_]
(apply println s))))
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'ember-cli-nouislider'

Upload component


Based heavily on [s3-beam][1], but uses re-frame events/subs to get the job done. The /sign handler is the [s3-beam][1] handler (near verbatim).

For background on (ui.core/component "...") see

ui.ajax is just thin wrappers and/or aliases around plumbing from ajax.core from cljs-http

kennethkalmer /
Last active October 12, 2016 15:53
Draft for announcement via @channel in #general

Hi everyone! Apologies for popping into your notifications/inbox so soon again but we have some important news to share with you! We're merging with the ZA Tech Slack team!

A lot of you knew about the much larger ZA Tech Slack team, and ~200 of you (25%) are in both teams already. The admins there have managed to register a non-profit and get access to a better Slack experience than we have, including full history!

As the stewards of this community we've decided that a merger makes more sense than running competing communities, and as such we're officially anouncing that this team is deprecated and will be shut down by the end of the year in favour of a larger and more united local community. All we've done is not lost, they share a lot of our same values and we've been working hard the last few days to smooth out some differences in the way the communities are run.

If this catches you by surprise, we're sorry! We've already been through a few days of migrating the existing channels over and having discu

kennethkalmer / invite-to-code-of-conduct.clj
Created August 13, 2016 15:02
Simple clojure code used to invite all the members of the ZA Developer slack team into a specific channel to discuss amendments to the code-of-conduct :)
(require 'clj-slack.users)
(require 'clj-slack.channels)
(def connection {:api-url "" :token "TOKEN"})
;; Get all the users and channels
(def users (clj-slack.users/list connection))
(def channels (clj-slack.channels/list connection))
;; Find the channel we care about
condition did not pass in 5.0 seconds (failed with exception)
geb.waiting.WaitTimeoutException: condition did not pass in 5.0 seconds (failed with exception)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
at java.lang.reflect.Constructor.newInstance(
at org.codehaus.groovy.reflection.CachedConstructor.invoke(
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(
kennethkalmer /
Last active August 29, 2015 14:16
Temporary node proxy while ember toolchain fixes the bugs with theirs

Simple proxy

$ git clone proxy
$ cd proxy
$ npm install
$ node proxy.js


kennethkalmer /
Last active January 2, 2021 11:06
Simple start with InfluxDB & Grafana using Travis as a source of historical data

InfluxDB & Grafana starter pack

Simple example of how easy it is to jam numbers into InfluxDB and graph something with Grafana. I choose to use Travis as a source of historical time-series data.


Get InfluxDB installed with Homebrew

$ brew install influxdb
diff --git a/audited-activerecord.gemspec b/audited-activerecord.gemspec
index 089c94a..2a1e86e 100644
--- a/audited-activerecord.gemspec
+++ b/audited-activerecord.gemspec
@@ -20,6 +20,7 @@ do |gem|
gem.files = `git ls-files lib`.split($\).grep(/(active_?record|generators)/)
gem.files << 'LICENSE'
+ gem.test_files = `git ls-files -- {test,spec}/*`.split($\).reject { |f| f =~ /mongo_mapper/ }
gem.require_paths = ['lib']

Keybase proof

I hereby claim:

  • I am kennethkalmer on github.
  • I am kennethkalmer ( on keybase.
  • I have a public key whose fingerprint is 9970 D42A 6E04 2612 1DD0 BF99 7EC6 DBDB 18C5 AFDD

To claim this, I am signing this object: