Aug. 2, 2020, 10:30 a.m.

PinkLetter - Start From a Story

PinkLetter (odone.io)

Reading stories to a child

Ciao!

What are the stories behind your crafts? You know, this week I didn't manage to publish my usual post on Friday. I actually sat down, brainstormed and wrote for a few hours. But I could not manage to collect the ideas under a compelling umbrella. It missed a beginning, a direction and an end. Then I realized I broke one of my rules: always start from a story.

But hey, in software it's the same. Take the following two tickets as an example:

  • Build a form to take orders. It must have three fields: product name, quantity and name of the customer.
  • Any employees of the bakery, regardless of the level of experience with the application, should be able to take orders via phone or in person, on the company's iPad. Customer relations are important so the application should guide the interaction step by step. It's important to be asking for the name of the customer first and keep it visible at all times to the employee while taking the order...

Which one do you think has the bigger potential for a piece of software that the user would find delightful, provide a better service to the customers of the bakery and generate more value to the business as a whole? You bet it's the second!

You see? A story does not need dragons, explosions or bad puns. But it does make a huge difference on both sides of the counter. Also, it's not that hard to get a story once you start looking for it. Just keep moving, even if it's the wrong direction as I did. Sure, I didn't publish on Friday but I got a story to share with you.

Blog

Yet more tricks from the production trenches. Both the strategies laid out in the post apply regardless of the frontend framework you use (it doesn't have to be Elm).

Elm Tricks from Production–Adding Event Listeners to DOM Nodes that do not yet Exist - How to use setTimeout and the DOM mutation observer API to attach callbacks to DOM nodes that do not yet exist.

YouTube

Have you ever wondered what's the secret at the core of a compiler? Join me for a five-minute tour of a tiny one.

PureScript/Haskell: Tiny Compiler - The trick in a compiler is to take a string and transform it into a data structure that can be easily manipulated.

Tidbits

Git

# Create and check out a new branch
# named <branchname> starting from
# the commit at which the <stash> was
# originally created and apply the
# changes recorded in <stash>.
# Useful when pop fails due to conflicts.

git stash branch <branchname> [<stash>]
# Create a stash entry and return
# its object name, without storing
# it anywhere in the ref namespace.
# Useful for scripts.

git stash create
# Show the changes recorded in the second most
# recent stash entry as a diff between the
# stashed contents and the commit back when
# the stash entry was first created.

git stash show --patch 1
# Make more than one commit out of the
# changes in the work tree but test each
# change before committing.

git add --patch
git stash --keep-index
# test and commit
git stash pop
# Clean the working tree interactively by
# recursively removing files and directories
# that are not under version control,
# starting from the current directory.

git clean --interactive -d
# List branches which contain the specified
# commit (HEAD if not specified).

git branch --contains [<commit>]

Pick

When setting myself up for an experiment I've always thought of two strategies to keep track of it: sticking to a specific amount of input (e.g. read 30 minutes a day) or to a specific amount of output (e.g. read 52 books this year). This week I found another way to look at it.

CGP Grey suggests finding Your Theme and avoid specific goals. This looks promising!


This is the story of my week. What is yours? Hit reply and say hi.

I'm looking forward to hear from you.

Let's connect.

Really.

Picture (headshot) of me (Riccardo)

Thanks for spending some time reading with me. Talk to you soon.

Yours truly,
Riccardo.

You just read issue #5 of PinkLetter (odone.io). You can also browse the full archives of this newsletter.

This email brought to you by Buttondown, the easiest way to start and grow your newsletter.