Skip to content

Instantly share code, notes, and snippets.

Will Welch welch

Block or report user

Report or block welch

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@welch
welch / predict.juttle
Last active Oct 20, 2015
predict: return the unsurprising portion of a metric stream by estimating trend and seasonal effects
View predict.juttle
// Predict:
// Trend, seasonality, and noise estimation for metric streams.
//
// Predict is a sub which consumes a metric stream and emits a
// prediction stream based on estimated trend, seasonality, and a
// smoothed version of the input. Prediction errors (the difference
// between predict's output and the input) can signal anomalies in the
// stream.
//
// usage: predict [options]
@welch
welch / README.md
Last active Oct 7, 2015
ingredients for the predict proc, in juttle
View README.md

The juttle predict proc combines trend, seasonal, and level prediction. Although it is native javascript, many of its components can also be written in juttle, and those examples are here.

@welch
welch / cust-info.json
Last active Sep 28, 2015
customer info for join -table examples
View cust-info.json
[
{"time":"2016-01-01T00:00:00.000Z", "cust_id":1, "email":"lou@grainger.com"},
{"time":"2016-01-01T00:00:02.000Z", "cust_id":2, "email":"bubba@nytimes.com"},
{"time":"2016-01-01T00:00:03.000Z", "cust_id":3, "email":"sam@hotmail.com"}
]
@welch
welch / add-streams.juttle
Created Sep 28, 2015
example of collectd ingest in which several metrics are combined
View add-streams.juttle
// example of ingesting multiple metrics at a regular 20s pulse from
// collectd (timestamps are aligned across streams, simulated here),
// and merging them onto a single point so relative percentages can be computed.
//
// Useful patterns in add_streams:
// put *name = value applied to points having {name=foo, value=bar} layout,
// gives the values unique names in preparation for joining
// use of single-stream join to combine a variable number of input streams
// reduce -groupby by, which is the same as reduce by, but is convenient inside a sub.
// reduce time=first(time) gives reducer results same timestamp as their inputs
@welch
welch / random-demo.juttle
Created Sep 23, 2015
demo basic stdlib.random functions
View random-demo.juttle
// stdlib.random demos:
//
import "random.juttle" as random;
export sub poissonHisto() {
// render draws from 3 poisson distributions as a scatter chart.
// see https://en.wikipedia.org/wiki/Poisson_distribution
emit -limit 10000 -from 0
| put lambda_1=random.poisson(1), lambda_4=random.poisson(4), lambda_10=random.poisson(10)
| split lambda_1, lambda_4, lambda_10
@welch
welch / cpuZ-demo.juttle
Created Sep 23, 2015
cpuZ: visualize z-scores for a cpu metric.
View cpuZ-demo.juttle
// stats demos: statistics 101 for juttle data flows
//
// Each of the stream standardization approaches offered in stats is
// appropriate in a different setting. The demos here show some good
// and some bad choices.
//
import "stats.juttle" as stats;
// cpuZ: visualize z-scores for a cpu metric.
//
@welch
welch / alert-context.juttle
Last active Oct 1, 2015
annotate an alert event with recent lines from a logging stream
View alert-context.juttle
// Alerting with context:
//
// This example shows how to annotate an alert event with recent lines from
// a logging stream, to give context for the alert. This is accomplished with
// a custom reducer that tails the log stream, and a join of the current tail
// against each alert event as it occurs.
//
// The log-tailing stream is joined using the -table option, which means the
// join will fire only when the alert stream gets a new point, but not fire
// when the log stream gets new points.
View extract.m
function pairs = readzmax(FileName)
fileID = fopen(FileName);
% read the file data
vals = fileread(FileName);
fclose(fileID);
% Convert to string
dstr = sprintf('%s',vals);
% keep only lens data
GLDstart = regexp(dstr, 'GENEARL LENS DATA:','end');
dstr = dstr(GLDstart+2:end);
@welch
welch / zmx2csv.py
Last active Aug 27, 2015
convert zemax pupil data to csv
View zmx2csv.py
#!/usr/bin/env python
"""
zmx2csv.py: convert zemax output to csv for matlab import
usage: zmx2csv.py filename.txt ...
reads each filename.txt, outputting filename.csv
sample input file: forPupilMapping_Prescription.txt
"""
import sys
@welch
welch / wtf.spec.md
Created Aug 19, 2015
why does the second test fail?
View wtf.spec.md

WTF?

The basic set, fed a steady stream of two groups; A group

Juttle

emit -from Date.new(0) -limit 10
| put T = Duration.seconds(time - Date.new(0))
| ( put name = "A" ; put name = "B", T = -T)
| (
You can’t perform that action at this time.