Seeing the Forest through the trees
Tags: rust, blockchain, career
Published: 2021-01-25 22:25:58

Today I accepted an offer from ChainSafe to work on [Forest](https://github.com/ChainSafe/forest), the Rust implementation of Filecoin. I start on February 1st, and I'm very excited to get to work. So excited, actually, I'm working on a PR a week ahead of time, mostly because I'm actually really interested in it. It'd be something I'd contribute to even if I wasn't paid to work on it full-time.

For the majority of my career, my full-time positions were in JavaScript. But I had a really hard time getting hired as a TypeScript, NodeJS, and React developer last year. It was the middle of the pandemic, but what was worse, I got passed over by companies like Coinbase because I spoke to all levels of the stack. It's kinda counterintuitive, but that's not what they were looking for. They wanted someone who could put their head down and spend all their time on React components. So, they told me to restart the entire interview process as an architect, and interview with a different team. They also wanted me to move out to SF at the time, too. It resulted in some extraordinarily tough conversations with my husband. Would we have to sell the house? Would he come too? Those sorts of questions. It was rough.

I've never experienced burnout working on any programming project, but that time, I experienced burnout just from how much I interviewed. It was exhausting. I was put through a gauntlet of final interviews (4+ hours long) from three different companies, and dozens of others that I didn't get as far in, and countless phone conversations, tests, and code exercises. I don't really remember much from those times, but I do recall being really angry at the tech industry. I eventually just couldn't speak to recruiters with a sense of kindness anymore, and that was when I knew I had to take a break.

A few months later, I did some contract work in Rust (I was only able to get actual paying work for only 3 months last year). It was a great team and I delivered a solid result that everybody was really happy with, but after the contract ended, they had no more work left to give me.

![Fuzzr](https://dev-to-uploads.s3.amazonaws.com/i/9endkoy4wpwnuaf5fokn.jpg)
> Fuzzr, v0.0.5

After that job, I had enough money to survive for a few months as long as we lived frugally, so I decided to make sure I understood Rust really well. Really get a solid feel for borrowing, and how traits work. Put tools in the toolbox; Futures, Streams, Reference counters, Mutexes, Messaging Channels, Thread Pools, Deques, B-Trees, etc. And the result of those efforts is [Fuzzr](https://github.com/FuzzrNet/Fuzzr), and it could be something really cool. I'll keep working on it, too. There may even be opportunity for convergence, since it's basically a graphical frontend for storing things in IPFS, and Filecoin basically just commoditizes IPFS storage with a blockchain.

Also, in all my years as a NodeJS developer, I honestly couldn't say I truly understood something so basic as the difference between concurrency and parallelism. Thanks, JavaScript. Now I know about SIMD, fork-join, and message-passing. For me, it's not really systems development. I develop applications in the same way I used to in NodeJS, React, and Electron, just with Rust. I've been using Iced, a powerful pure Rust UI library for desktop-native applications, in addition to WebAssembly and WebGPU. Warp is a fantastic replacement for Express, and it's so good, most of the Rust devs I talk to don't even bother to put their production instances behind an Nginx reverse proxy. The Rust ecosystem has changed so much in just the last year. It's incredible for long-time TypeScript and NodeJS devs like me, who've basically just outgrown what the language and platform have to offer.

Anyway, I stayed up all night to make sure I was prepared for the interview. Only four hours after our final interview, I got an offer. (I only had two interviews! First with management, then with two of the team devs... That I managed to knock out of the park! Mercy!) And I've been noodling around in their codebase and GitHub issues the whole time, just to get a better feel for what I'd be doing. Besides, filing a PR is a total power move in negotiations, right? I should get some rest, though. Sure, it's daylight, but I only sleep when I'm tired.

I appreciate all the support I've received from my husband, my family, my friends, and my network during this rough, rough year, but finally, I can say I can truly see the forest through the trees.