Sam Gentile's Weblog

  Saturday, May 18, 2002


A fellow DM instructor, Jose Mojica, just wrote the C# & VB.NET Conversion Pocket Reference for O'Reilly, covering the syntactic and semantic differences between C# and VB.NET. They should get Chris Sells to do the Managed C++ & C# Conversion Pocket Reference... :-) [Peter Drayton's Radio Weblog] Or me-))


5:43:45 PM    

Simon Fell: "I thought that the test.exe manifest included the public key token of the version of real.dll that it got compiled against, and that this was verified at runtime". Actually, when an assembly is loaded from the GAC the signature isn't verified. Instead, the signature is verified when the assembly is put into the GAC. This is actually OK, since the GAC is a secured resource. By default, members of the Users group can't run gacutil -i - only members of Power Users or Adminstrators groups (basically, security principals in the ACL on %SYSTEMROOT%AssemblyGAC - thx to Si for decoding the ACL). If hackers are able to tamper with these ACLs, they can do what the original poster did. However, if they can touch DLLs in %SYSTEMROOT% at will, hacking a shared assembly in the GAC is probably the least of your concerns.

FWIW, if you want signature verification on *every* load, use a private strongly named assembly deployed along with the application.

As for what guarantees all of this strong naming gives us: the public key token in assembly extern reference in the client manifest serves to verify that the originator who signed the component assembly which is being loaded, is the same originator who signed the component assembly that the client was initially built against. Furthermore, the public key in the component assembly manifest lets us confirm that the signature could only have come from someone who has the matching private key, which is protected (right?) with the appropriate degree of pomp and circumstance. Note however that none of this lets us actually *identify* the originator (was it Microsoft Incorporated or Razorsoft Incorporated) - it merely let's us unambiguously bind against a component from the same originator as we were originally compiled against. FYI, it is also possible to use real certificates here, to give the assembly a digital signature that ties the originator to a real business entity (using signcode.exe), but that's another blog.

[Peter Drayton's Radio Weblog]

A good explanation. We are using strong names, signing and the GAC. I think I lost you on the part about to "identify" the originator. It was my impression that with marking the assemblies or Interops "promary", including a strong name, and fully signing it, we could gaurentee that one would know it came from our coporation. If I understand what you're saying it only ensures the signature in the assembly manifest when loaded is the same as the originator it was built with. Right?




5:42:26 PM    

Jason Whittington makes his print debut with an excellent lead article in the July MSDN Magazine: "Rotor: Shared Source CLI Provides Source Code for a FreeBSD Implementation of .NET". Jason's a fellow DM instructor and my coauthor on CLR Internals for Addison-Wesley. [Peter Drayton's Radio Weblog]


5:35:07 PM    

  Friday, May 17, 2002


In the .NET Framework, all objects are derived, directly or indirectly, from a common base class: System.Object. Remember that inheritance/derivation tell us that the derived class IS-A specialized version of the base class. That means every object in the .NET Framework IS-A(n) Object and therefore implements all of the functionality of System.Object. In other words, the methods of System.Object are available in any .NET Framework object.
Article. May 17, 2002.

Dr.GUI (.NET) hits it. Yes, start here, not in some C# book.




8:23:02 AM    

Scobleizer Radio Weblog] reviews Star Wars: Anyway, as an entertainment experience, it's worth the $10, but don't tell me this is a masterpiece or I'll get ill, OK? [Scobleizer Radio Weblog]




8:19:55 AM    

Thanks to all people who posted their well wishes for you anniversary. We had a great dinner last night.




8:17:26 AM    

  Thursday, May 16, 2002


Gentiles Celebrate Tenth Wedding Aniversery. On this day, 10 years ago, my lovely wife, Susan said I became husband and wife. [Sam Gentile's Radio Weblog]

Congrats! :) My wife and I will be celebrating our 2nd anniversary in just a couple weeks.

[The .NET Guy]

Ah, still newleyweds-)




6:05:28 PM    

Sam points us to an MSDN article about the C# XML comment system. It gives a great overview of what XML comments are available. Read it! :)

I just wanted to point to the tool that I use -- and love -- that turns those XML comments into MSDN-style HTML: NDoc. All my C# code gets XML comments, and it all gets run through NDoc to produce either public-consumption documentation (public and protected methods), and/or personal-consumption documentation (everything). It's integrated very well into NAnt, which I use for all my .NET builds.

