Kenneth Pullen

Hi, you've reached the website of Kenneth Pullen. I am a software person, working on the web, mostly. I also make custom exhibits for Museums and State Parks, dabble in hardware, and I sometimes make art, too.

I have worked with many different technologies, but as of late I've been mostly using TypeScript, often with a bit of React or Svelte for UI. I'm not afraid of the backend, and when I'm there I usually use PHP.

If you want to work with me on a project, drop me a line. I'm always looking for new challenges and opportunities to learn.

Some of the things I'm proud to have worked on:

Made with Code

Made with Code was a national advertising campaign designed to break down the barriers and stigmas that surround engineering and computer science. Specifically the goal was to get young girls interested in programming to bridge the gender gap that exists in the CS workforce.

I was responsible for leading the technical development of the website, Blockly coding projects, and a directory of local coding groups. I also led the maintenance and integration team.

The project ended up reaching 5 million girls in the first six months. We also partnered with Shapeways, who 3D printed something like 175,000 bracelets - each one designed by a user in one of our coding projects.

Sketchpad

Sketchpad is an online, non-destructive drawing tool, originally created by Miko Deal. For several years I worked with Miko to maintain the application, and to create new features, such as a virtual filesystem layer for document management, a Google Classroom integration, and packaging Sketchpad as a desktop application.

The virtual filesystem layer is structured as a set of adapters, exposing a unified API for each backend, and shared sync logic. Currently the VFS has adapters for local memory, IndexedDB, the Chrome Filesystem API, Google Drive, and the V8 Filesystem API. With the VFS one can connect multiple backends, and then periodically keep them all in sync. The VFS was active for over 2 million users per month.

The desktop version of Sketchpad was packaged in Electron, to make porting to multiple platforms easier. It uses the VFS and Electron's file associations to maximize integration with the user's desktop environment.

Digital Guestbook

An offline digital guestbook kiosk for the Mackinac State Historic Parks exhibit on Mackinac Island.

The exhibit is installed in a building with frequent power outages, so the kiosk hardware needed to be able to start up on its own, and to be resilient to data loss. To combat these issues, I chose to use an off-the-shelf laptop for the exhibit's "brain". Connected to the laptop is a custom auxiliary power monitor; it connects to the computer as a USB keyboard, and wakes the computer when power is restored every morning (or powers it on).

User input is collected from an on-screen keyboard displayed on a touchscreen display. Initial performance was poor due to the event pipeline attempting to convert touches into mouse clicks or keypresses. I hooked into the raw event stream and built a react-based multi-touch on screen keyboard interface. The keyboard maintains 60FPS, and lets users type at full speed with all ten fingers (if they wish). There are also some failsafe heuristics, to make sure that users don't have to be perfectly accurate.

Collected comments are stored locally on the laptop, and to avoid lots of staff intervention, I integrated a local AI comment moderator using Ollama. Approved comments are displayed on a separate 60" TV hidden behind one-way glass (very cool!) so they appear to exhibit visitors as if they are floating in space. To allow for a customizable "zone" where visitor faces may appear in the final installation, and to give staff control over the comment display, I built an admin panel for controlling comment regions supporting draggable, overlapping regions.