Articles by Andrew Hao

Andrew Hao

Andrew Hao

Lightweight Dependency Injection In Elixir (Without the Tears)

In our last Elixir blog post, “Functional Mocks with Mox in Elixir”, we discussed how testing across module boundaries could be made easier by creating a Behaviour for a collaborating module, then utilizing the wonderful framework Mox to substitute a lightweight mock module in tests. This approach is well and good when you have very concrete

Classroom
Andrew Hao

Andrew Hao

Comparing Dynamic Supervision Strategies in Elixir 1.5 and 1.6

Let’s say you’re managing complex process state in your Elixir application and you need a way to spin up and down new processes as your app runs. This requirement is known as dynamic supervision, the ability for a supervisor to add processes to its supervision tree at runtime. This post will explain how to implement

Andrew Hao

Andrew Hao

Functional Mocks with Mox in Elixir

  If you’re like me, you came over to Elixir from Ruby and quickly found that certain development assumptions so common to Ruby (and object-oriented programming) require some adjustment in this new functional language.

Andrew Hao

Andrew Hao

Taking Elm for a Test Drive

Elm emerged on the scene in early 2012 as a strongly-typed, functional language that compiles down to Javascript. With its architecture and type system, it claims to provide bulletproof guardrails to help developers build systems that are highly reliable, with “no runtime exceptions in practice”. Elm prides itself on having a low barrier of entry

Andrew Hao

Andrew Hao

Evented Rails: Decoupling Complex Domains in Rails with Domain Events

In our last Domain-Driven Design discussion, we learned how to group similar business components into application Bounded Contexts, which were separated folders in our Rails apps. This segregated cohesive groups of application code into separate folder structures (bounded contexts), and gave us a jumping-off point to drawing more explicit boundaries between domains in our monolith.

Stripes
Andrew Hao

Andrew Hao

Bring Clarity To Your Monolith with Bounded Contexts

Check out the video of this talk from ElixirConf 2017 below Monolithic applications are great when you start building your company, but as time progresses, they become difficult to maintain. These codebases, as they grow, easily become Big Balls of Mud. When building large applications in frameworks like Rails, the very convention-over-configuration design principles that made

Andrew Hao

Andrew Hao

Ubiquitous Language & the Joy of Naming

I want to discuss a topic near to my heart, a topic I believe to be the crux of effective software design. No, it’s not a new functional language, it’s not a fancy new framework, it’s not a how-to guide to do micro-services, nor a quantum leap in the field of machine learning. It’s much simpler. It’s

Andrew Hao

Andrew Hao

The 10 Practices of Healthy Engineering Teams – Part 3

In Part 1 and Part 2 of this series, we introduced the engineering team at SuperStartupCorp. They had built a reputation for delivering quality software, fostering a culture of trust, and developing healthy learning practices. Read up on the first two parts, then join us to discover the final secrets to their success.

Andrew Hao

Andrew Hao

Rails, meet Phoenix: add Phoenix to your Rails ecosystem with session sharing

You’ve resolved to build your company’s Next Big Thing in Phoenix and Elixir. That’s great! You’re facing a problem though – all user authentication and access concerns are performed on your Rails system, and the work to reimplement this in Phoenix is significant. Fortunately for you, there is a great Phoenix plug to share session

Andrew Hao

Andrew Hao

The 10 Practices of Healthy Engineering Teams – Part 2

In Part 1 of this series, we introduced a high-performing engineering team at SuperStartupCorp that had automated repetitive tasks, codified its engineering practices, and adopted a learning mindset, resulting in happy engineers and happy stakeholders. Read on to learn more traits and practices that make this team so successful, and how they keep their bus