Skip to content

Instantly share code, notes, and snippets.


Erik Ferguson muraiki

View GitHub Profile
muraiki / reduce_in_r.R
Created Mar 27, 2018
Calculating a rolling sum in R using the Reduce function
View reduce_in_r.R
# Rolling sum using the Reduce function
EV <- c(1,.9,.8,.001,.001,.001,.001)
# Proportion of variance explained by each principle component.
prop_var <- EV / sum(EV)
# 0.3698224852 0.3328402367 0.2958579882
# 0.0003698225 0.0003698225 0.0003698225
# 0.0003698225
muraiki / pb.html
Last active Jan 22, 2018
Salesforce Process Builder: Generate formula code for matching multiple values
View pb.html
<label for="fieldName">Field name (include object):</label>
<input id="fieldName" name="fieldName" type="text" size="100" onkeydown="if (event.keyCode == 13) false">
<input type="checkbox" id="isPicklist" name="isPicklist" value="picklist">
<label for="isPicklist">Picklist?</label>
<input type="checkbox" id="isNot" name="isNot" value="not">
<label for="isNot">NOT?</label>
muraiki / 28.ijs
Created Jul 28, 2017
Generate series of 28 numbers in ascending order that total close to 1500 (J)
View 28.ijs
muraiki / 28.apl
Created Jul 28, 2017
Generate series of 28 numbers in ascending order that total close to 1500 (APL)
View 28.apl
muraiki / watch_source_files.p6
Last active Sep 4, 2015
Watch source files using Supplies
View watch_source_files.p6
# disclaimer: I'm a perl6 noob :)
my $out =;
$out.act: -> $s { say $s }; # actor model semantics; only ever execute this in 1 thread
my $watcher =$*CWD.abspath)\
.unique(:as(*.path), :expires(1))\ # unique paths over last second, to prevent double-triggering from metadata events
.map(*.path.IO)\ # convert event path strings to IO::Path objects
.grep(*.extension eq 'p6')\
muraiki / watch_and_chown.p6
Last active Aug 29, 2015
Watch a file and chown it once it exists
View watch_and_chown.p6
my $PATH = '.';
my $USER = 'muraiki';
my $GROUP = 'staff';
.unique(:as(*.path), :expires(1))\
.grep(* ~~ /\.sock/)\
.act(-> $socket {
say "Socket created: $socket"; # actually this happens for any I/O on the file, not just creation
muraiki / gist:077aef846a775028eec8
Created Jul 7, 2015
Intro to anonymous functions in Perl
View gist:077aef846a775028eec8
# Intro to anonymous functions in Perl
use strict;
use warnings;
use feature qw(say);
use utf8;
binmode STDOUT, ':utf8';
# You can declare a sub without giving it a name. Hence, "anonymous" function.
sub { say 'this sub will never be called' };
muraiki /
Last active Aug 29, 2015
merge two files
use strict;
use warnings;
open (my $foo, '<', 'foo.txt') or die;
open (my $bar, '<', 'bar.txt') or die;
open (my $merged, '>', 'merged.txt') or die;
print $merged '#!/bin/sh', "\n";
while (not eof $foo and not eof $bar) {
muraiki / gist:5cc72eaeb20a57da31bc
Created Mar 19, 2015
KO model with getters/setters and json update support
View gist:5cc72eaeb20a57da31bc
function FooModel () {
Object.defineProperties(this, {
_foo: {
value: ko.observable(,
enumerable: true,
configurable: true
_bar: {
value: ko.observable(x.server_id || x.instance_id || x.instanceId),
enumerable: true,
muraiki / gist:96d746eff5f564c32990
Created Mar 19, 2015
updating KO model from json
View gist:96d746eff5f564c32990
// map the keys in json to the properties on your model
var desiredKeys = {
"foo": "foo",
"bar": "bar"
Object.defineProperty(self, 'updateFromJson', {
enumerable: true,
value: function (data) {