Linux web sites

Just some notes about web pages I was reading today.

Linux Journal articles

I had a read of a few Linux Journal articles today. Easy reads that give you a high level view of what’s available:

New books

Ordered on Amazon today:

I’m not sure what to make of the fact that these books are nearly 20 years old… totally out of date, but all that is available? What’s up with that?

Large Language Models and The End of Programming – CS50 Tech Talk with Dr. Matt Welsh

Here’s an interesting talk about how we won’t need programmers very soon: Large Language Models and The End of Programming – CS50 Tech Talk with Dr. Matt Welsh.

If refers to the following books:

Joe Armstrong – Keynote: The Forgotten Ideas in Computer Science – Code BEAM SF 2018

I watched Joe Armstrong – Keynote: The Forgotten Ideas in Computer Science – Code BEAM SF 2018. I made the mistake of starting my notes as I went along with the video. If I had have watched the video first I probably wouldn’t have made the notes. Anyway. Sunk cost. Here ’tis.

Two papers to read:

  1. A Plea for Lean Software by Niklaus Wirth
  2. The emperor’s old clothes by Tony Hoare

Four old tools to learn:

  1. emacs (vi)
  2. bash
  3. make
  4. shell

Four really bad things:

  1. Lack of privacy
  2. Attempts to manipulate us through social media
  3. Vendor lock-in
  4. Terms and conditions

Three great books to read:

  1. Algorithms + Data Structures = Programs by Niklaus Wirth (PDF)
  2. The Mythical Man-Month by Fred Brooks (PDF)
  3. How to Win Friends and Influence People by Dale Carnegie (PDF)

Seven reasons why software is difficult now:

  1. Fast machines
  2. Huge memory
  3. Hundreds of PLs
  4. Distributed
  5. Huge programs
  6. No specifications
  7. Reuse

One fun programming exercise:

  1. META II a syntax-oriented compiler writing language (PDF)

8 great machines from the past:

  1. Baby SSEM
  2. PDP11
  3. Vax 11/750
  4. Cray 1
  5. IBM PC
  6. Raspberry Pi
  7. iPhone/iPad
  8. Nvidia Tesla P100

3 performance improvements:

  1. Better algorithms (x6) (Interpreter -> Compiler)
  2. Better programming language (x50) (Prolog -> C)
  3. Better hardware (x1000 per 10 years)

5 YouTube videos to watch:

  1. Alan Kay at OOPSLA 1997 – The computer revolution hasnt happened yet
  2. Ted Nelson — Computers for Cynics [full version]
  3. Free is a Lie
  4. How a handful of tech companies control billions of minds every day | Tristan Harris
  5. Matt Might – Winning the War on Error Solving the Halting Problem and Curing Cancer

6 things not to do:

  1. Backdoors
  2. Violate privacy
  3. Put microphones in everybody’s houses
  4. Hijack our attention system
  5. Hijack our social systems
  6. Sell crap that we don’t want or need

5 sins:

  1. Crap documentation
  2. Crap website
  3. Crap dependencies
  4. Crap build instructions
  5. Group think

4 languages to learn:

  1. C
  2. Prolog
  3. Erlang
  4. Javascript

4 great forgotten ideas:

  1. Linda Tuple Spaces – David Gelernter and Nicholas Carriero
  2. Flow based programming – John Paul Morrison
  3. Xanadu – Ted Nelson
  4. Unix pipes

6 areas to research:

  1. Robotics
  2. AI
  3. Programmer productivity
  4. Energy efficiency
  5. Precision medicine
  6. Security

2 dangers:

  1. Group think
  2. Bubble think

4 ideas that are obvious now but strange at first:

  1. Indentation
  2. Versioning
  3. Hypertext across machine boundaries
  4. Pipes

2 fantastic programs to try:

  1. TiddlyWiki
  2. Sonic Pi

7 distractions:

  1. Open plan offices
  2. The latest stuff
  3. Twitter/Facebook (social media)
  4. Notifications (turn ’em off)
  5. Links (don’t click on them)
  6. Ban Scrum etc
  7. We can only do one thing at a time; our brains are terribly bad at context switching

3 general laws:

  1. Software complexity grows with time (because we build on old stuff)
  2. Bad code crowds out good (Gresham’s law)
  3. Bad code contaminates good code

3 laws of physics:

  1. A computation can only take place when the data and the program are at the same point in spacetime -=> get all the data + program to the same place (can be client or server or someplace in-between) (problem – easy to move data – difficult to move programs) This is why PHP is good :-)
  2. Causality – Effect follows cause. We don’t know how stuff is we know how it was (the last time it told us)
  3. 2nd law of thermodynamics – Entropy (disorder) always increases

6 common problems:

  1. Does not know how to delete files – when the system runs out of space they buy a new computer
  2. No idea of what MBytes, Mbits, Bits/sec, quad cores, etc means
  3. If the app doesn’t work immediately gives up
  4. Does not search for fixes – or does and does not understand the answers
  5. Does not want to try the latest things
  6. Uses a method that works (not the best) – e.g. to copy a file open it and then save it with a new name

5 more problems:

  1. The UI changes
  2. Passwords
  3. Stuff doesn’t work
  4. Terms & Conditions
  5. non-reproducible errors

Things can be small:

  1. Forth OS 24KB
  2. Forth compiler 12KB
  3. IBM PC DOS < 640KB
  4. USCD Pascal
  5. Turbo Pascal
  6. Turbo C

The old truths:

  1. Keep it simple
  2. Make it small
  3. Make it correct
  4. Fight complexity

Web is broken:

  1. It’s not symmetric; users read data but write very little
  2. Can every page be changed?
  3. Can I make new data by combining fragments from other data in a flexible manner? No.
  4. The Web is dominated by a small number of companies (Amazon, Apple, Google, Facebook) using huge data centers, it should be controlled from the edge network.
  5. The original vision was a Web controlled by “citizen programmers” (Search for Ted Nelson talks)

HTML and HTTP have several problems:

  1. Non symmetric
  2. Easy to read/difficult to write
  3. Pages get lost (disappear)
  4. Links are wrong (404-problem)
  5. Re-use, attribution, IP rights, payments is a mess
  6. Controlled by a very small number of companies