Skip to content

Instantly share code, notes, and snippets.

@jonchretien
Last active August 29, 2015 14:18
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jonchretien/51ddc95d4a65790df7af to your computer and use it in GitHub Desktop.
Save jonchretien/51ddc95d4a65790df7af to your computer and use it in GitHub Desktop.
Notes from OpenVis Conf 2015. Scaffolding generated with https://github.com/jonchretien/conf-notes-template.

OpenVis Conf 2015

Welcome

Speaker: Irene Ros (@ireneros)

Resources

Keynote (Day 1)

Speaker: Jeffrey Heer (@jeffrey_heer) — Slides, Video

Raising the Bar (Chart): The Next Generation of Visualization Tools

Visualization Tools

  • Chart Typologies (Excel, Many Eyes, Google Charts)
  • Interactive Data Exploration (Tableuea, Lyra)
  • Visual Analysis Grammars (VizQL, ggplot2, Vegalite)
  • Visualization Grammars (D3, Protovis, Vega)
  • Component Archictecture (Prefuse, Flare)
  • Graphics APIs (Processing, OpenGL, Java2D)

Declarative Languages

Programming by describing what, not how? In contrast to imperative programming, where you must give explicit steps.

  • Faster iteration. Less code. Larger user base.
  • Better visualization. Smart defaults.
  • Reuse. Write once, then re-apply.
  • Performance. Optimization, scalability.
  • Portability. Multiple devices, renderers, inputs.
  • Programmatic generation. Write programs which output visualizations.

Visualization Grammar

  • Data (input data to visualize)
  • Transforms (Grouping, stats projection, layout)
  • Scales
  • Guides
  • Marks (data-representative graphics). Marks can be graphical primitives.
  • Uses a declarative JSON format rather than JavaScript code.
  • GUI for Vegalite.
  • Rapid visualization via drag and drop.
  • Reduce tedious manual specification.
  • Support early-stage data exploration.
    • Encourage data coverage.
    • Discourage premature fixation.
  • Works with user provided data-set. Voyager then provides recommendations.
  • Reduced and simpler model of Vega.
  • Formal model for statistical graphics.
  • A visualization design environment.
  • Single declarative model for specifiying visual encodings + interaction techniques.
  • JSON -> Reactive Dataflow Graph
  • Portable
    • Client (browser) or server-side (node)

Example: DimpVis

Open Source

vega.github.io

Learning while making p5.js

Speaker: Lauren McCarthy (@laurmccarthy) — Video

hello.p5js.org

So You Think You Can Scroll

Speaker: Jim Vallandingham (@vlandham) — Slides, Video

Demo

Notes

  • "Scorytelling"
  • Scrolling is a continuation unless it's disrupted someway.
  • How to Scroll by Mike Bostock.
  • Moving window model vs. moving document model
  • Scrollers vs. steppers

Mobile Scrolling

  • Is swipe the new scroll?
  • MobileVis: showcase of visualizations that work well on mobile devices.

Scroll Tools

GUI Tools

A bit about touch

Speaker: Ramik Sadana (@ramiksadana) — Video

Georgia Institute of Technology

Devices

  • Mobile, tablets, and large touch screens.
  • All follow very different design patterns. They're used in different contexts.

Design Principles (Richard Bachanan)

  • Usefulness: a product's clarity of its own content and purpose.
    • What purpose does the application serve for the user?
  • Usability: ease-of-use in a product to enable accomplishment.
    • Guessability: don't use novel approaches.
    • Learnability: complexity, discoverability, expected actions.
    • Ergonomics: effort in interacting with the system.
  • Desirability: grace and elegance in form that drives engagement.

That's The Power of Loops

Speaker: Lena Groeger (@lenagroeger) — Slides, Video

Why Repetition is a Curious Thing

WebGL for Graphics and Data Visualization

Speaker: Nicolas Garcia Belmonte (@philogb) — Slides, Video

Use Cases

  • Exploratory visualizations
  • Real-time data analysis
  • Storytelling
  • Scientific visualization
  • Data art/illustration

Exploratory Visualizations

Scientific Visualization

  • Line Integral Convulsion

Data Art/Illustration

Misc.

  • Can add tons of data points w/o performance penalty.

How does WebGL work?

  • JS API that stores an array of floats in a buffer that can be accessed by CPU.
  • Vertex Shader: transform and rotate points
  • Fragment Shader: decides pixel colors

GLSL: A DSL for Graphics

  • C-like
  • Built-in types, functions for graphics
  • Operator overloading
  • Built-in functions

