Software Engineer

I know how hard it is to build the right team with the right people. I took some time to review your core products and I believe I’m the right guy for the job.

##Strong engineering skills

I ship hiqh quality code. I’ve shipped critical components on both Respoke’s Community Team and Respoke’s Front-End Team. 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.


At Nationwide, I lead a team of five engineers to build a suite of line-of-business applications to manage underwriting risk.

The first thing we built was a custom offline-first desktop application to gather underwriting risk data in parts of the United States you’d think time forgotten. The system would sync once on the Nationwide network.

We went on to build supporting batch microservices and an administrative platform built on ASP.NET MVC.

Built on a foundation of proven enterprise architecture - sepration of concerns, service oriented architecture, dependency injection and object relational mapping - the app suite went on to process over a million risk assessments per month.

To get there, we used best-of-breed tools like .NET (C#), ASP.NET MVC, jQuery, Backbone, Spring.Net IoC, NHibernate and SQL Server. Learn more about the project on GitHub.


Custom offline-first desktop application to gather underwriting risk data in parts of the United States you'd think time forgotten.

Check out another .NET project that’s more on the automation side of the house. This app automates logging into Gmail, taking a screenshot and uploading the screenshot to Amazon S3.

It uses Dapper.Net micro ORM to insert a record of the results into a relational database. Testing heavily with NUnit.


litmus - Automated Gmail Screenshot Processing

###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

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...

###Community Advocacy

In addition to helping developers make progress with Respoke.js, I also acted as an advocate on their behalf; Relaying ease of use issues to the right development team.

Sending JSON via sendMessage method

I am trying to figure out how to send a JSON object via the client's sendMessage method so that my app can send data back and forth between two different clients. The docs only cover how to send a plain string so I have been stabbing in the dark so far.

###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.


Uploaded by Tian Davis on 2015-11-25.


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.