Skip to content

Instantly share code, notes, and snippets.

@bobpace
bobpace / pre-commit
Created March 12, 2021 17:24
git pre-commit hook to clear jupyter notebooks
#!/bin/bash
notebook_files=$(git diff --cached --name-only | grep -E '\.ipynb$')
if [ -n "$notebook_files" ]
then
source ./notebook/venv/bin/activate || exit
for file in $notebook_files
do
@bobpace
bobpace / ramda-n-queens.js
Created October 28, 2015 05:26
n queens in ramda
describe("n queens", function() {
var isSafe = R.curry((col, placedQueens) => {
var row = R.length(placedQueens);
var notThreatened = ([r, c]) => col !== c && Math.abs(col - c) !== row - r;
var rowsWithQueen = R.zip(R.reverse(R.range(0, row)), placedQueens);
return R.all(notThreatened, rowsWithQueen);
});
var queens = (n) => {
var columns = R.range(0, n);
@bobpace
bobpace / OmniSharp.vim
Created March 28, 2015 04:45
Using NUnit Console Runner on mono, vim errorformat was not showing matches. This was my way around it.
function! OmniSharp#RunTests(mode) abort
wall
python buildcommand()
if a:mode !=# 'last'
python getTestCommand()
endif
let s:cmdheight=&cmdheight
set cmdheight=5
@bobpace
bobpace / resize-width-mixin.jsx
Created March 19, 2015 04:47
React Resize Width Mixin
var Rx = require('rx');
var _ = require('lodash');
var defaultOptions = {
minWidth: 1050,
containerRefName: 'container'
};
module.exports = function(options) {
return {
@bobpace
bobpace / lodash-flatmap-mixin.js
Created March 18, 2015 23:44
Flatmap for lodash
var _ = require('lodash');
module.exports.apply = function lodashFlatMapMixin() {
function flatMap (array, selector) {
return [].concat.apply([], array.map(selector));
};
_.mixin({flatMap: flatMap}, {chain: true});
@bobpace
bobpace / curl-proxy.js
Last active August 29, 2015 14:17
Koa.js curl proxy with ntlm authentication
var spawn = require('child_process').spawn;
var eventStream = require('./event-stream');
var compose = require('koa-compose');
//get username / password from somewhere
var username = ...;
var password = ...;
var credential = username + ':' + password;
//8 hour timeout
@bobpace
bobpace / event-stream.js
Created March 18, 2015 23:35
Koa.js server sent events with Rx Observables
module.exports = function eventStream() {
return function *(next) {
this.req.setTimeout(0); //no timeout
this.type ='text/event-stream; charset=utf-8';
this.set('Cache-Control', 'no-cache');
this.set('Connection', 'keep-alive');
this.set('Transfer-Encoding', 'chunked');
yield* next;
}
@bobpace
bobpace / multiselect.jsx
Last active August 29, 2015 14:17
React MultiSelect with item filter
var React = require('react');
var Input = require('react-bootstrap/src/Input');
var DropdownButton = require('react-bootstrap/src/DropdownButton');
var _ = require('lodash');
var escape = /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;
function escapeRegExp(str) {
return str.replace(escape, "\\$&");
};
@bobpace
bobpace / react-slider.jsx
Created March 18, 2015 23:28
React Slider with Rx Observable implementation of drag and drop
var React = require('react');
var Input = require('react-bootstrap/src/Input');
var Glyphicon = require('react-bootstrap/src/Glyphicon');
var _ = require('lodash');
var Rx = require('rx');
var canUseDom = require('can-use-dom');
var changeCase = require('change-case');
function events(event) {
return canUseDom ? Rx.Observable.fromEvent(document, event) : Rx.Observable.empty;
@bobpace
bobpace / rx-random-interval.js
Created March 18, 2015 23:23
Random interval observable
var Rx = require('rx');
var _ = require('lodash');
module.exports = function(minSeconds, maxSeconds) {
if (minSeconds >= maxSeconds) {
throw new Error('min needs to be less than max');
}
var getDueTime = () => _.random(minSeconds, maxSeconds) * 1000;