Brainiac Corner with Matt Dawson

The Brainiac Corner is a format where we talk with some of the smartest minds in the system, database, devops, and IT world. If you have opinions on pirates, or anything else related, please don’t hesitate to contact us

mattdawson

Today we interview Matt Dawson, a builder of Internet things. His current focus is client-heavy web applications, but he’s also built a slew of server-side APIs and worn the sysadmin hat from time to time. He is the Lead Software Engineer for the Web Applications team at WillowTree Apps. Previously, he worked at Convoy (née Category 4), the Southern Environmental Law Center, and EMILY’s List.

How did you get from stork to brainiac (i.e. what do you do today and how did you get there)?

When it comes to computers, I’m mostly self-taught. My degree is in English, and up until about 10 years ago, I always thought I’d make a living teaching creative writing. My first job out of college (at EMILY’s List in Washington, DC) found me shoulder surfing while the DBA wrote SQL queries to fine-tune donor targeting. At SELC, I helped enough folks with Excel macros that when it came time to relaunch the organization’s website, I got put in charge. I didn’t know a thing about the web.

Given a system, I get really frustrated if I don’t fully understand how all the components work. As it turns out, the internet is kind of complex, so for the first few years of my programming career, evenings and weekends were spent studying. If I was writing CSS during the day, in the evening I’d be home reading up on TLS and SSL. The days and evenings added up, and eventually, I found I’d covered a lot of ground. An insatiable (and, at times, bumbling) curiosity is what got me here. That, and the adage “always be shipping.”

After a decade of a deep-dive on the internet as a whole, it’s been immensely rewarding to focus intently on one specific area of study. When I returned to front end development a couple years ago - this time, with a heavy focus on JavaScript - I could see that all software systems share and benefit from the same handful of patterns. JavaScript’s actually a fun language to work in; if you take some time to embrace the constraints, you can mold it into a sensible shape.

What is in your group’s technology stack?

The Web Apps team at WillowTree is working more-or-less exclusively on single page web apps - that is, the server bootstraps a browser-based application with a relatively minimal HTML file, and JavaScript and CSS do pretty much everything else. Though this pattern is actually about as old as AJAX, it’s only really hit its stride in the last few years. The ecosystem of tools in this space is extremely volatile, and my team tends to use things that are either proven and battle-hardened, or that have a ton of momentum behind them. We like shiny new things, but as a group, we’ve been bitten enough times to be wary.

On the JavaScript side, we use Backbone.js, almost always paired with Marionette.js - a toolkit that adds some really helpful conventions and sugar on top of Backbone’s minimalistic take on MVC. Out of all the frameworks, we’re bullish on React, especially when coupled with the Flux Application Architecture.

On the presentation side, we like Sass for all the things it adds to CSS. We’ve used Compass, a toolkit on top of Sass, but we’re frankly sick of its magic, and are starting a super-secret project to replace it in our stack.

There are tons of other odds and ends. Grunt is a task runner we use for generating builds and generally tying everything together. For JS module loading, we use either RequireJS or Browserify. For HTML templates, Handlebars.js is fantastic. Our build and release process is automated using TeamCity, we love Github, and git flow brings order to our source control.

On the editor front, our team is pretty much evenly split between vim and Sublime Text. After years of vim use, I converted to emacs last year and can’t imagine switching back.

Who would win in a fight between ninjas and pirates? Why?

Ninjas. They’re quiet. My son would point out that this question would be more interesting if dinosaurs were involved.

How can we better foster Charlottesville’s technology culture?

Cross pollination between companies is crucial. I’ve been attending domain-specific tech meetups for the last five or six years, and they’re great. While it’s typical to have three or four really active groups at a time, there’s usually one that’s more active than all the others, and I’ve been lucky that CVjs has had that honor in the last year. beCamp is fantastic, and I think there are opportunities to foster the kind of connections that occur there on a more regular basis.

From my point of view though, the tech scene here is fantastic. On the whole, it’s a very open, friendly, and vibrant group of folks. Maybe if everyone was just more awesome that would help?

In six words or less, what are the biggest challenges your organization faces?

Staying nimble during explosive growth

What’s the best piece of advice you’ve ever received?

Lose the Imposter Syndrome. It’s not getting you anywhere. Also, though not advice per se, the premise behind rubber duck debugging has probably saved me months of development time. I do have an actual rubber duck on my desk.

What principles guide your expertise in your given domain?

  • Pretty much anything from the Zen of Python, but especially “explicit is better than implicit.”

  • Understand the constraints and embrace them. JavaScript is actually a tiny little language if you ignore the DOM API. Tiny can be good.

  • Even when you feel you’re doing something completely new, know that someone has almost certainly been here before. Take the time to research how they solved your problem.

  • Be wary of shiny new toys. This is true in every domain, but the client-heavy web world is plagued by backwards breaking changes and abandoned libraries.

  • A corollary to the above: If you can’t imagine forking and maintaining a given library on your own, proceed with caution.

  • Perceived performance is almost as important as actual performance.

How will your company change the world in the next 5 years?

WillowTree partners with big companies to build apps of all types and sizes. We got our start in mobile and web, but we’ve shipped software for everything - from embedded systems to workforce automation tools. We’ve got a really broad reach. We’re a bleeding edge software company working at a time where software is, as Marc Andreesen put it, “eating the world.” It’s impossible to say exactly what the landscape will look like in 5 years, but we have some really good hunches. When the next big hardware innovation explodes, our team will already be working on version 2 of the software.

Published by VividCortex under: Brainiac Corner