Here I share contemplations on data-oriented design, team leadership, agile methodologies, and assorted subjects occupying my thoughts.

Disclaimer: The views and opinions expressed are solely my own and do not reflect or represent the positions of any companies I work for, collaborate with, invest in, advise, or any other associated entities.

The Case for Bizcord (Discord)

The Problem with Remote Work Remote work has become a popular trend in recent years, with many companies shifting to a distributed workforce to save costs and increase flexibility. While there are certainly benefits to remote work, such as reduced commuting time and increased productivity, there is also a downside to this new way of working: the loss of informal status and persistent, easily seen places for communication. In traditional office environments, employees have the opportunity to interact with each other in a variety of ways. [Read More]

Install Emacspeak on Modern Macs

Introduction I had a bit of a hard time finding the exact steps to get emacspeak up and running on MacOS 12+ (Sierra, Ventura) on either x86 or m1/m2. This guide will hopefully get you from nothing working to functional install as quickly as possible. Install Brew Follow instructions to install brew via – but generally the command below will work. /bin/bash -c "$(curl -fsSL" NOTE: if you just updated major OS versions, it is often easier to just reinstall brew than to try to fix any issues you might have with it. [Read More]

Ride Crypto in Comfort With SUV

Cryptocurrency has come a long way since it was first introduced in the late 1990s. It has evolved from a fringe technology used by a small group of enthusiasts to a mainstream financial asset that is traded by millions of people around the world. One of the key attractions of cryptocurrency is its potential to provide a secure and decentralized financial system that is free from the control of governments and financial institutions. [Read More]

Language Sprawl Considered Harmful

It’s a common scenario in software development: a new project is starting up, and the team is faced with the decision of which languages and tools to use. While it might seem like a good idea to let every team choose their own technologies, the long-term costs of this approach can be significant. One of the main drawbacks of letting every team choose their own languages and tools is the lack of flexibility it creates within the organization. [Read More]

Lie 3: Software Is the Platform

Truth: hardware is the platform “Software does not run in a magic fairy aether powered by the fevered dreams of CS PhDs” – Mike Acton (2014 - CppCon) Instruction sets: Different hardware architectures have different instruction sets, which are the set of basic operations that the processor is capable of performing. For example, an x86 processor has a different instruction set than an ARM processor, so code that is written to run on an x86 processor may not be compatible with an ARM processor without modification. [Read More]

Lie 2: Code Should Be Designed Around a Model of the World

“Solving problems you probably don’t have creates problems you definitely do.” – Mike Acton (2014 - CppCon) Truth: Code should be designed around the data, not some idealized model. World modeling is a common approach in programming that involves trying to solve problems by drawing analogies or telling stories, rather than using more concrete, engineering-based methods. While this approach may seem appealing at first, it often leads to problems that are harder to understand and maintain in the long run. [Read More]

Lie 1: Code Is More Important Than Data

“Everything is a data problem. including usability, maintenance, debug-ability, everything.” – Mike Acton (2014 - cppCon) Truth: Your main responsibility is to transform data, not designing code, solve the data transformation xproblem and nothing else. As a programmer,it is your main responsibility to transform data effectively and efficiently. This involves not only designing code, but also understanding the problem at hand and the context in which the data exists. Keep in mind that the purpose of all programs and their components is to transform data from one form to another, and that the code is simply a tool to achieve this goal. [Read More]

The 3 Big Lies Introduction

The Lies Code is more important than data. Code should be designed around a model of the world. Software is a platform. Data-Oriented Design (DOD) is a software development approach that focuses on optimizing data structures and algorithms for performance, rather than abstractions or code size. In a 2014 talk at CppCon, Mike Acton identified “three big lies” that can lead to suboptimal design decisions: the assumption that abstractions are free, the belief that memory is always slow, and the idea that smaller is always better. [Read More]

Bring Your Spears

As a business leader, it is important to have a clear understanding of the level of support and commitment among your team members. One effective way to gauge this is through the military technique of asking for spears after a presentation. This technique involves giving a presentation on a particular topic or plan, and then asking for volunteers to “step forward with their spears,” meaning to show their willingness to actively support and participate in the plan. [Read More]

Remote Work Is Here to Stay

Remote work is here to stay for developers, but we can do better. Despite the many arguments against remote work, it is clear that it is an increasingly popular option for developers. However, there are still valid concerns that need to be addressed in order to make remote work more effective and efficient. One of the main arguments against remote work is the lack of supervision. While it is true that day to day supervision is limited and stifling, the output of a developer is still measurable and transparent. [Read More]