#+AUTHOR: Robert Krahn
#+EMAIL: robert@kra.hn
#+GITHUB: rksm
#+TWITTER: @robertkrahn

About

I am a software engineer. I provide development and consulting services, remote or on-site (San Francisco Bay Area). Please see my résumé or contact me for more details.

In the past I have build software construction kits and dynamic object systems and have researched user interfaces and architectures for live programming. I have extensive experience in developing full-stack web applications and frameworks and I am eager to learn and try out new technologies.

Blog

Projects

A selection of previous projects. Everything here is open source and can be found on Github.

lively.next

lively.next is a web-based personal construction kit and development environment. Its user interface allows direct manipulation, composition, and behavior modification of objects similar to Smalltalk and Self. User content (workspaces and individual objects) are fully serializable so that users can simply create snapshots of their work, either for later retrieval or collaboration.

In the tradition of Smalltalk systems, lively.next is fully implemented in itself (client as well as server parts) and the entire system can be inspected and modified on the fly. This enables very short turn-around time for new features and makes for a joyful development experience.

Lively can be used for rapid prototyping or as a full-scale development environment that integrates well with third party systems. To learn more about lively.next visit the project page or dive into the live system.

Draggable Code

This prototype implements a direct manipulation tile scripting interface that seamlessly produces a textual program representation.

click to play video

Starting from an inspector that provides access to properties and behaviors of objects, a user can assemble programs by dragging and dropping tile representations of these properties or control flow structures. The assembled textual program can be modified directly or via further drag-and-drop operations since the program, even when presented in its textual form, can be converted back into tiles using its syntax tree.

live workspace

JavaScript (back-in-time) debugger

Part of the Lively tool suite is a framework to control program execution. The framework allows to to implement a JavaScript debugger directly inside the browser without the need for browser extensions or VM debugging APIs. Apart from convenience this allows to implement features such as back-in-time debugging and edit-while-debugging that cannot be found in most debuggers.

click to play video

This evolved as joint work with Marko Röder and Christopher Schuster. The framework itself is presented here.

BrightTable

The BrightTable prototype explored how a graphical user interface can be integrated into conventional workflows such as drawing and arranging items on a desk.

click to play video

By projecting the user interface from the top and having a camera (and in a later version a Kinect sensor) detect objects and gestures, virtual objects can be controlled and real objects (such as drawings on a piece of paper) can be integrated in the virtual world.

The source code for the computer vision part can be found at github.com/rksm/BrightTable.

CodeChisel3D

CodeChisel3D is an experimental development experience for VR. It is based on three.js and can be used by visiting a web page with a WebGL-enabled browser.

See the project page for demos and more information.

cloxp

Cloxp is a live, Smalltalk-like development environment for Clojure.

In the tradition of Lisp systems, Clojure provides a powerful meta system API that can be used to implement tools like system browsers, inspectors, and live workspaces. See the project page and my Clojure/West talk for more details. A live version of cloxp is running at cloxp.lively-next.org.

paredit.js

Parser and editing framework for s-expressions, useful for developing editor support for Lisp-like languages. Here is the project page and the library on Github.