Sign in

Software Engineer — JavaScript, Rust, WebAssembly
Component lifecycle — Comprised of a “view” node, pointing to and action node titled “JavaScript” with an arrow titled “user event.” The action node points to a “calculate” node with an arrow titled “pass data to rust.” The “calculate” node points to a “render” node, with an arrow titled “feed new state to render.” The render node points back to the “view” node with an arrow titled “inject new render”
Component Lifecycle

First I’ll start off by saying, just because you can do what we’re going to talk about in this post doesn’t mean you should. This is an idea and a first step to exploring a functional approach to building reactive interfaces with Rust and WebAssembly.

The goal of this post — as with other posts I’ve written about WebAssembly in the past — is to show what we can do with WebAssembly and demonstrate that it doesn’t just have to be a tool for pulling computationally intensive algorithms out of our JavaScript, or porting games to the web.

High Level

When we…


Rusty gear on yellowing grass with an ocean backdrop.
Photo by Erik Mclean on Unsplash

State management in any application is always a super fun problem to solve. When it comes to integrating WebAssembly with existing applications or starting from scratch with a new project, this problem gets even more interesting, but it’s not as complicated as it may seem.

Before we jump in, I do want to make it known that this may not yet be the most performant solution for general state management (“yet” is important there). …


Photo by Samuel Zeller on Unsplash

In this tutorial, we will be walking through the primary features and setup of the React Navigation, Drawer Navigator.

If you haven’t already, I recommend taking a look at Intro to React Navigation before reading this tutorial. It covers initial configuration and setup for this project.

Currently we have a view that looks something like this:

Source code: here


Photo by Annie Theby on Unsplash

In this tutorial, we will be walking through the primary features and setup of the React Navigation, Bottom Tab Navigator.

Before reading through this tutorial — if you haven’t already, I recommend taking a look at Intro to React Navigation. It will cover the initial configuration and set up for this project.

Currently, we have a view that looks like this:

Source code: here


Photo by Alexander Andrews on Unsplash

The base of this example project has been built with the Expo CLI. For simplicity’s sake, we’re starting with the blank JavaScript template.

For any questions relating to the Expo CLI, please reference their excellently maintained documentation. I will also be posting about how/why to use Expo in the near future.

When you start your project and open the simulator (our project, will be using the iOS simulator for iPhone 11 Pro Max), you’ll see this:


Octocat from Atom homepage

First, you’ll need Atom installed:

  1. Type cd ~/.atom into your terminal
  2. Enter atom . to open your .atom files in the Atom editor
  3. Open the snippets.cson file view in your editor:


Photo by NordWood Themes on Unsplash

I wrote an article a couple of weeks ago about prioritization and understanding goals in a broader context. A big part of remaining goal-oriented, while still navigating a complex problem or project, is being able to learn quickly and becoming comfortable with not knowing.

Get Comfortable Not Knowing

At the start of any project, anticipating there will be problems you don’t yet know how to solve is incredibly helpful. This anticipation allows you to approach all tasks — even the ones you’re familiar with — flexibly and with less discouragement as you progress.

Often, relearning a familiar task reveals quicker or more efficient solutions…


Photo by Romain Vignes on Unsplash

While many of the analogies I use relate to software development, I’ve found the concepts outlined here to be useful in other contexts. I feel that it is helpful to acknowledge that though the concepts are applicable in a software context, I have developed these perspectives primarily outside of the realm of software.

Every project comes with a unique set of challenges and obstacles. To ensure success, it’s important that you approach any given project with a clearly defined purpose.

Separate Signal from the Noise

Often people talk about goals in general terms: “I want to build something that changes…

Sean Watters

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store