Keming Labs Talks

16ms or your money back: Building a responsive desktop application in Rust

March 1, 2018 Rust User Group · Melbourne, VIC Video

A casual local meetup talk where I discuss both the technical and product design of Finda.

Note: Recording quality wasn’t great — see this blog post for details.

Choosing features

May 2017 Deconstruct · Seattle, WA Video

Innovation comes from creating new conceptual models. In this talk, I discuss how to invent, evaluate, and communicate new conceptual models. I use CSS layout as an example of complex, tangled concepts, and how clarifying those concepts can lead to a design that is both simpler yet more powerful.

The layout ideas discussed in this talk became part of Subform as well as a standalone library.

Using ClojureScript with heavy industrial equipment

Keming Labs was commissioned by a client in the energy sector to design and build a custom heavy-equipment inspection tool. The tool was designed with Harel Statecharts and implemented with ClojureScript running on an Android device. In this talk, Kevin will discuss this approach; in particular, how explicit immutable data yielded fast, on-device prototyping, easy-to-implement visual testing tools, and improved cohesion between developers, designers, and the end customers.

The big ideas of React.js and ClojureScript

May + June 2015 YOW! Workshops · Brisbane, Perth, Melbourne, and Sydney Australia

This workshop outlines the “big ideas” of Clojure and ClojureScript: functional programming, immutable data, and first-class platform interoperability. While these ideas may seem strange at first, they can be powerful once mastered, regardless of the language in which you choose to express them.