Hopf Map

  • Hopf Fibrations
  • Instance arrays
  • Every pixel maps to a unique color
  • Every color is mapped to a lat/lon position

Takeaways

  • Use the GPU: speed and scale.
    • You can render millions of objects, 3D games, etc..
  • From data art and exploratory visualizations
  • Low-level API: use a library

Misc.

Mapping the Cosmos: Visualizing Millions of Objects in Space

Speaker: Ian Webster (@iwebst) — Video

Notes

  • NASA JPL (Jet Propulsion Laboratory). For advanced users.
  • Organize, browse, and visualize asteroid data.
  • Ian wrote scrapers to gather data (orbits, asteroids, etc...)
  • Put everything in a database and then wrote calculations for:
    • Mission costs
    • Mining value
    • Shortest routes
    • Close passes
  • Built with WebGL, trigonometry, basic calculus

Web Workers

  • Can't touch the DOM.
  • Usually one worker is enough.
  • Not supported on all browsers.

Misc.

  • Timed array processing. Keeps you from blocking on CPU intensive loops.

Tech Stack

  • Data preprocessing/scrapers (Python and Bash)
  • Image preprocessing (Python)
  • Database (Mongo/Redis)
  • Data pipeline that runs scripts every night (cron)
  • HTTP server (Flask)
  • Reverse caching proxy (nginx, Cloudflare)
  • Frontend (Three.js, D3.js, KineticJS)
  • Use a particle system.
  • Put everything you can on the GPU.
  • Monitor fps and gracefully degrade (60 fps is ideal).

Using humor to inform

Speaker: Nigel Holmes (@nigelblue) — Video

The Human Side to being a Digital Practitioner

Speaker: Jono Brandel (@jonobr1) — Slides, Video

Notes

Blindfolded Cartography

Speaker: Andy Woodruff (@awoodruff) — Slides, Video

Notes

Storytelling and Data: Why? How? When?

Speaker: Robert Kosara (@eagereyes) — Video

Why?

  • Memory ("stickiness").

How?

Techniques

  • Connecting points with lines can create something more interesting and tell a story (scatterplot vs line chart).
    • Ex (newsgraphic): Driving Safety, in Fits and Starts
  • Doesn't always work. Can depend on data set.
  • Isotype Charts: little symbols represent multiples.
  • Neil Cohn, Visual Narrative Structure
    • Establisher
    • Initial
    • Peak
    • Release

When?

  • Zeigarnik Effect: how you remember things that are unfinished.
  • Remember pieces of story as it unfolds.

Keynote (Day 2)

Speaker: Santiago Ortiz (@moebio) — Video

Notes

The Power of the Reveal

Speaker: Hannah FairfieldSlides, Video

Notes

  • Build to where you want to go.
  • You'll always have crazy ideas. Test them.
  • Dig around in the data.
  • Choose form for the win.
  • Layering information sets the path for discovery.
  • But beware the false reveal.
  • Editing to reveal on mobile is harder than it looks. Way harder.
  • Oh yea - and do it live (ex: elections, olympics, etc...).
  • Goofy is good.
  • Goofy + thinky is even better.

Small multiples can show the same chart shape, but with different elements highlighted.

Finding the right form for your data is one of the hardest things.

Examples

Interactive DataVis with React: Taming the Complexity of the Changing State

Speaker: Ilya Boyandin (@ilyabo) — Slides, Video

Data Visualization Engineer at Teralytics. Talk title could've been "How I was seduced by a technology".

Why interactivity?

  • Faceted exploration
  • More engaging.

Why is it hard?

  • You can have many states the system can be in.
  • More states = more transitions.
  • f:DATA -> DOM objects (function which maps data to DOM objects).

D3 Reusable Chart

  • Component model?
  • How to handle state?
  • Data flow?

MVC

  • Industry standard for 30 years.
  • M: notifies controller.
  • C: updates model and view.
  • V: sends user action to controller.
  • Can leave you with lots of dependencies.
  • Application state can become scattered.
  • Redundancy.

Better

  • Get the app state right.
  • Definite how any state is rendered.
  • f:APP STATE 1 -> DOM objects
  • f:APP STATE 2 -> DOM objects
  • f:APP STATE 3 -> DOM objects

