Skip to content

Instantly share code, notes, and snippets.

@qerub
qerub / lifx-sunrise-simulator.rb
Last active September 9, 2020 11:44
LIFX Sunrise Simulator
require "lifx" # http://www.rubydoc.info/gems/lifx
def calculate_color(i) # 0 <= i <= 1
h = [40 * 2 * i, 40].min # will be 40 (yellow) at i=1/2 and stay there
s = 1.0 - [(i - 0.5) * 2, 0].max # will be 1 until i=1/2 and then go down to 0
b = i
LIFX::Color.hsbk(h, s, b, LIFX::Color::KELVIN_MIN)
end
duration = 10 * 60 # seconds
@qerub
qerub / null-guard.sjs
Created April 18, 2014 23:36 — forked from aaronpowell/null-guard.sjs
The ?. operator from C# for JavaScript via Sweet.js
// This version allows LHS to be any expression
// (and makes sure it's only evaluated once by storing the result)
let (?.) = macro {
rule infix { $lhs:expr | $rhs:ident } => {
(function ($tmp) {
return $tmp === null ? null : $tmp.$rhs;
})($lhs)
}
}
@qerub
qerub / HttpsFilter.java
Last active November 6, 2022 00:12
Servlet filter for forcing HTTPS when behind a SSL termination proxy that sends X-Forwarded-Proto
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import static java.lang.String.format;
public class HttpsFilter implements Filter {
@qerub
qerub / sum-time-durations.clj
Created January 18, 2014 00:29
Summing time durations (given as a string) with Clojure and Joda-Time
;; lein try joda-time org.clojure/algo.generic
;; Let's first shave the parsing yak:
(import (org.joda.time.format PeriodFormatterBuilder))
(def h:m-formatter
(-> (PeriodFormatterBuilder.)
(.appendHours)
(.appendSeparator ":")
@qerub
qerub / spiped-ssh.plist
Created December 19, 2013 01:30
Piping sshd through spiped running as an OS X launch daemon
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>spiped-ssh</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/spiped</string>
<string>-d</string>
@qerub
qerub / string-split-benchmarks-result.txt
Last active December 31, 2015 19:09
[Clojure/Java] Benchmarks of different ways of splitting a string by a char
# Benchmarking (.split test-input "\\.")
Evaluation count : 72101040 in 60 samples of 1201684 calls.
Execution time mean : 828.458928 ns
Execution time std-deviation : 29.055494 ns
Execution time lower quantile : 800.771006 ns ( 2.5%)
Execution time upper quantile : 895.752028 ns (97.5%)
Overhead used : 2.778847 ns
Found 5 outliers in 60 samples (8.3333 %)
@qerub
qerub / ScalazLight.scala
Created December 18, 2013 23:07
Scalaz Light (The Good[^W]Indispensable Parts)
import scalaz._
trait ScalazLight
extends std.AllInstances
with syntax.std.ToOptionIdOps
with syntax.std.ToOptionOps
with syntax.ToEqualOps
with syntax.ToIdOps
@qerub
qerub / StringExtensions.scala
Created December 18, 2013 12:43
Bringing Perl's (main) regex operators to [Scala] (just for fun)
implicit class StringExtensions(val _value: String) extends AnyVal {
def =~(r: Regex): Boolean = _value match {
case `r`() => true
case `r`(xs @ _*) => throw new IllegalArgumentException("Regex must not contain captures")
case _ => false
}
def !~(r: Regex): Boolean = !(this =~ r)
}
@qerub
qerub / for-map-benchmarks.clj
Created November 27, 2013 17:25
[Clojure] Benchmarks for different implementations of `for-map`
;; Benchmarks for different implementations of `for-map`
;; Can be run with `lein try proteus criterium`
;; See http://www.lexicallyscoped.com/2013/04/17/transients-in-clojure.html
;; for some relevant discussion.
(defn pairs-to-map-without-transient [pairs]
(reduce (fn [m [k v]] (assoc m k v)) {} pairs))
@qerub
qerub / jruby-with-bundler.sh
Created November 27, 2013 12:40
Augmenting JRuby Complete with Bundler: a full JRuby installation in a single JAR file
#!/bin/sh
set -ex
version=1.7.8
jar=jruby-complete-$version-with-bundler.jar
curl -o $jar http://jruby.org.s3.amazonaws.com/downloads/$version/jruby-complete-$version.jar