Hubbry Logo
search
logo
1206477

Joe Armstrong (programmer)

logo
Community Hub0 Subscribers
Read side by side
from Wikipedia

Joseph Leslie Armstrong (27 December 1950 – 20 April 2019) was a computer scientist working in the area of fault-tolerant distributed systems. He is one of the co-designers of the Erlang programming language.

Key Information

Early life and education

[edit]

Armstrong was born in Bournemouth, England in 1950.[1][2]

At 17, Armstrong began programming in Fortran on his local council's mainframe.[1]

Armstrong graduated with a B.Sc. in Physics from University College London in 1972.[2]

He received a Ph.D. in Computer Science from the Royal Institute of Technology (KTH) in Stockholm, Sweden in 2003.[2][3] His dissertation was titled Making reliable distributed systems in the presence of software errors.[4] He was a professor at KTH from 2014 until his death.[2]

Career

[edit]

After briefly working for Donald Michie at the University of Edinburgh, Armstrong moved to Sweden in 1974 and joined the Ericsson Computer Science Laboratory at Kista in 1984.[2]

Peter Seibel wrote:

Originally a physicist, he switched to computer science when he ran out of money in the middle of his physics PhD and landed a job as a researcher working for Donald Michie — one of the founders of the field of artificial intelligence in Britain. At Michie's lab, Armstrong was exposed to the full range of AI goodies, becoming a founding member of the British Robotics Association and writing papers about robotic vision. When funding for AI dried up as a result of the famous Lighthill report, it was back to physics-related programming for more than half a decade, first at the EISCAT scientific association and later the Swedish Space Corporation, before finally joining the Ericsson Computer Science Lab where he invented Erlang.[5]

It was at Ericsson in 1986, that he worked with Robert Virding and Mike Williams, to invent the Erlang programming language,[2] which was released as open source in 1998.[6]

Personal life

[edit]

Armstrong married Helen Taylor in 1977. They had two children, Thomas and Claire.[2]

Death

[edit]

Armstrong died on 20 April 2019 from an infection which was complicated by pulmonary fibrosis.[7][8][9][10]

Publications

[edit]
  • 2007. Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf ISBN 978-1934356005.
  • 2013. Programming Erlang: Software for a Concurrent World. Second edition. Pragmatic Bookshelf ISBN 978-1937785536.

References

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
Joe Armstrong (1950–2019) was a British computer scientist and professor best known as the principal inventor of the Erlang programming language, a functional language emphasizing concurrency, distribution, and fault tolerance for building robust distributed systems.[1] Born in Bournemouth, England, he earned a degree in theoretical physics from University College London in 1972 before pursuing research in artificial intelligence at the University of Edinburgh and developing software for the Swedish Space Corporation's Viking satellite project.[2] Armstrong joined Ericsson in 1984, where, alongside colleagues Robert Virding and Mike Williams, he co-created Erlang in 1986 to meet the demands of scalable telecommunications infrastructure, leading to its initial proprietary use in telephone exchanges.[2] In 2003, Armstrong received a PhD from the Royal Institute of Technology (KTH) in Stockholm for his thesis "Making reliable distributed systems in the presence of software errors", which formalized principles central to Erlang's design, including the actor model and supervision trees for error isolation.[3] He co-authored the seminal book Concurrent Programming in Erlang in 1993, which documented the language's paradigms and facilitated its open-sourcing by Ericsson in 1998.[2] Armstrong coined the term "concurrency-oriented programming" to describe Erlang's approach, influencing modern systems like those in WhatsApp, RabbitMQ, and 5G networks.[1] Later in his career, he served as an associate professor at KTH and continued advocating for reliable software through talks, writings, and the 2013 book Programming Erlang: Software for a Concurrent World.[2] Armstrong died on 20 April 2019 at age 68 from complications of pulmonary fibrosis, leaving a legacy of innovative tools for resilient computing.[2]

Biography

Early life

