Cono Elliot's work on notational design and his influential papers
- Cono got his PhD at Carnegie Mellon University in the '90s under Frank Fenny working on higher order unification.
- Cono has devoted his life to thinking and refining graphic computation and tools behind it, and has published influential papers on various topics related to functional programming and notational design.
Living in a forest setting with deep connection to nature.
- Conor lives on 20 acres next to his family's 60 acres and has a deep emotional connection to the place because of his parents' presence.
- He sees a connection between nature and technology, highlighting the non-sequential nature of computation and neurology.
We are in a pre-scientific age of thinking about computation.
- Humans have created thinking organisms that think systematically, leading to computation.
- We are in an awkward phase of thinking about computation in a clumsy and pre-scientific way.
Humans are driven by curiosity to understand the universe.
- We have a limited ability to perceive the universe due to our evolutionary constraints.
- Through the advancement of science and technology, we have developed tools like telescopes, microscopes, high-speed cameras, and time-lapse to enhance our perception.
Elegance and wonder in computer science
- Elegance is the deepest value in computer science, inspiring a sense of play and wonder.
- Computer science is in a deeply inelegant phase, but there is potential for Elegance and Beauty in the field.
Elegance as a guiding value in theoretical physics
- Elegance guided Einstein in developing the special and general theory of relativity.
- Modern civilization is built on general relativity and quantum physics; GPS system corrects for relativity.
Elegance and simplicity in formalizing concepts in computer science
- Elegance and simplicity in formalizing concepts are related
- People often mistake familiarity for simplicity in programming
Academia today lacks time for critical thinking
- Focused on churning out papers and credentials
- Issue of education accessibility affecting teaching quality
Semantics is crucial in programming
- Meanings are called semantics
- The relationship between a program and its meaning is important
Dana Scott answered the crucial question of the mathematical meaning of Lambda calculus in 1970.
- Lambda calculus was originally intended for encoding high order logic and quantifiers, not for programming.
- Peter Landon realized the potential of Lambda calculus for programming and introduced the concept of executing Lambda calculus on a machine.
Languages convey meanings, computation looks at meanings.
- Languages and programming languages serve the same purpose: to convey meanings.
- Computation and technological tools help us observe and understand meanings in various forms, from stars and quasars to microorganisms and atoms.
Euclid revolutionized geometry with his conceptual approach
- Introduced a new way of thinking about geometry with axioms and postulates
- Plato's influence on the idea of mathematical space and its relation to the physical world
Mathematics describes real truth and possibly taps into platonic truth.
- Platonist perspective considers mathematics as a way to describe truth beyond us.
- Success of mathematical fantasy or story inspires acting as if tapping into platonic truth.
Ancient beliefs about movement of stars and planets
- Stars and planets thought to move in circular paths due to perfection/God concept
- Some stars behaved differently, known as 'The Wanderers' or planets
Kepler discovered planetary laws
- Planets move in an ellipse, not a circle
- Kepler's explanation lacked why planets move in an ellipse
Scientific theories evolve with enhanced observations
- Newton's theory successful until discrepancies discovered in the 20th century
- Einstein's theory validated through observations of planet Mercury during solar eclipse
Scientific exploration is an unending journey
- Science aims to understand what we don't know
- In academia, the system often fails to reward wonder and not knowing
Denotational semantics helps distinguish beauty and elegance from complexity
- Beauty or elegance in theory is described precisely in terms of mathematics
- Fortran, led by John Backus, introduced expressions, advancing from Von Neumann style sequential programming
Functional programming emphasizes expressions over statements
- Fortran blends statements and expressions but still leans towards statements
- Functional programming eliminates everything except expressions
Hardware limitations led to sequential model prototyping
- John Von Neumann's experiment from 1947 is still relevant in 2022
- John Backus discussed fundamental problems in computing during the war
Von Neumann bottleneck affects computer performance.
- Physical bottleneck slows computers due to high heat generation.
- Mental bottleneck limits brain capacity and mental efficiency.
Breaking out of the Von Neumann bottleneck
- The Von Neumann style of programming forces us to think small and is fundamentally sequential and mechanistic.
- The lecture emphasizes the importance of thinking in larger, powerful notions and focusing on functions rather than words.
Functions as building blocks for knowledge
- Functions built from other functions allow for scalability and creation of complex systems
- Importance of denotational semantics in designing new languages rather than just explaining existing ones
Backus emphasized fixing defects and learning from mistakes.
- Using denotational semantics reveals detailed defects in existing languages.
- Advancement in computer science involves replacing outdated concepts like go-to with structured and functional programming.
The cost of focusing on education and progress is losing the ability to make significant advances in science.
- The speaker expresses disappointment with the impact of Academia on progress and science.
- The speaker remains dedicated to truth and beauty, advocating for the importance of denotational semantics in making aesthetic distinctions.
Ideas are expressions of beauty or ugliness which give deep insights across fields.
- Denotational semantics serves as a reliable guide to beauty and elegance in ideas.
- Beauty and elegance are valuable guides for understanding the universe and computation.
Passion for mathematics and computer graphics
- Attended undergrad in math at UC Santar with a small group of math students in a nurturing environment
- Transitioned to grad school at Carnegie Mellon for computer science and pursued computer graphics due to love for geometry and math
Had to change plans at Carnegie Mellon
- Arrived at CMU to study computer graphics, but found out the people I wanted to study with had left
- Discovered a group focusing on reasoning about programs, which became the focus of my PhD work
Transition to computer graphics and involvement in group projects
- Worked with notable advisors like Dana Scott, John Reynolds, and Frank
- Focused on exploring the next advancements in programming interfaces and data structures at Sun Microsystems
Introduction to denotational semantics in understanding language meanings
- Studied denotational semantics under Stevenh Brooks and Dana Scott in grad school, leading to a revelation on language meanings
- Believes language meanings should be independent of specific machines and analyzed compositionally for better understanding
Graphics programs are sequential commands organizing video memory for visual output.
- Graphics programs are different from traditional software due to their focus on organizing instructions for video memory.
- Alternative design paradigms focus on conveying meanings and inventing tools to help users view desired content through a computer.
Designing a language library for geometry and colors
- Creating a composable vocabulary of geometry and colors, similar to modern linguistic frameworks
- Developing a rich system of types for three-dimensional geometry and adding a time component to the design
Rendering graphics offscreen to build up incrementally for a correct answer.
- Rendering offscreen allows showing previous true things before replacing them incrementally.
- Temporal discreetness in computer graphics breaks compositionality and introduces fundamental bugs.
Compositional models with approximations lose accuracy when composed
- Compositional models incorporating approximations result in gross inaccuracies upon composition
- Functional reactive programming involves composing before approximating for accurate results
Outline fonts are resolution independent
- Outline fonts are continuous and do not have pixels when zoomed in
- Switching from bitmap graphics to outline fonts improves efficiency and clarity
Transition from discrete to continuous programming in space and time.
- Examples of continuous programming in space like fonts, 2D and 3D geometry, vector graphics.
- Applying continuous programming principles to time requires a fundamental shift in implementing and describing things that vary with time within the Von Neumann model.
John Reynolds introduced the idea of using functions from the reals instead of sequences for solving time interpolation problems
- This approach helped in resolving issues with interpolations and time manipulation
- Continuous time modeling was found to be more effective than discrete modeling for things that vary with time
Functional programming requires a shift from loops to lazy lists
- Functional programming involves describing the mathematical model behind the data manipulation
- The common reasoning that input and output data should have the same nature is wrong in functional programming
Functional reactive programming is about understanding concepts in the simplest, most elegant compositional terms.
- It emphasizes denotational semantics, where types have a mathematical model.
- It focuses on fully explaining operations in terms of the model, independent of implementation.
Programming expresses ideas with clear understanding before implementation
- Category Theory is appreciated for its precise and elegant tools in mathematics
- Functional Reactive Programming lacks denotational and compositional principles, leading to fundamental misunderstandings in programming
Algebraic patterns like monoids and distributivity are powerful for organizing reasoning
- There are different types of monoids like addition and multiplication each with their own properties
- Multiplication distributes over addition and zero plays a special role in this interaction
Algebra and category theory provide reusability and reasoning in mathematics and programming.
- Algebra allows for reasoning that is parameterized and applicable to different mathematical scenarios.
- Category theory generalizes various algebraic concepts and is important for correctness in programming.
The complexity of Python programs and limited cognitive abilities can lead to a lack of understanding.
- Options include quitting the profession or divorcing what you've seen from what you do.
- Another option is switching to a language with simple semantics, such as purely functional or denotative languages.
Denotative programming allows for proving program correctness.
- Denotative programming enables answering questions about the multiple meanings of programs.
- Functional programs can have meanings within a cartesian closed category.
Tropical semi-rings relate to timing analysis of parallel computations.
- Understanding operations of plus and max in relation to semi-rings.
- Realization of dot products and matrix multiplication pattern in timing analysis.
Timing analysis can be described compositionally using the language of categories
- I realized the parallel sequential composition is the fundamental building blocks of functions computation
- The type Lambda calculus has more than one model, and the mathematical values it describes can have different interpretations
Realizing the connection between HCLL and lambda calculus led to successful compilation to hardware.
- HCLL translates to a small core lambda calculus
- Interpreting lambda calculus in cartesian closed categories enabled successful compilation to hardware
Exploring unconventional categories for computation
- Discovering powerful ideas by compiling categories since 1980
- Seeking beauty in solutions to drive innovation and never settling for unsatisfactory answers
Geometry and the introduction to proof changed my life
- The systematic way of exploring what is true and growing knowledge in geometry was a life-changing concept for me.
- Discovering computers at Lawrence Hall of Science through the Star Trek Club in high school eventually led me to computation.
Introduction to programming through games on teletypes
- Experiencing games and printing out results on rolls of paper as souvenirs
- Discovering source code hidden in the printed paper, initiating an interest in programming
Started college with no computer science department, emphasized logic and enjoyed math contests
- Computer science classes offered in math department or College of Engineering
- Discovered talent and passion for math despite discouragement from elementary school teacher
The origin of computer science in universities and its impact on its development
- Initial classes were labeled as Computer Science or logic, sparking a debate on department placement.
- Placement in engineering rather than mathematics influenced the practical nature of computer science education.
Transition from imperative to functional programming
- Discovered Haskell as a better alternative to imperative programming languages
- Applied Haskell in programming for 25+ years and mentorship in hardware design for machine learning
Realizing the power of category theory in simplifying automatic differentiation
- Changed vocabulary to be more symmetric with respect to composition
- Describing automatic differentiation in the language of categories simplifies and generalizes it
Denotational design is key for software implementation
- HLL was not effective for teaching denotational design
- Inner guidance essential for understanding and using HLL effectively
Struggling with teaching denotations and homomorphisms in programming
- Encountered issues with students not understanding correct implementations
- Wanted compiler to indicate errors instead of personally correcting
Understanding the question is more important than answering it correctly
- Operational thinking is about biases in answering problems and questions
- The most important thing is to understand the question in the most beautiful way
Realization about teaching and learning process
- Programmers differ in their attitude towards being told they're wrong
- Importance of being open to feedback for growth in programming
Automation has benefits but limited scalability
- SMT automation has advantages in problem-solving but faces scaling limitations
- Despite advancements, SMT technology cannot achieve unlimited scalability
Agda is the most tasteful tool for working with dependent types.
- Agda offers beauty, consistency, simplicity, and tremendous power.
- Agda contributes to an incredibly beautiful story about the equivalence of computation, logic, and the foundations of mathematics.
Exploring if all of mathematics can be built on logic
- David Hilbert's attempt to formalize logic in the early stages
- Can natural numbers be understood via logic as a foundation?
Natural numbers are a profound and important concept
- Natural numbers are a product of human construction on top of other systems
- Piano numbers are a significant concept in mathematics
Constructive logic allows expression of proofs as either A or B
- In constructive logic, every proof of A or B can be expressed as a proof of A or a proof of B
- Brower's logic allows for this expression without the law of excluded middle, leading to simple answers for negation, implication, truth, and falsehood in terms of types.
De bruyne pioneered logic computable through computers
- Exploration of dependent typing and realization of logic and types
- Mechanization of information and manipulation, leading to modern programming languages
The power of math and knowledge in programming
- Manipulating from the bones is a powerful and beautiful concept
- Embracing sequential stateful notion of computation limits insights and learning
Written language enabled deep reflection and improvement of ideas.
- Written language allowed ideas to be examined and improved over time.
- Written language initiated a feedback loop for continuous enhancement of concepts.
Continuous improvement through iterative optimization
- Iteratively refining program logic and expressions for efficiency and clarity.
- Enhanced abstraction and reusability through denotational design and parameterization.
The debate on using formal proofs in industry
- Industry perspective often argues against formal proofs due to perceived time constraints and impracticality.
- Decision to use formal proofs depends on the objectives and the value placed on accuracy and thoroughness.
Achieving 100% correctness is the only way to reach 95%.
- Errors compound, leading to significant deviations in calculations.
- Approximations and probable correctness can lead to overall incorrectness in complex projects.
Inspired by deep conversation
- The conversation has been engaging and has touched on major topics of interest.
- The speaker hopes to discuss denotational design and its application in software design.
Create space for contemplation in the age of instant information
- Encourage meditation and reflection on content
- Announcement about a dedicated email for audience feedback and inquiries