Technology tidbits

CloudFormation toJSON in YAML template

November 16, 2022 by Christopher Sherman

When writing CloudFormation templates, it is not uncommon for the documentation to state a property’s data type is JSON. If you write your templates in JSON, this is no obstacle. However, I prefer to write my templates in YAML, so I found myself looking for a toJSON intrinsic function to which I could pass a YAML object. My search came up empty, but I did uncover a couple of ways to satisfy JSON property types while keeping my templates readable.

Continue reading

How to build quality software products

October 10, 2022 by Christopher Sherman

Building quality software involves blending business, engineering, and artistic expertise to create a product. Beautifully-written code is not enough. We need a process for organizing the team, identifying the job to be done, and designing, implementing, and maintaining the product.

Continue reading

Six questions to answer before migrating to the cloud

September 1, 2022 by Christopher Sherman

Migrating workloads to the cloud is not without risk. The first step is developing a plan with buy-in from stakeholders across the organization. The team should be comprised of executives, managers, and engineers from the Infrastructure, Operations, and Software Engineering teams, as well as the end users of the services being migrated. Before going forward with a cloud migration, we should define migration goals and ground our plans in hard metrics. This allows us to make data-driven decisions about migrating to the cloud.

Continue reading

Cloud-native architecture

August 18, 2022 by Christopher Sherman

Cloud-native architecture is a methodology for building, running, and updating software products in a way that supports speed, safety, and scale. Rather than building a monolithic product on a dedicated physical device, we create smaller, modular services distributed across physical devices, i.e., microservices. Services call one another over the network, and we combine services in a modular fashion to create products.

Continue reading

How the browser renders a webpage

June 20, 2022 by Christopher Sherman

The time it takes the browser to render meaningful content is one of the most important aspects of user experience. To paint initial content, the browser converts HTML, CSS, and JavaScript to pixels, a process known as the critical rendering path. The critical rendering path has four steps (MDN contributors 2022a):

  1. Parsing
  2. Render tree construction
  3. Layout
  4. Painting

Continue reading

How to establish a design system

June 9, 2021 by Christopher Sherman

“A design system is a set of interconnected patterns and shared practices organized to serve the purpose of a digital product.” —Anna Kholmatova, Design Systems (2017)

These are my notes from Anna Kholmatova’s book, Design Systems (2017), a great guide for creating a design system for digital products.

Continue reading

Low-Code vs. Custom Applications

June 7, 2021 by Christopher Sherman

Low-code solutions have limitations that custom applications do not. The most important limitations are performance, flexibility, and user experience. Secondary—but still important—considerations are third-party services integration, vendor lock-in, and product discontinuation. That said, low-code solutions do solve real problems, particularly those less affected by the traits just listed. You can visit the website of any low-code solution to hear its praises, so I will focus on the distinction between low-code and custom applications, pointing out where custom applications may be the best avenue for solving a problem.

Continue reading

Angular forwardRef

May 28, 2021 by Christopher Sherman

Angular’s forwardRef wraps the provided class in a closure, allowing the provided class to be updated via memory reference once it is interpreted. We use a forwardRef when we need to provide a class before that class is actually declared in code.

Continue reading

Ivy Rendering Engine

May 12, 2020 by Christopher Sherman

Ivy is the compiler and rendering pipeline that converts Angular templates into code the browser renders. Ivy introduces several improvements over ViewEngine, the previous compiler and rendering pipeline. Below, I highlight the most noteworthy advances.

Continue reading

Micro Frontends, Macro User Experience

April 6, 2020 by Christopher Sherman

As web applications grow more sophisticated, we need strategies for breaking down their complexity into manageable chunks. Micro Frontends is an architectural pattern for creating large applications out of small applications while maintaining a consistent user experience. This approach enables us to build, test, and deploy individual chunks of functionality. The composability of micro frontends results in reduced complexity while more effectively scaling our most important asset: people.

Continue reading