[The .NET Guy]

Thanks Brad! Yes, I should have mentioned NDoc. Well worth checking out.




6:03:55 PM    

On this day, 10 years ago, my lovely wife, Susan said I became husband and wife. I can't say that the years have been easy but they certainly have been worth every minute of it. My love has grown and grown. Our 4 year old, Jonathan, is just a beautiful miracle that teaches me about life every day. Happy Anniversary to us!


8:26:50 AM    

Microsoft is finalizing plans for the next version of its Office business software, which will likely include new Web services, communication and collaboration features, said sources familiar with the company's plans. Moreover, many of the features once planned as part of Microsoft's .NET My Services consumer Web services strategy may now find their way into Office, sources said.
Article. May 16, 2002.


8:18:31 AM    

In this article, the author explores the System.Security.Cryptography namespace and the programming model used to apply cryptographic transformations. He discusses reasons why cryptography is easier in .NET than it was before, including the easy programmatic acccess developers have to the cryptography APIs and the difference between symmetric and asymmetric algorithms.
Article. May 16, 2002.

Another great MSDN articles. They seem to be rising in quality.




8:16:30 AM    

The author demonstrates how to set up your project to export your XML comments into convenient documentation for the benefit of other developers. He also shows how to use comments to generate help files.
Article. May 16, 2002.

This is an excellent article on one of the lesser known but great features of C#.




8:13:15 AM    

Windows XP Updates: More Trouble Than They're Worth?. For many users, downloading updates for Microsoft's latest and greatest operating system, Windows XP, means crashed systems, devices that do not work and and sometimes an inability to boot up at all. "That's always true with patches, generally," Meta Group vice president Steve Kleynhans told NewsFactor. [osOpinion] [Robert Scoble: Scoble's Windows XP News]

I really don't get this at all. I have been running XP for over a year. I have never seen a blue screen. I have rarely had to reboot - most with old software that did not use the new Installer format and have been up for more than 3 months now even though I do a lot of beta development with .NET. I don't understand what these people are doing with their systems or what hardware they have.




8:02:28 AM    

I was interested by this article at O'Reilly - Previewing Windows .NET Servers, in particular the enhanced process model in IIS 6.0. I've advocated for a long time that complex server applications should be partitioned into separate processes, wherever feasible, to isolate different components of the server into their own address space.  ...In IIS 6.0 inetinfo.exe is now a separate process with no apps running in its address space. This process controls multiple worker processes, each process running one or more apps. ... .NET App Domains are a method of partitioning .NET applications. An App Domain is the .NET equivalent of an OS process. [Cook Computing]

Cook gives an excellent description of the changes in IIS 6.0 and .NET App Domains.




7:58:51 AM    

  Wednesday, May 15, 2002


At a high level, the CLR is simply an engine that takes in IL instructions, translates them into machine instructions, and executes them. This does not mean that the CLR is interpreting the instructions.
Article. May 14, 2002.


9:14:03 PM    

Performance counters enable you to monitor and analyze the behavior of physical components such as processors, disks, and memory; system objects such as processes, threads, events, mutexes, and semaphores; and even aspects of your own running applications. They can help you identify system and application bottlenecks and fine-tune system and application performance.
Article. May 14, 2002.


9:12:09 PM    

Web services will likely gain adoption, but the fundamental question relates to the extent of their impact: Will they reshape technology processes, business processes, or even entire industries? What key events need to occur on both the supply side and the demand side to aid the business case for Web services? These 10 items help illuminate some of the hurdles Web services face, but it's up to natural evolution to determine their eventual success or failure.
Article. May 15, 2002.


9:10:31 PM    

Star Wars Gets Panned by Washington Post. Oh, oh. The Washington Post didn't like the new Star Wars movie.  [Robert Scoble: Scobleizer Weblog]

As I reported on Sunday, none of the early critics liked it. Most thought it was worse than the 1st. Bad news for the Star Wars fans.

§ The first reviews of Star Wars Episode II: Attack of the Clones [official site] do not bode well for those hoping for an improvement over the previous film...  Roger Ebert, who gave Phantom Menace 3 1/2 stars, gives this one 2 in Chicago Sun-Times:




8:44:15 PM    

Xbox prices go down. $199 apiece - PS2 cut triggers early Xbox price drop in US. Sony wins points for footwork [The Register] Glad I waited to buy an Xbox. [Scobleizer Radio Weblog]

Me too. Maybe my wife will let me have one now-)




