Matt Widmann

 

About

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.

Photo with José Valim at ElixirConf EU 2017 in Barcelona, Spain

photo-with-jose-valim From the left: Matt Widmann, José Valim, Americo Savinon (co-worker), Matt Yeh (co-worker)

Experience

  • October 2016 - Today

    Technical Lead

    Promoted to Technical Lead

    More

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

  • November 2014 - October 2016

    Senior Developer

    Ruby on Rails Monolith on MySQL

    More

    WeddingWire’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. 😭

  • June 2013 - November 2014

    Senior Developer

    Promoted to Senior Developer (CACI acquired Six3Systems)

    More

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

  • April 2012 - June 2013

    Associate Developer

    Ruby on Rails / Node.js using MongoDB in SOA architecture

    More

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

  • May 2010 - April 2012

    Associate Developer

    Java J2EE using OracleDB

    More

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

  • May 2010

    Graduated

    Bachelors of Science in Computer Science

    More

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

Skills

Ruby
90%
JavaScript
90%
Elixir
80%
SQL
85%
MongoDB
70%
GraphQL
50%
React & Redux
80%
React Native
40%
Elasticsearch
50%
Docker
50%
HTML5
95%
CSS3
90%
jQuery
80%
Angular 1
70%

Open Source




Personal Projects

Slack Coder

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.

Description:

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.




Elixir Contributions

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

Phoenix Contributions

Nested & attr-less content_tag throws exception

Typo in prod.exs

Fix typo in channel documentation

README.md code typo

Ecto Contributions

Allow usage of index and unique_index with a single column without using a list

(Currently Open) Custom Associations

Absinthe Contributions

Pass connection to default_headers

(Currently Open) Allowing 1.4.0-beta

Other Project Contributions

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

Other Misc




Packages

Scrivener HTML Hex.pm

Cabbage Hex.pm

Gherkin Hex.pm

Flames Hex.pm

Plug Session Redis Hex.pm

Contact

Drop me an email if you are interested in me coding for you!

(703) 220 - 9613