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 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 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.
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.
-
If you want to learn more about my work, check out my LinkedIn.
-
If you want to see my art or personal projects, check out my blog.