8:35:50 PM    

Lobsters online. Charlie Stross's Hugo-nominated story, "Lobsters," is online. This is some powerful extropian singularity stuff, right here. Best read I've had online all week.
It’s a hot summer Tuesday and he’s standing in the plaza in front of the Centraal Station with his eyeballs powered up and the sunlight jangling off the canal, motor scooters and kamikaze cyclists whizzing past and tourists chattering on every side. The square smells of water and dirt and hot metal and the fart-laden exhaust fumes of cold catalytic converters; the bells of trams ding in the background and birds flock overhead. He glances up and grabs a pigeon, crops it and squirts at his website to show he’s arrived. The bandwidth is good here, he realizes; and it’s not just the bandwidth, it’s the whole scene. Amsterdam is making him feel wanted already, even though he’s fresh off the train from Schiphol: he’s infected with the dynamic optimism of another time zone, another city. If the mood holds, someone out there is going to become very rich indeed. Link Discuss (via Charlie's Diary) [bOing bOing]

Ok, stop everything and go read this story-). This story is one of the most brilliant pieces of SF ever done. I kid you not. If you like your SF hard fused with the cyberpunk style of Sterling and humor, you'll love this.




8:22:21 PM    

Happiness is coming home to an Amazon box filled with 28 (free) SF books-) Including just about the whole collection of Phillip K Dick.


8:15:08 PM    

  Monday, May 13, 2002


If looking for a collection object in .NET has left you scratching your head, you aren't alone. Get your bearings with a guided tour of the System.Collections namespace.
Article. May 13, 2002.


8:36:31 AM    

In Part I of this article, we discussed how to use LoadTemplate method to create templated columns at run time. In Part II we will see how to do that using ITemplate interface that provides more control on the process.
Article. May 13, 2002.


8:35:26 AM    

Typically one dataGrid is bound with one DataTable. However, consider the case of two tables both having a common key column called ID. Say one table contains personal information about employees and another table contains some official information. EmployeeID is the common in both the tables and both tables have same number of rows (equal to the no of employees). How to display such tables in one DataGrid? Read on to know more.
Article. May 13, 2002.


8:34:19 AM    

Thresher is an open source .NET IRC client library you can use to create IRC bots or an IRC GUI client in any .NET supported language.
Beta Software. May 13, 2002.


8:33:13 AM    

Sam Gentile for pointing me at this 1997 essay of Dave's. Hey, Sam, I appreciate your writing and ranting too. Keep on doing it. There are nuts out there who like to tear you down. ...Do it for the fun and if anyone tries to take the fun away from you, make them get their own weblog. Keep teaching me things. I appreciate it. [Scobleizer Radio Weblog]

Aww shucks, thanks Robert! That's very kind




8:28:11 AM    

  Sunday, May 12, 2002


Dave Winer sent me a beautiful message of support and this essay which says it all. What a brilliant essay and a kind man.


2:42:20 PM    

Refering to the last post by me: Well, my good friend, Peter Drayton, advised me to "live my life in public", posting original material and establishing an online identity and building. What he didn't tell me was how hard it was going to be (especially for me). When that site critiqued things, most people on the DM list clearly saw it as that. I always see it as a personal attack. That's been some of my problems on Radio too. I'm going to take a real chance here and bare the soul for a minute: I had a very negative childhood, beaten and always crtitized for everything. I have spent my life to be better than that but I sometimes slip. For those people who have gotten back harsh stuff, it wasn't personal. It's my defenses. I'm sorry for taking things personal. Anyhow, it's my responsibility as a Consultant and a Blogger to choose my words more carefully and be a valuable part of the online community and I intend to do that. Thanks.

Update: Dare Obasanjo turns out to be a very nice Microsoft employee who cares passionately about not insulting developers. He has given me some great tips on writing. Wow, this blogging thing is real. I have learned something today and we have found a way to work together.




11:01:43 AM