A New Redux Action Pattern for TypeScript 2.4+

In September 2016, I wrote a post about a pattern for strongly typed Redux reducers in TypeScript. Since then, the TypeScript team has been busy enhancing the language, and recent changes in TypeScript have enabled a much more natural, boilerplate-free pattern for strongly typed actions and reducers in TypeScript.
Read more on A New Redux Action Pattern for TypeScript 2.4+…

Modular, Type-safe Metadata with TypeScript

One of the humps I’ve encountered while learning TypeScript is coming to terms with a core tenet of the language—the type definitions you write only exist at compile time, not at runtime.

I’ve bumped into this a few times. Can I generate a predicate function to test for type compatibility? No—use type guards instead. Can I reflect on the properties of a type at runtime? No—with caveats. It turns out that those caveats matter a lot, and you can do some pretty powerful things with the tools TypeScript does provide. Read more on Modular, Type-safe Metadata with TypeScript…

Immutable.js Records in TypeScript

React apps with Redux are built around an immutable state model. Your entire application state is one immutable data structure stored in a single variable. Changes in your application are not made by mutating fields on model objects or controllers, but by deriving new versions of your application state when you make a single change to the previous version.

This approach comes with some huge benefits in tooling and simplicity, but it requires some care.
Read more on Immutable.js Records in TypeScript…

When Should a Startup Hire a Software Consultant?

Atomic Object works with all sorts of companies, from technical startups to established traditional businesses to Fortune 500 companies. We engage each company differently, trying to structure the engagement to best meet the needs of the client.

Startups, in particular, have a number of cost/benefit questions to consider before engaging a consultancy like ours. Depending on the situation, working with a consultancy can be a smart move or a bad fit. Read more on When Should a Startup Hire a Software Consultant?…

“Owning It” Every Step of the Way

Building custom software is costly, complicated, and sometimes emotional. A well-executed project must hew to a fine line to navigate many constraints successfully, threading the needle between cost, timing, purpose, user needs, technical constraints, maintainability, extensibility, and operational considerations.

An idea for a product is just the beginning. To find success, you need a broad view of what’s important, the willingness to proactively go above and beyond, and careful planning. We call this collection of attributes “owning it”—personally investing ourselves in the success of our projects and seeing them through to success. Read more on “Owning It” Every Step of the Way…

Maximizing Value Starts with Truly Understanding the Client’s Needs

Every step along the path to delivering a software project is a trade-off. Time and/or money are in short supply relative to the vision for a product, and every decision must be made with care. Moreover, there’s no one “correct” way to design or a build a feature—there are many possibilities, each with their own cost, time to implement, possibility for reuse, desirability, and maintenance burden.

Read more on Maximizing Value Starts with Truly Understanding the Client’s Needs…

Prioritizing Joy

Building software is an exercise in trade-offs. There is always an abundance of ideas and a shortage of money or time. Working to balance competing constraints is what I do. As a developer, I try to estimate and minimize implementation time without sacrificing quality. As a project lead, I help clients prioritize features to build the most complete product we can for a given budget. But these aren’t the only factors that we need to consider, and I’ve been struggling with what to do about another critical aspect — joy.

Read more on Prioritizing Joy…