Monday, February 28, 2005

patterns & practices fans - don't miss the upcoming webcasts this March

See http://www.microsoft.com/resources/practices/default.mspx for details. I love the Application Blocks, and am really looking forward to using the Enterprise Library
in upcoming projects ....

Wednesday, February 23, 2005

What a tech guy does to recover from a great illness...

I got a phone call yesterday from Chuck saying Dan was real crook (and that Chuck had decided to spread rumors that it was STD related). I was going to ring Dan to say get well, but thought he'd be resting, and didn't want to disturb his rest. I sent him a get-well SMS instead.

About 10 minutes later I got an email from Dan (who hadn't seen my SMS yet) asking about VS2005 debug visualizers (which we had talked about mid-last year as a solution to a debug-time problem with a validation framework we where working on.) Dan was using his 'rest' time to research this feature. Its funny how it is more restful to address these technical side-issues that have been on your mental to-do list for ages rather than engage in classic rest like fiction novels or Fox Sports. Anyway, get well soon Dan.

Photo of the week - 21 Feb 2005

Rather than just tack on a photo at the end of a technical post, I though I'd break it out into a separate post, and provide a bit of background on the photo a-la Mountain Light. I aim to do a new photo each week, so I'll back-date this entry to Monday.

I'll start with a good one. This is Bathurst Lighthouse on Rottnest Island, WA shot looking east from the western side of Pinky Beach at sunrise. The shot was taken at 5.54am local time on 28 Dec 2004, just as the sun had started to break through the clouds. The fact there where any clouds at all is a bit of a surprise for a WA summer morning, but there had been a large storm the night before. By about 9am, the clouds had totally gone.

Bathurst Lighthouse at dawn is pretty much Rottnest's signature shot, but I am happy that aligning the Lighthouse with the light burst and including an interesting foreground raised it above a touristy snap-shot. Bathurst Lighthouse is visible from Thompsons Bay (where I had stayed the night before and where the ferry comes in from Perth), so it is the obvious shot for a dawn location. I didn't scout the shot out the night before, but did get up at 4am to make sure I was setup when the light hit. I initially setup on the rock outcrop visible near the base of the Lighthouse, but the shot felt way too cramped. Moving across the Beach gave a better sense of place, and also worked well when the sun burst through. The sensor held the full range of light, which surprised me given the dullness of the foreground rocks and the brightness of the weakly filter sunlight. Thankfully, the cloud cover was a sufficient filter, and the only Photoshop editing is a USM and level adjustment over the entire image

This is one of the few shots I've done where I am totally happy with the composition. Given the chance, I wouldn't move any of the elements about.

Technical data embedded in JPEG for those interested.




Sunday, February 20, 2005

Reloading app.config - have your say

One of the guys in the CLR Fusion team (that thing that handles assembly loading and other related activities) recently blogged about why app.config shouldn't/ can't reload. He is getting beaten up a bit in the comments (by me and others) because the reason for not doing the reloading aren't very good. If you have a strong feeling either way on this, please add your comments to his blog. Hopefully weight of opinion can get this fixed.

Friday, February 11, 2005

PIC#3 Coming Along Well

I had a pretty good day on PIC#3 today - got through the final few tech review chapters I had outstanding from the 8 that I got back last week, and tidied up three of the chapters from second edition of the book that needed some minor updates. I also finished checking the twenty or so chapters that needed no major work - all that I did was fix up places where namespaces had changed since Beta 2, and remove comments that related to functionality that was broken or missing in this release. Most of the work was done while setting up a quad Xeon 2.8 Ghz HP Proliant server with 4GB of RAM that I've hired to do some DTS Yukon runs for a client. The server sounds like a small vacuum cleaner when it is turned on - I'm looking forward to actually using the beast next week


The work this week leaves only one new chapter outstanding (a coding style chapter suggested by the reviewer), and about half the tech edit responses still to go. After that, we go into copy edit and PDF proofing, so the book is well and truly on track for a mid-year release.


Updating a book has been a very different experience from doing my own from scratch. There is already a style and coverage pattern in place that you need to stick to, and there isn't the same extreme level of emotional attachment. Its more like babysitting a friend's kid rather than looking after your own, in that you still have the responsibility to keep the kid happy and out of harms way, but you don't have the heightened emotional bond of a parent. We've also had some fun working between the project manager, editor, tech reviewer and myself about what material we are going to put through the wringer of the tech review process. There is heaps of material that is unaffected by the move to .NET 2.0, but exists in chapters where other material has changed. Working out a balance between not touching this material and re-writing it has been an interesting experience. The issues are all sorted now (I hope), and we're pressing ahead to bring the book for your (northern hemisphere) summer reading pleasure.

Gosling Gooses Himself in Sydney

While this is getting to be old news, Gosling deserves to keep getting beaten up for this series of statements for a few weeks to come.



Before I to lay the boot in on this one, it is worth clearly outlining any prejuicides I have. To state the obvious, I'm a .NET guy. I harbor no ill will towards Java or open source, and congratulate them for making the computing world a better place. In an ideal world where I had more time, I'd embrace both fully. I don't have infinite time, and in the finite time I do have, I've chosen to be a .NET guy. More specifically, I concentrate on a very small section of .NET and Windows related to C++ and C#, performance, debugging, interop (Windows to .NET) and security. I know next to nothing about GDI, I have a working knowledge of data stuff but I'm no expect, I'm horrid at UI, and ASP.NET is largely uncharted territory for me. I have barely looked at Avalon, and don't rate WinFS. Indigo should be good, but at the moment WSE is where I'm concentrating. In short, I'm just as ignorant about large sections of .NET and Windows as I am about PHP or J2*E. However, in both cases I have no hostility towards the unknown.



Just in case you missed what Gosling said, let me quote the ZDNet article that I'm basing my spray on.



Java creator James Gosling this week called Microsoft's decision to support C and C++ on the Common Language Runtime (CLR) in .NET one of the "biggest and most offensive mistakes that they could have made". He further commented that by including the two languages into Microsoft's software development platform, the company "has left open a security hole large enough to drive many, many large trucks through".



Gosling is either significantly lacking in technical savy or deliberately lowering himself to the level of a vendor thug/ cheerleader who is spreads FUD through quarter truths and outright lies. Gosling must realize that Code Access Security (CAS) exists, and this gives you absolute control over the verifiability requirements of an assembly. I can find no evidence of CAS ever having been defeated in the three years plus that it has been protecting .NET systems, and zero evidence for any exploit related to .NET code.



To choose to attack Microsoft on this point smacks of absolute desperation, and even a tinge of losing touch with reality. Gosling seems quite bitter over the failure of Java to live up to the potential that he and Sun saw in it (i.e. taking over the world), I suspect that the web service revolution that has seriously reduced the relevance of the my platform versus yours debate has made him yesterdays man without the will or energy to re-invent himself.


A few further points:


  • C++ in .NET 2.0 can be fully verifiable (easily).
  • C++ in .NET 1.1 can be fully verifiable (with great difficulty).
  • Microsoft does not have a C compiler for .NET. I haven't seen (or looked) for one from another vendor.
  • And, as Chuck says in his response to Gosling, C++ (Managed Extensions or C++/CLI) is certainly not where it is at in todays .NET world.



    I can only imagine that many Java folks are cringing that this figurehead in their world has fallen into such a horrid rut.