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*
- 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"
- An iPhone data plan wants to be vastly more expensive
- 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
- 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:
[ 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?
- 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
- 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
- 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