Joe Armstrong was born on December 27, 1950, in Bournemouth, England, to British parents.[2][4] His father, Walter Armstrong, worked as a lawyer, while his mother, Roma (née Titmas), had served as a comptometer operator during World War II before becoming a homemaker in the post-war years.[2] Growing up in the era of Britain's reconstruction after the war, Armstrong experienced the societal shifts and technological advancements of the 1950s and 1960s, which fostered an environment ripe for budding scientific curiosity.[2] From a young age, Armstrong displayed a keen interest in programming and software technology, engaging with these fields through self-directed exploration amid limited access to computers in post-war Britain.[2] His early education reflected the selective school system of the time; he failed the 11-plus exam and attended a secondary modern school before transferring to Bournemouth Grammar School for his sixth form studies.[2] It was during these school years that he gained initial exposure to mathematics and physics, subjects that would later influence his academic pursuits in theoretical physics and computing.[2]

Education

Joe Armstrong earned a Bachelor of Science degree in theoretical physics from University College London in 1972, where his studies included computational aspects that sparked his interest in programming.[2] Following graduation, Armstrong began postgraduate work as a research assistant in artificial intelligence at the University of Edinburgh, under the mentorship of Donald Michie, a pioneer in British AI.[2][5] During this period from 1972 to 1974, he contributed to research on robotic vision, co-authored papers on the topic, and became a founding member of the British Robotics Association; this exposure introduced him to key programming languages such as Lisp and Prolog, which shaped his early thinking on symbolic computation and logic-based systems.[2][5] Initially pursuing a PhD in physics, Armstrong switched to computer science after financial constraints interrupted his studies, leading him to accept the position at Edinburgh.[5] He later completed his doctoral degree in computer science at the Royal Institute of Technology (KTH) in Stockholm, Sweden, in 2003, with a thesis titled "Making reliable distributed systems in the presence of software errors," which explored fault-tolerant mechanisms foundational to his later work.[4][6] His academic journey, including coursework and research in functional and logic programming paradigms during his time at Edinburgh and beyond, profoundly influenced his philosophy on concurrency and robust system design.[5]

Career

Early professional roles

After completing his B.Sc. in physics from University College London in 1972, Armstrong served as a research assistant at the University of Edinburgh from 1972 to 1974, focusing on artificial intelligence and robotic vision projects.[2] He was also a founding member of the British Robotics Association during this period, contributing to early efforts in robotics development.[2] In 1974, Armstrong relocated to Sweden for research on the aurora borealis in Kiruna. He later joined the Swedish Space Corporation, where he worked on developing ground station software for the Viking satellite mission from the late 1970s until 1984.[2] Armstrong joined Ericsson's computer science laboratory in 1984 as a systems designer, initially focusing on fault-tolerant telephone switches and distributed systems for telecommunications.[2] His early projects at the company included prototyping features for the MD110 private automatic branch exchange (PABX) using PROLOG-based implementations for network management.[7] In 1986, he produced an internal Ericsson report titled "Telephony Programming in Prolog," which demonstrated the application of logic programming to telephony tasks, enabling rapid development of concurrent telecom prototypes.[7] These roles exposed Armstrong to significant challenges in building reliable concurrent systems for real-time telecommunications, including error propagation in shared-resource environments and the need for robust fault isolation in distributed network setups.[6] In 1989, he co-authored a paper with Mike Williams on "Using Prolog for Rapid Prototyping of Telecommunication Systems," presented at the Software Engineering for Telecommunication Switching Systems conference, emphasizing PROLOG's role in addressing scalability and reliability issues in telecom software design.[7]

Development of Erlang

