Susan Potter

Software

software

Tracking diffs by scoping to file, range, function, method, or class changes in Git

One common question I see from developers using Git is how they can review the history of one function, method, or class over time through Git's history of the project. In codebases that have evolved over years, a developer just wants to know how one particular semantic …

software

How to make seemingly difficult decisions

Originally published as a Twitter thread starting here. Anyone who has spent any time in either a technical or people management leadership position in software development knows that you need to make seemingly difficult decisions frequently. This week I coached a coworker …

software

TypeScript enum versus const enum

Today I found that there is a difference between enum and const enum in TypeScript in the generated JavaScript. Namely: with a non-const enum the compiler generates an object with key-value pairs. with a const enum the definition alone doesn't generate any code, only …

software

Using three-way diffing context for merge conflict style in Git

It recently came to my attention that not everyone overrides the default merge.conflictStyle git-config setting. So in case anyone here wanted to try something new out that would provide more context during a Git conflict resolution scenario here you go. I use diff3 which you …

software

Algebraic Data Types in TypeScript

Note: the code for the TypeScript (to help you follow along) is available here: Encoding Algebraic Data Types in TypeScript code Background Recently I've been reviewing TypeScript code at work. A common pattern I've observed in pull requests and some open source projects …

software

Algebraic Data Types: For the math(s) inclined

This was initially published as a section of one of my substack posts. You might be wondering why the term algebraic data types has the word algebra in it. Don’t sweat it if you hated algebra in high school, I will not call on you to solve simultaneous equations or prove by …

software

A quick review of a pure functional serverless application deployed to production

/images/car-dashboard-small.webp Photo by Dawid Zawiła on Unsplash This was adapted from a tweet thread on June 3rd, 2020. Notes: all references to $ (dollars) is in reference to US Dollars (USD) latencies are quoted in milliseconds (ms) unless otherwise noted this …

software

Random notes on Unikernels

This is an adaptation of a Slack chat explanation from work (slightly reworded to read better for the audience) from work in 2017. Random notes on unikernels Introducing unikernels You might have heard terms like unikernel, nanokernel, or library operating systems. These …

software

DynamoDB: The Basics

Introduction This post introduces concepts and principles used to design DynamoDB tables as I have been learning how to leverage this technology in a new project. This introduction will compare and contrast the core concepts and ideas with those found in relational database …

post

Economic concepts applied in software development, reliability engineering, and technical leadership

One of my favorite subjects as a layperson is economics. I have found many useful applications of methods and concepts to my work in software development, technical leadership, and reliability engineering roles. This is a post to share some of these. A few ideas from economics: …

software

To Type or not to Static Type

Originally published as a Gist here: https://gist.github.com/mbbx6spp/60577af8dc4106d6e710cd804292ce20 Minor modifications in formatting and an extra line of no-judgement was added to this text from the original Gist. Purpose, Disclaimer and Confessions This is the (mostly) no …

software

Parametricity: A Practitioners Guide

Introduction What software developer likes surprises, especially in production? Not me. At least not when I am on call. ;) Wouldn't it be great if we were able to reason about our code to make our lives as simple as possible when debugging or eliminate debugging …

software

Algebraic Data Types

An algebraic data type can take many forms: Sum type Product type Hybrid Sum/Product type Recursive type (not covered in this post) Sum Types (aka Tagged Unions) A sum type is a type that has a known and exhaustive list of constructors where a value of that type must …

software

SCM: The Next Generation

I am sure most developers (whether Java, Ruby, Python, or other) have used Subversion, Perforce or CVS to manage and control their projects' source, but have you used darcs or git? I'm sure most of you would have heard of git it hosts the Linux kernel code currently. …