Developmentor's Conference.NET quotes (Don Box)

Philippe Lourier
Mon, 13 Aug 2001 17:48:07 -0400

For those who want to listen to Don in his own voice, we'll
be releasing an audio versions of his three general
sessions on Mon Tues and Wedn [1]  Today's presentation
should be ready in the next few hours.  The video quality
of the tape we received is quite bad so I'm still debating
whether we'll webcast a video version as well (as
originally planned).  

UPCOMING  The .NET Platform - How We Got Here, Where We are
Going By Don Box , DevelopMentor. In keeping with the
Microsoft schedule of reinventing the development platform
every eight to ten years, the .NET initiative represents
the largest platform shift since the move from DOS to
Windows NT. Don Box looks at why this platform shift is
taking place as well as how it affects every software
developer on the planet. [604]

UPCOMING The Common Language Runtime: A Developer's Roadmap
By Don Box , DevelopMentor. The .NET initiative is based on
two fundamental premises: Managed execution of richly typed
components (the Common Language Runtime) and cross-machine
integration using Internet-standard protocols (Web
Services). This session provides a roadmap to the former,
focusing on the core concepts that permeate all .NET
programs. Topics to be discussed include metadata and
reflection, assemblies, appdomains, and platform
integration. [605]

UPCOMING Web Services and SOAP: A Developer's Roadmap By
Don Box , DevelopMentor. The .NET initiative is based on
two fundamental premises: Managed execution of richly typed
components (the Common Language Runtime) and cross-machine
integration using Internet-standard protocols (Web
Services). This session provides a roadmap to the latter,
focusing on the core technologies used to integrate
programs over the network. Topics to be discussed include
HTTP programming, XML support in .NET, and the role of
Schemas, SOAP, and WSDL. [606]


On Mon, Aug 13, 2001 at 02:19:05PM -0700, Rohit Khare wrote:
> So much to my utter nonsurprise, I got nowhere at Developmentor's 
> registration desk until I said I was the "Driving Don Box' guy. 
> *THAT* people remember. I guess it almost makes it worth the cost of 
> two flat tires and a lifetime of AAA fees :-)
> Today is tutorial day, so not much is going on yet. And I can only be 
> here for an hour. But sitting in on Don's "CLR Type System" talk, I 
> can see his standup comedy skills continue to outshine any other 
> Microsoft platform proselytizers'. And in that comic vein, I'm 
> looking forward to Wednesday night's reception.... no further comment!
> Thanks,
>    Rohit Khare
>    Founder & CTO
>    KnowNow, Inc.
> PS. And for the rest of the fan club, Don's hair has blossomed in to 
> a proud mane worth of Michael Bolton! :-)
> PPS. Nice T-shirts! Classic Russian constructivist poster design. Or 
> is that merely Socialist poster design? Anyway, you'll have to see 
> for yourself, and yet I can't find it online at the moment. Sigh. I 
> hate it when things in the real world don't have URLs. Even the d*mn 
> Fruit Roll-ups in the kitchen have URLs printed on them!
> =================================================
> On the deep conspiracy between CLR and the DoJ, upon introducting 
> Bob.SonOfBob :
> "Ah yes, Fields and Methods... the foundation of  empire!
> If they succeed in breaking up Microsoft, I'm going with the part 
> that gets fields and methods, not the gang with delegates and 
> properties!"
> [I can't, however, repeat any of his comments on Bob's private 
> parts... (or in VB.NET, "Private").]
> On PowerPoint:
> "I have this wonderful graphic diagramming a type... except... well, 
> Whistler's run out of user GDI memory... so it's a really wonderful 
> graphic!"
> On Java:
> "Which was in no way an inspiration to this technology, for any 
> lawyers in the room!"
> On Void:
> "What does Void mean? Well, this is a C and Java void, not a C++ 
> void.  Not to be confused with the closure of the overall type system 
> called System.void, which you can't actually see"
> ("Being and Nothingness' can't hold a candle to my man Don! :-)
> On tea:
> "Here's is my int; here is my float!" (well, it wasn't set to music, 
> but it *should* have been)
> On Shared Source:
> "It means, 'this has bugs, we don't want to support it, *you* fix it!'"
> On Certification:
> "Do not try this at home! I have been certified by the State of 
> California after many years of graduate study!"
>   =================================
> Actual tech notes:
> A runtime initalizer cannot call a member function. Is this a good or 
> bad thing? I don't know.
> By which he means that in C# you can't have:
> public class Bob {
> 	public int x = g();
> 	int g() {return 3;}
> }
> public readonly int y = 23; is evaluated at runtime when decompiled 
> into CLR. (Readonly is enforced after you exit the constructor; you 
> can read it and write it to your heart's content while you're in the 
> womb)
> public const int z = 42; is evaluated at COMPILE time, and hence 
> exported as a constant as well. Do NOT use if it's going to change 
> from version to version -- it's TRULY const in a decentralized system 
> for all time.
>  From a purely philosophical perspective, I'm not sure whether this is 
> a bad thing. It's rope, and you can do a lot with rope.
> (1) After all, throughout the naming debates for the Web, there's 
> been a wish for a truly stable constant identifier.
> (2) On the other hand, using an active programming language construct 
> to substitute for a naming system (module signatures, etc) seems dodgy
> (3) and I still can't see why we'd move a lexical substitution like 
> #DEFINE z 32 into the language runtime, but then, it makes hacking 
> the binary much easier :-)
> (4) and I'm sure there are reflective reasons, that deep within the 
> bowels of the kernel and driver code we'd need this base covered, in 
> case someone does want to write an OS in C#.
> So, once again, I end up on the libertarian side of handing out rope 
> with big orange warning labels and subsidizing tort lawyers :-)
> Another point on namespaces. In Java, the stuff was both 
> used as a disambiguator of foos AND an encapsulator for packaging 
> instances. The Namespace /Using  statement pair in C# is just 
> syntactic sugar, allowing you to use a domain name or any other 
> string to label a module. Sounds a lot like XML namespace philosophy, 
> but I bet it has its roots in the limbic brain, thinking "Urg, Ooga 
> must replace #INCLUDE standard pathnames. Urg, me replace silly 
> #IFNDEF __included_already_p__ with "Namespace already"!"
> JavaBeans use a casual heuristic for getters and sitters. If you ever 
> mention a variable foo, say "if ( < 3)" then getFoo will be 
> called, if you've written one. But, in CLR, you have to explicitly 
> identify the getter or setter function name to make something a 
> "property". You can also have indexers, that grab any array-like 
> reference on read or write and let you intercept it.   Consider the 
> difference between bob["patient"]  or bob.patientID ...
> public object this[string name] {
>     get {
>         switch (name) {
>               case "id": return calculated_patient_id;
> 	...