I have been a professional full stack developer for almost 8 years, 6 years in Ruby on Rails, and 3 years in Elixir (as a hobbiest) all against data stores such as MongoDB, MySQL, PostgreSQL, Redis, and Elasticsearch. My front-end experience ranges from classical jQuery, Angular 1, React & Redux, to a touch iOS development in Swift and more recently React Native. See the Open Source section for my work in Elixir (and a little React Native).
RoR experience has been in building RESTful API services (also GraphQL within the last year) and has gone far beyond Rails. I have developed everything from full on typical Rails applications (managing 10s of millions of rows), to partial applications using Rails Engines, custom gems, Sinatra applications, Rack applications and everything in between. Throughout my entire career, I have always been a top producer among developers with significantly more experience.
I like to advance my knowledge on a regular basis as a personal hobby and is the reason for my interest in both Ruby and now Elixir. I am frequently described by my peers and superiors as always being very passionate about technology and my work. I take immense pride in the quality of my work and enjoy solving real world problems.
From the left: Matt Widmann, José Valim, Americo Savinon (co-worker), Matt Yeh (co-worker)
Technical Lead
Promoted to Technical Lead
MoreI was promoted to a lead because it was recognized that I knew how to get things done efficiently and with good quality. It also helped that the lead on my team left to seek other opportunities. After almost a full year performing the lead role, the teams were consolidated and I decided to be the one to step down because I preferred being closer to the technology. I am among one of the highest contributors at WeddingWire and certainly has been the only one to constantly challenge the status quo and push the limits of what others believe is possible.
Senior Developer
Ruby on Rails Monolith on MySQL
MoreWeddingWire’s monolith Rails application is by far the largest codebase I have ever worked in (about 60k LOC). At WeddingWire I found the work environment I’d really been seeking with a rich culture and young atmosphere. Throughout my time at WeddingWire, I have been slowly pushing Elixir knowledge in hopes that the leadership sees the value in using it over the status quo Rails monolith - that has not been an easy endeavor.
Throughout the first year, a team of 3 other developers and myself worked on a side project written in Angular 1, using a Rails API backend building a WYSIWYG website editing tool. The project was unfortunately shut down due to an ever increasing MVP scope that made it near impossible to compete with other companies with significantly larger development teams.
My second biggest project was to create a messaging system for the user’s to communicate in real time. My team and I did a 2-week prototype using Phoenix channels. The team however had zero Elixir experience, and it was a high priority feature with little time to learn something new. After doing some initial performance testing against ActionCable (which was in a beta state at the time) it was decided to use the Rails monolith stack and pay Pusher instead for the real time layer. This project was also the first in React for me (Redux came later).
After several iterations and a few smaller projects, it came time to do another real time chat application, a different one. Instead of between users, the company wanted a chat concierge system that would provide rich features to our staff. One of the key features required presence information to know which employee was online (and how many users they were chatting with). Finally Phoenix Presence won the day. In the meantime while we were building, the team used a 3rd party service to start gathering some initial numbers. By the time we were about 60% done, the team got some bad news that the numbers were not looking good and the project was cancelled. It was later figured out that some of the data was incorrectly gathered and the numbers actually looked on target to what we were expecting, however by that time the team’s priority had already shifted and it has not since returned. The Phoenix application never made it to production. 😭
Senior Developer
Promoted to Senior Developer (CACI acquired Six3Systems)
MoreIn my last year there, CACI acquired Six3Systems and things begun to change slowly. Having had my TS/SCI pushed through because I was the best suited to debug any production issues, had decided that the government contracting world was not quite for me. My interest in the open source community had begun to grow as I dabbled in things like JRuby, Scala and the beginnings of what would become what Elixir & Phoenix are today. I decided it was time to move on and hoped that the commercial industry would be a better work environment.
Associate Developer
Ruby on Rails / Node.js using MongoDB in SOA architecture
MoreEven only having a little bit of personal knowledge using Rails, I was hired onto a DOD government project that wanted to utilize Rails but had no one with any expertise. I did a mixture of SOA services and direct data access to MongoDB. The team had begun to use and like Angular. For no strong reason, the system architect had us build the next project using Node.js and Angular with direct access to MongoDB (aka the MEAN stack).
It became clear to everyone after my first year there that my contributions helped to meet several of the government deadlines and overall increased the success of the project. I daringly asked for a $20,000 (25%) raise and the VP (overseeing the contract I was on) backed me up and said I deserved it.
Associate Developer
Java J2EE using OracleDB
MoreWorked on the NPDB/HIPDB medical systems reporting program which was responsible for performing fuzzy matching between queried data and stored reported data. The system was already a 10 year old Java J2EE project when I joined and did not utilize any sort of frameworks. Instead it had built out everything hand rolled itself, as was the norm at the time when the project began. This layed a good foundation for me while I learned about how things like their fuzzy matching system or database connection pooling worked since all the code was hand rolled with zero dependencies.
After working there for a few years, I began to become interested in newer technologies and quickly realized that a career on a 10 year old Java project wasn’t going to further increase my capabilities and help me to grow. On my own time, I picked up a Ruby book and taught myself Rails.
Graduated
Bachelors of Science in Computer Science
MoreI graduated George Mason University with a 3.2 GPA. I always found my programming classes to be the ones I both liked the most and had the most success at. George Mason’s Computer Science program helped me learn the fundamentals necessary behind what it would take to excel in Software Development.
I use this in my everyday routine to help increase productivity and keep me on top of my pull requests and my teammate’s pull requests. It includes an Elixir Backend w/ a GraphQL API, a React/Redux web front-end that shares its logic with a React Native iOS & Android application.
Slack Bot for watching your Github & (CI) builds This slack bot receives webhooks from Github and ensures that you’re kept up to date by sending your a message in slack with the status of pull-requests you’re interested in. The purpose of this bot is to increase productivity by reducing the feedback loop between when actions happen on Github and when you have time to follow up by keeping you more informed about their status.
Code contributions
Add IEx width option for larger terminal screens.
IEx callback documentation helpers
Minor documentation updates
Correct documentation referencing System.schedulers_online/1 to System.schedulers_online/0.
IEx callback documentation (squashed)
Correct documentation for proper grammer.
Fixed typo and improper use of their in documentation
Nested & attr-less content_tag throws exception
Fix typo in channel documentation
Allow usage of index and unique_index with a single column without using a list
(Currently Open) Custom Associations
Pass connection to default_headers
(Currently Open) Allowing 1.4.0-beta
Dynamo - Records -> Structs
ueberauth-github - Fix Elixir 1.4 warning
wobserver - Allow credentials to be passed up to allow securing behind phoenix pipelines
Rails - Add support for busting cache fragments containing asset URLs