Why a No-moonlighting Guideline Benefits Employees

I had an old employer reach out to me the other day asking if I’d like to do some contract work for them. As I have in all these situations, I recalled Atomic’s guideline for Atoms—we should not do work on the side that competes or conflicts with Atomic’s business.

While it’s immediately clear how such a guideline protects Atomic’s business, I’ve also found that it’s really helpful for me personally. Read more on Why a No-moonlighting Guideline Benefits Employees…

Spreading the Spread and Rest Love

JavaScript’s spread syntax has proven to be an extremely useful tool while working with immutable data structures as part of a React/Redux project.

Now that it’s widely available for objects in LTS Node 8 (as it has been for some time for other runtimes via TypeScript), it’s interesting to go back and take a look at all it can do. Read more on Spreading the Spread and Rest Love…

Toggling Switches when the Server Says “No”

We had an interesting user experience challenge on a recent project. When the system was in a particular state, the user was allowed to toggle a switch. The system would immediately acknowledge the toggle and, since it was on a local network, do so faster than the user could perceive.

Our problem was that sometimes, in situations our application couldn’t track because we didn’t have the necessary information, the server was responding negatively to the toggle. Our challenge: how to communicate that yes, we got your click, but we can’t actually toggle the underlying item right now.
Read more on Toggling Switches when the Server Says “No”…

Understanding and Embracing TypeScript’s “readonly”

If you’ve tried to use JavaScript in a functional style, you’ve no doubt chafed at the fact that all those little objects flying around at any given time are about as far as they can possibly get from immutable. You can, of course, be careful to write code that never mutates an object, but while good practices improve your code, they’re weak defenses against bugs.

TypeScript can help you with its readonly property modifier. With readonly, you can rely on TypeScript’s static analysis to enforce and flag mutations in your codebase.
Read more on Understanding and Embracing TypeScript’s “readonly”…

Can the macOS Disk Utility really erase an SSD?

Laptop computers, especially those with a lot of internal storage, are very convenient. In the same amount of physical space that a magazine would take up, we can carry an amazing amount of data with us and work with it anywhere. One flip-side of that benefit is that all that data remains inside that computer even after we’ve moved on to a new one, unless we take steps to erase it first. Read more on Can the macOS Disk Utility really erase an SSD?…

Representing Function Properties in TypeScript

We’ve been using TypeScript on an Electron project. It’s been a huge win already—a little additional upfront investment gives us more confidence that our code is correct and reduces the chance that it will pass unexpectedly-shaped objects around, a source of many bugs in my past Node applications.

But sometimes, it’s not immediately clear how to type certain kinds of objects. You can, of course, represent these as any whenever you need to—but any any you rely on can weaken your code’s quality. Last week, I discovered another way to avoid falling back on that crutch, thanks to the power of TypeScript’s type system.
Read more on Representing Function Properties in TypeScript…

Virtual Network Customization in VMware Fusion

When working on a project where we need to run software that typically runs on another operating system, virtualization can be a very useful tool. On macOS, VMware Fusion is an excellent choice for this; it has many time-saving features, and its compatibility is top-notch—especially if you need to run Windows or macOS itself in a VM. Read more on Virtual Network Customization in VMware Fusion…