DecisionNode
Exploring forks in the road of software design
-
April 24, 2025The Developer's Guide to Icons: Icon Fonts vs. SVGs
Icons are a crucial part of any app: along with specific color schemes, layouts, and workflows, icons create a consistent language within the app that a user can easily identify.
-
November 15, 2024Mastering Service Communication: Patterns and Trade-Offs
Discover essential communication strategies–from synchronous and asynchronous request-response to event-driven approaches–and learn how to navigate their unique advantages and challenges. Whether you're building scalable microservices or optimizing inter-service workflows, this guide equips you with the insights needed to choose the right patterns for performance, maintainability, and resilience.
-
October 17, 2024Managing Multi-Page Forms
As Makers and Markers expands to facilitate full-scale construction projects, we're faced with the challenge of transforming simple checkout forms into intricate, multi-page flows without overwhelming users or developers. This article delves into effective strategies for managing complex form sequences by comparing graph and sequence models, and shows how combining them can offer flexibility and maintainability. Discover how tools like React Multi Page Form can simplify the development process and enhance user experience in large-scale applications.
-
September 12, 2024Analyzers in Elasticsearch and OpenSearch: How to Design the Searches You Need
Over the years, you’ve heard something about Elasticsearch’s inverted index, and its reliance on tokenizers, filters, and analyzers, but you’re at a loss as to how to begin. You find yourself asking, which analyzers should I use? How can I create an analyzer to fit the needs of my business? This article covers different approaches to optimizing your searches, considering the complexity and benefits that each presents.
-
August 1, 2024Load Balancing and API Gateways
Navigating traffic management for your app can be confusing. Do you need an API gateway or a load balancer? The answer is often both. However, this raises further questions: Where do they go? How many do you need? What kind? Let us help you make informed decisions for your application.
-
July 3, 2024Orchestration in Action: Handling Not-So-Happy Paths in Modern Software Systems
Software architecture would be easy if the world only had happy paths, but real-world applications are complex. Modern architectures have many moving pieces, paths, and services that interact with each other.
-
June 20, 2024Consuming AI APIs: Off-The-Shelf vs Custom
Navigating the complexities of integrating AI into your applications can be daunting, especially with the myriad of options available. This article demystifies the process by comparing off-the-shelf AI APIs with custom AI solutions, highlighting the trade-offs between ease of use and customization, cost efficiency, and data privacy. Discover practical implementation strategies to align AI with your business goals, and make informed decisions to leverage AI effectively in your operations.
-
June 6, 2024Server Side Rendering for Web Apps: The Tradeoffs You're Making
React Server Components, Server Actions, HTMX, Hotwire, Livewire–all these new shiny things are pushed on us as the better and correct way of doing things. But the truth is, they are not better, they are just more tools that we can choose to use or choose to ignore.
-
May 9, 2024Demystifying NoSQL vs SQL (It's not what you might think)
SQL still stands today, over 50 years after its inception, as one of the most popular ways of interacting with databases. But in those 50 years, the software development landscape has shifted in ways that have catalyzed the popularity of other approaches too.
-
May 6, 2024On Building with AI
At Eraser, we started our journey with AI a year ago, building, and eventually incorporating multiple AI features into our core app. This article looks at several decisions we made along the way, addressing some in a more philosophical or strategic manner, and some more tactically.
-
April 25, 2024Parallel Paths: Building New Systems Alongside Legacy Systems
Navigating the development of significant new functionality while effectively maintaining legacy systems poses a significant challenge for many organizations.
-
April 11, 2024API Rate Limiting Strategies: Token Bucket vs. Leaky Bucket
Controlling the flow and rate of the traffic is known as Rate Limiting. Not having rate limiting may lead to exploitation of systems and high downtime.
-
March 28, 2024Extensible and Flexible 3rd Party Integrations: Leveraging the Infrastructure Persistence Layer
The infrastructure persistence layer introduces the notion of a generalized contract that multiple 3rd party services of the same type can implement, and it leverages the idea of dependency injection when instantiating a service object that can accommodate for swappable services.
-
March 21, 2024Image Hosting: The Essential Optimizations
The main problem with images is that they are large. This size introduces performance, cost, and security concerns that warrant a different architecture than the rest of the data being served by a typical web app.
-
March 14, 2024Small Steps, Big Impact: The Role of Stacked Workflows in Streamlining Software Development
Enter stacked workflows–a pragmatic solution designed to offer a structured method to manage and integrate changes in a way that promotes making small, frequent PRs.
-
March 7, 2024The DiCE Principle: Towards Reliable Data Analysis
The DiCE principle states that you must manage Data, Code, and Environment for reliable results.
-
February 29, 2024The Secret Weapon of Modern Apps: Unveiling Kubernetes Autoscaling
Servers are buckling under the weight of millions of eager players, and you need to scale up fast. Can you handle the surge without crashes or lag?
-
February 22, 2024Beyond Normalization
Over the years, normalization has been the bedrock of designing efficient, reliable databases. Normalization is no longer the be-all and end-all of database design.
-
February 15, 2024Navigating the Complex Landscape of Application Hosting Options: A Guide for Decision Makers
Gone are the days when server architecture decisions were as simple as choosing between buying hardware or renting a server. Today, we're faced with lambdas, managed container services, virtual machines, Kubernetes, and more.
-
February 8, 2024Auth Strategies
The topic of authentication/authorization is one of those things that all engineers come in contact with at some point but quickly forget.
-
February 1, 2024Dynamic toolbars and menus
Just about any app will include one or more toolbars or menus that provide a UI for users to perform actions or change configuration.
-
January 25, 2024Code sharing
Sharing code between multiple services can turn into a topic of contention in a project team. The larger the service footprint, greater the intensity of debate on how to share functionality between the various services.
-
January 18, 2024Configurable access controls
Our product is a big hit, but we're starting to hear from our happy users that they're unable to roll it out organization-wide because they need a different configuration of permissions than our model provides. What to do?
-
December 21, 2023Search Indexing
You've decided that it's time to employ a specialized search database or service such as Elasticsearch. This leaves you with an important question: how to get all of our data indexed and available for search?
Subscribe for updates
Exploring forks in the road of software design. One issue at a time.