I spent more than four years working at Constant Contact, and for almost all of that time, I was assigned to a project nicknamed 'Galileo.'
When I first arrived the CTO had a clear vision for the product, and I played a supporting role to a lead implementor and architect.
The frontend of Galileo is built around a component based architecture, where components like an "Image Editor" or "Text Editor" collaborate together to build a document. Each component controls a small part of the page.
One of the first items of consequence I built was an Image Editor that
<canvas/> to do inline cropping:
This period was marked with a serious effort to "get testing right," and I became intimately familiar with Capybara and Selenium testing. Unfortunately, we did not quite have the hang of unit testing yet, and we ended up deep into an anti-pattern known as the Software Testing Ice Cream Cone.
I spent the next phase of the project focused on making all of these people successful.
This resulted in:
Galileo was the first application at CTCT to deploy in this manner, but the groundwork I put in place now serves as the mechanism by which all of our static apps deploy.
While I was doing this infrastructure work, I setup several systems that helped my team members be more efficient. One example was direct notifications when builds completed:
And another was room notifications with links to source code diffs when deploys completed:
While I was doing the work above, I ended up leading the backend team.
However, once we were building and deploying in a reasonable fashion, it was clear that the frontend team needed some extra support, and so I switched.
Though it wasn't glamorous, I worked on our Text Editor with one other engineer for the next several months. It was based on an older build of the Aloha Text Editor and our changes were focused on making it work "more like" Microsoft Word does when it came to formatting content.
It is extremely nuanced (read: boring), but the following took a non-trivial amount of effort:
The highlight is what you do not see: we wrote hundreds of unit tests, cleaned up untold amounts of old code, and tracked the new behavior to an increase in the KPIs of our project.
More colorfully, we next spent two weeks building out this reusable color picker: