Categories
Uncategorized

Notes from Damian Conway’s Presentation

Damian Conway - July 16, 2008

Here are my notes on Damian Conway’s presentation, Temporally Quaquaversal Virtual Nanomachine Programming in Multiple Topologically Connected Quantum-Relativistic Parallel Timespaces…Made Easy, which he gave on Wednesday, July 16th at the University of Toronto’s Bahen Centre. This presentation was a dry run for the presentation he made on Tuesday at the O’Reilly Open Source Conference. Damian was in fine form and it was good to catch another one of his funny, off-the-wall presentations; it was a good warm-up for RubyFringe.

Read on for the notes…

Damian Conway - July 16, 2008

Here are my notes on Damian Conway’s presentation, Temporally Quaquaversal Virtual Nanomachine Programming in Multiple Topologically Connected Quantum-Relativistic Parallel Timespaces…Made Easy, which he gave on Wednesday, July 16th at the University of Toronto’s Bahen Centre. This presentation was a dry run for the presentation he made on Tuesday at the O’Reilly Open Source Conference (OSCON) 2008. The talk ran for about two hours, and the time allotted for it at OSCON 2008 was one hour. He incorporated parts of earlier talks into this one, so I suspect that he condensed those parts.

Damian was in fine form and it was good to catch another one of his funny, off-the-wall presentations; it was a good warm-up for RubyFringe.

- I'd just celebrated my 42nd birthday was doing some reflection
- I thought maybe now it was time to get serious [yeah, right]

- The original title for this presentation was going to be something
  like "The lies we tell ourselves"
- Consider the myths that we in the F/OSS world tell ourselves:
    - Consider ESR's line, "Given enought eyeballs, all bugs are shallow"
    - Speaking from experience, that's not true.
      What *is* true is: "Given eniugh eyeballs, all *bug reports*
      are shallow"
    - Then there's the line "Fast, cheap, good: pick any two."
    - What closer to reality? "Fast, cheap, good: pick at most one."
    - The biggest lie is probably "Information wants to be free"
    - You might as well be saying
        - "Beer wants to be drunk"
        - "Virginity wants to be lost"
        - or...

Slide from Damian Conway\'s presentation: \"An iPhone data plan wants to be vastly more expensive in Canada\"

        - An iPhone data plan wants to be vastly more expensive
          in Canada

- The bad angel on my shoulder has been telling me lies: "Damian, you're not
  just an amazing hacker, you're a deep thinker as well!"
- The truth is that I'm not good at analyzing reality -- I'm good at
  *manipulating reality via language*

- That's a popular lie we tell ourselves: that "Smart is distributive"
- In other words, we think that if we do well in one area, perhaps we
  can do well in others
- Genius is a *vector*, not a *field*
- Convincing ourselves that genius is distributive is a sign of aging

[ Damian launches into funny photo essay showing his hair greying
  after joining the world of Perl programming. He then shows Larry
  Wall over the same time period, noting that he looks pretty much
  the same. He hypothesizes that Larry doesn't age, and as proof,
  shows an amusing series of Photoshopped photos of Larry through
  the ages, ending with ancient Egypt. ]
- You can derive two bits of knowledge from all this:
    - Perl 5 isn't line noise, it's *hieroglyphics*!
    - As for when Perl 6 is coming out, keep in mind that
      Larry has all the time in  the world

\"Larry Wall does not age\" slide from Damian Conway\'s presentation

- Back in 2000, I decided to introduce superpositions (the ones from
  quantum physics) into Perl.
- There's the "any" function, which is not so rigid, which is why
  I call it the "Canadian superposition"
- There's the "all" function, which is quite rigid, which is why
  I call it the "American superposition" (which will come to liberate
  you with its troops!)
- Superposition functions are constant-time operations
- You can ue them now with "use Quantum::Superpositions"
- They're part of Perl 6
- Other junction functions:
    - none
    - one

