Sign in

I’m an early to mid stage start up warrior with a passion for scaling great ideas. The great loves of my life are my wife, my daughter, and surfing!

How Platform Services are Moving the Goal Posts

Photo by 丁亦然 on Unsplash

Serverless adoption has primarily been driven by teams looking to deliver value to end-users in record time. The serverless proving grounds are soaked in a war of attrition in which administrative overhead will be destroyed. An often overlooked aspect of this revolution…

How to avoid the Wrong Abstraction using Wet Code

Abstract Tree
Photo by Jr Korpa on Unsplash

Back in 2016, Sandi Metz wrote a fascinating article entitled “The Wrong Abstraction.” The article is a great primer for React developers and why they should avoid using conditional rendering to build component variants. One quote from this article makes the…

How good tests can improve decision quality

Disclaimer: Although this piece is satirical, the concerns raised are still valid, somewhat!

Are you spending more time reviewing code than writing it? Have you found yourself staring at file 126 of 500 and don’t remember how you got there? Have you experienced developer rage more than once in the…

The numbers don’t add up in the Texas energy crisis.

electric waves
Photo by Federico Beccari on Unsplash

Predictable partisan yelling over yet another catastrophe has been detected in Texas. Rather than relying on Google searches and social media, I opted to do some of my own research into ERCOT’s catastrophic failure to secure Texans' reliable energy. ERCOT…

Rendering Shadow DOM and Templates in Puppeteer

Rendering web components server-side using Google Puppeteer is a real challenge. Serialization of the Shadow DOM is in an experimental phase. Declarative Shadow DOM allows serialization of the Shadow DOM and can be enabled with a few easy steps. …

Because you’re too cheap to use RxJS

Photo by Sergey Semin on Unsplash

Zen Observables are a great lightweight alternative to RxJS. If you are using Apollo Client, you won’t pay a bundle size penalty for using Zen. One issue, though, is multicasting in Zen isn’t supported. There is a Github issue that’s been open for several years to address this problem. …

How to fight censorship by creating decentralized applications

404 message
Photo by Erik Mclean on Unsplash

If you think Ethereum is just a cryptocurrency, you missed the point. Ethereum is a platform that is resistant to censorship by corrupt governments and institutions. It also provides a cryptocurrency that can be traded in exchange for goods and services without…

Cloning class instances and other complex types

Photo by Francesco Tommasini on Unsplash


Use Object.getOwnPropertyDescriptor and walk the prototypal chain.

There are numerous articles on how to clone objects. Today using the spread operator is generally the preferred way to copy simple objects. There are some limitations to the spread syntax that are important to understand.

The main shortcoming is that accessor methods…

Automating the Creation of Reusable TypeScript Packages

Photo by Daniel McCullough on Unsplash

I’ve recently been heavily focused on building automation tools that provide a productivity boost for our development teams. After evaluating numerous automation platforms, including nx and yeoman, we landed on Angular Schematics as our platform of choice. This article will explore a simple schematic for generating a best practice TypeScript…

Addressing social responsibility in the field of software engineering

Rockets launching

The tech industry deserves a harsh slap in the face. While it professes to value “diversity and inclusion,” it continues to require a credential that has an average cost of $127,000 as a prerequisite for employment. Simultaneously, the institutions that issue…

Dorian Smiley

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