Notes from The Forgotten Ideas in Computer Science

Jeremy pointed out a video that Joe Armstrong gave a talk at Code Beam SF. It has a bunch of useful and thought-provoking things that will hopefully be a source for future posts.

Source tweets:

I’m interested in the forgotten ideas of computer science. Needed for a talk.

Can you post examples of great CS ideas that have been largely forgotten.

Examples: Linda tuple spaces, Boyer-Moore algorithm

and

Also interested in really silly ideas in Computer Science.

These are ideas that were thought to be good at the time but which turned out to be daft.

Which ideas of today will people in 20 years time say “well that was a really stupid idea”


  • Computer Science things
  • Not computer science things
    • Learn to write
    • Three rules at work
      • if you get a bad boss, move immediately
      • the relationship comes first (Jane Walerud)
      • engage with management
    • Seven distractions
      • open plan offices
      • the latest stuff
      • social media
      • notifications
      • links (don’t click them)
      • ban scrum, etc…
      • one thing at a time
    • Six ways to get your boss to $THING
      • do things that gain trust
      • tell success stories
      • reduce fear of failure
      • introduce on a small scale
      • network with $THING folks
      • make a prototype at home
    • One thing to look at when applying for a new job
      • balance sheet: positive cash flow. companies with a negative cash flow won’t innovate and are terrible to work for
    • Three general laws
      • software complexity grows with time
      • bad code crowds out good (gresham’s law), bad money drives out good (clipping)
      • bad code contaminates good code
    • Laws of physics and maths
      • a computation can only occur when data and the program are at the same point in space-time
      • causality: effect follows cause; we don’t how stuff is, we know how it was
      • 2nd law of thermodynamics: entropy always increases + git keeps all versions: increases entropy, cancer
  • Half forgotten BIG ideas in CS
    • Things can be small
      • Forth OS: 24kB
      • Forth compiler: 12kB
      • IBM PC DOS: < 640kB
      • USCD Pascal
      • Turbo Pascal
      • Turbo C
    • Four old truths
      • keep it simple
      • keep it small
      • make it correct
      • fight complexity
    • The web is broken
      • asymmetric: users read a lot but write little
      • can every page be changed?
      • can’t make data by combining fragments from other data in a flexible manner
      • web is controlled by a few huge companies using huge data centres
      • original vision was a web controlled by citizen programmers
    • HTTP/HTML are broken
      • easy to read, hard to write
      • pages disappear
      • asymmetric
      • links are wrong
      • reuse, IP, attribution, payments are a mess
      • controlled by small number of companies
    • wikis
      • kind of work
      • links can’t be lost
      • all in one place
    • Xanadu
      • like the web but better
      • no broken links
      • no difference between reading and writing
      • data could be reused
      • never lose data
      • copyright/attribution correctly handled
      • complete knowledge of parents/children
    • unbreak the web
      • make it symmetric: easy to both read and write
      • bring computation back to the edge
      • personal data personally owned
      • make computing easy again
      • build apps for intercommunicability
  • Parting thoughts
    • "a program that is not secure and cannot be remotely controlled should not be written"
    • "we’ve given millions of people supercomputers - so let them use them and... it’s your turn next"

Tags: ,