Skip to content

Instantly share code, notes, and snippets.

View mattsta's full-sized avatar
🐢
Moving slowly and fixing things

Matt Stancliff mattsta

🐢
Moving slowly and fixing things
View GitHub Profile
@abedra
abedra / after_fixes
Last active August 29, 2015 14:15
hiredis blocking scenario
perf stat ./client
Error: Read timed out
Performance counter stats for './client':
0.963859 task-clock (msec) # 0.081 CPUs utilized
3 context-switches # 0.003 M/sec
0 cpu-migrations # 0.000 K/sec
236 page-faults # 0.245 M/sec
<not supported> cycles
@thomasdarimont
thomasdarimont / Redis_Stats.md
Last active January 31, 2023 17:27
Example for computing various running statistics with Lua in Redis backed by a hash

Running statistics with Redis and Lua

This is an example for computing running statistics with Lua backed by a hash in Redis. We support counting, average (with and without exponential smoothing), stddev, variance, min, max, sum of observed values. An example for approximating a running median can be found here: https://gist.github.com/thomasdarimont/fff68191d45a001b2d84

Data structure

We use a hash for storing various statistic value under the key "stats_value" in redis. Note: If you need a specific alpha value for smoothing the average, then set the desired alpha -> e.g. alpha 0.7. If alpha is 0.0 then no smoothing is applied.

@thomasdarimont
thomasdarimont / 100_redis_median_approx.md
Last active July 28, 2019 13:38
PoC for approximating the median of a Stream via stochastic averaging in Redis with Lua

Approximating the median of a Stream via stochastic averaging

Often it is useful to have access to the median value for fields of a data stream since they are more robust with respect to outliers. The median is defined as the value of a dataset such that, when sorted, 50% of the data is smaller than the value and 50% of the data is larger then the value. Ordinarily this is difficult to calculate on a stream because it requires the collection and sorting of all data.

The median of a data stream can be approximated with a technique called stochastic averaging. To approximate the median value of a data stream one could use the following approach:

Given the current estimate of the median M. If the next observed value in the stream is larger than M, increase the current estimate by r (= the learning rate). If it is smaller, decrease the estimate by r. When M is close to the median, it increases as often as it decreases, and therefore it stabilizes.

This approach was taken from the book "Real-time Analytics -

alienino 3511c0997339cfcccccca39f214322eb22e8fc43
all'equipaggio 14555555ec8dcf1400db9b375c5b8ca836362d8b
Anacyclus 182c40fc4df5b4d997feeeeee22c4dbf059a95d4
bajar 1352a687f6840df8801aaaaaadf71de84b816f86
bandwagon's f6e6deb71111110839bc14dd9cbab6eb7b16f09c
barbihecho bc45de24f03f2a086666668e2a0812a5f270c8cb
calcitrant 86d4ffffff9aae00ace440e93c1d87bb4ec8b56c
cornetti 000000f636f0d7cbc963a62f3a1bc87c9c985a04
crépir a21303cfa9b7c6f0cccccc19cc59556a188ccac7
cyclosporin's b5baaaaaa744f480586a905f692cdec2fa0a1919
@lelandbatey
lelandbatey / whiteboardCleaner.md
Last active June 3, 2026 23:24
Whiteboard Picture Cleaner - Shell one-liner/script to clean up and beautify photos of whiteboards!

Description

This simple script will take a picture of a whiteboard and use parts of the ImageMagick library with sane defaults to clean it up tremendously.

The script is here:

#!/bin/bash
convert "$1" -morphology Convolve DoG:15,100,0 -negate -normalize -blur 0x1 -channel RBG -level 60%,91%,0.1 "$2"

Results

@debasishg
debasishg / gist:8172796
Last active July 5, 2026 16:33
A collection of links for streaming algorithms and data structures

General Background and Overview

  1. Probabilistic Data Structures for Web Analytics and Data Mining : A great overview of the space of probabilistic data structures and how they are used in approximation algorithm implementation.
  2. Models and Issues in Data Stream Systems
  3. Philippe Flajolet’s contribution to streaming algorithms : A presentation by Jérémie Lumbroso that visits some of the hostorical perspectives and how it all began with Flajolet
  4. Approximate Frequency Counts over Data Streams by Gurmeet Singh Manku & Rajeev Motwani : One of the early papers on the subject.
  5. [Methods for Finding Frequent Items in Data Streams](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.187.9800&amp;rep=rep1&amp;t
-module(crc17).
-export([calc/1]).
calc(List) -> calc(List,16#FFFF).
calc(<<>>,CRC) ->
CRC;
calc(<<Value:8,Rest/binary>>,CRC) ->
Index = (CRC bxor Value) band 255,
@robertoaloi
robertoaloi / demo.md
Last active December 28, 2015 21:09
Demo session used for "Introduction to Erlang" talks and courses.

Start an instance of the Erlang run-time system

$ erl

Show information about processes

> i().

Spawn a new process which sleeps for 10 seconds

@jlong
jlong / uri.js
Created April 20, 2012 13:29
URI Parsing with Javascript
var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";
parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port; // => "3000"
parser.pathname; // => "/pathname/"
parser.search; // => "?search=test"
parser.hash; // => "#hash"
parser.host; // => "example.com:3000"
@dreid
dreid / dialysis
Created August 10, 2011 20:52
first pass at a shell script to make building dialysis plts easier to use.
#!/bin/sh
OTP_VERSION=$(erl -noinput \
-noshell \
-eval 'io:fwrite(erlang:system_info(otp_release)).' \
-s init stop)
PLT_DIR="$HOME/.dialyzer/${OTP_VERSION}"
CURRENT_APP=$(basename $(pwd));