C9 Conversations: Brian Beckman on Complexity

Download this episode

Download Video


In this second installment of C9 Conversations, a format where we sit down with various big thinkers to discuss a wide range of big topics related to computing; all in high quality video and audio, the topic is Complexity (ambient complexity, to be precise - it's hard to program systems that are radically composable. Why?).

Dr. Brian Beckman is an astrophysicist and software architect with a long history of dealing with various levels of complexity. In some sense, most of what we do as programmers and engineers is control complexity to solve problems of various difficulty. In our world of software engineering, we strive to carve simplicity out of the complexity of computing. Dr. Beckman provides his insights into why it so hard to achieve radical composability in the software systems we design and build and what it will take to realize ambient simplicity as we march into the increasingly complex world of general purpose computing.

We think you'll really enjoy this conversation with one of Microsoft's best thinkers.



Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • GamlerHart

      Brian again, wonderful. Cool

    • ACG

      Hey Charles,


      Great vid! LAtely when I want to view vids in full screen mode, I click on the expand icon on bottm left of video frame and the thing stops and goes black. I'm using a Dell Dimension laptop. XP latest SP, with latest Silverlight.


      If I don't want full screen, all is fine.



    • Charles



      This is a known bug that we will fix!


    • Chadk

      This was excellent!

      Good job Brian and Charles Smiley

    • Charles

      Thank you. It's always a treat to get to converse and listen to Brian. He's a true genius and humbe to boot.


    • mntb

      I can't download this AVI (using IE). The downloading stops after a few minutes. Same if I use the Silverlight player. I live in Australia and have no problems downloading AVI's from other sites (.NET Rocks, IT Conversations etc.)

    • Charles

      Not sure what is goin on. So, you are attempting to download a file under Media Downloads dropdown? Also, where are you located?

    • exoteric

      I've printed the material to the co-/contra-variance lecture and will study in detail. Brian is a very interesting person to listen to. Some of the "derivative work" reminds me of Conal Elliots ICFP presentation. Need to look closer...

    • Richard.Hein

      Great interview.  Charles, I just watched the Monty Python documentary recently, it was very interesting!  Brian, I love mathematics, physics, and music, and programming languages, so I really enjoy watching your interviews ... over and over again ... because I don't understand a lot of it.  Since the blues is all about bending the rules but having this structure at the same time ... well it sounds like you could relate it monads somehow.  Wink

    • tomkirbygre​en

      Brain's videos remind me so much of the wonder, humility (the good kind) and entertainment I experienced as a kid reading and watching the Feynman lectures. That Microsoft takes the time (and spends the money) to make this kind of content freely available is following in a great tradition. Added to which during 2009 as budgets have been cut in the software industry and I've (we've all) seen friends lose their jobs, I've taken great personal comfort from C9's optimism, creative and original thinking. I almost wish C9 would "Go On Tour", I would love a chance to meet the team and Usual Suspects one day.

    • N2Cheval

      I'm also from Australia and getting the same problem. I was blaming telstra with their network upgrade, but as you said, I also don't have the same problems elsewhere.

    • brianbec

      I guess I'm busted. While I was never formally a student of Feynman's, I had several lengthy encounters with him starting at the age of eight, when he popped in to our math class to teach us how to do square roots in our heads. I didn't know who he was until much later when I remembered this funny little guy with the heavy Brooklyn accent who taught us a glorious trick that made the longhand method just useless. He influenced me greatly many times.

    • gav135

      Same here. I posted in the site feedback forum and am awaiting a reply.

    • aL_

      great stuff..

      its awsome how general software design is.. i think people often think of "programmers" as people doing the same thing but its like saying all "engineers" or "scientists" do the same thing



      one thought on the "computer as a monad" concept, how does threading impact that way of looking at it? in a sense all threads share this state we call physical address space, does that break the comcept of the computer beeing a monad? im thinking is no longer functional because the state is sort of mutable from one compositional unit to the next. would love to hear brians toughts on that Smiley

    • exoteric

      I'm watching the video in HQ now but have to mention "Tangible Value" idea whereby expressions can be directly visualized and composed visually.  The video shows interesting examples of composition doesn't show decomposition. It would be really cool to be able to deep-zoom your way into the black boxes of these compositions that can grow to arbitrary complexity. It would "mimic" infinite composability: it would seem as if you could see everything: nothing would be hidden from you - a program, it's composition, it's source is just something to zoom into. It's not just open-source: it's interactively open-source.


      This idea is really "democratizing" to use Microsoft-lingo and we may call it embarassingly compositional.


      Brian, are you thinking about remodelling the CLR semantics using monads to achieve a formalism for it?


      We've already seen that IEnumerable<T> using yield can be used to model streams of computations that yield values (using statements or not),that these streams can be effectful and throw exceptions and that we can flip the control flow with IObservable<T> - both types with monadic operators associated with them; although they are not pure because effects are not captured as types and successively manifested as values of functions.


      This time we hear the term "ambient monad" again. Is this a term coined within Microsoft is does it originate from the external world? It appears to be used by Brian and Erik in the Channel 9 videos and so at least reveals that Brian and Erik are using this term to think about computers/operating-systems (including the CLR).


      I now recall that Erik call the .Net monadic operators "sequencing operators"; this makes sense if monads impede ordering, that is these sequencing operators are anti-commutative/symmetric and is of course very clearly manifested in IEnumerable<T> because it's inherently a sequence.


      On performance. Brian has previously alluded to the fact that there have been two trends in computing: start with high-level declarative concepts and work towards performance or start with low-level imperative concepts and try to model abstract things using it. Both are unsatisfactory - at least until they bridge the gap but the functional programs are becomming closer to the dream of high-level declarative programming with high(est) performance and that any performance problem can be solved by a combination of improving the formalisms and the static analysis needed to simplify the program into the imperative machine code "equivalent". I like to think of Dependent Typing as an example of this, at least it has more precise (value) semantics and maybe also the potential for performance improvements. At least the dependently typed ATS programming language shows remarkable performance.


      Interestingly, Microsoft has hired a very smart researcher who has experience with high-performance hybrid low-level/high-level programming language design, as well as operating-system construction. So we'll see where Microsoft is heading here in the future and what possible consequences this has for the CLR.


      And appropos declarative vs imperative, I suppose one reason why this distinction is not so appropriate is because with monads, where ordering matters, the code is in a way "imperative", albeit in a very different way.


      One might say that VB.NET and C# are in the middle here: they started with both declarative and imperative concepts and have moved up towards the declarative world.


      By the way kudos on the production quality of this video.


      There's some strangeness around the Silverlight player in bleeding edge Chrome release but I imagine that's a side-effect of just that, luckily by the magic of fiber and the speed of light, this is not an issue.


      OK, enough editing. This post turned long.

    • brianbec

      Yes, exo -- composition implies dependency order, whether it's regular composition a-la f(g(x)) or Kleisli composition in a monad a-la

      \a -> (ma >>= \b -> mb). Since the dependencies are explicit in the program text, then can be decomposed by program-to-program transformations (aka "rewrites").


      The "ambient monad" just means that side-effecting ordinary-looking compositions act exactly as if they were monadic Kleisli compositions in a State monad comprising the entire address-space of the machine.


      You are also right that threads break down the dependency abstraction, therefore are "outside" the ambient monad. Suppose one thread computes function f, and another thread computes function g. With explicit compositions, monadic or not, you HAVE to write f(g(x)) or g(f(x)). If you just let threads go, you have no way of knowing whether f(g(x)) gets computed or g(f(x)) until after the fact . In pi-calculus, it's as if you wrote f(g(x)) | g(f(x)), that is, "hey, pick one of the two, I don't care which." It's not a monadic expression, although with pi we can get a precise semantics for it by embracing the non-determinism.


      The plain truth is that the compositional style gives all kinds of practical engineering advantages like reusability, modulartiy, maintainability, reducing cost over time. The free-wheeling style give us all kinds of performance advantages, at the cost of compositionality. Both styles have their places. I am very fond of the idea of high-compositionality at the highest levels of abstraction where we need flexibility, and low-compositionality inside the VM where we need to squeeze value out of every cycle.


      There are various ways of mapping explicit compositional dependency to time. One is lazy evaluation. Another is the "managed reference" machinery in Clojure. Another is the dual pair of IEnum* and IObserv*. They're all alive and healthy and loaded with possibilities.

    • Charles

      Thank you, Tom! Hmm. C9 World Tour. I like the sound of that Smiley

    • N2Cheval

      Not sure if it applies to you, but after a bit of sniffing I found out that my problem was caused by my Antivirus software AVG. Disable its file browsing safety feature and all is good again.


      As a software assembler, I would like to see more declarative constructs in the programming languages to simplify complexity. Only having the two extremes that Brian mentions seems like only having two tools; the hammer and scaple. The electic drill, saw, etc. where you just press a button and it does stuff is rather useful as well. I would think once you have declaritive, you might be able to get around the problem of rewriting drivers... maybe.

    • chrisnz

      I have the same problem.  Yes under media downloads or through the silverlight player, currently stuck on 33.1MB.    I'm in australia too, there definately is a problem for channel 9 and PDC downloads in this part of the world that started around PDC time.  Never had a problem before.

    • Esther1

      Brian you're fantastic!Smiley

    • Schneider

      I am also having trouble watching this video "media error". Coincidentally I am also in Australia...

    • tomkirbygre​en

      Going back to something Brian said in his E2E interview with Erik about Rx, while talking about Reactive Programming, Brian said that you couldn't really have continuous functions and that you eventually have to sample or employ edge detection. Well last weekend I was in the Science Museum in London looking at some of their old-old wood burning computers and calculating machines, and there of course they had a couple of early analog computers - Brian's comments came back to me and I got to thinking again about Rx and Channel 9. It made me smile at the time, there I was looking at some very ancient hardware and remembering a brilliant, cutting edge, C9 video.


      Actually while we're talking about that E2E interview, Brian also said that his goal was to ship The Brian Secret Project X before Erik shipped Rx. Well Rx is in .NET 4, which should RTM around the end of Q1 2010 right? Does that mean we're very close to having Brian reveal just what his Project X actually is? Smiley

    • akopacsi

      It always makes me smile when Brain talks about a new technology and asks Charles "is that true?" or says "I don't know...".  I'm pretty sure he knows everything, but he can't talk about an upcoming product. Smiley By the way, Brian, I really enjoyed your video on Channel 8 about turning ideas into products. It'd be nice if you could tell us more about that someday.

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.