Expertise
- Rails application development and deployment.
- Real-time visual collaboration between participants using Action Cable.
- Interactive data visualizations using D3.js.
- Interactive computational modeling and visualization.
- Wrote software and designed/built analog and digital I/O for Arduino Mega 2560 controller.
- Developed Python PID application on Raspberry Pi to control visitor interaction with a model lighthouse.
- JDK 13, Swing, computational modeling, UI, and graphics programming.
Clients
RLMG is an acclaimed digital design studio specializing in story-driven, interactive, dynamic, immersive, and educational installations for public spaces.
Created thoreausworld.com, a web site for displaying Thoreau artifacts held by the Concord Museum: concordmuseum.org with interactive elements inspired by NYT articles with embedded visualzationa..
- Repository: github.com/stepheneb/thoreau-microsite
The goal was to extract membership data from a complex denormalized CSV dump into clean SQL. The original database was Microsoft Exchange however the membership organization could only provide access to a denormalized CSV dump.
Developed an Rails v6.1 application to extract Rails was used to re-create a new set of SQL models and extract data from the CSV dump. In addition used the Google Map API to generate location data for member site addresses.
In order to develop efficiently a yaml cache artifact consisting of a partial set of columns was intermittently generated. This artifact is used by subsequent intermediate stages of importing to generatre additional yaml cache artifacts.
The rails model instances and association are created by importing data from the intermediate YAML artifacts. There are a number of rake tasks that manage access to the varipous cache artifacts, column mapping, and geocoding.
- Repository: project is in a private repository.
Worked with a designer at RLMG and content experts and a systems programmer at the Harvard Center for Astrophysics to create an Electron application for exploring and interacting with astronomical images taken by a wide range of NASA telescopes. The application is integrated with a large touchsxcreen into a kiosk for science museums.
- Repository: github.com/stepheneb/cfa-own-electron NOTE: The main repository is now private.
- More info: learnmaketeachshare.org/creating%20with%20software/2022/07/15/cfa-owns-electron.html
- Web demo: sstepheneb.github.io/cfa-own-electron-gh-pages
Worked with the CTO to assemble and program a prototype Arduino-based controiller for an experimental cooling device that used a combination of evaporative cooling and membrane technologies to independently cool and remove moisture from room air. The device was a finalist in the Global Cooling Prize competition globalcoolingprize.org/about-the-finalists
- Repository: project is in a private repository.
Created an extensive menu-driven controller test program to read and control the following inputs and outputs.
- ERE I2C-AI418S II2C ADC for measuring 4-20mA signals from three Dwyer pressure sensors and an EchoPod ultrasonic fluid level sensor.
- AdaFruit TCA9548A 1-to-8 I2C multiplexer for measuring five Sensirion SCC30 Temperature/Humidity Sensors.
- Adafruit MCP9600 I2C Thermocouple Amplifier for measuring temnperature of a cartridge fluid heater.
- Adafruit MCP4725 I2C 12-Bit DAC and an opamp circuit for generating a 0-10V analog output to drive a Johnson proportional control valve.
- Controlled speed and direction of two larger fans using ClearPath-MCVC mode servo smart motors.
- Controlled speed of two San Ace 140 fans with custom Arduino coding of a 25 KHz PWM.
- Arduino 10-bit analog inputs for measuring three Amphenol GE-2153 thermistors.
- Six digital relay outputs for controlling pumps, valves, and heaters.
- Float switch digital input.
- Designed a 24V power mosfet circuit along with custom Arduino coding to control a Burket proportional control valve.
Created and integrated an interactive data visualization grapher for S9's Java Swing application managing scientific data retrieved from sensor buoy monitoring systems.
- Time axis major and minor gridlines and labels span range from millseconds to years.
- Plotting area can be panned left-right and up-down by dragging.
- Drag a selection rectangle in plot to zoom-in..
- Transparent icon checkbox for switching to drag a selection rectangle to zoom-in..
- Transparent icon buttons for zooming in, zooming out, and resetting graph axes.
- Plot can be printed, saved to a png file, and copied into the system clipboard.
- Developed in Swing using TDD practices in NetBeans 11.2 and JDK13.
Grapher running in demo application.
TechnoFrolics combines engineering, art, the natural sciences, and play to create both compelling in-person interactive experiences as well as design tools for architecting and implementing these systems.
- Integrated omxplayer to control playback of m4v video stream.
- Digital input for user interaction.
- Implemented C++ module and JavaScript NPM package libraries for easily streaming structured application events over WebSocket sessions.
- ELectron application receives stream of events over WebSocket and renders a dynamic visualization.
Created prototype applications in C# and Xamarin.Forms for networked virtual reality communication and scene-building/modification in Unity.
- Conversion of original project to integrate with Visual Studio and msbuild development environments.
- Create Macos and Windows Xamarin-based GUI applications for generating streaming events.
- Convert older (2013) Java project into modern maven-managed project working in Eclipse 2019-06
Sightlines Group consults with purpose-driven organizations to both facilitate change that matters and develop web applications to manage these processes.
My work for Sightlines Group has been both programming as well as mentoring an internal developer in the process of addingh features and extending their existing PHP application.
- Integration of CouchDB and development of queries.
- Using Bootstrap styling to build responsive pages.
- Integration of Chronify slotpicker.
- More effective use of browser development tools for html, css, and javascript development and debugging.
Created proprietary web application for managing and facilitating in-person collaborative brainstorming and planning.
- Rails v5.1.6 with Postgresql and Redis backend data stores.
- Extensive use of ActionCable websocket framework to support interactive real-time visual and textual collaboration among participants.
- Interactive collaborative visualizations using D3.js.
- Administrative, authoring, participant collaboration, and reporting systems.
- Scripted deployment using Capistrano to AWS development, staging, and production AWS servers.
- Integrated with Bootstrap styling and components.
Cosmopolis: 49 Waltzes for the World (bacnyc.org/performances/performance/cosmopolis)
Architected and implemented the software for NYC-based video artists Roberta Friedman and Daniel Loewenthal's interactive video installation. Roberta and Dan shot short videos at 147 different items in Detroit. The installation has a map of Detroit displayed on a large touch screen monitor. Tapping the map brings up the closest video in a separate monitor. Visible hotspots on the map representing viewed item slowly fade out over time. Implemented using browser technology and WebVTT for Spanish subtitling.
- Cosmopolis: 49 Waltzes for the World (bacnyc.org/performances/performance/cosmopolis) Fall 2013
- Code repository (github.com/stepheneb/49waltzes-detroit)
- Interviews code repository (github.com/stepheneb/detroit-interviews)
Architected and implemented the software for NYC-based video artists Roberta Friedman and Daniel Loewenthal's interactive video installation. Roberta and Dan shot short videos at 147 different items in Detroit. The installation has a map of Detroit displayed on a large touch screen monitor. Tapping the map brings up the closest video in a separate monitor. Visible hotspots on the map representing viewed item slowly fade out over time. Implemented using browser technology and WebVTT for Spanish subtitling.