Skip to content

Instantly share code, notes, and snippets.

View StevenACoffman's full-sized avatar

Steve Coffman StevenACoffman

View GitHub Profile
@StevenACoffman
StevenACoffman / AreWeSureWeNeedIt.md
Last active May 25, 2022 13:07
AreWeSureWeNeedIt

I think "being sure we need it" is shorthand for a particular list of costs that apply to any new dependency and new way of doing things, such as:

  • cost of people learning how two different ways of handling things work, and having to choose between them
  • cost of the inevitable cases where the library's choices don't mesh with ours
  • cost of the inevitable cases where our libraries have to be modified to work with the new one (for example, we would probably have to make sure KhanErrors and MultiErrors can be composed both ways nicely -- possibly to the point of wrapping the whole lib)
  • maintenance cost if the library later goes unmaintained, or makes breaking changes we need to incorporate, or whatever

— ben kraft

Yagni originally is an acronym that stands for "You Aren't Gonna Need It". It is a mantra from ExtremeProgramming that's often used generally in agile software teams. It's a statement that some capability we presume our software needs in the future should not be built now because "yo

@StevenACoffman
StevenACoffman / Healthcheck.md
Created January 8, 2020 20:21
healthcheck.md

Many applications running for long periods of time eventually transition to broken states, and cannot recover except by being restarted. Kubernetes provides liveness probes to detect and remedy such situations.

apiVersion: batch/v1
kind: Job
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
@StevenACoffman
StevenACoffman / template.go
Created December 21, 2019 17:42
Template tricks
package main
import (
"bytes"
"fmt"
"text/template"
)
func WithMap(format string, m map[string]string) (string, error) {
tpl, err := template.New("format").Parse(format)
@StevenACoffman
StevenACoffman / Homoglyphs.md
Last active August 14, 2025 07:18
Unicode Look-alikes

Unicode Character Look-Alikes

Original Letter Look-Alike(s)
a а ạ ą ä à á ą
c с ƈ ċ
d ԁ ɗ
e е ẹ ė é è
g ġ
h һ
@StevenACoffman
StevenACoffman / git-me-out-of-This.md
Last active May 3, 2023 05:40
Git Me Out of This

Repo Rinse

This will blow away anything that is not committed.

git reset --hard
git submodule foreach --recursive 'git reset HEAD . || :'
git submodule foreach --recursive 'git checkout -- . || :'
git submodule update --init --recursive
git clean -d -f -f -x
git submodule foreach --recursive git clean -d -f -f -x
@StevenACoffman
StevenACoffman / https-during-dev.macos.sh
Last active April 19, 2024 12:09 — forked from disintegrator/https-during-dev.macos.sh
Use Caddy, mkcert and dnsmasq to expose your development server over HTTPS
brew install caddy mkcert nss dnsmasq
mkcert -install
# test could be anything
mkcert '*.app.test' '*.cdn.test'
# rename the certs and move them under /usr/local/etc/caddy/certs
cat <<EOF > /usr/local/etc/caddy/Caddyfile
*.app.test:443, *.cdn.test:443 {

Business wants to know:

  • How many features can you get done?
  • When will features be in production?

Story estimates provide unreliable answers to these questions. Further, the process of estimating stories can be harmful.

Even perfectly accurate estimates do not change the value of a story. Repeatedly deciding to defer very valuable but expensive stories in favor of cheap, nice-to-have stories will not instill a sense of trust in the customer. Knowing the costs of user stories distracts management from remaining focused on meeting the most important needs as quickly as possible. On top of that, estimates are always wrong. Sometimes wildly so. Why make bad decisions based on worse data?

It turns out that deliberately avoiding estimating helps teams focus on delivering the most valuable business needs, in a more efficient, incremental way. Progress transparency can be provided with story counts and cycle/lead times to show wait times in the queue/backlog without having to estimate anyth

@StevenACoffman
StevenACoffman / awesome-mage-magefile.md
Last active December 9, 2019 15:16
Awesome Mage and Magefiles