I sent an email asking some seriously noobey questions about concurrency (about why mutation was bad, what made the Actor model work, etc), and instead of a response like "Go read a book and stop bothering me", he responded back with an incredibly long, well-written email explaining a lot of the minutia of how Erlang avoids a lot of pitfalls and generic concurrency theory. He was really good about explaining things in a way simple-enough for me to understand, without coming off as patronizing or rude.
About a year later I got a job doing Erlang, and I sent him another email telling him this, saying something to the effect of "sorry for bothering you a year ago, but your email was really helpful to me".
His response was basically "You have nothing to apologize for! I've always thought it was important to help people asking questions, especially early in their career".
I can honestly say that his kindness and patience changed my life for the better. If he hadn't held my hand a bit to make distributed systems make sense to me, there's a very high likelihood that I would still be writing Flash applications for a Tae Kwon Do studio.
RIP Joe, you will be missed.
And RIP indeed.
I completely agree with your thesis. I was a recent college dropout, and Joe's enthusiasm about Erlang, distributed programming, and pretty much everything else about computers was really a good springboard for self-education.
I love that about Joe. He really really love Erlang and the thing he built and share it with everybody. It shows in his blogs and the talks he gave at conferences.
It was years ago, but I believe he said something to the effect of "imagine that there's a server in Europe, and a server in America. Where does that shared memory exist?? Shared memory violates the laws of physics!"
He then explained that since Erlang processes don't share any memory, and the only way for them to communicate is via message-passing, there's no need for locks or anything like that.
> I am learning Erlang and really liking it.
> I am finding myself really liking the immutability in regards to being able to reason about my code, but that leaves me with a probably easy question: why does immutability make concurrency easier?
Tricky I guess it makes parallel execution easier (no locks) - it certainly makes programming easier
closures really are closures :-)
> Is it because it's difficult to have something in a thread reach-across and modify the state of another thread?
That's not really immutability - actually I hate threads - the difference between a thread and a process is
crucial - threads can modify shared state (horrible) -
In distributed systems there is no real shared state (imagine one machine in the USA another in Sweden)
where is the shared state? In the middle of the Atlantic? - shared state breaks laws of physics.
State changes are propagated at the speed of light - we always know how things were at a remote site
not how they are now. What we know is what they last told us. If you make a software abstraction that
ignores this fact you'll be in trouble.
> Does that mean concurrency wouldn't be so bad if you kept state mutations contained within one thread?
Yes - if you use the word process, not thread. Processes were invented to provide protection
from other computations and to share resources in a clean way - threads share resources in a messy way.
> If you don't have time to answer right now, a link or some guidance into the right resource would be appreciated!
I think what you're interested in is the distinction between message-passing-concurrency and shared-memory-concurrency.
Java/C++/etc uses shared-memory concurrency (evil) - Erlang uses message passing concurrency.
AS Alan-Kay said - the big thing about OO is message passing not all the other stuff ...
> I love Erlang, and I appreciate you reading my message!
> Just under a year ago I send you a message asking you about multi-process computing and the like. You gave me a long, detailed email that not only answered my questions, but also explained in pretty-decent detail.
> I was so impressed by that email that I actually purchased your "Programming Erlang" book, and enjoyed that just as much, and today I started my first job doing Erlang full-time (well, mostly; there's some JS involved).
Great - thanks a lot for buying the book - these kind of stories
make it feel all worth while
> I just wanted to thank you for the help. I know a compsci-celebrity probably gets bombarded with emails,
Actually not - I guess it's a 'being polite' thing - I rather like twitter it
lowers the entry barrier for communication between people.
I have in the past mailed several of my CS "heros" - and was always
rather reluctant to do so. Then to my great surprise I often got long
and helpful replies (from Niklaus Wirth, Alan Kay, Jim Gray)
This kind of fits in with my view of life - 95% of people are basically helpful.
I've always thought that converts were gained "one at a time" - imagine
a drip drip drip of water falling into a pan - one day it overflows.
We always think it's fantastic to hear the stories of what you guys do with
Erlang. (I say we because the Erlang you're using is the product of
many people fantastic work) - I'm just the fall guy who writes the books
and happened to start it all :-)
I was sat listening to Brian Acton who founded WhatsApp and made 3.5B$
and thought "I invented this crap" - which is a great feeling - and they gave me a tee-shirt.
So the side effect of what I do is I get to meet loads of interesting people
and do what I want.
Anyway thank again, and I hope things go well for you.
> and I think it's really cool that you took a good amount of time responding to some random guy on the internet asking for help.
Well every body is a random guy until you share stories.
My wife was a random woman before we met.
Anyway life would be very boring if it were not for random events.
I never run for busses or trains - it was after I read about a guy who missed
a train and had a random conversation with a guy on the platform
who had also missed the train - this gave them an idea that they
turned in a multi-million dollar business.
I guess the other reason that you get long replies is that I'm an author
and I don't do short mails.
> As usual, keep up the great work.
I'm trying - though I've recently retired - gives me more time for hobby programming - though I have to tend my garden and so on
Also, rereading this line genuinely made me laugh:
> I was sat listening to Brian Acton who founded WhatsApp and made 3.5B$ and thought "I invented this crap" - which is a great feeling - and they gave me a tee-shirt.
I absolutely love this quote
I'm not sure if he deliberately misunderstood me or not, but it definitely put me more at ease, realising that there's always someone bigger, even for the folks you see as bigger than you!
So sad to learn of his passing. RIP.
It’s sad to hear of his passing, and rewarding to see he was just as kind and curious as you could ever hope to be even just this month.
 - https://mobile.twitter.com/joeerl
