Photo by Benjamin Hung on Unsplash

The “Strongly Typed Graph” is something I’ve been thinking about lately. I believe it could significantly improve developer productivity in large, microservice heavy organizations.

To be clear, this is still an exploration. An early idea I wanted to throw out there. But before I dive into what it is and what it could solve, let me give you some context about our problem, and why I think this idea is compelling.

⚠️ Warning: It may not solve the exact problem that you have. Read more and decide for yourself, this is not a silver bullet or a “best practice”.


Photo by Igor Ovsyannykov on Unsplash

Commitment can be terrifying. Broken promises are the surest way down the waterslide of low morale.

When someone comes to you with a problem, don’t react immediately. Commit to commit, then follow up quickly. Give a specific date when you’ll get back to them with a commitment. “Thanks for the context about the bug, I’ll get back to you tomorrow morning with a decision on how we’ll move forward”.

Keep the window short. Hearing “I’ll get back to you” without the follow up will quickly lose the trust your customers have in your team.

This doesn’t only apply when speaking…

Photo by Abigail Keenan on Unsplash

It’s far too easy to be misunderstood. Trying to get your idea or point across to someone can often feel frustrating and difficult.

You’re not wrong for feeling like you, or they, just don’t get it. It’s tempting to believe that maybe you were never meant to be a good communicator, let alone a public speaker, or an engineering lead. Worse, you may think poorly of someone because they can’t seem to understand what you’re trying to say.

Communication is inherently lossy. What you don’t say is as important as what you do say. How you say it can matter…

Skeleton screen loading (also known as placeholder loading) is a technique that enhances the perception of loading in your application. Typically, the loading state of an application is indicated by some kind of loading spinner or progress bar. Unfortunately, this can sometimes backfire and cause the app to feel slower than it actually is.

The idea behind skeleton screens is instead to “show content as soon as possible”, by using a “skeleton” or placeholder representation of the actual UI in its place while content is being loaded. …

via Unsplash

I’m afraid

I was afraid when I started college in Australia, 4,000 miles away from home. I spent 3 years in vocational design school, and the thought of going back into academia was daunting. My grades were always terrible. Compared to my peers, I didn’t think I was smart enough.

I was afraid when we started a startup. I didn’t know if I was making the right decision starting a business right out of college. Because neither of us could code, we spent our savings hiring a developer. They didn’t come through. Neither did our savings.

I was afraid when I started…

via unsplash

Much has been said about the Elixir language and the Phoenix framework —Phoenix’s performance without compromise makes it a compelling choice in a world where problems are increasingly concurrent and real-time.

Despite Phoenix’s attractiveness, chances are you have business requirements that disallow you from dropping work on existing APIs that still need to be supported. And so you might consider Phoenix no longer viable, and dismiss it to your ever-growing list of shiny toys to check out — someday.

What if we could incrementally replace our legacy API with Phoenix, one endpoint at a time? We could make a compelling…

Manik Rathee (via unsplash)

The Dependency Injection (DI) pattern is a subset of Inversion of Control, and is a useful technique for decoupling the creation of a dependency from the object itself. Don’t let the terminology scare you though! DI is really just giving an object its instance variables.

For example, below is a simple example of the Player class being implicitly coupled to the Bag class. The Player is responsible for creating the dependent objects:

Although the example is simple, it’s fairly easy to see that this implementation could be difficult to test in isolation, as you now need to know about…

Justin Luebke (via unsplash)

The past month or so, I’ve been working on an Elixir and Phoenix API for a client. I am blown away by how nice it is working with Elixir and functional programming (FP) concepts. FP feels more intuitive and less prone to “shoot yourself in the foot” scenarios compared to OOP. In fact, I try to use functional approaches wherever possible in JavaScript as well.

That isn’t to say that one is better than the other, but in my experience less unexpected behavior occurs in FP. It turns out whole classes of bugs disappear when embracing immutability and pure functions.

Ecto Changesets to the Rescue

Previously, I mentioned that Ember’s new Helper implementation landed in 1.13. In my opinion, helpers are one of the most useful, yet least talked about features in Ember.

Idiomatic Ember — The Sweet Spot of Performance & Productivity

In my EmberConf 2016 talk on Idiomatic Ember, I spoke about helpers in detail, showing how they can be used to power up and essentially extend Handlebars with custom functionality. These helpers can then be used to allow declarative templating — a style of templating by composing actions, and giving templates more responsibility with regards to presentational logic.

Together with fellow DockYarder…

In my previous post, I wrote about moving singleton state in Controllers into Services that back components. This means being able to lighten the responsibility of Controllers in your application, and in some cases even remove them completely. However, a common pain point that remains for many is that it isn’t really clear what should live on a Controller, if anything.

Lauren Tan

Alpaca expert, eng. manager @Netflix and eater of croissants. 💁🏻‍♀️ Now blogging at

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