An overview of working with live data — and yet another reason to love Elixir

Autumn Flax, silkscreen, by Feather Knee

Most of us have watched Netflix, so we know conceptually what streaming data means. Working with streaming data in code can seem much more intimidating than catching up on past episodes of your favorite shows. Understanding the why of things will make dealing with streaming data in any language more intuitive.

Whenever data is live updated continuously, you have a stream. It could be something continuous like music or video. It could also be a contiguous series of live data updates such as a Twitter…


Suppose that, like me, you’ve spent a long time writing JavaScript. Then you enter the exciting realm of Elixir and begin to discover the many wonders of working with multiple processes. I offer some basic questions answered.

“Aspens II”, oil on canvas, by Feather Knee

JavaScript is a single-threaded language. It may appear at times as though things are happening too fast for this to be so. A lot of clever compiler optimizations have resulted in great speed and weird things like variable declaration hoisting. These might make it appear as though commands are not being executed in order, often a side-effect of parallelism. There is no parallelism…


Phoenix LiveView Todos

This article is a companion to my recent talk on LiveView Components at ElixirConf 2020.

West Oakland II, oil on linen, 2011, by Feather Knee

First, a little bit of context. Feel free to skim to get to the code below.

For the past 6ish years I’ve built UIs in JavaScript, mostly with React. Recently I was lucky to land a role on an amazing team of Elixir experts. Thus my entry into the exciting world of LiveView.

JavaScript is the language that took me from Hello World to building data science apps in React at Netflix and NVIDIA. I’ve grown intimately familiar with its quirks. …


Recently I wrote my first Elixir app, and it was so fun I decided to document the process! This tutorial assumes some very basic knowledge of Elixir, JavaScript and React. In a time honored tradition of our people, this will be a Todos app.

We will use Phoenix for the Elixir app. In addition to having a cool name, it is the most commonly used framework for Elixir. We could have built our entire app with just Pheonix and Elixir. For a small app that would likely make more sense. However, I think it’s a good exercise to keep each…


My history with writing web apps is long and filled with missteps. Here I attempt to share lessons learned the hard way.

“Tangerine Northbeach”, oil on canvas by Feather Knee

High level first

Before anyone writes a line of code, step way back to consider the bigger picture. Sketch it out on a white board. Understand what your data looks like, and how it flows through your application. How will it scale? Big, high-level questions need to be answered before you get too mired in detail.

Cloud architecture based on micro-services is a great way to assure that nothing gets too monolithic. …


While teaching a web development bootcamp I had an opportunity to observe budding developers and see what helped or hampered learning. One of the greatest dividers was focus.

One student spent most of our time together wrestling with a particularly thorny case of imposter syndrome. He feared he didn’t belong there, so everyone would soon find out. He must be wasting time and money. He was going to be a failure to his son, his family and himself.

This was the mental narrative he struggled with daily. Every time he sat down to learn a new concept, he first had…


The TLDR; part of this story is use recompose if you are a React developer. Now I’ll explain why.

A bit of history. In late 2016 I moved from Ember to React to write a smallish internal app at Netflix. This was a pretty basic React app. While it was visually complex, the app wasn’t really altering a lot of data.

Lots ofsetState() and dumb presentational components ensued. The app worked beautifully. Coming from two very large, opinionated frameworks (Angular and Ember) we were two converts to React who were really embracing the beauty in simplicity. …


One of my favorite things about writing code is debugging. Yeah, I know what you’re thinking. Insanity! It’s much more fun to write buggy code than to unravel it! But problem-solving is fun. It’s why I became a developer in the first place. After a lot of menial labor type work I was bored and wanted to use my brain. Plus, I get to pretend I’m a detective!

As a software developer, only part of your day is always devoted to writing code. Often the lion’s share of your time is spent solving the bugs you’ve written (if you’re lucky)…


You may have heard about the difference between declarative and imperative code. Yet you are still unclear. By the end of this article you will be declaring yourself an expert!

Declarative code tells the what. Imperative tells the how. Imperative code is more verbose. Anthropomorphized, Auntie Clara is a southern lady who declares things. She exclaims “these biscuits are ever so fluffy!” Auntie Pear used to be a school teacher. Rather than state a fact, she gives instructions. Detailed instructions. After a while your eyes start to cross. Any similarity to your relatives is purely coincidental.

You may have opened…


Have you ever felt like you didn’t quite fit in? Like everyone you met was marching in one direction but your heart of hearts was telling you to tiptoe the opposite way, perhaps hoping no one would notice?

Personally, I’ve always been a weirdo. Growing up, I was far too tall and clumsy to be described as “cute”. On a sunny afternoon, when other kids were doing normal kid things like watching TV or playing games, I would climb a tree to hide & read a book for hours. Later I would descend from my arboreal realm and attempt to…

Feather

Thoughts on code, climbing, and DIY. JavaScript, Elixir, and other fun stuff.

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