Ross Esmond

Code, Prose, and Mathematics.

portrait of myself, Ross Esmond

Recently Published Posts

Recent Notes

UX Checklist for Text

A checklist of design rules for main body text.

Advantages to Immutable Values

Design Rules

Recommended Web Tech

My recommendations for libraries and tools to be used in web development.

Data Languages

Data Languages are programming languages purpose-designed to hold information, like XML or JSON.

Reading List

A list of articles and pages that I have read, am reading, or would like to read.

The Standard Deque

A description of a segmented deque which may be restricted to create a list, stack, or stack in a sequential, segmented, or linked allocation.

First Principle of Test Code

The core principle behind all automated software tests.

Parallel Implementations

The generalized Open Closed principle

Fonts

A list of fonts that I like.

Expression Problem

The Expression Problem is a software engineering dilema where the more implementations an abstract data type has, the harder it is to add new behaviors, and vice versa.

Information

Program data that was collected from outside that program, such that it could not be rederived if lost.

The Standard Line

A line a text I use to determine optimal font-size and line-length.

Technical Writing Advice

My notes on various technical writing advice.

The Undertone Palette

A color palette to serve as the dark-mode background to highlighted code.

Diet

A personal note on a proper diet for nutrition.

Repository Checklist

My (incomplete) checklist for new GitHub repositories, npm repositories, and TypeScript libraries.

Information Flexibility

Notes on the flexibility of information, or state, in a program.

Bugs

A bug is an unexpected behavior of code.

Declarative

Declarative programming is performed with rules that define the relationships between data. These rules are then realized by the underlying declarative system to derive results in a time-independent way.

Open Architecture

An email I sent about open architectures.

Abstraction

Abstraction is the removal of details, possibly alongside a reformulation of a process or idea to a different model of thinking.

Input Conflict

An Input Conflict occurs when an entry is incompatible with some other, prior input.

Disabled Inputs

A disabled user input is a user interface element that displays information inside a conventionally editable component but is actually uneditable.

Alt Text

Alt Text, short for "alternative text," is any text used as a fallback when an image or pictorial element cannot be accessed or perceived.

Deterministic Data Structure

A data structure whose values have not yet been computed, but may be realied by a deterministic process which depends only on the location of the value in the data structure, such that the complete data structure is determined at creation.

Invariant

A requirement placed on the program state that must remain satisfied after all state changes.

Simplify Early, Complicate Late

The Simplify Early, Complicate Late rule states that data should be simplified as early in a process as possible, and new data should be derived as late in a process as possible.

Documentation Proximity Principle

The probability that documentation will be updated to account for changes to code depends on how close the documentation is to the software it describes.

Misunderstanding

A Misunderstanding is a user mistake where the user did not misunderstand the consequences of an action such that they caused an effect they did not intend.

Miscommunication

A miscommunication in application design is any mistaken user action that the user did not intend to apply.

Temperature Conversion Problem

The Temperature Conversion Problem is a set of requirements for a small application that illustrates the difference between Bidirectional and Unidirectional Data Flow.

Constructive Criticism

My personal note on what makes criticism "constructive."

Currency

Currency is a representative of value.

One Request Rule

If the result of a data request across a network may result in a follow-up request, there should be some mechanism to include the follow-up in the initial request to reduce latency.

Color

Color, as it relates to software and user interfaces.

First Aid

A list of first aid supplies to build a first aid kit.

Type Flexibility

Type Flexibility is the ability for an entity to change its type in response to an event, even if that change was not anticipated when the type's interface was designed.

Nil Value

Nil Values are those that exist outside the expected space of possible values given the values type.

Lens

A lens is a pair of get and set functions used to read and update components of immutable values.

Conditions

Conditions are the requirements to use a program, including functions and objects, as specified by the interface and documentation, collectively known as the contract.

Layout

Layout is the mechanics by which screen elements are positioned and sized so that they can be viewed, navigated, and interacted with by users.

Event Sourcing

Event Sourcing is an alternative approach to storing information where change events are retained rather than being used to update program state.

Mark My Words

My list of predictions about the future of software.

Discordant Security

Discordant Security refers to the two conflicting goals in security—allowing access to authorized users, and denying access to bad actors.

Handling Failure in a Function

Deterministic Function

Robust Inputs

Up Event

State Changes as Filters

Thunk Data Flow

Prose Checking Utilities

Intentional Impediments

Reversibility of User Actions

Familiarity Curve

Future

Monads

Functors

Typesetting Complexities