In the mid-1980s, Joe Armstrong, working at Ericsson's Computer Science Laboratory, conceived Erlang as a solution for developing robust, concurrent software in telecommunications systems, where high availability and fault tolerance were essential.[8] The project originated from the need to handle complex, distributed control applications more effectively than existing languages like PLEX, drawing initial inspiration from Prolog for rapid prototyping.[6] Armstrong collaborated closely with Robert Virding, who focused on libraries, and Mike Williams, who implemented the runtime, with later contributions from Claes Wikström on distribution features.[9] Erlang's core design centered on the actor model of concurrency, utilizing lightweight processes that communicate exclusively through asynchronous message passing, eliminating shared memory to enhance isolation and scalability.[8] Key features included pattern matching for concise data handling and control structures, as well as hot code swapping, which allowed runtime updates without system interruption.[6] The language embodied a "let it crash" philosophy for fault tolerance, where failing processes could be detected, isolated, and restarted via supervision links, prioritizing system resilience over individual component perfection in fault-prone environments.[9] Development began in 1985 with exploratory work on concurrent Prolog extensions, leading to a prototype implemented in Prolog by 1986 for telephony applications.[8] In 1987, the language was named Erlang and applied to initial projects using a Prolog-based emulator; by 1988, the JAM (Joe Armstrong Machine) virtual machine was designed for better efficiency, with a C implementation completed in 1990.[6] Distribution mechanisms were integrated in 1991, enabling networked operations, and the first complete functional language version was realized in 1992.[9] Erlang's initial applications focused on Ericsson's telecom infrastructure, starting with the ACS/Dunder prototyping project from 1987 to 1989, where it achieved 9- to 22-fold efficiency improvements in design productivity compared to PLEX.[6] It was subsequently used in 1992 for the Mobility Server, a cordless telephony system, demonstrating its suitability for real-time distributed control.[9] By the mid-1990s, Erlang powered the AXE telephone exchanges, managing millions of lines with exceptional uptime through its fault-tolerant architecture.[8]

Later contributions and academia

Following the initial development of Erlang, Armstrong played a pivotal role as chief architect in creating the Open Telecom Platform (OTP) during the 1990s at Ericsson. OTP emerged as a comprehensive framework for developing robust, scalable Erlang applications, particularly in telecommunications, incorporating key abstractions such as supervision trees for process monitoring and fault recovery, and standardized behaviors for common patterns like servers and finite state machines.[6] This platform transformed Erlang from a language into a full production environment, emphasizing "let it crash" philosophy to build resilient distributed systems.[10] In his later academic career, Armstrong earned a PhD in computer science from the KTH Royal Institute of Technology in 2003, with a thesis titled Making reliable distributed systems in the presence of software errors, which formalized many OTP principles.[6] From 2014 until his death, he served as an adjunct professor at KTH, where he lectured on concurrent and distributed programming, inspiring students with practical insights into fault-tolerant systems.[11] He also held guest lecturing positions at institutions such as the University of Glasgow, delivering talks on scalability and fault tolerance in programming languages.[12] Armstrong's industry engagements extended beyond Ericsson, where he contributed to Erlang/OTP releases after the language's open-sourcing in 1998. In 1998, he co-founded Bluetail AB to provide Erlang-based consulting and development services, focusing on high-availability systems for telecom and internet applications.[11] Later, he returned to Ericsson as a senior researcher while maintaining open-source involvement, including updates to OTP libraries. His expertise influenced deployments at scale, such as WhatsApp's backend, which relies on Erlang for handling billions of messages daily.[13] Armstrong frequently delivered keynote addresses at major conferences, including QCon London in 2009 on reliable systems and GOTO in 2018 on forgotten ideas in computer science, sharing his vision for concurrency-oriented programming.[14][1] His contributions earned recognition through invitations to prestigious events, such as the ACM SIGPLAN History of Programming Languages conference in 2007, where he presented "A History of Erlang."[9]

Personal life and death

Family and interests