[ He goes into a discussion about relativity, light cones, quantum
  physics and the whole "Brief History of Time" ball of wax,
  a condensed version of his "Time::Space::Continuum talk.
  I now look at gravitational lensing in a different way! ]

- I'm always chasing after new mental models of programming
- While doing that, I keep this motto in mind: Progressio defectum postulat
  ("Progress requires failure")

- There's something I call Rod Logic: that's computation via levers,
  gears and cams
- Doesn't "Rod Logic" sound like a 1950's science fiction hero
  written for boys?

\"Rod Logic book covers\" slide from Damian Conway\'s presentation

- Think of Babbage's engines
- Eric Drexler has shrunk rod logic: using carbon nanotubes as
  nano-sized levers, he's made mechanical logic gates
- Can't I use rod logic for Perl?
- I created a straight line language that could charitably be described
  as "Readability suboptimal"

[ He demonstrates a language that's made of nothing but straight-line
  characters -- _, -, [, ], <, >, \, |, /. It makes Perl look like
  a storybook for first grade readers in comparison. ]

[ Discussion of positrons -- electrons with positive charge -- and
  Feynman diagrams. One of the consequences of drawing the release
  of a positron on a Feynman diagram is that they are travelling
  leftwards on the "time" axis. They are going backwards in time!

  He then showed an application that takes the idea of particles
  travelling backwards in time and applied them to variables.
  The end result? Positronic variables! ]

- use Positronic::Variables
- They come into existence at end of block, and travel backwards
  in runtime
- With a positronic variable, you can declare a variable that
  holds values you'll need later, and they'll travel back in time
  where your program "catches up" with them later
- Makes the square root finding algorithm so much easier!
- The trick is that positronic variable programs get run through
  a preprocessor that repeatedly runs through the app
- This will works only on programs with convergent algorithms
- "I will eventually develop a positronic debugger,
  and I have been using it."

- And finally, if you look at everything I talked about this evening,
  you have the title of this talk explained: "Temporally Quaquaversal
  Virtual Nanomachine Programming in Multiple Topologically Connected
  Quantum-Relativistic Parallel Timespaces…Made Easy.

===

Q & A

- Earlier at lunch with Richard Dice, I told him: "There's no crowd like
  a Toronto crowd." You're wonderful, thank you!

- What's up with Perl 6?
    - For the past few years, there have been on average hundreds
      of doc changes committed
    - This year, there are fewer than 100
    - What does it mean? That we got it right
    - And yes, Larry's implementing
    - Which means that we are in a new phase in the development
      of Perl 6: the end phase"
    - This is going to be an awesome language
    - I've been working with early releases of Perl 6, and I've noticed
      how irritating it is to go back to Perl 5

- Now let me talk about Perl 5.10
    - There are many improvements that are largely about making life easier
      and programming less annoying.
    - Consider the say function -- simple, but not having to add a newline
        and the end of print strings makes a lot of difference
    - That's the whole point -- they looked at the really basic stuff
      that we do all the time and made it simpler
    - Another example, the "//" operator, called "defined or". It
      returns the left argument if it's defined, otherwise
      it returns the returns the right argument
    - At long last, Perl has a switch statement!

- Does any of this stuff lend itself to multicore?
    - Junctions and superpositions are a natural fit for multiprocessors
    - With languages that have junctions, it should at least be possible
      to automatically farm junction operations to parallel processors

- How hard was it to write your modules based on quantum physics?
    - Easier than you think
    - What helped what that I had the quantum physics metaphor to guide me
    - The trick is to understand the metaphor,
      and implement it consistently
    - Remember: quantum mechanics is one of the most rigorously
      tested systems we've ever conceived

- Are positronic variables another way of implementing
  constraint-based programming?
    - YES!
    - In fact, this is a good time to explain why I do all this
      odd stuff, taking concepts from quantum physics and then applying
      them to Perl
    - I use odd metaphors to think up new programming paradigms

2 replies on “Notes from Damian Conway’s Presentation”

Comments are closed.