Skip to content

Instantly share code, notes, and snippets.

View deanlandolt's full-sized avatar

Dean Landolt deanlandolt

  • NowSecure
  • Washington, DC
View GitHub Profile
{
"swagger": "2.0",
"info": {
"title": "Lab Automated API",
"version": "1.0.0-beta"
},
"host": "lab-api.nowsecure.com",
"schemes": [
"https"
],

INTERVALS

Intervals are the basic unit of composition for ltgt-style queries over a keyspace. Below is a list of some typical intervals in standard interval notion, translated to ltgt queries...

// closed/open: [0,100) ->
{ gte: 0, lt: 100

// open/closed: (0,100] ->
{ gt: 0, lte: 100 }
@deanlandolt
deanlandolt / bytesspace-log.md
Last active August 29, 2015 14:23
bytespace-batchlog

bytespace-batchlog

Write-ahead logging for transactions in a bytespace.

Write operations are given a monotonically increasing id and written to transaction log. Batches are processed asynchronously and added to the store. By default, query methods withheld until batch processing is complete for the commit which was current at the time the query is received.

Batch processing pipeline

The batch processing pipeline exposes extensions points to allow pre-commit hooks to do additional work before committing to the transaction log, and post-commit hooks to do additional work after a transaction. Work can be isolated to specific subspaces, allowing heavyweight analytical processing to proceed without blocking queries in hot-path or transaction-heavy spaces. Analytical work can be delegated to subprocesses or even remote machines. Work on multiple commits can be batched together, and monotonically increasing batch ids can be leveraged to allow reads on possibly stale data to be held, e.g. until the next "

@deanlandolt
deanlandolt / ts_model_ideas.ts
Last active August 29, 2015 14:20
Typescript interfaces and classes as DAL model specifications
// Typescript interfaces and classes as DAL model specifications
/**
* @entity
*/
class IndexedEntity {
/**
* The @id annotation defines primary key, implies @unique, @index
*
* @id

Keybase proof

I hereby claim:

  • I am deanlandolt on github.
  • I am deanlandolt (https://keybase.io/deanlandolt) on keybase.
  • I have a public key whose fingerprint is 1B20 FB42 A896 1235 20BF 0330 BFA9 6F92 9724 606C

To claim this, I am signing this object:

var test = require('tape');
var bytewise = require('bytewise');
var encode = bytewise.encode;
var MIN = bytewise.MIN;
var MAX = bytewise.MAX;
test('tuple queries', function (t) {
var yearly = tuples('reports', 'yearly');
// component keys of the tuple space query are available by index
@deanlandolt
deanlandolt / chords.js
Created September 20, 2011 16:06
object traversal optimization and indexing
var notes = [{
"note": "A",
"chords": [
{
"chord": "maj7",
"strings": {
"1": 0,
"2": 3,
@deanlandolt
deanlandolt / text.js
Created August 17, 2011 02:53
a lightly-modified version of the dojo/text.js AMD plugin, for use with apps that expect a global text! plugin
// a lightly-modified version of the dojo/text.js AMD plugin, for use with apps that expect a global text! plugin
define(["dojo/_base/kernel", "require", "dojo/has", "dojo/has!host-browser?dojo/_base/xhr"], function(dojo, require, has, xhr){
// module:
// dojo/text
// summary:
// This module implements the !dojo/text plugin and the dojo.cache API.
// description:
// We choose to include our own plugin to leverage functionality already contained in dojo
// and thereby reduce the size of the plugin compared to various foreign loader implementations.
require({
baseUrl: '../../',
isDebug: this.isDebug,
packages: [
"dojo",
"dijit",
"dojox"
],
packagePaths: {
"ace/lib": [
function Pointer(value) {
if (!(this instanceof Pointer)) return new Pointer(value);
value = value.toString().split("/");
// remove a path component if all are empty
var empty = !value.some(function(i) { return i });
if (empty) value.pop();
this.path = value.map(function(part) {