React

  • The old way is full render on state change.
  • React helps with this by its virtual DOM diffing.
  • Easier to manipulate, and not that costly (doesn't cause many reflows).
  • Full re-render becomes affordable.
  • Very strong component model, which is a function that defines how data is mapped.

Animation

  • Pattern to build applications enabled by React.
  • Stores, actions, views, and dispatchers.
  • Data flow always going in the same direction.

Relay

  • Next iteration of Flux.
  • Each component specifies its data needs. No more passing down from parent component.

Misc.

Data Visualization on a Deadline

Speaker: Alyson Hurt (@alykat) — Slides, Video

Notes

  • Mise en place.
  • Static sites stand up better for heavy traffic, and there's not as much long-term maintenance.
  • Most dev is in Python.
  • Blog: How to setup a developers environment
  • Every project has a README with detailed setup instructions.
  • Each project operates in its own virtual environment.
  • Apple scripts for launching terminal windows for a specific project.
  • github.com/nprapps/styleguide
  • archieml.org

Resources

User-Centered Visualization Research

Speaker: Lane Harrison (@laneharrison) — Video

Notes

  • VALT: Visual Analytics Lab @ Tufts

Weighing performance against pain: SVG, Canvas and WebGL

Speaker: Dominikus Baur (@dominikus) — Slides, Video

Notes

  • The closer you get to the graphics card (GPU), the harder it can get to get things running.
  • Simple elements don't have major performance concerns (bar charts, line charts, etc...).
  • WebGL is now on iOS and Safari on the desktop.

Examples

  • OECD Better Life Index
    • Based on canvas.
    • Every flow is a canvas element.
    • Every interaction is repainted.
    • New version for 2015 is WebGL. Code became easier to work with, and there's only a single WebGL element. Runs 60fps.
  • On Broadway
    • Inspiration: Ed Ruscha, Every Building on the Sunset Strip (1966)
    • Data sources: Instagram photos, Google Street view, Facade colors, etc...
    • Made from canvas elements. When you zoom in elements are scaled, and then redrawn at a certain point.

Performance Basics

  • Know when to stop.
  • Know your tools (dev tools).
  • Remove things. Leave out unecessary elements (console.logs, CSS gradients).
  • Throttle window.resize events.
  • Shift things you can't get rid of:
    • Move heavy calculations to web workers before bringing them back.

The DOM

  • Reflow
    • Layout of whole page.
    • Browser has to figure out where elements are and their sizes.
    • Can be triggered by getting width and height of object (ex: offsetWidth()).
  • Repaint

Detach certain elements from the DOM, perform operations, and then reattach. Causes two reflows and repaints, but can be more performant than performing operations on the fly.

SVG

  • Slower compared to Canvas and WebGL, especially when drawing and animating alot of elements.
  • Vectors vs pixel based canvas.
  • Supports retina displays out of the box.
  • CSS support.
  • DOM integration.

Canvas

  • Keep track of your objects. You lose communication with the browser.
  • You have to know what to draw and when to draw it (rendering).
  • requestAnimationFrame can help with timing and rendering.
  • You have to do everything yourself.
  • Canvas looks like an image to the browser.
  • More performant than SVG.

WebGL

  • Can be painful to write.
    • Basic shapes can require a lot of code.
  • GLSL is low-level and can be complicated.
  • Libraries:

Misc.

Why Exploring Big Data Is Hard (and What We Can Do About It)

Speaker: Danyel Fisher (@fisherdanyel) — Slides, Video

Notes

  • What visualizations are suitable for big data?
  • Big data has the potential to cost unlimited amounts of money.
  • Massive savings for doing less.
  • Choosing your aggregation instead of picking a hidden default can be very helpful in what your visualization is trying to show you.

Walt Example

Data iteration

  • First pass: find min and max.
  • Re-bucket every point.

What operations are worth pre-caching?

OLAP (Online Analytical Processing)

Decide what operations we want to process rapidly, and what we'll allow to be slow.

Misc.

  • BlinkDB
  • Spark Streaming

What is the role of visualization in prediction?

Speaker: Adam Perer (Twitter) — Video

Motion Design with CSS

Speaker: Val Head (@vlh) — Video

Principles

  • Timing: establishes mood, emotion, & reaction.
  • Everything is better with cubic beziers.
  • Follow through: overshooting your destination.
  • Secondary action: supplemental action that reinforces and adds dimenson.

Resources

Building Earth: an animated map of global weather

Speaker: Cameron Beccario (@cambecc) — Video

Notes

  • Earth: an animation of global weather conditions.

Motivations

Construction

  • Let's Make a Map
  • GFS (Global Forecast System) repo
  • URL changes state as you move the map around. Makes it easy to share.
  • Multiple SVG and Canvas layers. Particles are drawn on one canvas, and color animation is on another.

Compression

Data files can get very large.

  • Scale, filter, encode, and gzip.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment