Making Progress: Traditional progress relied on raw intelligence, but the context and available knowledge are often more critical factors. The right context can amplify the impact of intelligence and knowledge. Computing attracts smart people, but they often lack sufficient knowledge and context to drive progress.
The Concept of Normal: We all have a subjective perception of normal, which influences our understanding of reality. Normal is embedded in the present and contains elements we are unaware of. Distinguishing between good, bad, worse, and qualitatively better is essential for making progress.
Engineering and Research: Engineering thrives when what is actually needed falls within the normal context of the engineers. Skill and knowledge can be applied effectively in such situations. However, some endeavors, like space exploration and technological innovation, require venturing beyond the normal. Research is a tentative and explorative process that extends our knowledge.
Children and Normal: Children operate in a state of grace before schooling instills a rigid notion of normal. Their lack of strong preconceptions allows them to explore and learn more effectively. Computing needs to move beyond the limitations of most people’s normal perceptions.
Lunar Lander Software: The lunar lander’s guidance computer software is an example of remarkable achievement with limited resources. It ran on a small computer with 4k bytes of RAM and 73k bytes of ROM. The software was written in a higher-level language and had a real-time operating system. It handled thousands of processes and both the Apollo crew module and the Lunar Lander. Margaret Hamilton, a pure math graduate, led the software development team.
00:10:01 Engineering Software Systems for Reliability and Integrity
System Integrity and Fault Tolerance: Margaret Hamilton, a pioneer in software engineering, emphasized the importance of creating fault-tolerant systems that can withstand errors and maintain integrity. Hamilton’s work on the Apollo program’s computer system ensured that it could handle astronaut mistakes and system overloads without crashing. The Apollo program’s success demonstrated the critical role of software engineering in creating secure and reliable systems.
Engineering vs. Simple Programming: Hamilton distinguished between simple programs, which are like stories, and systems, which are larger, more complex entities with interconnected relationships. Software engineering involves creating systems with integrity and fault tolerance, akin to designing a constitution rather than a collection of laws or a story.
Fault-Tolerant Loose Couplings: Hamilton advocated for using fault-tolerant loose couplings in system design. This approach involves designing systems that can tolerate failures in individual components without compromising the overall system’s functionality.
The Importance of System Design: System design is crucial for creating secure and reliable systems. Software engineers must consider the larger context of their code and the relationships between different components. Recent failures, such as the crash of a vaccination website, highlight the consequences of neglecting system design principles.
Software Engineering as a Discipline: Hamilton’s work and the Apollo program’s success underscore the importance of software engineering as a rigorous discipline. Software engineers must consistently apply principles of integrity, fault tolerance, and system design in their work to create robust and reliable systems.
00:13:51 Systems Thinking and Complexity in Design
Late Binding and Development Before the Fact: Late binding is preferred over early binding to allow for flexibility and error prevention. Software engineering should focus on developing before the fact to prevent errors from causing harm.
Systems Coordination in the Moonshot Project: The Apollo moonshot required systems coordination of 400,000 people, 20,000 companies, and 178 billion dollars. The focus was on systems thinking, considering the entire system rather than individual parts.
Understanding Systems through Wide-Angle Visualization: Complex systems can be understood more effectively through wide-angle visualization and virtual reality. Wide-angle visualization allows for a comprehensive view of the entire system. Virtual reality can provide a sense of the whole system and facilitate meetings for dealing with complexity.
Stories vs. Systems: Stories are about happenings, while systems are about relationships. The Bible and Michelangelo’s paintings are examples of wide-angle representations of systems.
Limitations of Laptop Screens for Systems Visualization: The angle of vision on laptop screens is too wide for effective visualization of systems. Our eyes are not adapted for close viewing of wide-angle displays.
Need for Peripherals: We need technologies that allow us to deal with information in our periphery as well as in our fovea.
Tinkering, Engineering, Science, and Exploration: Humans have five main types of knowledge and thinking: tinkering, liking, engineering, science, and exploration. Tinkering and liking are innate abilities shared with other animals, while engineering, science, and exploration are more uniquely human.
The Akashi Strait Bridge: The Akashi Strait Bridge, the world’s largest suspension bridge, exemplifies the successful integration of science, engineering, mathematics, and modeling. This project demonstrates the importance of collaboration between different disciplines to achieve ambitious goals.
Daedalus and Icarus: The story of Daedalus and Icarus represents humanity’s long-standing dream of flight. Early attempts at human-powered flight faced challenges due to a narrow focus on building an airplane rather than understanding the underlying principles of flight.
Paul McCready and the Human-Powered Flight Breakthrough: Paul McCready revolutionized human-powered flight by shifting the focus from building an airplane to understanding the problem and designing a craft that could withstand frequent crashes. This approach led to the successful completion of the Kramer Prize and the flight across the English Channel.
The Importance of Exploration and Adaptability: Sometimes, the most effective way to solve a problem is to abandon the initial approach and explore alternative solutions. Exploration can lead to the discovery of new possibilities and more efficient solutions.
The Intersection of Different Knowledge Types: Great research groups and teams thrive when they have members who excel in each of the five types of knowledge and thinking. Collaboration and the ability to learn from one another are essential for success in tackling complex problems.
The Modern World and the Need for Interdisciplinary Knowledge: In the modern world, it is no longer sufficient to be a specialist in a single field when working on important problems. Interdisciplinary teams that combine different perspectives and expertise are more likely to achieve breakthroughs and innovative solutions.
00:27:03 Doing More with Less: Scaling Computing through Systems Thinking
Fireflies of Computing: Alan Kay emphasizes the importance of understanding the underlying principles and patterns in computing, rather than just focusing on the artifacts themselves. He likens this to scientists studying phenomena and fireflies, seeking to uncover the essence of computing.
John McCarthy’s Vision: John McCarthy, a pioneer in computer science, introduced the idea of programs participating in their programming. This requires representations that encode meaning in a way that other programs can understand, leading to a meta high-level language capable of self-reflection.
High-Level Languages and Efficient Machines: Kay argues that high-level languages should be optimized for efficient execution on specialized machines, rather than aiming for slow implementations. He cites the example of Lisp machines, which were designed to run high-level languages efficiently.
Critique of Intel’s Approach: Kay criticizes Intel’s focus on optimizing processors without a deep understanding of software. He believes Intel should learn from software research and design processors that prioritize the efficient execution of high-level languages.
Hal Lanning’s Contributions: Kay highlights Hal Lanning’s work on the first interactive higher-level language, which predated Fortran and was a significant achievement in interactive computing.
Uptake of Research Ideas: Kay presents data showing the uptake of various research ideas from the Xerox PARC community, including the internet, ethernet, and the laser printer. He notes that some ideas, such as the Alto personal computer, faced resistance due to preconceived notions about how computers should be designed.
Too Much Tinkering, Not Enough Engineering: Kay expresses concern that much of software development is still characterized by tinkering and a lack of engineering rigor. He calls for a focus on systems thinking and separating meaning from optimizations to improve software quality and scalability.
Scaling and Margaret’s Approach: Kay introduces the concept of scaling in computing, driven by Moore’s law. He proposes a heuristic based on Margaret’s approach, which involves identifying the essential elements needed to make progress and building the rest of the system around them.
Systems Thinking and Premature Optimization: Kay emphasizes the importance of systems thinking in software development, as opposed to focusing solely on algorithms and data structures. He also cautions against premature optimization, which can hinder scalability and make code more complex.
Intergalactic Computer Network and Alien Communication: Kay discusses J.C.R. Licklider’s vision of an intergalactic computer network and the challenges of scaling communication by several orders of magnitude. He draws parallels to communicating with aliens, highlighting the need for decentralized and self-stabilizing systems.
00:39:48 Concepts Underlying Distributed Computation Systems
Encapsulation and Separation of Concerns: Alan Kay emphasized the importance of encapsulation and separation of concerns in network architecture. Computers should be treated as servers that can only be requested, not commanded. Transport, assembly, and error correction should be separated.
Heroes of the Internet and Ethernet: Kay acknowledged the contributions of individuals who played crucial roles in the development of the internet and ethernet.
Software Internet and Virtual Computers: Kay discussed the concept of a software internet where virtual computers are connected through a software box. Dan Engels was singled out for his work in creating an artifact that enabled successful large-system implementations.
Encapsulation and Modularity in System Design: Kay highlighted the need for 100% encapsulation, avoiding command-based messages, and dealing with “aliens” in system design. Virtual computers should be servers, and the organization of computations requires careful consideration.
Complexity of Processes and Relationships: Kay observed that the complexity of processes lies in the relationships between them. The goal is to find the least connectivity to create modules and encapsulate everything.
Challenges of Reformulation and Scaling: Reforming system decompositions can be challenging, requiring additional information to establish relationships. Designing systems is more difficult as it requires supplying extra information for relationships.
Heroes of Intercommunication and Scalability: Kay acknowledged thinkers who focused on intercommunication and scalability in system design. Type schemes and naming conventions may not scale well in large networks. Descriptions and behaviors can act like types but have a broader scope.
Doug Lenat and Glerner’s Contributions: Doug Lenat’s work on the meanings of things and Glerner’s exploration of coordinating systems over arbitrary scales were highlighted. Linda, a system developed by Glerner in the 1980s, was mentioned as an example of innovative approaches to coordination.
00:44:08 The Imperative for Complete Encapsulation in Computing
Alan Kay’s Critique of Software Design: Kay emphasizes the importance of complete encapsulation and publish-subscribe messaging to control complexity and enable modularity in software systems.
Virtualization and Process Migration: Kay discusses the benefits of virtualization, which allows software to be executed on different hardware platforms and facilitates process migration for optimal performance.
Comparison of Interpreters and Direct Execution: Kay highlights the advantage of sending an interpreter (process) to a printer rather than transmitting all the necessary knowledge and data structures, simplifying the printing process.
The Universal Nature of Computers: Kay proposes that computers are universal tools capable of representing and creating anything at any scale using software abstractions.
Dunning-Kruger Syndrome in Software: Kay criticizes the overconfidence often seen in software development, pointing out that software frequently exhibits more confidence than its actual capabilities.
Boeing 737 Max Autopilot Failure: Kay presents the Boeing 737 Max autopilot as an example of poor engineering, highlighting the importance of rigorous engineering practices to prevent catastrophic failures.
Comparison of Ancient Bridge and Modern Plane: Kay contrasts the longevity and reliability of a 2000-year-old bridge with the potential safety hazards of a 10-year-old plane, emphasizing the need for high-quality engineering in software development.
Critique of Web and Browser Interfaces: Kay criticizes the design of the web and browsers, considering them to be among the worst in computing history. He suggests that software engineers should be able to analyze and critique these interfaces objectively.
00:52:57 Revitalizing the Internet's Interactive Potential
Valuable Insights: Alan Kay emphasizes the importance of explorability and recoverability in user interfaces. He criticizes the lack of undo functionality and help systems in modern apps, particularly on iOS devices. Kay advocates for gesture-based systems designed to empower expert users with efficiency. However, he stresses the need for comprehensive help systems to assist users in learning and utilizing these gestures effectively. Kay acknowledges that there has been significant progress in user interface design over the past 50 years, but he believes there is still much room for improvement. He highlights the work of Brett Victor as an exemplary contemporary user interface designer, praising Victor’s ability to tackle both intricate details and broader conceptual issues in user interface design. Kay draws parallels between the internet and living organisms, emphasizing the need for constant liveness and the ability to make repairs while systems are still active. Kay laments the decline of the concept of liveness in computing, which he sees as a fundamental principle of personal computing and a key factor in fostering creative and intellectual pursuits.
Abstract
Updated Article: Progress in Computing: Beyond Smartness and the Path to Innovation
This article explores the evolution of computing and the pivotal role of human intellect and context in driving progress. From Leonardo da Vinci’s brilliance constrained by his era to Henry Ford’s success in a conducive 20th-century environment, the journey reflects a nuanced understanding of ‘normal’ and its impact on innovation. We delve into the profound contributions of Margaret Hamilton to the Apollo missions, emphasizing the significance of software engineering and systems thinking in achieving groundbreaking feats like human-powered flight. Furthermore, we analyze Alan Kay’s insights on computing science, highlighting the importance of interdisciplinary collaboration and the challenges of scaling in modern computing. Lastly, we touch upon user interface issues and the concept of liveness in computing, offering a comprehensive view of the intricate tapestry that forms the backbone of today’s technological advancements.
—
1. The Intellectual Context of Innovation
Innovation in computing has always been intertwined with the intellectual context of its time. Leonardo da Vinci’s groundbreaking ideas were limited by the technological capabilities of his era, while Henry Ford’s achievements were propelled by the conducive environment of the 20th century, shaped by the scientific advancements of figures like Isaac Newton. This historical perspective underscores the importance of context in fostering or hindering progress. In the field of computing, the challenge lies not just in attracting smart individuals but in providing them with the necessary knowledge and environment to truly innovate.
Traditional progress relied on raw intelligence, but the context and available knowledge are often more critical factors. The right context can amplify the impact of intelligence and knowledge. Computing attracts smart people, but they often lack sufficient knowledge and context to drive progress.
—
2. Understanding ‘Normal’ in Engineering
The concept of ‘normal’ is subjective, encompassing what is considered ordinary and acceptable in a given context. Identifying and working within these norms is crucial for progress. Engineering, in particular, thrives when solutions align with the prevailing norms of the engineers involved. This approach emphasizes the need to focus on practical requirements over pursuing perfection.
We all have a subjective perception of normal, which influences our understanding of reality. Normal is embedded in the present and contains elements we are unaware of. Distinguishing between good, bad, worse, and qualitatively better is essential for making progress.
—
3. The Need for Research and Beyond
While acquiring existing knowledge is essential, true innovation requires venturing beyond the known. Research plays a pivotal role in extending knowledge frontiers, paving the way for new technologies like the internet and space exploration. This expansion of knowledge is critical in pushing the boundaries of what is possible.
Engineering thrives when what is actually needed falls within the normal context of the engineers. Skill and knowledge can be applied effectively in such situations. However, some endeavors, like space exploration and technological innovation, require venturing beyond the normal. Research is a tentative and explorative process that extends our knowledge.
—
4. Computing and the Child’s Mindset
Children, with their innate curiosity and lack of a rigid sense of normal, represent a state of grace conducive to exploration and creativity. Unfortunately, traditional schooling often instills a more rigid view of normal, which can hinder this creative freedom. Similarly, the field of computing often suffers from a constrained sense of normal, limiting its potential for progress.
Children operate in a state of grace before schooling instills a rigid notion of normal. Their lack of strong preconceptions allows them to explore and learn more effectively. Computing needs to move beyond the limitations of most people’s normal perceptions.
—
5. Margaret Hamilton and the Apollo Missions
Margaret Hamilton’s work on the lunar lander software epitomizes the challenges and complexities of software development in constrained environments. Her expertise and leadership were instrumental in the success of the Apollo missions, highlighting the critical role of skilled programmers and innovative approaches in high-stakes scenarios.
The lunar lander’s guidance computer software is an example of remarkable achievement with limited resources. It ran on a small computer with 4k bytes of RAM and 73k bytes of ROM. The software was written in a higher-level language and had a real-time operating system. It handled thousands of processes and both the Apollo crew module and the Lunar Lander. Margaret Hamilton, a pure math graduate, led the software development team. Hamilton distinguished between simple programs, which are like stories, and systems, which are larger, more complex entities with interconnected relationships. Software engineering involves creating systems with integrity and fault tolerance, akin to designing a constitution rather than a collection of laws or a story.
—
6. The Importance of Systems Design
Systems design, as opposed to simple programming, demands a holistic approach. It involves creating secure, reliable systems with integrity, akin to drafting a constitution rather than a mere collection of laws. This perspective is crucial in developing robust and resilient systems.
Systems coordination of 400,000 people, 20,000 companies, and 178 billion dollars was required for the Apollo moonshot project. The focus was on systems thinking, considering the entire system rather than individual parts. Complex systems can be understood more effectively through wide-angle visualization and virtual reality. Wide-angle visualization allows for a comprehensive view of the entire system. Virtual reality can provide a sense of the whole system and facilitate meetings for dealing with complexity. The Bible and Michelangelo’s paintings are examples of wide-angle representations of systems. Stories are about happenings, while systems are about relationships.
—
7. Late Binding and Error Prevention
The concept of late binding played a significant role in error prevention during the Apollo missions. The coordination and meticulous planning of thousands of individuals and companies, combined with billions of dollars in resources, were integral to the success of these missions.
Margaret Hamilton advocated for using fault-tolerant loose couplings in system design. This approach involves designing systems that can tolerate failures in individual components without compromising the overall system’s functionality. The concept of virtual computers connected through software boxes forming a software internet illustrates the principles of encapsulation and message-passing. However, modern user interfaces face challenges, such as the lack of undo systems and help features, especially on mobile devices like iPhones and iPads.
—
8. Systems Thinking and User Interface Design
Systems thinking, which focuses on understanding component relationships and their impact on the overall system, is vital in preempting issues before they arise. Similarly, user interface design is about comprehensively understanding a system’s functionality and behavior. This holistic understanding is crucial for effective decision-making, especially in complex systems.
Late binding allows for more flexible and adaptable systems. For example, it enables late bug fixes and changes without affecting the entire system. This approach reduces the risk of errors and makes the system more robust.
—
9. Virtual Reality and Michelangelo’s Sistine Chapel Ceiling
Virtual reality offers a means to grasp the entirety of a system, understanding its complexity and interrelationships. This approach is akin to Michelangelo’s Sistine Chapel ceiling, which represents a wide-angle view of an interconnected system, emphasizing the need for a broad perspective in dealing with complex systems.
Virtual reality and wide-angle visualization can help designers and engineers better understand complex systems and their behavior. This can lead to more effective and user-friendly designs.
—
10. The Five Kinds of Knowledge and Thinking
The synthesis of different kinds of knowledge and thinkingtinkering, appreciation, engineering, science, and mathematicsis essential in tackling major challenges. This interdisciplinary collaboration is epitomized in feats like the construction of the Akashi Strait Bridge and the human-powered flight achievements of Paul McCready.
The five kinds of knowledge and thinkingtinkering, appreciation, engineering, science, and mathematicsare essential in tackling major challenges. This interdisciplinary collaboration is epitomized in feats like the construction of the Akashi Strait Bridge and the human-powered flight achievements of Paul McCready.
—
11. Alan Kay’s Insights on Computing Science
Alan Kay emphasizes the importance of the right people over committees in projects, advocating for a serious approach to the science of computing. He underscores the need for understanding underlying principles and relationships, rather than focusing solely on artifacts.
Alan Kay emphasizes the importance of the right people over committees in projects, advocating for a serious approach to the science of computing. He underscores the need for understanding underlying principles and relationships, rather than focusing solely on artifacts.
—
12. Challenges of Scaling and Modern Computing Demands
In the context of modern computing, scaling presents significant challenges, particularly in light of Moore’s Law. Kay advocates for a heuristic approach that prioritizes essential elements for progress and system building, emphasizing the importance of avoiding premature optimization.
In the context of modern computing, scaling presents significant challenges, particularly in light of Moore’s Law. Kay advocates for a heuristic approach that prioritizes essential elements for progress and system building, emphasizing the importance of avoiding premature optimization.
—
13. Networking, Internet, and Separation of Concerns
The development of networking and the internet, starting with Licklider’s vision of an intergalactic computer network, highlights the focus on scalability and reliability. The separation of transport, assembly, and error correction in data transmission is a key principle in efficient system design.
The development of networking and the internet, starting with Licklider’s vision of an intergalactic computer network, highlights the focus on scalability and reliability. The separation of transport, assembly, and error correction in data transmission is a key principle in efficient system design.
—
14. Virtual Computers, Software Internet, and User Interface Issues
The concept of virtual computers connected through software boxes forming a software internet illustrates the principles of encapsulation and message-passing. However, modern user interfaces face challenges, such as the lack of undo systems and help features, especially on mobile devices like iPhones and iPads.
Virtual computers, software internet, and user interface issues are important considerations in modern computing. Virtualization allows for more flexible and scalable systems, while user interface design is crucial for creating easy-to-use and effective systems.
—
15. The Importance of Liveness in Computing
The concept of liveness in computing, particularly on the internet, is crucial for the continuous operation and dynamic hardware replacement of modern systems. This approach, emphasized by the ARPA and PARC communities, aims to create personal computing tools that act as complementary partners in human intellectual and artistic pursuits.
The concept of liveness in computing, particularly on the internet, is crucial for the continuous operation and dynamic hardware replacement of modern systems. This approach, emphasized by the ARPA and PARC communities, aims to create personal computing tools that act as complementary partners in human intellectual and artistic pursuits.
In conclusion, the journey of computing from the era of da Vinci to the present day reveals a tapestry of intellectual contexts, an understanding of ‘normal’, and the crucial role of interdisciplinary collaboration. From Margaret Hamilton’s contributions to the Apollo missions to Alan Kay’s insights on computing science, this exploration underscores the importance of systems thinking, rigorous engineering, and innovative user interface design in shaping the future of technology.
Alan Kay's vision for personal workstations emphasized powerful tools for creativity and learning, leading to milestones like Smalltalk and the graphical user interface. His Dynabook concept aimed to provide information access anywhere, inspiring the development of modern portable devices....
Insights from pioneers like Alan Kay and Joe Armstrong reveal the evolution of computing, emphasizing the importance of learning, scaling, and addressing unsolved problems. Computer scientists should think like scientists, considering scaling aspects early and embracing failure to drive innovation....
Alan Kay critiques modern computer science for emphasizing form over content and calls for a paradigm shift towards innovation and user-centric design. He advocates for a holistic approach to education that fosters creativity, perspective, and epistemological frameworks to drive the future of computing....
Alan Kay, a pioneer in object-oriented programming, emphasized the significance of holistic approaches, creativity, architectural integrity, and continuous innovation in programming. Smalltalk's influence extends beyond syntax and libraries, embodying architectural principles and structural integrity, akin to the construction of the Chartres Cathedral....
Alan Kay, a Turing Award laureate, advocates for a practical, hands-on approach to computer science education, emphasizing simplicity, systems thinking, and a beginner's mindset. He calls for a shift from theoretical rigor to practical problem-solving, preparing students to contribute to the advancement of computing....
Computing's evolution reflects human creativity, perception, and adaptability, with promises of future transformation. Computers' impact on human experience will continue to shape the world in profound ways....
Alan Kay emphasized strategic thinking in software engineering with a focus on domain-specific languages, criticized current computing systems, and envisioned dynamic and efficient computing in the future. Kay highlighted the need for strategic thinking in software engineering with a focus on domain-specific languages, criticized current computing systems, and envisioned dynamic...