In 2019 or 2020, I started to extract all Joe Armstrong from his publications and conferences. It started as a small project on Wikiquote. If you are interested, please help me! If you want to help me, you can also subscribe to this blog, you will receive more quotes from Joe Armstrong and others!
The Forgotten Ideas in Computer Science
Faults, The Forgotten Ideas in Computer Science, March 16, 2018
I had a plan. Learn Emacs. Learn UNIX. And learn programming language. What happened? I didn't learn Emacs. I didn't learn UNIX. And I invented a new programming language.
Have we got better at programming things in the last 25 years? I think the answer would be no. They've been small improvements.
I started programming in like 76. There was not enough stuff. There was Fortran and Cobol... And Fortran. Now there's 250, 500, 800 programming languages, one new each week.
Do we really need to hijack our attention systems every 10 seconds with a banner?
The methodology for what I was going to do: ask some questions, get some replies, organize result, choose the best things to do.
How to make a list? Collecting the data, that's the easy bit. Sorting it into categories is slightly more difficult. Shortening the list is the most difficult part. That a really difficult problem.
If somebody puts a big list of things up, my question is always: what is the most important thing on that list.
I can only implement one thing at a time. I'm a one thing at a time person. So, if you give me that huge list of things, I will implement the most important thing. Which is it?
We can't do a list of 20 things. You can't do 20 things in parallel. Do one of them. Do the next.
Your first question must always be: what is the most difficult part of this problem that I am trying to solve and then try and solve that? If you can't solve the most difficult bit, give up! Seek advice, find somebody who can solve it!
It's going to fail your project if you take the easy bits first, deliberately. Because you can't solve the difficult bit, your project will fail late than failing early and your company will lose lots of money.
Four good tools to learn: Emacs, Bash, Make and Shell. You could use Vi, I am not religious here. Make is pretty damn good! I use Make for everything, that good!
Better algorithms probably gave us a factor of 6 in performance. Changing the programming language going to Prolog to C, that gave us a factor of 15. All the rest comes from hardware. So, wait 10 years, you've got a thousand. wait 20, you get a million in hardware performance.
If you try to fiddle around with your code to make it efficient, that's the wrong thing to do. Keep on track with the latest hardware. That's the right thing to do.
Four languages to learn: C, Prolog, Erlang, Javascript.
Let me just say something about pipes. The great UNIX philosophy was: the output of my program should be the input to your program, to compile things together.
These [pipes] are killed by GUIs. So you don't have a text flow into a GUI. So, that are GUIs, you can't pipe it together in sequences. That's killed the notion of a pipe and the notion of reusing things.
We can use Machine Learning to diagnose diseases and we don't need to use machine learning to target advertisements to people. We can use it to cure their cancers. Just think about that.
I was crap at writing. I learned to ride. I wrote a few books and after, you written a few books, you get good at it. But I was really rubbish at writing to start.
PHP, brilliant language! Apart from the syntax and the semantics. Because it takes a view that will perform everything in one place.
Help your non-technical neighbor. Tell them it's not your fault. Tell them it's crap software and I don't understand this crap.
Things can be small. They don't have to be gigabytes.
The web is totally broken. It's not symmetric. Easy to read stuff, very difficult to write stuff. We ave a community of users who engage passively by reading stuff, they do not write stuff.
Let's unbreak the web. The web is broken. Let's go out and un-break it and let's bring computation back to these supercomputers that we've got in our pockets [...] Let's ensure that our personal data is owned by us and not by large corporations [...] Let's make computing easy again like it was in the past. Let's build apps that could communicate with each other.