Software Engineer

Michelangelo never saw a lump of marble.

He saw the Pieta and he would later write in his diaries about releasing the image inside. I do the same thing with JavaScript. JavaScript is the raw material, the medium that could become great software. I don’t see eccentricities or quirks. I see the new Basecamp, Hubot and Slack.

Over the last twelve years, as a Front-End Developer and Tech Lead, I’ve done everything from lead a Fortune 500 development team through an agile transformation to writing some of the best JavaScript of my life at distributed startups. I’m a seasoned Software Engineer.


Strong Engineering Skills

Currently, I wax poetic with ember.js as a software developer on BrowZine’s Front-End Engineering Team - a remote startup in the academic and commercial research space.

Previously, I shipped critical components on both Respoke’s Community Team and Respoke’s Front-End Team - a distributed startup in the communication space. Prior to that, I shipped as a Tech Lead at Nationwide and as a consultant in various industries from banking to education to medical to military simulation and training.


I’ve been fortunate, really fortunate, that my startup experience has been shaped with some of the most talented engineers and business leaders I’ve ever worked with.

ember-responsive acceptance tests


I’m currently working with a talented team of co-founders and engineers, leading the retrofitting of our existing ember.js desktop web application with a mobile responsive UI/UX. The project is coming along well so far. Resize your browser to try it out live. :)

The application is built using Ember CLI, Sass and QUnit for testing on the frontend, running atop a Node Express API and Mocha for testing on the backend.

ember-responsive acceptance tests

ember-responsive acceptance tests

ember-responsive acceptance tests

Automated acceptance tests are challenging for desktop presentations. They’re are doubly challenging for responsive presentations, but we’ve even made progress running our automated acceptance tests against our mobile responsive UI.

Learn more about how we got our ember responsive UI under test.

Apollo HD

Sometimes you get the chance to write the best code of your life when you least expect it. I got that chance at Respoke, a communication PaaS startup built on WebRTC.


As a JavaScript Engineer on the Respoke team, I helped developers see how easily we can add secure video, voice and data communication to our own apps using the power of WebRTC.

We used some of the most innovative front-end technologies of the day, including HTML5, CSS3 (LESS), Jade, Gulp, Bootstrap, JavaScript, ES6, Babel, jQuery, Angular, NodeWebkit, Jasmine, Sinon, SuperTest and Phantom:


And with these, we built Apollo - A powerful Slack competitor that enables team collaboration with chat, screen sharing, live video and voice.

Respoke Server Libraries

Wrote Respoke PHP and Respoke Java server-side libraries.


respoke-php - PHP serverside library for the Respoke REST API


respoke-java - Java serverside library for the Respoke REST API

Open Source Contributions (OSS)

During an ember-cli upgrade for BrowZine, found a critical bug in a major ember addon called ember-component-css. Analyzed the bug and submitted a PR to fix the same. We found the root cause to be in a dependency of ember-component-css called ember-cli-saas, but this PR helped folks make progress until we could get a fix upstream.


An Ember CLI addon which allows you to specify styles for individual components

Contributed a critical bug fix to Respoke.js which prevented screen sharing from working in Firefox and Chrome.


respoke - Respoke JavaScript Browser/Client Library

Contributed fixes to the respective browser plugins.


respoke-firefox-screen-sharing-extension - A base Firefox extension for enabling screen sharing from your domain using respoke

Lead the reorganization and documentation of the Respoke docs to what you see today.


Contribute to docs development by creating an account on GitHub.

Extracted Caramel from a Respoke internal tool I built to facilitate cross-platform rendering of Respoke’s responsive transactional emails in the various email clients (Gmail, Outlook, Yahoo, Mobile, etc).


caramel - Caramel: A responsive HTML email framework

Contributed Yahoo email client fixes upstream to Salted which eventually became the baseline for Respoke’s and Caramel’s responsive email framework.


salted - Salted: A responsive email template

Community Leadership

I believe in servant leadership and have always served the developer community first and my interests second.

Community Contributions

Demonstrated both patience and empathy while managing external contributors to both Respoke’s open source chan_respoke library and developer documentation.

Added Channel Variables and AMI Event for Respoke Session by gcareri · Pull Request #9 · respoke/chan_respoke

Added two new features: Set of Asterisk Channel Variables related to the Respoke Session AMI (Asterisk Manager Interface) new Event 'respoke_session' in order to show the Respoke Session informat...

Developer Talks

Toured the east coast, introducing developers to WebRTC - a powerful HTML5 API for encrypted peer-to-peer Voice, Video and Data communications.

WebRTC: Unicorns, Narwhals and The Real-Time Web

You probably don't know WebRTC as much as you think. I'm not surprised. WebRTC is both amazing and terrifying. No real standards exist between browser vendors. How to integrate WebRTC the right way? WebRTC is but one ingredient to a successful real-time web recipe.

Along with the talk, distributed a small sample signaling app using Node, Socket.IO showing developers how to get started with WebRTC quickly.

tiandavis/ - Sample app showing how to use the HTML5 WebRTC API

Another talk focused on the story of JavaScript as seen through the eyes of the Hero’s Journey itself.

JavaScript and The Monomyth

JavaScript and The Monomyth explores the story of JavaScript as you've never seen before. Learn more about The Monomyth. Dig deeper into the story of JavaScript:

Strong technical writing skills

Take a look at a few screencasts and blog posts I produced along the way.


Technical screencast on my favorite uses of the setInterval and setTimeout JavaScript timers.

HTTP Polling Using JavaScript and jQuery

Quick screencast on a few JavaScript polling techniques


Thought leadership technical blog post on discussing whether Google’s WebRTC adapter.js is a shim or a polyfill and creating a framework for other developers to determine whether a JavaScript library is a shim or a polyfill.

JavaScript: Shim vs Polyfill

I'm currently working on a conference talk about WebRTC. One of the foundations of any WebRTC library is some form of Google's original adapter.js, which seeks to normalize the WebRTC API across various browsers. As I was about to build this particular slide, one question started to whisper in my ear, "Is adapter.js a shim or a polyfill?"


Google search result rank number three for the topic.

“@corgrath: The best article I have read so far regarding the shim vs polyfill terminology. Thanks :-)”

Fun technical blog post written for mashing up two popular concepts: WebRTC and Instagram Filters.

WebRTC Instagram Video Filters

With more than a $1 Billion valuation and over 75 million daily users, Instagram is arguably one of the most popular social networks today. Did you know more than 55 million photos are posted daily on Instagram? Or that the platform sees over 8,500 likes per second?

Thought leadership piece discussing the story of JavaScript told through the eyes of Joseph Campbell’s “Hero’s Journey”.

JavaScript and The Monomyth

In his seminal work, "The Hero with a Thousand Faces", Joseph Campbell put forth the idea of The Monomyth. The idea is based on the observation that a common pattern exists beneath the narrative elements of most great myths, regardless of their origin or time of creation. Simply put, all of mankind's myriad myths are but variations of a single great story. This is the monomyth and is most commonly expressed as a hero's journey....

What’s next exactly…?

I’d love to learn more about the position, the team and the company. Go ahead, email me and we’ll continue the conversation.