Tools

These are the tools πŸ”¨ I use to make things.

β€œTo become a master at any skill, it takes the total effort of your: heart, mind, and soul working together in tandem.”

― Maurice Young



Design

I'm not the best designer, but I do make a huge effort to try to understand my users to produce interfaces that are functional and delightful.

Design tools

For drawing out rough to high-fi wireframes, I'll usually use Figma or Adobe XD. I think these tools are really good for developers who aren't actually designers by trade. The number of buttons, menus and functionality that's possible with the tool itself is quite minmal, but I find I can accomplish 80 to 90 percent of most tasks with 'em. It's a lot less daunting than Photoshop or the other Adobe alternatives.

For stock photos, I use Unsplash and Burst.

Design methodologies

Stanford has this really great crash course on Design Thinking. I'd recommend checking it out if you're into human-centered design and would like to learn how to to solve people's problems through Empathy. The Design Thinking Bootleg is a set of tools and methods that I use to design for users of products I build.


Development

I'm predominantly a JavaScript developer. However, September last year (2018), I started using TypeScript and it's become my preference (type safety, classical object orientation, compile-time error checking). It's beautiful... but I'm often going overboard (bit by the statically-typed bug).

For small front end codebases

My library of choice is React.js. It's like lego to me. Such a delightful tool. I'm a huge fan of JSX over templates, any day. Smaller projects and projects where I'm the sole developer will usually be in React with Sass for styling.

For small back end codebases

If you asked me last year, I'd say it would have been vanilla Node.js, but these days, I'm inclined to pass all of my Node.js code through a TypeScript compiler and write TS code instead. It's a lot easier for me to practice writing SOLID code this way.

For large front end projects

React + Redux w/ TypeScript OR Angular + RxJs.

Angular works better when I'm on a team of 3 or more developers because everyone seems to have their own React style. It also depends on the skill level of everyone on the team, but I find that having a rigid framework like Angular where there's only one or two correct ways to do things, like Route Guards for example, is a benefit to team productivity.

Source control

Git all the way. I prefer to use the Git Flow branching model for collaboration and releases.

Continuous Integration

I've been really happy with using GitLab's CI tools for the past couple years. I've also used Jenkins in the past.

Ops / Automation

Terraform over CloudFormation, and AWS over GCP. Ansible for random stuff.

Prerendering

Prerender.io has done a really good job and I've been happy with using them for prerendering some of my apps social links so that they can look pretty when they're shared on social media.

Analytics

Amplitude for tracking events, HotJar for heat maps, Google Analytics for everything else.


Setup

Laptop

I code with a 2017 15-inch Macbook Pro with a 2.8 GHz Intel Core i7 processor, 16 GB of LPDDR3 ram and a 1TB hard drive. It's the fastest machine I've ever used. I never thought I'd become a "Mac guy", but here I am.

Display

Currently, I code with two external monitors. I've really been digging the vertical slant these days, it's nice for having Slack, Asana or Discord open to monitor what's going on remotely.