Personal Projects
Squarifier
A simple tool for turning vertical phone photos square by adding white space to the sides; originally intended for photo uploads to Poshmark.
Each batch of photos loaded into the file picker is processed on its own web worker thread with the canvas API via OffscreenCanvas, and packed into a data URL for download. Multiple photos are zipped with JSZip, slightly modified from the publicly available version for use with web workers.
Stack: Javascript
Corporate Work
ONE/SIZE
Although I work on many brand sites and various other projects, the ONE/SIZE website is where I've invested most of my effort. I didn't do the initial build, but over the last 2 years I've brought the site from over 1.5 MB of JS bundle down to about 35kB compressed and minified. At this point, I've rebuilt or refactored most of what you see.
Most of the gains have been rewriting UI components with vanilla JS to eliminate wasteful usage of third-party libraries; one notable example was including the entire GSAP library into the site bundle, but only using it for a slide carousel, which is a trivial task with a few lines of CSS+JS.
I've also led internal efforts to add file size limits to our content policy, in an attempt to keep above-the-fold images and gifs/videos to reasonable sizes for our majority-mobile users.
More recently, I rebuilt a find-your-skin-tone matching quiz with React. Previously, each of the four separate quizzes was a large liquid file replicated four times, running on some pretty hairy vanilla JS. The new quiz is faster, cleaner, easier to maintain and has all the quizzes living in one unified place. You can check out the quiz here.
Shopify liquid is used to construct a JSON script tag with the product variants' metafield information used for traversing the quiz tree, the React app reads it in and does the rest.
Other Work
I've worked on several other properties for my company as well. Here is a brief list of the sites I've worked on to various degrees:
- IGK Colorgames
- LBP Pro
- R+Co
- R+Co Hairmail
- R+Co Education
- Elaluz
Interactive experience designed + built by me for the launch of IGK hair dye products.
Other than the card-back images, all graphics and animations were coded with vanilla SVGs and VueJS for tying it all together. The color quiz and try-on experience are not mine, though
Non-public storefront for pro customers; VueJS SPA built on Vue Storefront eCommerce framework. In addition to normal maintenance, I also built a bulk-ordering experience for our larger customers.
Various small-to-medium features and bugfixes
Product recommendation app built with Ionic. Used by salon artists to build carts of recommended products to send to their customers, for which the artist gets affiliate credit. Invitation only so I don't have a link :/ I did roughly 90% of the design and implementation.
Jury-rigged a VueJS digital calendar with date range selection and some boolean filters into a platform that wasn't really designed for adding extra stuff
Similar optimization work to ONE/SIZE, though not as extensive. Also a number of features, such as recommended product carousels and a free-gift module