I'm a creative engineer who builds delightful web experiences. I can advise your company about the web platform, performance, creative user interactions, and usable machine learning.

click this art to regenerate it
I made this little piece of art. It is randomly generated every time you refresh the page. You can also regenerate it however many times you want by clicking on it. Every art is new!

In 2021 I ended an 8 year stint as a Senior Engineer at Google, where I worked on making music and art and all sorts of creative interactions with Machine Learning, web components and web standards, and the guts of Chromium. You can read a bit more about me and my past work. Most of my personal code is on GitHub or on Glitch.

I am available for freelance work for prototyping, in a consulting capacity, or as a tech advisor. If you would like to get in touch with me about working with you, email me and we'll chat!


I work mostly with linocuts and pastels though often use algorithms and generative models in the brainstorming phases of a piece, keeping true to my tech origins. My work tends to fall in one of two areas: realism or creative reconstruction (taking something from the real world and changing it). When I paint realistic scenes, I take something familiar, like the inside of a cafe, and provoke a feeling of absence and melancholy. When I want to be more conceptual, I try to blur the lines between what is seen and what can be conceived. Either way, I hope to inspire an appreciation for the visual complexity of the real world.

A chaotic view of my art life is on my instagram; an organized one is on my studio page.


I gave it a shot at writing weekly notes. You can browse the full archive, but it wasn't a lasting initiative. I also occasionally blog about tech things that I've learnt or enjoyed, though the frequency of posts has taken a real nosedive lately.

RSS feeds: the firehose | just the blog | just the weaknotes.


I build very small (but cute, I think!) side projects that are either an attempt at "art", or are a thing that I need in my life and can't find elsewhere (like, practicing ASL fingerspelling, ukulele chords, or uhhhh understanding time keeping in JavaScript).

I sometimes also give talks at conferences, though the pandemic has really thrown a wrench into that.