C9 Lectures: Greg Meredith - Monadic Design Patterns for the Web 3 of n

The Discussion

• This presentation is definitely touching on some concepts that I've wanted to understand for a while now. In some ways it's been enlightening. In other ways, I don't think I'm any farther ahead in my understanding.

Even if I don't feel completely enlightened, I'm quite pleased that this has crystalized for me exactly why I struggle to understand these concepts.

Firstly, I often don't know if a particular statement is to be accepted axiomatically, or whether I should be able to deduce it myself based on information presented earlier together with my own logic and intuition. For example the bit about [paraphrasing] "...if there is a demand for an 'A' and with resources 'R' we can satisfy the demand, we can transform it so that there is now an 'I.O.U(A)' together with the resource 'R' and now there is no longer a demand for 'A'...". And the bit about it going back the other way. Are such statements axioms or logical conclusions (or other).

Second, and to a lesser degree, when it gets down to the very fundamental stuff, I sometimes struggle to understand what I have 'in hand'.

• Truth: Is set 'A' equal in size to set 'B'?
• Me: Sure, I count 3 elements in set 'A' and 3 elements in set 'B'. They're the same size.
• Truth:You can't count them.
• Me: What? Why?
• Truth:Because you don't have numbers.
• Me: Huh?
• Truth:See, it's easy, there's this function 'f' defined 'blah blah blah' that is a bijection between set 'A' and set 'B', so...
• Me: So I have sets and functions, but not numbers?
• Truth:Right.
• Me: Oh.

Even if I didn't completely understand it, I did quite enjoy it. I like the feeling that enlightenment is within reach. Thanks, and looking forward to part 4.

• It saddens me to see a Microsoft employee with an Apple laptop front center.

Otherwise, the lecture was great.  Thanks!

P.S. Greg could only make it up to me if for part 4 of the series, the same laptop goes through a grinder in the background

• @s0ftimage: It saddens me that I have to respond to this type of critique, but I respect your right to speak your mind freely here...

First of all, Greg is not a Microsoft employee. Second, this technical series is not a product advertisement.... Spend time watching and listening to what Greg is saying. You can get over the fact that he uses a Mac (he also uses a PC running Windows 7) since it has nothing to do with the topics being introduced and explained to you. We're lucky to have Greg Meredith take the time to teach us about monadic design principles. Please don't detract from what really matters here.

Channel 9 should be a place that welcomes diversity in all of its forms. We are not an advertisement channel. We want to provide a welcoming place for folks who aren't part of the MS community and ensure that they too can get some real value from our technical content and engage with fellow developers/enthusiasts in the C9 forums.

C

• Hello Niners!

Great series so far, I like it very much. Greg really has a way of making this stuff enjoyable and I hope there will be more Monty Python references in the future talks.

I have a question on the intuition behind the 'redeem'-rule: The way I understand it, an IOU(A) can be understood as a 'promise' for an A. We do not know if we can keep this promise, so it's treated as not(A) by default. Now what the redeem rule says is, that if I can wrap a A inside IOU, I can do the same thing with IOU(A), creating IOU(IOU(A)) in the process. What I don't understand is how it is enforced that I can only redeem this IOU(IOU(A)) if I have an A? In the end, a plain IOU(A) is practically worth nothing. Since there is no Gold-Standard to back it up, it does not make sense that I am able to redeem it for an A just like that, does it?

I'd be glad if you could elaborate on that a little more.

Thanks!

• Holy smokes... yes this is understandible; yes your past installments were understandible; but oh my absolute god and all which is holy, your method of trying to teach the content in this video was horrible..... Yes its can be followed and understood following your spaghetti-logic? explination, ultimately conveying the proper message.  Then again I can also follow x86 assembly fairly well too, and I would compare your explination as a jumble of C & x86.
I honestly can't believe how mentally exausting your method of explination, metaphores, and actual examples were here.  It was far more complex than you had to make this stuff unless you explicitly wanted to try and give theory, connections, reproductive methods and a practical example all mixed into one schmorgesboard, thereby achieving your goal I suppose.

I just had to mention this because seeing your previous videos, and seeing how clear you could have made this, you are far better than this for teaching people.
Maybe you shoud try to bite-size the reproduction methods and therory into a prelude to the examples you intend to give.
I just feel bad for the person above (and future others) admitting defeat to these as well as giving up on even attempting to understand the rationale, don't you?

• @HeavensRevenge: I agree, 1 and a half hours the pace is a little slow for me, I had to watch the third several as I fell a sleep.

Also I notice Greg use the word "cool" a lot, to me this suggest they are thinking and trying too hard to be cool.

• @UpsetAndOrConfusedNiners: You can blame me... I asked Greg to simplify the story here to suit a wider audience (with little background in the subject matter) and perhaps I should have just shut up and let him do it the way he intended. As always, thanks for your feedback. Greg, don't listen to any of my suggestions going forward

C

• No problem @Charles: you still the thinking man's idiot, by that I mean you're smart enough to play dumb. You ask the whys and what this does, out of curiosity, (I like that a lot.).

