Joe Armstrong's list of 80 things

last modified: | 3 min read

Tribute to Joe Armstrong’s list of 80 things.

Computer Science - A Guide for the Perplexed, Joe Armstrong

A list of 80 things to do

  • 2 great papers to read
  • 4 old tools to learn
  • 4 really bad things
  • 3 great books to read
  • 7 reasons why software is difficult now
  • 10 reasons why software was easier back in the day
  • 1 fun programming exercise
  • 8 great machines from the past
  • 3 performance improvements
  • 5 YouTube videos to watch
  • 6 things not to do
  • 5 sins
  • 4 great forgotten ideas
  • 6 areas to research
  • 2 dangers
  • 4 ideas that are obvious now but strange at first
  • 2 fantastic programs to try

2 great papers to read

  • A Plea for Lean Software by Niklaus Wirth
  • The Emperor’s old clothes, ACM Turing award lecture by Tony Hoare

4 old tools to learn

  • emacs or vi
  • bash
  • make
  • shell

4 really bad things

  • Lack of Privacy
  • Attempts to manipulate us through social media
  • Vendor lock-in
  • Terms and Conditions

3 great books to read

  • Algorithms + data structures = Programs by Niklaus Wirth
  • The Mythical Man-month by Frederick Brooks Jr.
  • How to win friends and influence people by Dale Carnagie

7 reasons why software is difficult now

  • Fast machines
  • Huge memory
  • Hundereds of Programming Languages
  • Distributed
  • Huge programs
  • No specifications
  • Reuse

10 reasons why software was easier back in the day

  • Small machines
  • Small memory
  • Few Languages
  • Not distributed
  • No reuse of code
  • No IDEs
  • No Git
  • Complete Control
  • Did not communicate
  • Understandable in it’s entirety

1 fun programming exercise

Meta II: A syntax-oriented compiler writing language

8 great machines from the past

  • Baby SSEM
  • PDP11
  • Vax 11/750
  • Cray 1
  • IBM PC
  • Raspberry Pi
  • iPhone
  • Nvidia Tesla P100

3 performance improvements

  • Better algorithms (x6)
  • Better programming language (x50)
  • Better hardware (x1000 per 10 years)

5 YouTube videos to watch

6 things not to do

  • Backdoors
  • Violate Privacy
  • Put microphones in everybody’s houses
  • Hijack our attention system
  • Hijack our social systems
  • Sell crap we don’t want and/or need

5 sins

  • Crap documentation
  • Crap website
  • Crap dependencies
  • Crap build instructions
  • Group thinking

4 languages to learn

  • C
  • Prolog
  • Erlang
  • Javascript

4 great forgotten ideas

  • Linda Tuple Spaces, David Gelernter and Nicholas Carriero
  • Flow-based programming, John Paul Morrison
  • Xanadu, Ted Nelson
  • Unix Pipes

6 areas to research

  • Robotics
  • AI
  • Programmer Productivity
  • Energy Efficiency
  • Precision Medicin
  • Security

2 dangers

  • Group thinking
  • Bubble thinking

4 ideas that are obvious now but strange at first

  • Indentation
  • Versioning
  • Hypertext accross machine boundaries
  • Pipes

2 fantastic programs to try

  • TiddlyWiki
  • SonicPI