Joe Armstrong married Helen Taylor, a translator, in 1977, and the couple raised two children, Thomas and Claire, in Sweden.[2] Their family life was centered in Stockholm, where Armstrong had relocated earlier in the decade, providing a stable environment that balanced his professional commitments.[5] In 1974, Armstrong moved to Kiruna in northern Sweden to conduct research on the aurora borealis, marking the beginning of his long-term settlement in the country.[2] This relocation facilitated his integration into Swedish society, including his marriage the following year and the establishment of a family home, which he later described as a place of personal comfort during interviews conducted there.[5] Beyond his career, Armstrong pursued diverse interests that reflected his creative and intellectual sides, including music, literature, politics, and photography.[2] He was particularly fond of cats, naming two of his pets Zorro and Daisy, whom he affectionately thanked in the preface to his book Programming Erlang for their companionship.[15] Earlier cats were humorously named after philosophers, such as Wittgenstein and Schopenhauer.[11] In public appearances, Armstrong was renowned for his approachable demeanor, infused with boundless enthusiasm and a dry British wit that made technical discussions engaging and accessible to audiences.[2] This humorous style often lightened interviews and talks, endearing him to the programming community.[16]

Illness and passing

In the years leading up to his death, Joe Armstrong faced a prolonged battle with pulmonary fibrosis, a progressive lung disease that caused scarring and significantly diminished his lung capacity. The condition, diagnosed shortly before his passing, was incurable and led to severe complications, including vulnerability to infections, though Armstrong maintained a low public profile regarding his health struggles.[2][17] Armstrong died on April 20, 2019, in Stockholm, Sweden, at the age of 68, from a lung infection that his compromised respiratory system could not withstand.[2][18] His wife, Helen, shared a statement confirming the cause and expressing gratitude for the support from the community, while highlighting his profound and lasting impact on programming languages and fault-tolerant systems.[17][18] News of his death prompted immediate tributes from the Erlang community and his professional peers. Francesco Cesarini, founder of Erlang Solutions and a longtime collaborator, announced the passing and reflected on Armstrong's visionary contributions to concurrent programming during their decades of friendship.[11] Former Ericsson colleagues, including Mike Williams and Bjarne Däcker, issued a collective statement mourning the loss of their innovative teammate and crediting him with revolutionizing telecommunications software through Erlang's development.[18] In a gesture aligned with medical research efforts, Armstrong's lungs were donated to advance studies on pulmonary conditions.[17]

Legacy and works

Influence on programming

Joe Armstrong's philosophical contributions to programming emphasized the design of reliable systems through principles of functional programming, immutability, and process isolation, viewing software as akin to biological organisms capable of self-healing and adaptation. In his 2003 thesis, he advocated for functional programming to minimize side effects, noting that Erlang's side-effect-free nature allowed 92% of functions in the AXD301 system to be "clean," enhancing predictability and fault tolerance.[6] He championed immutability via single-assignment variables, which prevent state-related errors and ensure consistent behavior across concurrent operations.[6] Process isolation, achieved through lightweight, independent processes communicating solely via messages, contained failures and mirrored biological cell independence, as Armstrong described: "Two processes operating on the same machine must be as independent as if they ran on physically separated machines."[6] This "let it crash" philosophy, inspired by biological resilience, promoted supervision hierarchies for automatic recovery rather than defensive coding.[6] Armstrong likened software ecosystems to living systems, stating, "The real world is concurrent... At an atomic level our bodies are made up of atoms, and molecules, in simultaneous motion," arguing that concurrency-oriented programming naturally addresses parallelism in distributed environments.[6] Armstrong's ideas profoundly influenced the adoption of Erlang in modern systems, particularly for high-scale, fault-tolerant applications in telecommunications and cloud computing. Erlang powers core components of RabbitMQ, a widely used message broker for distributed systems, enabling efficient handling of concurrent messaging.[19] Similarly, CouchDB, a NoSQL database, leverages Erlang's concurrency model for scalable data replication and fault tolerance in cloud environments.[20] These adoptions highlight Erlang's role in building resilient infrastructures, such as Amazon's SimpleDB, which uses Erlang for database services supporting massive scalability.[20] Armstrong's principles extended to new languages like Elixir, which runs on the Erlang VM (BEAM) and adopts its actor-model concurrency, pattern matching, and error handling while introducing Ruby-inspired syntax for broader accessibility; Armstrong himself praised Elixir for preserving Erlang's semantics in a more approachable form.[21] Through advocacy for open-source release and ecosystem development, Armstrong fostered a vibrant community that sustained Erlang's growth long after its 1998 open-sourcing by Ericsson. His 2007 book Programming Erlang catalyzed adoption, leading to the formation of user groups, workshops like the ACM SIGPLAN Erlang Workshop in 2002, and the Erlang Ecosystem Foundation in 2018, which standardized behaviors and libraries via OTP.[22] Posthumously, the ecosystem expanded, with Erlang/OTP powering real-time systems in IoT for fault-tolerant device orchestration and telecom for handling millions of connections, as seen in WhatsApp's infrastructure supporting over 3 billion users as of 2025.[23] This growth underscores the enduring standards he helped establish, including hot code upgrades and distribution primitives. Armstrong critiqued sequential and shared-memory concurrency models for fostering monolithic architectures and scalability issues, arguing they inadvertently promote inflexible organizations and poor distributed designs; in contrast, message-passing isolation in Erlang enables modular, self-healing systems akin to microservices.[24] His emphasis on lightweight processes and error containment evolved to address modern distributed challenges, influencing microservices by prioritizing communication patterns over shared state, as evidenced in scalable, "run forever" systems that prefigured cloud-native resilience.[25]

