Skip to content

Instantly share code, notes, and snippets.

View plmrry's full-sized avatar
🦆
converting JSON to other JSON

Paul Murray plmrry

🦆
converting JSON to other JSON
View GitHub Profile
@plmrry
plmrry / README.md
Last active November 30, 2015 15:18
Imagining Macondo

Imaginando Macondo (Imagining Macondo) was a live interactive installation featuring user-submitted photographs that was on display throughout the 2015 International Book Fair of Bogotá, Colombia. The exhibition was seen by an audience of more than 300,000 festival attendees who submitted more than 14,000 photographs.

The project included a mobile web interface that allowed participants to capture, label, and upload photographs. The back-end was driven by Node.js which included the compression and storage of submitted media; metadata was stored in a PostgreSQL database; the visualization was powered by D3.js, which used customized clustering and collision detection algorithms to drive the animated placement of photographs and labels within the exhibition space.

Art and design by George Legrady, Angus Forbes, and Andres Burbano.

Software development by Paul Murray and Lorenzo Di Tucci.

@plmrry
plmrry / README.md
Last active November 30, 2015 15:27
Poetry Chains

Poetry Chains is a series of animated text visualizations of the poetry of Emily Dickinson, first showcased in the Hybridity and Synesthesia exhibition at Lydgalleriet, as part of the Electronic Literature Organization Festival in Bergen, Norway in 2015. The project is inspired by Lisa Samuels’ and Jerome McGann’s reading of a seemingly whimsical fragment found in a letter written by Dickinson: “Did you ever read one of her Poems backward, because the plunge from the front overturned you?” They investigate what might it mean to interpret this question literally, asking how a reader could “release or expose the poem’s possibilities of meaning”

@plmrry
plmrry / tiny-cycle.js
Last active December 11, 2015 03:58
Tiny Cycle.js
function main({DOM}) {
let action$ = DOM.select('button').events('click').map(ev => +1)
let count$ = action$.startWith(0).scan((x,y) => x+y);
return {
DOM: count$
.map(i => {
return {
tagName: 'div',
children: [
{ tagName: 'h1', children: [`Count ${i}`] },
@plmrry
plmrry / README.md
Last active December 16, 2015 21:13
Tree-to-Force Interpolation

Move the slider to interpolate between a tree layout and a force-directed layout.

Based on Jim Vallandingham's talk, Abusing The Force.

@plmrry
plmrry / README.md
Created December 16, 2015 21:34
Matrix Browser

A simple tool for browsing large sets of relational data.

Each row in the matrix is a piece of evidence extracted from Bioinformatics publications using Natural Language Processing techniques. Each column is an existing bioinformatics datum, as found in a large database of bioinformatics entities and relationships. Each square in the matrix can be seen as a "potential match" between biological information extracted via the analysis of natural language with existing bioinformatics data.

The tool can be used by NLP researchers to evaluate the output of their algorithms and to search for potentially interesting relationships between novel and existing data.

@plmrry
plmrry / server.js
Created February 10, 2016 23:10
Tiny LoopBack
var loopback = require('loopback');
var explorer = require('loopback-component-explorer');
var app = module.exports = loopback();
app.set('host', '0.0.0.0');
app.set('port', '3000');
app.set('restApiRoot', '/api');
app.set('legacyExplorer', false);
@plmrry
plmrry / README.md
Created March 15, 2016 20:24
Turing Machine Painting

On the right is an interactive force-directed representation of a Turing Machine. The turing machine reads a tape and writes decimal values such as "0.6." At each step, a copy of the tape is made, where each value on the tape is mapped to a hue angle in HSL space.

@plmrry
plmrry / README.md
Created March 15, 2016 20:31
High-Dimensional Crawler

A randomly-generated five-dimensional dataset is shown projected onto two dimensions according to the vector sum of five arbitrary vectors. This technique is identical to Star Coordinates by Eser Kandogan.

At each step in this animation, a dimension is chosen at random, and the vector representing that dimension is moved in a random direction.

@plmrry
plmrry / README.md
Last active March 28, 2016 19:39
Mondrian

An experiment in translating from SVG into WebGL (via Three.js).

From a class project that involved a creative re-creation of the work of Piet Mondrian.

(Originally written in CoffeeScript, so the code is a little weird.)

RF is a visualization of real-time radio frequency data using a powerful radio frequency sensor. The visualization is a real-time monitor of streaming data from three sections of the radiofrequency spectrum related to the radio emissions of consumer electronics, such as automobile key fobs and cell phones, along with the FM radio spectrum. An event-detection algorithm was used to detect radio signals with an amplitude that crossed a threshold of local maxima, which triggered a vivid notification of activity. Users were able to visually experience the hidden world of persistent, streaming radio activity produced by modern consumer devices.

RF was made using D3.js and Three.js. Streaming data was handled using RxJS and sent to the client using Socket.io. The app was hosted on a Node.js server.

Presented at the 2015 IEEE VIS Arts Program (VISAP).