Stuttgart JS

Who Am I

Who Am I

  • Mariano Guerra

  • Argentinian

  • Software Engineer

Who Am I (cont)

  • Living in stuttgart for 2 ½ years

  • Language Geek

    • Python

    • Javascript

    • Erlang

    • Clojure

What do I do

What do I do

What's Event Fabric

What's Event Fabric

ef-logo-128.png

I assume you don't know Event Fabric

Makes sense to know what it is to have some context for the talk

Short Description

ef-logo-128.png

Integrate, Transform, Explore and Visualize your data in Real Time.

A Video is worth a 1000 slides

Integrate

Consume events as they happen from sources like PubNub, Firebase, MQTT, Pusher, Web Sockets or send them through our API

designer.png

Transform

Manipulate, aggregate and filter incoming events using a visual programming language

blocks.png

Explore

Connect sources to transformers, filter events, load previous events at startup or react to clicks while inspecting the intermediate results with a graphical flow designer.

explore.png

Visualize

Display your data in multiple ways using a great variety of widgets.

dashboard.png

Organize

Arrange the widgets using predefined layouts or by placing and sizing them manually to build the dashboard the way you want.

layouts.png

Some Numbers

Some Numbers

Core

Lines

11765

Files

71

Avg file lines

150

Max file lines

809 (!)

Min file lines

8

Core (cont.)

modules-lines.png

Apps (LoC)

Web Socket

117

Pusher

157

MQTT

188

Firebase

292

Maps

388

Pubnub

477

Demo Widgets

696

Widgets

5942

Libraries

Libraries

Ours (FLOSS)

Intercal Example

return intercal({
    "resourceConfig": {
        "contentType": "application/json",
        "timeout": 30000,
        "addTimestampParam": true,
        "basePath": "/api/"
    },
    "resource": {
        "events": {
            "path": { "get": "/events" },
            "config": {
                "addTimestampParam": true,
                // passed params are added as query params
                "queryParams": true
            }
        },
        "processor": {
            "path": {
                "post put": "/processor",
                "delete": "/processor?id={id}"
            }
        }
    }
});

Utils

Time

  • moment

    • date library for parsing, validating, manipulating, and formatting dates

  • xdate

    • a thin wrapper around JavaScript's native Date object that provides enhanced functionality for parsing, formatting, and manipulating dates.

UI

  • Designer, SVG: raphael

    • lately looking into svgjs

  • Logic, "Lego" Blocks: Blockly

  • Dashboard: jquery, jqueryui, mainly non ui things

    • draggable/droppable

    • resizable

  • jqueryuitouch

UI (cont.)

Small Libs

  • buoy

    • add/remove/toggle classes in dom nodes

  • crel

    • fast and simple dom creation

  • arg

    • parse url query params

Libs I would like to explore more

Structure

Plugins

Backend

clojure.gifimmutant.png

API

Tools

Build

Deploy

Thanks