$ ls /etc/

Here’s my scrapbook! See also, the meta page for more on this website and how I built it.


Tools & Workflow

Typefaces

No affiliation, just typefaces I like.


Reading

Blogs


  1. Jeff’s also the guy behind commonmark, a standardised Markdown variant ↩︎

Blogs by friends and colleagues

Software


  1. In 2 weeks, no less! ↩︎

Graphics & UX

AI

Hardware & electronics

Networking

Audio


Recommendations

Books

Some books really stand out to me. I reckon I need to read some from https://blog.codinghorror.com/recommended-reading-for-developers/ so I can grow this list!

Films

I like 90’s/2000’s hacking/disaster films where technology is involved. Anything where sci-fi interfaces and sound design is involved.

TV


Musings

Quotes

The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man

– George Bernard Shaw

If you have too many things to do, get something done

– Graeme at work.

Networking is optimising for serendipity

If you can’t make a decision, either you don’t have enough information or it doesn’t matter. If you don’t have enough information, determine the requirements.

– John, a previous line manager

When a measure becomes a target, it ceases to be a good measure.

– Goodhart’s Law

Thoughts that stuck with me

Think about impossible things like vaccines, photolithography machines, GPS, modern AI and the internet. The next one has to be viable quantum computing.

Elon’s 5 steps to process improvement:

  1. Make requirements less dumb: Question and verify requirements to ensure they are not error-prone and to remove unnecessary work.
  2. Delete parts or processes: Remove unnecessary parts or process steps.
  3. Simplify and optimize: Simplify or optimize the design and process.
  4. Accelerate cycle time: Streamline the manufacturing process to speed up cycle time.
  5. Automate: Automate the manufacturing process to ensure efficiency, reliability, and cost reduction.

Importantly automation is the last step, not the first. This is the opposite of what many people think!

Making reliable systems:

  1. Keep it simple, reducing the number of parts that can fail
  2. Use timeouts with blocking operations
  3. Catch all errors and start from a known state
  4. Ensure failures are detectable. A system can be too reliable if failures go unnoticed! Stale data should be removed – a stuck system could otherwise appear fine.
  5. Declarative is best. Imperative systems are more likely to get into weird states, and/or are hard to rebuild.
  6. Properly constrain the design – opinionated and constrained is better than flexible and universal.

Ideation: Ignore existing constraints, start from the ideal and work backwards.

Things that have disappeared

I’m old enough to remember these things, things that were in the background and have changed how the world feels.


Archive

Microblog

I used twitter for a while, automatically replicating my tweets on the main page. The tweets are archived here.

I no longer do this since twitter has paywalled their API.