On this occasion maybe Brian Beckman should have sat in on this one, as I think Greg would have more confident. They seem to have a good chemistry together.

• No problem @Charles: you still the thinking man's idiot...

Hmm. Not sure I like the terminology... Only I can call myself an idiot in any context. Certainly, this is true when I am in the same room with the likes of Bill Gates, Erik Meijer, Brian Beckman, Greg Meredith, Mark Russinovich, Wolfram Schulte, Anders Hejlsberg, Patrick Dussud, etc.

No worries. I understand what you were trying to say. I am a generalist and as such will always ask general questions of the experts in frame. In this case, a lecture, I asked no questions. Just listened and learned(and maybe screwed up the lecture flow before the camera rolled...).

C

• You do what you do Charles and it's kick-* each time. We need someone in the trenches and behind enemy lines on our behalf, launching questions and counter-examples at strategic moments during your discussions for catch-22's and implementation/archetectural details.

The last thing which I remembered just now is that Greg always had this habit of checking his time, and not just "what time is it" time, but the "omg i need to go faster or ill never finish" time.
I don't know if thats just something specific to his character or some other reason, but he might have a more passionate explination of content if he wasn't stressing out on trying to keep the lecture on good caidance.
Just wanted to bring this to his attention, as it is noticable and might be pulling him off his refined professor groove a little.

• @HeavensRevenge: The time thing is my fault, too. I didn't schedule enough time in the studio and the next filming loomed. Greg only did what came naturally given we started a little late due to discussion of progression and other things that arguably made this to arcane for some, as I mentioned ealier.

In the future, I will book more time and Greg will just do his thing. If I can get Beckman in the room, then there will be great questions along the way as Adam suggested (great idea and I would love to do this, but Brian is cranking code and doesn't have time right now. This will not always be the case, of course. Erik? He's found yet another categorical gem and is actively writing the math that defines it in such a way as to make it useful for developers. You know, what he does for a living.)

Thanks for the kind words (though I am not working behind enemy lines... I am inside the machine showing you how the sausage is made and introducing you to the passionate and capable humans behind our software - Microsoft has a caramel sweet center and I hope this is made clear in the work we do on Channel 9).

C

• I love Channel 9.  I wish I would discovered it sooner!

Thanks Charles

• Please, please, please stop cutting away to the slides when Greg is pointing to things on the screen!  Greg does a lot of talking with his hands, and pointing as he is talking (which is fine), but the video kept cutting to the slides where we can't see what Greg is pointing out.  It makes things a lot more difficult to follow, and isn't necessary.  The slides are readible enough from the regular camera view.

I agree with the comments that this version seemed to make things much more confusing than they actually were.  I kept thinking I must be missing the important part.  But by the end I was pretty sure it was just a really complicated way of presenting a logically simple (to me) concept.  I admit though that there may be more to it that I thought, since I don't know where this is headed yet (it becomes more clear once the pieces start to come together a little).  Maybe more preview of where we are headed in the beginning would have helped.

In any case, i'm looking forward to the upcoming part(s). Thanks again to Greg and Charles for doing these shows.

(I'm sure you have your reasons for the episode timing, but having episodes closer together would help understanding as well, since you would forget less of what happened last time.)

• Wonderful series!! I can see now where Greg is headed. He has yet to deliver the punch line so I am waiting in anticipation.

a) I think it would help to have a touch screen or something so that when the presenter 'points' to the screen, the pointer can be recorded in the screen capture as well.

b) Greg looks like he has been working way too hard. My suggestion is the have him in check into the nearest day spa for a full day of pamering. Go ahead Greg you have our permission.

• Nice lecture!

Sounds like this key-value database algorithm to go back in time to resolve transactions is NP-complete, so I wonder if it really works in a large bank.

---

That A => IOU(IOU(A)) will not guarantee IOU(IOU(A)) => A, can be seen with the type system: The input and output types of the function "=>" will be different.

Speaking of types... Lecture's description of programming language hits some pain points of C#:

interface ProgrammingLanguage
{
IEnumerable<Command> Keywords<Command>() where Command : Func<Command, Command>;
}

where the actual Command should be an option type of Func, Action or a Type, right?

• I am really enjoying the presentation! This type of popularisation is so much harder than presenting the formal view that one can find in any paper with monad in the title. Please stay on course!

• When is the next one coming, its been ages!

• Yes, cannot await the next enlightement!
my monad is getting somewhat stale....

• Will there be a next part? Yet to see Monads in practice. Noticed that Greg has a new book out, "Monadic design patterns for the web". Is that why channel9 is not getting any?

• @Swemail: We filmed the part 4 today! And... It's rather amazing what Greg has come up with.

C

• I rewatched parts 1-3 and I'm ready to be amazed.

• I had the pleasure of working with Greg in the mid-90's before he joined Microsoft. As we both came from University backgrounds in mathematics, I found his approach to describing and solving programming problems, in abstract mathematical concepts, to be easy to follow. He threw out brilliant problems every day, and challanged us to solve them. Working with him was like being back in graduate school.