I’ve worked on lots of projects over the years. Here are a few of the fun and interesting ones:
OffSite is a bolt-on tool on top of Google Ads that allows companies to run ads to new audiences via retargeting. Instead of retargeting to their own site’s traffic, other site owners can make their own audience available to trusted parties for a monthly fee. In addition to doing a huge amount of programming on this app, I designed and illustrated its latest iteration.
Under the hood there are some interesting ideas. OffSite generally abstracts some parts of Google Ads’ UX where we thought it could be improved, and in other places offers a 1:1 replication of features. It took a good deal of refactoring to land on an elegant modeling, especially where OffSite introduced concepts that had no corollary in Google Ads. It’s a bit hard to grasp at first, but the app itself ended up nicely refactored and relatively small considering the complexity of what it does.
I’ve worked on many apps where the source of truth is a third party service, like Salesforce, Google Ads, and Stripe, among others. Each time I feel like I’ve gotten closer to striking a good balance between storing what we know to be true locally and also making sure we’re in tight sync with the external datastore, but until OffSite I’ve never felt fully satisfied with any approach. The bulk of the Google Ads API’s weirdness is tucked neatly into Martin Fowler’s gateway pattern. Models backed by remote data have a simple Rails concern with a handful of methods intended to be
supered. All-in-all, it required surprisingly little code to handle a tricky problem. Interestingly, the first pass at this in OffSite involved some metaprogramming, but because the junior programmers couldn’t easily understand it, we refactored into something even more elegant without resorting to metaprogramming.
Stack-wise, OffSite is a pleasant mix of Rails and React. The approach is probably slighly unorthodox in that we’ve tried to let Rails do what it already does well and not reinvent the wheel. In most cases, this means replacing individual inputs with React components rather than reimplmenting entire forms or views in React.
Sentio is an small, tightly scoped app that I had the privilege of working on for a few years. It’s mostly Ruby with some React and R, mixed with some external APIs. It allows job candidates and team members to take simple surveys. With some statical analysis and input on which team members perform the best, it gives ratings on who is most likely to fit well with the team. The app generates nice reports and has some compelling insights.
This was an exercise in finding the fastest way to quickly run R scripts from ActiveJob on Heroku. Heroku does have R support via custom buildpacks, but the deployments and performance were pretty slow. Eventually we settled on Docker and some clever Ruby that wrapped up all of the Docker-based R evaluation into an small, elegant class.
SC Codes Online Platform
SC Codes is a South Carolina statewide initiative to facilitate free online and in-person programming courses. I worked on the online platform that supports this effort. The educational component is hosted on Pathwright which was built by a few local friends. My team and I took the custom CSS feature to an extreme the Pathwright team didn’t think possible, and we acheived a pretty nice looking custom feel.
We also built a corresponding Rails app that stitched together SAML2 authentication, hosted a job board, and supported an embeddable code eval widget that was embedded directly into the content on Pathwright. The result is a cohesive system that feels like a single app, when it’s really a set of tricked-out Pathwright courses, a Rails app, and a Wordpress for marketing. My team and I also created all of the content and all of the illustrations.
You can find the site at https://sccodes.org.
There was a plan to progressively enable editor highlighting for different language features by splitting the CSS into smaller files that could each be loaded when unlocking treasure chests. An amazing bug actually just rewarded the player with bones instead of improving syntax highlighting 🤣
I co-founded and ran The Iron Yard, which for a while was the largest code school in the world. After years of teaching and managing the instructors, I moved over to build a learning management system for the school. With a team that was comprised of TIY grads, a senior designer, and a senior developer, we built a polished app. My product team also wrote a great deal of content for Newline that was used for online courses and in-class lessons.
It’s no longer online but the source is on GitHub
At Zaarly I worked on a styleguide and component system called Hammer. By today’s standards it’s a bit dated, but back in 2011 this was quite exciting.
You can still find it at http://hammer.zaarly.com.