Projects

Product Management

“Introducing 3rd Party Functionality to the Fitbit Blaze” product feature

The following artifacts are the result of my experience at Product School in the Spring of 2016, where the final project requires either pitching a new product or a new feature for an existing product. Given my interests in fitness and technology, I decided to pitch the addition of third-party functionality to Fitbit’s recently-launched Blaze “Smart Fitness Watch”, starting with compatible web apps. This feature proposal touches upon Fitbit’s three platforms (smartwatch wearable device, native mobile app(s), and web) and two different user types (consumer/user and third-party developer).

Product Requirements Document (PRD)
An example PRD for introducing this feature, based upon public information. Creating all the typical PM artifacts is the focus of the course, culminating with the proposal presentation.
Feature Proposal Presentation (2.2 MB PDF)
The summation of the course. Includes modified script used for the class presentation (Please forgive the compression artifacts; the original PDF is a hefty 8.3 MB).
InVision interactive mockup of Fitbit iOS app changes
Using the existing app’s UX/UI design methodology.

Programming

San Francisco Fogworks

This website is designed, hand-coded (primarily using Panic Coda), and managed using Git by yours truly. Further details of technologies used can be found in the site’s Colophon.

CalQuakeBot

Version: 0.0.0

This was a little project I put together as a product of trying to learn both Node.js as well as the ins and outs of putting together an Amazon Alexa Skill. The backend parses the “All Earthquakes”/“All Day” ATOM feed, filters out the seismic activity from California and the basic data reported, then produces a simplified RSS feed that the Alexa Skill subscribes to.

The Node.js backend is currently pretty hacked together (I lovingly refer to it as being on the level of duct tape & bailing wire, with some creative stapling thrown in for good measure) so I want to give it a good once over before publishing to Github. Despite all that, it’s been humming along pretty nicely on Heroku and the Skill is available for you to add to your “Flash Briefing” if you’d like.

HTML::Pipeline::TypogrubyFilter

Version: 0.0.0

As I’ve been working on developing a CMS with Ruby on Rails to replace this site you’re currently viewing, I’ve been playing with the tremendously useful HTML::Pipeline gem which is kind of like the IFTTT of text markup in the Ruby world; it enables you to string together any number of filters through which you can run your text including Markdown. In researching ways to also include Smarty Pants I tripped across Typogruby, which does the job in addition to throwing in some extra typography enhancements for your text as it makes its way to the web. After fixing a bug in its stated default behavior I decided to take a stab at putting it in a HTML::Pipeline filter, resulting in this very basic gem.

HTML::Pipeline::RedcarpetFilter

Version: 0.0.0

After getting TypogrubyFilter out the door and coming across an unusually heated discussion within HTML::Pipeline’s issues regarding its use of the unsupported github-markdown gem for its Markdown filter, I took my learnings and put together a(nother very basic) gem leveraging the Redcarpet Markdown gem.

There’s a lot of work left to do in these Ruby gem projects, but they provide good starting points if you have a need.

Other & Miscellaneous

A Foodie’s Energy Gel Tasting Notes

Last Updated: 25 July 2019

If you run, bike, or otherwise exercise for long enough that you need mid-flight refueling, you’re no stranger to energy gels. Or that they vary widely in taste. In the interest of helping others make a somewhat informed decision as they blankly stare at the wide variety of gels at the store, I share my tasting notes on the gels I’ve tried here.

How to Migrate Your Email Hosting to MXRoute

I wasn’t happy with DreamHost’s email hosting, so I moved it to MXRoute. Here is the guide I wrote in case you’d like to join me.