Hacker News new | past | comments | ask | show | jobs | submit login

Years ago I emailed Joe Armstrong about concurrency stuff. I had no idea about anything like multithreaded programming or distributed systems or anything like that, but I had read Erlang was a language well-suited for that stuff.

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.




It occurs to me that this is one fundamental commonality across great people that includes likes of Einstein to Feynman to Knuth to Erdos. They can sense the curiosity of a person regardless of their background or expertise and cannot prevent themselves from infecting you with the fundamental joy of discovering nature's secrets. Passion is something they feel obligated to spread even if you are just a gardner or a cook or a high school student while they happen to be towering figures with Nobel or Field medals. If you have that email, please do share!

And RIP indeed.


I actually did share that email in a sister thread; I also wrote about it specifically in a blog post [1] if you don't want to traverse through the comments.

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.

[1] https://medium.com/@tombert/rip-joe-armstrong-b6252ff93654


Thanks for sharing that experience. This matches my interactions with him at a couple conferences. Always willing to spend a moment explaining things to anyone. I had the pleasure of drinking beer with him at one of them and he was genuinely excited when I asked to have him sign my erlang book. His Twitter was one of the few I followed. His teachings and musings changed how I view software engineering. He will be missed.


Same. Him and I discussed distributed storage. Well detailed response from him that sent me reading for days. I aspire to be like him.


I would love to read that if you can find the emails. He always had a unique perspective on this stuff.


I'm curious about what he had to say about distributed storage!


> 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.

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.


This only makes me want to cry.. I never got the opportunity to meet him but I will miss him so much. I've always known since high school that his work in certain ways just had no equal. The Open Telecom Platform is straightforwardly just a masterpiece of programming - it basically turns any server into this data processing god machine with almost no possibility of a (code) failure.


I am interested in what he replied back on how Erlang avoids the common pitfalls? Would it be possible to post about it?


Basically, he explained that shared-memory systems simply don't make sense for distributed programs.

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.


Like the way he described thread safety as an oxymoron...


Can you please share that email if it's not too much to ask?


I posted it in a sister thread to this. There's a part 2 somewhere but I'll need to find it.


Are you willing to share his reply?


I can't seem to find it; I am actually reaching out to a friend that I forwarded it to to see if he still has it.


I was able to find his reply. The stuff after the `>` is him quoting me. There's another part to this somewhere, but I'll have to keep looking.

> Hello!

> I am learning Erlang and really liking it.

Great

> 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!

Have fun

/Joe


Ah, found the email he responded to a year later. As before, the stuff after the > is him quoting me.

----------------------------------------

> Hello!

>

> 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

Cheers

/Joe


Please consider sharing this email exchange with lettersofnote.com. I am not affiliated in any way with that site, but I have found it to be a great source of inspiration and a reminder that very successful people are still people, and often very approachable and kind people. Reading this sort of thing can restore one's faith in humanity, and provide impetus to change one's own behavior towards kindness and generosity.


Wow, what a sincere message. That right there is a true encounter. His philosophy – much like Erlang's – is unique and refreshing.


Yeah, I'm glad I was able to dig it up. It has an almost-inspirational sentiment to it.

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.


> Well every body is a random guy until you share stories.

I absolutely love this quote


Me too; it's an cleverly simple way to say something that seems obvious, but bizarrely isn't. I guess like Erlang itself, Joe was good at expressing the complex tersely.


Humble and gracious. A model for other language creators and community leaders.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: