Moxie

A newsletter by the Mixmax team

The Effective Engineering Demo

At Mixmax, our engineering team strives for a bottoms-up culture of product ownership. This means that anyone on the team, not just the founders or our product leads, can contribute their great ideas! We believe that all of us is smarter than some of us. ;)

Click to continue

How to correctly specify default options in ES6

Default object values considered harmful

When writing modern JavaScript, it's common to collect multiple optional parameters into a trailing "options" object. This allows clients to pass a subset of options and gives context to arguments at the call site. It also permits the API to use ES6 default parameters. But it can be tricky to get default parameters right with objects. Here's how.

Click to continue

How to work remotely

Surveys suggest that as many as 3 in 10 workers in the United States work remotely at least some of the time. In fact, the New York Times suggests that remote work is gaining prevalence faster than any other workplace benefit. Here are some tips from my experience living and working from Japan.

Click to continue

Improving Mongo performance by managing indexes

Imagine you want to learn more about database performance and you have in your hands a very large book about databases in general. How would you search for your topic of interest? More often than not, the answer will be go to the index of the book which is located at the back, look up the topic and it will say the page where said topic is discussed; well, the way databases find data is not all that different.

Click to continue

Precisely observing structural page changes

When integrating with a large, complex webapp, proceed with caution

This blog post is part of the Mixmax 2017 Advent Calendar. The previous post on December 6th was about Database-backed job processing.

Mixmax is built on Gmail. Our product, and its convenience and power, depends on tight user-interface integration with Gmail. In order to add features to Gmail for our users, we need to track the structure of Gmail’s [DOM] and be able to manipulate it. For years, we achieved this by crafting query selectors to identify important elements within Gmail’s DOM, and continuously re-applying these selectors as the page changed.

Click to continue

Terraforming all the things

Iteratively migrating to “infrastructure as code”

Ever been frustrated when someone decided to play around in the AWS UI? Does managing infrastructure through UI strike fear into your heart?

Click to continue

Handling 3rd-party JavaScript with Rollup

How and when to leave JS out of the bundle

This blog post is part of the Mixmax 2017 Advent Calendar. The previous post on December 2nd was about Mixmax’s new Sequence Picker SDK.

As of this writing, Mixmax has open-sourced dozens of packages in our primary language, JavaScript. The linchpin of our open-source strategy is npm, where we publish packages for both Node.js and, increasingly, the browser (hello React components!). Our bundler of choice, Rollup, makes it super easy to consume those packages client-side. But if you don't take care when configuring Rollup, you can end up publishing hundreds of kilobytes of unnecessary JavaScript to your users.

Click to continue

Mixmax Advent 2017

How To Write An Effective Engineering Spec

We at Mixmax are excited to introduce our second annual Engineering Blog Advent Calendar! Last year, we ushered in the holidays with twelve one per day blog posts. That went over so well, we’ve decided to make it an annual tradition!

Click to continue