I very much appreciate Armstrong's sometimes contrarian criticism of the tech industry, and I hope I managed to match the tenor of his frustration when I wrote "Joe Armstrong figured out the right way to do everything, and nobody cared"
"I mentioned how nervous I was; me, sitting on a panel with such other esteemed and brilliant folks"
I feel the same when I get put into lists with folks like Joe Armstrong. I've made no significant contributions to the tech industry, whereas other folks have made historic contributions. I'm flattered by stuff like this:
But it is crazy. I don't belong on a page that includes Joe Armstrong, Rich Hickey and Alan Kay.
It's a sad day...
Highly recommend his thesis (2003) and a few of his great interviews/presentations for anyone who isn’t familiar with Joe, it captures a lot of what he thought about and pushed for in his professional life.
I hope his family and friends can find some comfort in how much he was appreciated and admired in the development community.
I'm in actual shock, he was tweeting about pretty much that (also brexit and playing with his phone's voice recognition) just 2 weeks ago… He wasn't even 70…
It's also really illuminating how they implemented the first versions of Erlang as a reified Prolog . But that is not explained in the thesis, just in his 1992 paper which he briefly cites.
I'd like to point out a recent tweet @joeerl shared  that contained things he felt were good wisdom but lost over time:
Ideas that we forgot:
1. Flow based programming.
3. Linda Tuple Spaces.
4. Hypertext (=/= HTML).
Computer Science 101:
1. Observational equivalence.
Two papers to read:
1. The Emperor's Old Clothes - ACM.
2. A Plea for Lean Software - Nikalus Wirth.
Two videos to watch:
1. The Computer Revolution Hasn't Happened Yet - Alan Kay.
2. Computers for Cynics - Ted Nelson.
Four old tools to learn: Emacs, Bash, Make, Shell.
Three books to read:
1. Algorithms + Data Structure = Programs.
2. The Mythical Man Month.
3. How to Win Friends and Influence People.
Correct a typo:
?? Learn git -> locate program that creates page -> locate typo -> correct -> send push [sic] request.
!! Select text -> type in correction -> people see change.
1. Link to content hash not a name (request content by sha256, immune to pepole in the middle).
2. Elastic Links (links should not break if you move an endpoint).
Easily one of the best thinkers of his generation . RIP.
Thanks for sharing that. I've effectively abandoned Twitter but I need to go re-read his timeline once I think I can do it without too much sorrow.
Delivered that line with perfect timing and humility. What a great sense of humor!
- clarity vs efficuency on abstraction
- the need to unwind (not sure if it is the right word) entropy
- naming and comments
Things were not so obvious to me when just started my career but are so important to software engineer's day to day
RIP Joe. Your ideas will live with us, forever
It's definitely entertaining, but that's about all I can give it.
I kind of doubt Joe Armstrong would support N days of mourning requiring uncritical acceptance of everything he's ever done.
Joe called things like he saw them. I think we better honor him by doing the same.
This is pretty legendary. He was quite the programmer.
Joe was so full of life, consumed by curiosity. I had the pleasure of escorting him around Chicago during an Erlang conference several years ago, and I still have in my Reminders app to look up a water painter named Zorn that he recommended highly as we tried to find our way to some building or another.
He’s also, I believe, my only LinkedIn contact. I opened a new account a couple of years ago when Basho was winding down, but I strongly dislike the service and didn’t do anything with it...but when Joe found me and added me, I had to approve that, obviously.
Godspeed Joe. I’m sure if the interface between this world and the next is in need of debugging, you’re the man for the job.
“Make it work, then make it beautiful, then if you really, really have to, make it fast. 90% of the time, if you make it beautiful, it will already be fast. So really, just make it beautiful!”
The 'MongoDB is web scale' one is pretty funny and was widely watched shared in the day.
I wish he'd make some more videos.
Thanks, great link.
I'll remember Joe by the several insightful, entertaining talks he's given in recent years. https://www.youtube.com/watch?v=lKXe3HUG2l4 in particular.
I watched this talk a few months ago https://www.youtube.com/watch?v=rmueBVrLKcY called "Computer Science - A Guide for the Perplexed"
It was superb, I think it's unfortunate that he had to rush through it because of time constraints, his anecdotes and delivery were really engaging and funny.
I'm grateful that I have someone like him to look up to in my profession: able to solve hard problems while still having fun with novel solutions, while still keeping it all simple.
We'll take at least 20 years just to catch up with him.
Erlang, OTP and Elixir were pretty new to me, and on top of that I built everything in a rush. The code is messy, naive, and the whole thing barely works. Over time I've added some other Applications (in the Elixir/Erlang sense of the word) that scratch various other itches. Most of that code is also pretty shit.
The fact that the whole thing has been chugging along for over a year, with no restarts or crashing the entire system, is a regular reminder to me of Armstrong and the "let it crash" philosophy. I sometimes log in to the server and face a wall of red because the happy path wasn't followed, and instead of having to fix the bug and start the thing up, I can just forget about it. Or I fix the bug, enter recompile() in the interactive console, and get on with my day.
I'm not exaggerating when I say that seeing how my duct-taped-together contraption chugs along and keeps doing its job gives me a small sense of joy every single time I SSH into the server, and it motivates me to get better at all this so I can do the same on "MongoDB level web scale".
And it's not just Armstrong's work. His openness and participation on the Elixir forums, his 'stamp of approval', so to speak, as well as his talks, played a big role in my decision to get into Elixir/OTP.
Black Ribbon please.
He asked a few of us hanging around what talks we were thinking of attending and we agreed to check out something about concurrency in some modernish platform. The speaker was working on issues with handling failures, message passing, memory management, etc, but then realized Joe was in the back and pointed out it had all been solved many years ago by that guy over there. Everyone laughed and gave Joe the acknowledgement.
I don't feel like we've finished learning from and building on his work. RIP.
Rest in peace!
This recent panel (Armstrong, Hewitt and Hoare) discussion on concurrency was the first time I got to know about him and it gave me a lot of food for thought.
Erlang is one of the most Perlis languages for me. I'm always a little bit cynical and think Erlang deserve more attention. Several months ago Joe post this tweet about a game company refused to tell other people they are using Erlang.
I just watched his great talk last year not long ago - The Forgotten Ideas in Computer Science:
Unfortunately, I cannot find a screenshot or archived view now (web.archive.org took a capture on March 10th, and not again until the 14th).
Erlang changed my way of thinking in several ways, a quick glance at some of my own creations  makes that pretty obvious.
And it is only just a few minutes ago that I discovered that Joe is the guy with the moustache from the famous Erlang: The Movie video…. I had not pieced those two things together.
So I knew nothing about his history, just one little thing he was working on/interested in. That may make me seem ignorant, but I share this because it goes to show that the light that shines in people like Joe was a genuine light of curiosity and sharing. Bright enough to attract people like me.
He kept programming and tinkering until the very end.
He’s up there with Alan Kay, in my book.
Rest In Peace Joe. You’ll surely be missed.
To those with whom I share the morbid curiosity about how it happened, I'd like to mention a movie ending that came to mind.
Griever: Tell me how he died.
Friend: I will tell you how he lived.
P.S: FWIW, I was thinking of John McCarthy there, must have gotten confused by recalling Joe Armstrong's interview with Alan Kay. I am also a big fan of Alan Kay, landing up at Erlang's doorstep after playing a little with Squeak.
Afterwards looked up talks by him and was fascinated by Erlang, sad to see him pass away.
16 points ·
1 hour ago
I had Joe as a lecturer in parallel Erlang back in January and February this year. Amazing person, seemed like he knew everything about computers. He told us that he was sick with lung fibrosis. His lungs capacity was at 50% something and kept shrinking every day. The last few lectures he was supposed to give got cancelled due to sickness. Got the news that he had passed today. A very sad day I must say.
I'm deeply sad. Despite being absolutely brilliant he was also extremely positive and full of humility. It's a rare combination.
>>> This is Helen wife of @joeerl It’s fantastic to read all these comments. Joe died from an infection which his lungs couldn’t cope with due to a quite recent diagnosis of pulmonary fibrosis. Incurable and rather unusual. Donate to lung research!
I guess it's only human nature to want to know what happened when someone you admired suddenly passed away.
After reading about it, and more importantly after reading user "tombert"'s interaction with Joe Armstrong, I think I'm beginning to understand the significance of our loss of him.
Godspeed, Joe. You set a high bar for many of us to aim for. Your patience, kindness and desire to help and spread knowledge is truly inspirational.
Edit: the thing I loved most about him was that he was brilliant but also kind. A living breathing rebuttal to the idea that it’s alright to be an asshole in this field if you’re smart enough.
There is no excuse in this world for meanness.
Aside from his technical skill and knowledge, he seemed like a really gret person with an undying sense of humor and humility.
I am grieved.
I've uploaded an image of him with the quote shared by Jah
That we might be as good to others as you have been good to us and lead by example.
My feelings to friends and family.
Thank you for saving me from OOP, Joe. (via Elixir)
May your hypothetical soul have as much uptime as your systems did.
I'm so sad and shock. He just became mod at elixirforum.com
You will be missed.
Feels extremely appropriate to me, and honestly, it was the first thing I looked for after I saw a tweet about this. RIP, Joe :(
Not to diverge too far, but does anyone know who the first black bar was?
Occasionally I'll see the black bar and the notice and not even know who the person was - at which point I get to find out about someone amazing I didn't know existed and to appreciate their contribution.
Obviously I'd prefer that there not need to be a black bar though.