Skip to content

Instantly share code, notes, and snippets.

View kevinswiber's full-sized avatar
🍄
lizard person

Kevin Swiber kevinswiber

🍄
lizard person
View GitHub Profile
@kevinswiber
kevinswiber / sample.js
Created December 5, 2014 00:37
Sampling light sensor every 5 seconds.
var zrx = require('zrx');
zrx()
.load('http://zetta-cloud-2.herokuapp.com')
.server('Detroit')
.device(function(d) {
return d.type === 'light';
})
.stream('luminosity')
.sample(5000)
@kevinswiber
kevinswiber / example.js
Last active August 29, 2015 14:10
Latest example of Reactive Hypermedia Siren library consuming Zetta
var Rx = require('rx');
var siren = require('siren');
var display = new Rx.Subject();
siren()
.load('http://zetta-cloud-2.herokuapp.com')
.link('http://rels.zettajs.io/peer', 'Detroit')
.entity(function(e) {
return e.properties.type === 'display';
@kevinswiber
kevinswiber / test.js
Last active August 29, 2015 14:10
Using revolt with refine.
var select = require('refine').select;
var revolt = require('revolt');
revolt()
.get('http://zetta-cloud-2.herokuapp.com')
.flatMap(deserialize)
.flatMap(function(entity) {
var detroitLink = select(entity.links)
.where('rel').contains('http://rels.zettajs.io/peer')
.and('title').equals('Detroit')[0];
@kevinswiber
kevinswiber / spy_app.js
Created November 25, 2014 21:16
Add a spy to Zetta for logging out new WebSocket event subscriptions.
module.exports = function(server) {
var original = server.httpServer.setupEventSocket;
server.httpServer.setupEventSocket = function(ws) {
console.log('Subscribing to URL:', ws.upgradeReq.url);
original.call(server.httpServer, ws);
};
};
@kevinswiber
kevinswiber / siren_1.xml
Last active August 29, 2015 14:10
vnd.application/siren+xml
<entity class="order">
<properties>
<property name="orderNumber">42</property>
<property name="itemCount">3</property>
<property name="status">pending</property>
</properties>
<entities>
<entity class="items collection"
rel="http://x.io/rels/order-items"
href="http://api.x.io/orders/42/items" />
{
"living-room": {
"switches": [
{
"id": "bf727e79-401c-4bf1-af6d-f79278d8f67b",
"state": "off"
},
{
"id": "c1abd37a-a1b5-402f-b5c1-78d764c4e6c1",
"state": "off"
@kevinswiber
kevinswiber / calypso.l
Last active August 29, 2015 14:08
Generate Web version of CaQL
number [+-]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?
name [A-Za-z0-9_-][\.A-Za-z0-9_-]*
escaped_name \[(?:(?!\])[^\\]|\\.)*\]
%options case-insensitive
%x sel fltr asgn loc ordby
%%
@kevinswiber
kevinswiber / a.json
Last active August 29, 2015 14:06
Siren example.
{
"class": ["customer", "vip"],
"properties": {
"name": "Howard Duck",
"title": "Mr."
},
"entities": [
{
"rel": ["http://example.com/rels/recent-orders"],
"class": ["order-list"],
{
servers: [
{
name: 'detroit',
type: 'peer',
devices: [
{
type: 'microphone',
streams: [
{
@kevinswiber
kevinswiber / hello.c
Last active August 29, 2015 14:02
Duktape Regex
#include "duktape.h"
int main() {
duk_context *ctx = duk_create_heap_default();
duk_eval_string(ctx, "print('Hello World'.replace(/\\s+|l*/g, ''));");
duk_destroy_heap(ctx);
return 0;