Key publications

Joe Armstrong's key publications primarily revolve around the Erlang programming language, emphasizing concurrency, fault tolerance, and distributed systems. His works serve as foundational resources for developers and researchers, providing practical tutorials, theoretical insights, and historical context for building robust software. One of his seminal books is Concurrent Programming in Erlang (1993), co-authored with Robert Virding and Mike Williams, published by Prentice Hall (ISBN 0-13-508301-X). This text offers a comprehensive introduction to Erlang's syntax, concurrency primitives, distributed programming, and the Open Telecom Platform (OTP) framework, targeting programmers building scalable telecommunications systems.[26] It was updated in a second edition in 1993, expanding on advanced topics like error handling and real-time applications. Armstrong's Programming Erlang: Software for a Concurrent World (2007), published by Pragmatic Bookshelf (ISBN 978-1934356005), builds on these foundations by guiding readers through Erlang's functional paradigm with hands-on examples, including building a SHOUTcast server and a search engine. Aimed at intermediate programmers, it underscores Erlang's suitability for concurrent, fault-tolerant applications in multicore environments. The second edition (2013, ISBN 978-1937785536) incorporates modern features such as maps, the Dialyzer type system, WebSockets, and programming idioms, while retaining core concepts for broader accessibility.[27] His doctoral thesis, Making Reliable Distributed Systems in the Presence of Software Errors (2003), defended at the Royal Institute of Technology (KTH) in Stockholm, explores fault-tolerant design principles using Erlang's actor model, supervision trees, and lightweight processes to isolate errors and ensure system reliability. This work formalizes strategies for handling software faults in distributed environments, influencing Erlang's runtime behaviors and OTP behaviors.[28] Among his influential papers, "A History of Erlang" (2007), presented at the ACM SIGPLAN History of Programming Languages conference (HOPL III), traces Erlang's evolution from 1980s prototypes to a production language for concurrent, evolving systems, highlighting design decisions for distribution and hot code swapping. Another key contribution is "Concurrency Oriented Programming in Erlang" (2003), which outlines Erlang's process-based concurrency model as a paradigm for scalable, fault-isolated programming, contrasting it with shared-memory approaches.[29] Additionally, "Getting Erlang to Talk to the Outside World" (2002), from the ACM SIGPLAN Erlang Workshop, details integration techniques for linking Erlang with external systems via ports and drivers, enabling hybrid architectures. Armstrong also authored online essays and blog posts disseminating concurrency patterns, such as "Background to Programming Erlang" (2014) on his personal site, which reflects on the gap between the 1993 book and his 2007 publication, emphasizing practical evolutions in Erlang usage up to that point.[30] These writings, along with contributions to conference proceedings, extended his ideas on reliable systems through 2019.

References

User Avatar
No comments yet.