I made a cell phone! (Don't tell the FCC kthx)

Cell phones are awesome! But how do they work? We all know there’s a part you talk into and a part that your friend talks out of, BUT WHAT HAPPENS INSIDE?

I decided to find out by designing and building my very own cell phone out of resistors and capacitors and other really small stuff. (I had to buy tweezers.)

This talk will overview this adventure, which also includes wood-cutting robots and a computer that is TOO SMALL FOR JAVASCRIPT.

Unifying interfaces

May 27, 2014 speakerconf · Barcelona, Spain Slides

Wherein I conjecture the user-hostile interface of UNIX stems from the lack of common interfaces beyond the filesystem and byte stream.

Building things you can take apart

August 5, 2013 Ebay NYC · New York, NY Slides

Modular software is not defined by the internal facets of packages, namespaces, interfaces, classes, and types. The true benefits of modularity come from self-describing data and the APIs that provide them, independent of physical machines, languages, and runtimes. In this talk I will discuss modularity using the venerable UNIX make program as an example. No extensive knowledge of build tooling is necessary; my hope is that the ideas in this talk will help you build pleasant software for which scores of future programmers will praise your good name.

Computational reassembly of shredded documents

March 5, 2013 speakerconf · Oranjestad, Aruba Slides

Overview of current (publicly disclosed) approaches to computational assembly of shredded documents. Nearly all such approaches focus on low-level features like edge contours and grayscale pixel matching. A higher-level approach based on incorporation of prior information such as font metrics and text language is proposed.

Building a grammar for statistical graphics in Clojure

November 9, 2012 Clojure/conj · Raleigh, NC Video

I was not planning on speaking at this conference, but the organizers asked me to fill in for a last-minute speaker cancellation—this talk is essentially a repeat of the Øredev talk. –kevin

As programmers, we’re used to seeing data in rectangular tables that are optimized for fast retrieval and processing by computer. Pictures of data, such as scatterplots, bar charts, and maps, optimize data for efficient analysis by human. SQL is powerful because it allows us to ask complex questions of our data without busying ourselves with the mechanics of iteration, aggregation, and indexing. We need the same for pictures: a grammar that allows us to express rich data visualizations without the nuisance of looping, drawing axes, and juggling legends.

In this talk, I will introduce such a grammar of graphics, implemented in Clojure. As motivation, I’ll discuss the principles of effective data visualization and the insights that can come from just looking at your data. The grammar itself consists of simple data structures, maps and arrays. As a first consequence, this means the grammar can be easily used across the JVM as well as via JSON. However, there are several other, deeper ramifications of having a “data API” that will be discussed.

Building a grammar for statistical graphics in Clojure

November 9, 2012 Øredev · Malmö, Sweden Slides  ·  Handout

As programmers, we’re used to seeing data in rectangular tables that are optimized for fast retrieval and processing by computer. Pictures of data, such as scatterplots, bar charts, and maps, optimize data for efficient analysis by human. SQL is powerful because it allows us to ask complex questions of our data without busying ourselves with the mechanics of iteration, aggregation, and indexing. We need the same for pictures: a grammar that allows us to express rich data visualizations without the nuisance of looping, drawing axes, and juggling legends.

In this talk, I will introduce such a grammar of graphics, implemented in Clojure. As motivation, I’ll discuss the principles of effective data visualization and the insights that can come from just looking at your data. The grammar itself consists of simple data structures, maps and arrays. As a first consequence, this means the grammar can be easily used across the JVM as well as via JSON. However, there are several other, deeper ramifications of having a “data API” that will be discussed.

Web data visualization: what's becoming easy, what's becoming possible

Thursday October 25, 2012 Strata Conference · New York, NY

Panel with Kim Rees (Periscopic), Hadley Wickham (Rice University), and David Nolen (New York Times).

Advances in browser and mobile technologies have made the visualization and interaction of data on web a viable alternative to traditional tools used to visually explore data. Panelists will discuss the current state of web data visualization, as well as novel approaches made possible by recent advances.

Visual Analytics in Practice

Wednesday October 17, 2012 IEEE VisWeek · Seattle, WA Slides

Kevin will review three of Keming Labs commercial visualizations from the past year: a wind turbine monitoring platform, a gene variant analysis tool, and an iPad diabetes clinical reporting tool. With this context, Kevin will then wax philosophical on emerging programming languages, visualization on the web, and the role of open source software in the commercial and academic spheres. Finally, in what may be of interest to students, Kevin will also detail his transition from VisWeek 2010 workshop paper third author to full-time world-traveling high-fiving charts & graphs consultant.

Building visual, data-driven UIs with ClojureScript

Tuesday September 25, 2012 The Strange Loop · Saint Louis, MO Video

Modern web browsers provide a versatile foundation for graphical, interactive applications. ClojureScript brings rich semantics to the browser and, combined with Clojure on the server, gives developers an insane amount of leverage to build novel tools. Kevin will discuss using state machines with data-driven DOM-manipulation to build visual applications on the web and iPad. He will evince how Clojure(Script)’s rich data structures and abstractions foster declarative programming, and outline some testing and development benefits from shared client/server language. Concrete examples will be drawn from data visualization applications in the energy and biotech fields.

Clojure iPad analytics dashboard in energy sector

Visualizing and Interacting with Data over the Web

Declarative web data visualization using ClojureScript

Friday July 20, 2012 O'Reilly OSCON · Portland, OR Slides  ·  Handout

Data-driven interfaces on the web using Clojure

Composing statistical graphics on the web

Saturday March 17, 2012 Clojure/West · San Jose, CA Slides  ·  Video

Statistical graphics illuminate by mapping abstract data to visual primitives like dots, lines, and color. Excellent statistical graphics first and foremost show the data. Likewise, the tools for making such graphics should emphasize essential data-visual mappings and hide the implementation details of looping, painting, and layout.

Clojure’s emphasis on immutability allows one to compose functions while retaining the ability to reason about their behavior. These same strengths can be leveraged to build rich, data-driven graphics composed of smaller visual pieces. Kevin will discuss using ClojureScript with the Cassowary constraint solver to construct and layout statistical graphics on the web.

Make yourself a job

Tuesday January 17, 2012 Reed College · Portland, OR

Invited talk at Reed College. Kevin will discuss his experiences consulting in the design and programming fields and the pros and cons of self-employment. The talk will include an extended Q & A session for interested students.

Extending JavaScript Libraries from ClojureScript

Friday November 11, 2011 Clojure Conj · Raleigh, NC Slides  ·  Handout  ·  Video

Kevin will discuss using the D3 JavaScript data visualization library from ClojureScript. In particular, using macros to construct a ClojureScript façade that implicitly coerces types and allows one to naturally extend jQuery-style chained syntax. He will also discuss miscellaneous ClojureScript tips and rough edges, and compare ClojureScript with CoffeeScript and more traditional JavaScript functional-mixin libraries like Underscore.js.

Introduction to ClojureScript

Wednesday October 26, 2011 Portland JavaScript Admirers · Portland, OR

Introduction to the newly released Clojure–to–JavaScript compiler.

D3 data visualization

Wednesday October 19, 2011 6th PDX Data Visualization Group · Portland, OR Handout

D3 is a JavaScript library that binds arbitrary data to HTML & SVG elements, allowing you to build rich, interactive visualizations on the web. Rather than try to serve as a monolitic library supporting every visualization imaginable, D3 simply provides a lightweight, data-driven interface to the web’s underlying HTML, CSS, and SVG technologies. Developers can use D3 immediately with their current development tools and knowledge of web standards.