RxJS is a powerful library to use. With that power, however, comes a lot of complexity. And with that complexity comes a lot of ways to get into trouble.

In this article, I’ll take you through some common pitfalls that you’ll need to look out for when using RxJS, and I’ll be sharing tips on how to avoid them, linking to external resources when I can.

Mishandling subscriptions

Alain Chautard calls this “Subscribing too early” within his RxJS pitfalls article. Essentially, this arises when you’re writing a function whose asynchronous behavior is of interest to a piece of calling code. …


This is the third and final part in a series called Demystifying RxJS, where we build our own miniature version of RxJS in order to gain a deep fundamental understanding of how it works. If you’ve read Part II, you can continue where you left off. Or, you start here and follow along by forking the CodeSandbox containing the completed code for Part II. Or, check out this CodeSandbox containing the complete miniature library.

Over the last two parts of this series, we’ve built our own miniature version of RxJS, complete with Observables and operators. In this final part, we’re…


This is the second part in a series called Demystifying RxJS, where we build our own miniature version of RxJS in order to gain a deep fundamental understanding of how it works. If you’ve read Part I, you can continue where you left off. Or, you can fork the CodeSandbox containing the completed code for Part I. You can also find the completed code for this section at https://codesandbox.io/s/demystifying-rxjs-part-ii-completed-5fqxy. Finally, you can view the complete miniature library code at https://codesandbox.io/s/demystifying-rxjs-complete-implementation-5ib63.

In Part I of this series, we implemented Observables, a key component of RxJS. However, these Observables are pretty bare-bones…


This is the first part in a series called Demystifying RxJS, where we build our own miniature version of RxJS in order to gain a deep fundamental understanding of how it works. You can follow along using this starter template on CodeSandbox, or check out this CodeSandbox containing the complete miniature library. You can also view the completed code for this section only at https://codesandbox.io/s/demystifying-rxjs-part-i-completed-0utge

Observables are the abstraction at the heart of RxJS. They provide the foundation that the rest of the library builds upon. Let’s start our own RxJS library by building Observables ourselves.

Below is the TypeScript…


If you’ve ever worked on an Angular app before, or you’re a frontend developer that’s interested in Reactive Programming, you’ve most likely worked with RxJS at some point. It is an extremely powerful library, capable of creating simple, elegant abstractions over otherwise tricky problems. For example, using RxJS you can implement auto-complete in a few lines of code. With all of this power, however, comes a world of complexity. This is especially true if, like me, you learned RxJS in tandem with trying to build an Angular app. Perhaps you’ve done — or are currently doing — the following:

  • Staring…


Icons via Font Awesome, licensed under a Creative Commons Attribution 4.0 International license

Standups are an essential tool on software teams for exchanging information and ensuring alignment. Having used standups — along with other agile principles and practices — at both Refinery29 and Google to ship successful software projects across distributed, cross-functional teams, I believe they are a cornerstone of successful product development.

However, the way standups are traditionally run — a 15-minute morning meeting requiring a team to literally “stand up” in a circle and talk about what they did yesterday, what they’re going to do today, and whether or not anything is blocking them — is not without its flaws. First…


After completing work on my custom IPython auto-loader extension for importing data science libraries, I tried to save myself even more time. I wanted to access data in my data warehouse directly by querying BigQuery from IPython. This blog post describes my approach to that problem. I’ve included an “appendix” at the bottom showing some example analysis using my extension with the BigQuery HackerNews dataset.

I should point out — however — that the BigQuery Python client actually has IPython support built-in. …


Over the past year, I’ve been getting more and more into data science and machine learning. While doing so, I noticed that I had to perform the same repetitive tasks in IPython and Jupyter notebook every time I wanted to conduct some research, pulling me out of flow. To address this, I built some custom IPython extensions that have dramatically increased my productivity. I’d like to share with you these extensions, how I built them, and how I use them in my day-to-day research. The example code for the extensions can be found below. …


For the last 1.5 years or so, I’ve had the honor and the privilege of serving as the Technical Lead for Material Components for the Web, fondly known as MDC-Web. With bittersweet feelings, I’d like to let everyone know that today is my last day on the MDC-Web team. Starting in July, I’ll be joining Google Cloud Platform to help build out their developer console with exciting new products and features (I’ll be taking a much-anticipated vacation before that 😎 🌴).

When Sérgio and I first spoke back in Winter 2016, we talked about taking MDL “v2” and turning it…


Now is a great time to live. We sit in clothes, on a chair, in a house, with lights, electricity, running water, air conditioning, etc. We retrieve meals without moving an inch or saying a word. We store our money all across the world and spend it as if it were right in our pockets. Maybe most importantly of all, we have a little briefcase-like device made from glass and wire that can connect you to all of the information in the world; and it’s considered inefficient if it can’t do that in under 15 seconds.

Funny thing is, 100…

Travis Kaufman

Software engineer specializing in UI / UX development. Proud New Yorker, lifelong learner. ⚡️Gryffindor ⚡️

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