 |
|
 |
 |
Tuesday, June 09, 2009 |
Although I am reinstalling machines on such a regular basis, I keep forgetting enabling tab completion for cmd.exe. Therefore I am putting a note to self in my blog...
Where to define:

How to do it automatically (copy / paste / save as .reg / double-click):
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor] "CompletionChar"=dword:00000009
 |
Friday, April 24, 2009 |
Downloaded SQL 2008 Trials to my local disk and wanted to move them to an external harddisk:

"The action can't be completed because the file is open in Microsoft SQL Server 2008" - that leaves me slightly puzzled.
 |
Wednesday, April 01, 2009 |
Wrapping up Tech∙Days by posting the live sessions I watched:
- DEV307 Starting Test Driven Development with Mock Objects
- DEV320 Debugging managed code using WinDbg
- OFC302 SharePoint Workflow for the Masses
- OFC400 Enterprise SharePoint Workflow: Building and Managing a High-Performance Workflow Environment
- DEV300 ASP.NET Model-View-Controller: Separation of Concerns and Unit Testing
- WIN300 Scripting the Microsoft .NET Framework Using Windows PowerShell
- WEB401 In-depth MVC
- DEV309 Automating Task and Other Productivity Improvements for Windows Presentation Foundation Development
 |
Wednesday, November 19, 2008 |
No, this time it is not Microsoft - it is NetGear that is not providing an x64-capable version of their software. The very latest VPN client software for a ProSafe router (FVS338) doesn't work (install) on Vista x64:

I think it is needless to say that I am not amused. Who are you kidding in late 2008?
 |
Tuesday, November 04, 2008 |
At PDC 2008 we got a nice Freescale JM badge board to test with Windows 7 and its Sensor API. I definitely wanted to try it, but didn't have the luxury to re-pave a machine just for this.
VirtualPC doesn't support USB (a lack that annoys me immensely, not only now, but also for Windows Mobile development), so I had to look for another option: VirtualBox. It supports USB. I decided to give it a try (VMware was on my list too, but when I saw their registration requirement for a trial version I balked).
Installed the x64 version of VirtualBox, and inside it the 32 Bit version of Windows 7. First stumbling block - the virtual machine additions. In default mode, they refuse to install on Windows 7 (too new). But you can help it see the "light":

The additions are required, otherwise no USB support (or easy network, but you could work around that one via emulating a different NIC).
Next, plug in the sensor development kit badge and tell VirtualBox to route it into the VM:

The "CMX Systems USB HID sensor demo for HC9S08JM devices" is what you are looking for. At least that's what Vista calls the device.
Now all you need to do is boot up your Windows 7 VM again and install the SDK from the supplied disc. Note that I achieved the best results by following the guideline at the end of the document entitled "Sensor Development Kit Driver and Firmware.rtf", to be found in the Documentation folder.
When done, you can try the MSDN reader demo (nope, Marbles not going to work inside a VM). As a proof, here is a screenshot of everything running in VirtualBox (yes, the light sensor works):

By the way, there is a MSDN forum Development with the Windows Sensor and Location Platform just for this topic. If you don't know what I was talking about, check out the session recording Windows 7: The Sensor and Location Platform: Building Context-Aware Applications.
 |
Friday, October 31, 2008 |
During PDC2008, aside from the keynotes and pre-conference “Performance by Design” I went to the following sessions:
- TL02 – Under the hood: Advances in the .NET type system
- TL16 – The future of C#
- TL52 – Team Foundation Server 2010: Cool new features
- TL09 – Agile development with Microsoft Visual Studio
- TL23 – A lap around “Oslo”
- TL27 - “Oslo”: The language
- TL20 – Entity Framework futures
- TL26 – Parallel programming for managed developers with the next generation of Microsoft Visual Studio
- TL18 - “Oslo”: Customizing and extending the visual design experience
- TL28 - “Oslo”: Repository and models
- TL15 – Architecture without big design up front
- TL36 – Microsoft .NET Framework: Declarative programming using XAML
- PC49 – Microsoft .NET Framework: CLR futures
- TL31 - “Oslo”: Building textual DSLs
- PC32 – ASP.NET AJAX futures
I was rather disappointed this year by the varied quality of the sessions, plus the not-so-matching session descriptions / session levels.
 |
Friday, October 24, 2008 |
 |
During PDC05 I put up a post PDC's I have attended so far. Next week, I am going to add another one to the list - PDC2008 is my seventh Professional Developers Conference. Kind of makes me look old
|
 |
Thursday, February 21, 2008 |
It's been quiet on this blog recently, one reason being that it is conference season again. Last week, I was in Munich for VSone, where I did three talks:
- LINQ to SQL
- ADO.NET Entity Framework
- ADO.NET Data Services
At this very moment, I am at the airport in Frankfurt waiting for my flight back from the ready.for.take.off Visual Studio 2008 / Windows Server 2008 / SQL Server 2008 launch event here in Germany. It was the biggest developer event in Germany so far (7000+ conference participants), and Microsoft gave away quite a nice package of software: VS Standard, TFS with one CAL, Windows Server 2008 Enterprise with 5 CALs plus a voucher for SQL Server 2008 that will be available later this year.
I was staffing ATE (Ask the Experts) at this event, initially for IIS7. However, we were very pleasantly surprised that the attendees showed great interest in TFS / VSTS, so I switched duties to that area (VSTS / TFS is a growing business for me as I do training and consulting for those products). Hopefully this free license will trigger more adoption because Team System is such a great tool!
 |
Friday, February 08, 2008 |
Yesterday, we found ourselves at the receiving end of an attack against one of our German Wikis that are running the ScrewTurn Wiki software. Turns out that it was a security issue even with the then latest version 2.0.23. Dario Solera - the maintainer of ScrewTurn - acted real fast when I informed him about the root cause of the attack and released v2.0.24 yesterday night.
Please download and upgrade immediately! The issue is being actively exploited (zero day if you so will).
 |
Friday, November 09, 2007 |
TechEd Developers 2007 is over, and before moving on (and flying back to snow in Austria), here is the list of sessions I attended this year:
- TLA201 - A Tour of Visual Studio 2008 and the .NET Framework 3.5
- OFF401 - .NET Developers Advanced Introduction to SharePoint 2007
- TLA324 - What's New in Team System for Software Testers
- SEC301 - CLR Security in .NET Framework 3.5
- DAT201 - Entity Framework Introduction
- WEB401 - Building Highly Scalable ASP.NET Web Sites by Exploiting Async Programming Models
- TLA304 - Building Services with the Service Factory: Modeling Edition
- DAT303 - Entity Framework: Application Patterns
- TLA305 - Continuous Integration With and Without Team System
- TLA307 - Improving Code Performance with VSTS 2008 Team Edition for Software Developers
- DAT304 - Managing Unstructured Data in SQL Server 2008: Introducing the FileStream Datatype
- TLA403 - Loose Coupling in Practice: CAB in the Real World
- ARC401 - Designing High Performance, Persistent Domain Models
- TLA407 - Dealing with Concurrency and Multi-Core CPUs with Today's Development Technologies
- SBP307 - Modeling and Composition of Applications
- TLA319 - The Joins Concurrency Library
- TLA405 - Parallel and Async Functional Programming on .NET with F#
- WEB403 - Securing your High-Risk ASP.NET Web Applications - A Case Study
Compared to last year, I managed to attend more sessions, however, there were also more duds. The last session (WEB403) turned out to be the one that earned the raspberry this year (a close runner-up: TLA403). Coming out on top I decided to nominate three: OFF401, TLA307 and DAT303.
 |
Monday, July 23, 2007 |
I got myself an eval kit for RSA SecurID tokens to see how easy / hard this would be to deploy via AD. Well, I didn't get very far, that is, installation failed spectacularly in the early stages:

After this "helpful" message box setup decided to be more specific:

Ohh-Kay. Let's go to RSA and their support center (it takes roughly five clicks to get to online support, but that's another usability story) - sign in required. Hmmm. How about creating an account?
The eligibility is a real joke: "RSA customers who have a trial product (This does not include two user demos)". Excuse moi? On the Web site you told me that I was ordering a trial and in actuality it turned out to be a "2-User Promo Kit" (the moment I needed support I looked more closely on the package...) without support.
Maybe it's the Microsoft Windows Server 2003 R2 Enterprise Edition VHD I am using?
 |
Thursday, June 28, 2007 |
 |
Wednesday, June 13, 2007 |
On May 10th, we recorded the interview on SharpDevelop that is now live on .NET Rocks. The interview starts around minute ten in this show. I tried to give some background on project history (if you really, really want all the details: look here), some of its features, where we stand today in comparison to VS Express, what's up next (hint: version 2.2 end of this month), and what the near future holds for SharpDevelop.
After the interview I realized that I mentioned most devs only by their first name, which happens if you are part of the team for nearly seven years! Therefore, I'd like to formally apologize for any confusion this might create and point to the development team page on our Wiki. There, you will find Daniel Grunwald (current technical lead), Mike Krüger (project founder now working for Novell on MonoDevelop, read an interview with Mike), Matt Ward, David Srbecky and the many others who make and made SharpDevelop the #1 open source IDE for .NET. Thanks guys!
A couple of links in closing: Download Wiki Forum
 |
Tuesday, June 05, 2007 |
Tuesday June 19th I will be doing two sessions on IIS7 - administration and programmability.

 |
Saturday, June 02, 2007 |
Today marks the offical day of me switching from Eudora to Outlook 2007. I have been a long-time fan of Eudora, and it served me well over the years (oh glory days when my mail program plus mailboxes did fit on a single diskette).
With Eudora being end of life, I had to make a decision which mail client I will be using in the future - and I have to say that every single one had its moments (ever enjoyed the fun of querying multiple mailboxes on the same mail server in Thunderbird?).
So long, and thanks for all the fish.
A couple of notes to self:
The latter is especially important if one fails to grasp how to turn the private key plus the certificate into the .pem for Stunnel. By the way, I was using CAcert. That works just fine for internal email servers.
I have one drawer of CD / DVDs that I haven't GCed in years - and possibly won't ever. That stuff is really a trip down memory lane. For example:

In addition to the agenda for Web TechEd 1998 (the only one ever) I also still have the post conference CDs plus it's accompanying system requirements correction letter: 486 or higher and 8mb of RAM.
Speaking of hardware requirements, here is another goldie:

Chicago SDK Kit, May 1994.
There's a lot more old stuff in this drawer, and I am not going to clean it out!
 |
Tuesday, May 29, 2007 |
Today, I uploaded a preview of version 2.0 to CodePlex. There are two big ticket new items in comparison to version 1.3:
- Plugin support The TFS checkin policy only tests for existence of code comments. For many applications, this is just fine. However, sometimes you also want to test for completeness of comments (i.e. a refactoring "broke" the documented parameter list). In this case you can use the new extensibility API, which comes with two sample plugins in the cccplibcontrib project. The API allows you to select which checking you want to override or complement, and you get full access to the parsed source file just like the stock implementation ("abuse" for non-code commment checking purposes obviously possible too). If you come up with a cool plugin, be sure to contact me for inclusion into the contrib project!
- MSBuild task This build task lives in cccplib, which is entirely independent of TFS or VSTS (it was written by Matt Ward). Therefore, you can use it eg with CruiseControl.NET or simply as part of the local .*proj files. What's the purpose of this build task anyways? Simple: as part of the build, you get information on "code comment coverage", just like you do with let's say code coverage and unit tests. Currently, you only get an XML file with the report - if you are XSLT-savvy and want to contribute a HTML report transform, let me know!
To get an overview what v2 looks like, how to configure it, etc you might be interested in this demo screen recording.
 |
Thursday, May 24, 2007 |
I have been doing some sprucing up of SharpDevelop's Web offerings today - namely the code converter. Up until today, you only could convert syntactically valid classes. Recently, Daniel implemented the SnippetParser class, which is now in use for the snippet converter (C# to VB.NET, VB.NET to C#). Note: the Web service for code conversion does support both class and snippet conversion, a Windows client sample is available for the former.
Also new (just completed a few minutes ago) is the code formatter: it uses the highlighting engine from SharpDevelop's text editor to HTML-ize a bunch of formats: ASP/XHTML, BAT, Boo, Coco, C++.NET, C#, HTML, Java, JavaScript, Patch, PHP, TeX, VBNET, XML. Again, there is a Web service available, as well as a sample using the service. This offering is built upon the HtmlSyntaxColorizer sample that can be found in SharpDevelop revisions > 2522 (currently only on the build server)
I am sure that both the snippet converter as well as the code formatter are welcome additions. Spread the word! After all, it's free.
 |
Wednesday, February 28, 2007 |
Fiddler is a HTTP debugging proxy. Although it is easy to use (a very good thing!), it is also very powerful. Point in case and why I am writing about it today is that I stumbled across a drive-by-download site (stumble is the wrong word, the URL came with what seemed like a phishing mail and that piqued my interest):

That site is actually quite clever though: when you go there the second time, it detects that it tried to infect you before and tells you that your IP is blocked. And it doesn't send a peep to a browser other than IE. Plus - and that takes the biscuit - it also verifies the referer.
But I still wanted the code, so I reset my router and started Fiddler:

Although Fiddler has tons more features, this did the trick for me in this case (if you want to learn what Fiddler can do, look here).
So what's the obfuscated script about? The short version: it is a variant of the ASUS download server drive-by download incident. The actual code can be found in a discussion on our German .NET community site here.
 |
Friday, February 16, 2007 |
 |
Monday, January 15, 2007 |
...doesn't necessarily yield what you are looking for as the first result:

Especially #1 I would rate as misleading and advertising that leaves a very bad taste in the mouth.
 |
Wednesday, January 03, 2007 |
For the past couple of years, I had been using SharpReader - today, finally, I switched over to FeedDemon. It simply is faster, especially at the number of feeds I have subscribed.

I have been re-awarded MVP for Visual Developer ASP/ASP.NET.
 |
Sunday, December 31, 2006 |
You will have to wait till next year to get this (and more) new functionality for the Code Comment Checking Policy. For example, a WiX-based setup:

Also in the box now: version information to easily see which assemblies are currently in use when you are adding the policy:

Also, there are a few changes to the configuration of the policy. Note that this will require you to remove & add the policy back to the team project's source control settings. The new defaults are the same values as the previously hard-coded configuration:

So check back next year!
 |
Monday, December 18, 2006 |
Two weeks ago, during this year's AspInsiders summit, I got ahold of a 1982 (!) copy of "The Soul of a New Machine" at Half Price Books. I still have to decide whether the equally ancient Continental boarding pass DEN-SEA used as a bookmark will be kept too (I guess so), but the book is definitely worth your time - be it for a computer history lesson, or on the "signing up" concept and all other project management topics being touched on (without it being a pm book). The story in itself is more than fascinating, so although old by now, it does come highly recommended.
 |
Tuesday, November 21, 2006 |
At next year's VSone in Munich (a German developer conference taking place in February), I will be doing three talks:
- Visual Studio 2005 Team Edition for Database Professionals
- User Account Control (UAC) in Your Applications
- Advanced Code Access Security (CAS)
Two security topics, one team-development focused. See you in Munich!

 |
Friday, November 17, 2006 |
Another week, another ATE (Ask the Experts) assignment. Aside from the keynote, I got around to watching to these sessions:
- ARC202: Design for Operations using VSTS and MOM 2005
- DAT309: SQL Server Analysis Services 2005: Integration with 2007 Office System
- WCL403: Windows Vista System Integrity Technologies
- CSI401: Microsoft.com Operations: Solutions for Highly Available and Secure Web Sites
- MGT310: Microsoft System Center Essentials (SCE): Technical Overview and Drilldown
- ARC301: Microsoft, Open Source and Interoperability
- INF303: How to Virtualize Infrastructure Workloads
- IAM403: Monitoring Active Directory (AD) Security with MOM 2005
- MGT320: Using Application Virtualization to Decrease Your Application Management TCO
- DAT401: SQL Server Always On Technologies: Disaster Recovery Strategies for Isolated Damage and Human Error
- SEC402: Securing your Certification Authorities (CAs) Private Keys
- WCL402: Windows Vista Kernel Changes
- CSI303: Building a Custom Log Analysis Solution with Log Parser 2.2 for Internet Information Services (IIS) 6
- DAT402: SQL Server 2005: Advanced Indexing Strategies
- MGT311: Performance Modelling: A Powerful Tool for Planning Deployments
The dud-of-the-week award goes to IAM403 which didn't live up to its level. Enjoyable as ever was Steve Riley in his security sessions. I didn't get around to watch "Windows Vista User Account Internals" by Mark Russinovich because of ATE duty, but will do so once the conference DVDs turn up in mail!
 |
Thursday, November 16, 2006 |
In today's pre-lunch session at IT Forum the speaker used a term I had never heard before: stiffware. And I have to agree - stiffware does pose a serious problem when you cannot 'call' (other means of 'communication' might be unreliable to say the least <g />) the guy who wrote that piece of software so you can properly configure or even install it.
Speaking of the session itself, Microsoft SoftGrid is a really cool technology. The client - which contains more than the SoftGrid client - called the Desktop Optimization Pack, is equally interesting.
 |
Sunday, November 12, 2006 |
 |
Saturday, November 11, 2006 |
It's two weeks in Barcelona for me - and for IT Forum, I am really doing ask-the-experts for Visual Studio Team System!
Being ATE (Ask the Experts) means that you cannot go each and every session you would like to. As a reminder for myself here is the list of sessions I made it to:
- ARC305: Connected Systems Part 2: Logic
- OFF303: VSTO 2005 SE
- SQL402: Implementing the Service-Oriented Database Architecture with SQL Server
- ARC304: Connected Systems Part 4: Data
- ARC201: Patterns and Anti-Patterns for SOA
- DEV314: Building Rule-Based Systems in WF
- ARC302: Connected Systems Part 5: Identity and Access Management
- DEV322: Unit Testing Best Practices
- DEV360: Windows PowerShell
- DEV302: Microsoft XNA and the Future of Game Development
- DEV366: Boost Your Data-Driven Application Development using SQL Server Centric .NET Code Generator (Olymars)
The only session to be rated "eminently forgettable" was DEV322. Well, at least I got to read my emails... The top-rated session definitely was Bob Beauchemin's SQL402, which kind of was an interesting session to go to before ARC304. Great fun was Rob Miles' XNA talk (this session doesn't fit the pattern of my interest, does it?).
There are a couple of sessions I missed, but I'll watch those once the post-conference DVDs have landed.
 |
Thursday, November 02, 2006 |
Today, we shipped Beta 2 of SharpDevelop 2.1 (release information). Usually, we only ship two betas (followed by release candidates), but last weekend we decided to add a third one to this release cycle - to build a rock-solid foundation for the releases coming after version 2.1.
Speaking of last weekend: three of us met for the annual #develop developer days (#d^3 2006, a four day event) - way short of the original invitation list. But this turned out to be an advantage for discussing architecture and componentization. A lot of improvements already made it into Beta 2, a few more are yet to come in Beta 3.
Part of this effort was the creation of a presentation on SharpDevelop, which includes an area of interest to all .NET developers out there: a list of our components that can be reused outside the context of SharpDevelop plus the documentation and samples for those components. Remember: SharpDevelop is LGPL, so feel free to use our components! In addition to this "general" slide deck, Daniel (SharpDevelop technical lead) also created a "Level 600" introduction to NRefactory, which can be found here. Definitely interesting for those of you that want to use code completion in our text editor control. Finally, SharpReport now is a project in its own respect. The reason(s)? Well, SharpDevelop and SharpReport are developed on different schedules, so now we are customers of each other and no longer intertwined. Cool stuff coming on this front: export to various formats, allowing you to use SharpReport - yes - for generating reports in ASP.NET sites!
 |
Monday, October 30, 2006 |
Last Tuesday, I held the talk "Advanced Code Access Security" at UG Styria in Graz. This talk was originally part of the MSDN Security Briefings held in Austria earlier this year, for which MS Austria had asked MVPs to help create and deliver security content. Advanced CAS seemed an interesting enough developer topic to re-run at user groups, and Mario (the author of this session) has allowed me to publish the slide deck and demos for the general public.
AdvancedCodeAccessSecurity.pdf (4542 KB)
AdvancedCAS.zip (599.6 KB)
Please note that I have published only demos four (setting CAS via setup) and six (using CAS in addin application) - those are the "completed" versions of the demos.
 |
Monday, October 09, 2006 |
In case you were wondering why there is no new content on this blog - I am pretty busy, including preparing for my sessions at ADC06:
- Architecture Jumpstart 1 & 2
- Full-day VSTS / TFS Jumpstart
See you next week in Frankenthal / Germany!

 |
Tuesday, September 19, 2006 |
Beta 1 of SharpDevelop2 2.1 is available for download. While I was putting together the annoucement for v2.1 yesterday, I realized that for a point release, we really managed to put in a lot of new cool features:
A couple of WOW features (for me, at least): Not only can you compile an application for different versions of .NET, you also get version-specific code completion support. Another cool one is that you can host SharpDevelop in your application, providing your application a "macro editor" (on steroids I might add) with full .NET support. And to pick a third, code analysis rounds out our professional offering in addition to code coverage as well as unit testing.
Two features did not make it for the Beta 1 announcement as they don't yet cover all the scenarios we are hoping for: integrated Subversion support (yeah!) and targetting the Compact Framework for Windows CE devices. Those slipped silently into this release.
As you can see, SharpDevelop is ever growing and the developers working on it can be rightly proud of their achievements!
Finally, a kind of "call to action": let us know what you think! Not only in our forums, but also in your blogs, communities, et cetera. We need your feedback regarding feature set, stability, and much more.
 |
Monday, July 17, 2006 |
Disclaimer: I am the PM for the #develop project.
After almost two years in development, the #develop team has shipped version 2.0 of its open source integrated development environment (IDE) SharpDevelop2. The new version supports the .sln / .*proj project file formats of Visual Studio 2005, therefore you can open and edit existing projects inside SharpDevelop2. The team however does not view SharpDevelop2 as a competitor for the Express line of products (comparison) from Microsoft, but it aims at software developers that need best of breed tools for their software development process - like unit testing, code coverage, documentation generation and more. In the same vein, version 2.1 will complement those existing features with integrated source code control, code analysis tools as well component testing.
SharpDevelop2 is especially well-suited for developers that chose the Boo language, because SharpDevelop2 offers first-class support for code completion as well as the Windows Forms designer. Aside from this unique selling point there a couple of smaller but nonetheless productivity-enhancing features in version 2.0: code conversion (eg VB.NET to C#, but see for yourself), support for Mono, documentation preview, RegEx compilation und quite a few more.
A lot of the features are owed to the ease of integration and extensibility provided by the addin system found in SharpDevelop2. This addin system can be used by developers in their own application - this being the reason for the rather unconventional license choice for SharpDevelop2: LGPL instead of GPL, which is much more common for development tools such as #develop. Re-use by third parties has been the driving factor to change the license.
Thanks to all the contributors that made SharpDevelop2 a reality, especially the technical lead on the 2.x effort, Daniel Grunwald.
 |
Tuesday, June 20, 2006 |
As promised, here is the list of links / articles / samples that I used for preparing my talk "Build Provider in ASP.NET 2.0":
Hope you will find those useful.
 |
Monday, June 19, 2006 |
Half an hour ago, I completed my talk "Windows Workflow Foundation & ASP.NET 2.0". As promised, here is the list of links to sites / documents that I used to prepare this talk & accompanying samples.
Also, see my last post on ASP.NET PageFlow CTP. This was the last part on "future technologies".
Update A foto from my talk on Monday (debugging a workflow in ASP.NET):

 |
Saturday, June 10, 2006 |
In less than ten days, this year's ASP Konferenz will take place in Burghausen, Germany. This time, I will be presenting four topics: Windows Workflow Foundation & ASP.NET 2.0, Build Providers in ASP.NET 2.0, IIS 6.0 & ASP.NET 2.0 Secure Deployment and finally Health Monitoring in ASP.NET 2.0.

 |
Monday, June 05, 2006 |
Disclaimer: I am the Senior Project Wrangler for #develop. Therefore I am biased as well as knowledgeable.
Today, we shipped RC2 of SharpDevelop2. For those of you who haven't heard of it before, it is an Integrated Development Environment (IDE) for .NET. I will get to the features in just a second. First, I want to thank all developers that spent time on making v2 a reality. Daniel, the lead developer on v2, actually implemented a nice little tool for showing the project statistics, you can read more and download the utility in his blog Analyzing the code in SharpDevelop. Wow, we started quite a long ago on this baby.
I promised to get back to the feature set. Let's tackle it with more than a grain of blog posts and feature videos:
Supported Programming Languages
My definition of support is as follows: full code completion (aka IntelliSense) and a working Windows forms designer. Therefore, three languages qualify: C#, VB.NET and Boo. Aside from those fully supported languages, you get syntax highlighting for many more.
Speaking of syntax highlighting and code completion: both features are supported for XML files. You can check it out in the xml editing experience feature video (yes, this is available since v1.1!) You get this for MSBuild files too!
Features You Would Expect
Let's start with the integrated debugger. This has been our achilles heel since the very beginning, as implementing a debugger isn't exactly a piece of cake. However, thanks to David, v2 sports a debugger and you can watch a demo.
Let's continue with a simple list: Search & Replace, code folding, code templates (just try Ctrl+J in the editor), a toolbox and more.
Cool Features
Ahhh. At last. Let's see what we got:
- Unit testing (since 1.1, NUnit-based)
- Code Coverage (2.0, based on NCover - read more in Matt's blog post)
- Documentation generation (since 1.1, based on NDoc)
- Quick XML Doc (since 1.1, just try Ctrl+Q to get a preview of the HTML help that will be generated for your XML comments)
- Auto code generation (since 1.1, just try Alt+Ins)
- Code converter - convert your projects from C# to VB.NET and vice versa (since 1.1). New in 2.0: three way with Boo.
- Reports. Yes, SharpDevelop ships with a free-to-use report engine, #report. It was added late in 1.x, now improved for 2.0. Watch the demo
- Support for multiple frameworks - although 2.0 is the default, SharpDevelop can target 1.1 as well as Mono. Even Gtk# is supported.
- Ctrl+Mousewheel zooming. You will like it. I do.
What's Not There
We ain't a big software company, so we have to tackle features in order. Therefore, you won't find ASP.NET support in SharpDevelop, as well as others: CF support (planned for 2.1), version control (planned for 2.1), ClickOnce (planned for 2.1)...
Even if you don't plan on using SharpDevelop for your daily work, give it a try and let us know what you like and what not on our forums. You might even learn about a cool new feature like Component Inspector that is coming with 2.1, code-named Serralongue. And we'd be more than happy to welcome additional developers, testers, writers and translators.
 |
Thursday, June 01, 2006 |
I decided to take the plunge and try running Vista on a daily basis. Thus far the following casualties must be reported:
- Matrox P650 PCIe. No drivers, thus no dual head. Sorry Matrox. In more than ten years this is now the first time that my machine has no Matrox graphics card inside.
- PDFCreator. For some reason the setup msi dies during installation, as well as during the subsequent uninstallation. Too bad.
- Daemon Tools. On the first try, it didn't work. Maybe I'll give it another shot.
Given my previous experiences on my two laptops, it really turns out that the graphics drivers (or lack of) are the #1 issue for getting productive with Vista.
Let's see how long it takes until I hit a snag that makes me return to XP. Copying Application Data stuff to Vista was already quite "interesting" because Firefox and Thunderbird store their settings in Roaming and not Local.
 |
Wednesday, May 31, 2006 |
When you run an application that needs administrative rights (in this specific case via a manifest file), you are prompted with an UAC dialog to allow this operation:

This is the dialog you get for the "default" user, the one you create during setup that is a member of the Administrators group. Contrast that to the dialog a standard user is presented with:

Now, I am fine with prompting the user to enter administrative credentials. However, I am not fine with providing the user with the name of the administrative user(s) on that machine. In my opinion, this is giving away security-related information without need.
Update Of course you can always use net localgroup Administrators to get a list of the members of the Administrators group (Markus pinged me on that one). This feature has been available for ages, true. However, I am not convinced that the UAC convenience of providing the administrative accounts on a silver platter is really necessary.
 |
Tuesday, May 23, 2006 |
Mildly surprising content on my blog: Office 2007 Beta 2 (public) is here! From the moment I saw the new UI at PDC05 I was waiting to get my (dirty) paws on this piece of software. Let's see what working with it is like, because the setup experience was already a positive one.
A /. article pointed me to the blog post Reporting Vulnerabilities is for the Brave. Sounds familiar. Been there, done that. A customer had a Web site, and I told them about a problem. They told their vendor. And the vendor went after me - probably because, like most security-unconscious companies they felt threatened in one way or another.
Therefore I wholeheartedly agree with the instructions outlined, plus: lean back, and enjoy when the bad guys whack that company. Yes, this is controversial, but as long as companies don't "get it" that there are people that want to help them when reporting vulnerabilities, it is definitely better to keep your trap shut.
Aside from the cynical advice in the above paragraph, here is something to consider for your company: establish a policy - and publish it! - that you welcome security reports by security researchers (and Joe Average for that matter). This goes a long way to getting the threats mitigated before they are exploited.
 |
Saturday, May 20, 2006 |
Today I set up my new laptop with Windows Vista - a "dry run" for Beta 2, because I want to use it as the primary OS on that machine. Part of the drill was getting my UMTS card (a Merlin U630) up and running.
First, I tried it using the standard software that came with the card. Installation went smoothly, however the Connection Manager software is based on an HTA solution, and IE7 most definitely didn't want to cooperate and kept throwing JavaScript errors (Note: I view this as a bug of the Connection Manager software, this is most decidedly not IE's fault). Dialing using this software therefore was out of the question.
So I went out on the Internet to search for a solution. At first, I tried dialing manually using AT commands, but it turned out that initializing a Merlin card isn't exactly easy-peasy. So I decided that a thorough forum search was in order. Thankfully, that search turned up a great piece of software (onlinekosten.de Community to the rescue).
What I found is MWConn (looks like that this time the international audience is out of luck, at least at the time of this writing as the software is German only). It does support the Novatel card, allows for dialing (make sure you check the default connection that is generated, at least my provider is using a different dial-in number), gives feedback on UL / DL traffic you generate, plus signal quality information. Way cool & saved my day!
 |
Friday, May 05, 2006 |
 |
Monday, May 01, 2006 |
Back from holidays, catching up with news, I stumbled across the article New Microsoft browser raises Google's hackles. IE7 Beta 2 was released last week, and because it sported an x64 version I installed it yesterday. And immediately tried the search box that Google is complaining about loudly. Guess what - I had it changed to Google (my personal favorite search engine) in seconds (even making it the default search provider):

The UI wasn't all that unfamiliar at all, let's take a look at Firefox (my personal favorite browser):

Note that these are the default out of the box search providers as defined by Firefox, and there is no MSN in there by default at all. But you can add it if you want (just for laughs, check out IE7's as well as Firefox's add engines/providers pages, they look very, very similar indeed).
<opinion> So, does that constitute the claimed "unfair grab of Web traffic?" No, unless you go the whole nine yards and force every single browser vendor on the planet (including "Old Europe") to ship their products with zero preconfigured search providers. And hey, IE7 will be a separate download, so why doesn't Google add a browser product to their portfolio? </opinion>
 |
Wednesday, April 19, 2006 |
Not having wireless access at MS' office in Austria was the last straw - I finally decided to shell out the money for a 3G data card & associated mobile broadband account. The thing that really surprised me: upon ordering, it only took one day for delivery, and most surprising of all - it worked the first time (maybe thanks to the fact that it ships with a crystal-clear one page only "manual"). No more paying through the nose for egregiously expensive WLAN hotspots at hotels!
 |
Monday, February 06, 2006 |

Will be there Wednesday & Thursday as ATE (Ask the Experts), so drop by in the experts zone and say hello!
 |
Thursday, February 02, 2006 |
Because I wanted to create a DVD cover, I decided to install CorelDraw 10 (fine for what I need) onto my box. However, it very much refused to cooperate:

It told me that it expects NT4 through 2000 as an operating system, however, that it cannot detect my current OS (the blank third column). And that's the story. No CorelDraw for me on the x64 box. Grrrrr.
Update No dice on 32-Bit Vista (December CTP) either. Setup completely craps there. Well, so the final option is to install CorelDraw 10 in a 32-Bit virtual machine on my x64 box...
 |
Wednesday, February 01, 2006 |

Guess why I requested to change the password - because PayPal wouldn't let me login with my perfectly valid - and correctly typed - password. And now, when I finally gave in and am in the process of changing the password, it finally remembers that the very same password is currently active. Selective amnesia I suppose.
 |
Thursday, January 26, 2006 |
All I wanted to do was post this screenshot to a DasBlog-powered blog:

So as usual, I went to Add Image / Browse... and end up in my user account folder with no useable subfolders thanks to the new restrictions. I fiddled for almost 15 minutes until I gave up - and copied the image to my XP box!
Note to self: next time, install Firefox right away.
The culprit: http://transfers.one.microsoft.com/ftm/
The error message: --------------------------- Program Cannot Start or Run --------------------------- The program or feature "\??\C:\DOCUME~1\CHRIST~1\LOCALS~1\TEMP\~EXB0000\setup.exe" cannot start or run due to incompatibility with 64-bit versions of Windows. Please contact the software vendor to ask if a 64-bit Windows compatible version is available.
It's "only" the FTM that I need for Connect and MSDN Premium downloads! Dear Microsoft, how about a working version for us Windows x64 guinea pigs?
Note: I am complaining about the standalone install, not the ActiveX. But who's using IE these days?
 |
Sunday, January 15, 2006 |
Three months ago, I installed the NoSpamToday! SMTP Proxy on my dedicated server box (you can read about the adventures encountered in my blog entry Web applications and SMTP proxies don't mix well). Today I had a look at the statistics:

On average, the proxy rejects four out of five mails before they reach the mail server - for reasons ranging from malformed headers, banned file extensions, virus-contaminated attachments, and a SpamAssassin-based spam detection. Needless to say that my inbox is virtually spam-free since then. Neato.
 |
Tuesday, January 10, 2006 |
It is time for a "Dear John" letter to the programmer who came up with this default location:

The Program Files directory! Yikes. And I thought programmers are well aware of the fact that they should not, must not write to this location. But here in Trillian it is the default! Welcome to 2006.
 |
Monday, January 09, 2006 |
Today, I got my MVP award package, which kind of makes it fully official. No surprise with my area of expertise: Visual Developer ASP / ASP.NET.
 |
Saturday, January 07, 2006 |
 |
Wednesday, January 04, 2006 |
When will the misery end? Initially, I only bought 2GB of memory for my x64 workstation. But I intended to add two more from day one, and today was the day - two additional Kingston KVR400X64C3A/1G DDR-400 modules were delivered to my doorstep. So in theory 4 modules would yield 4GB of memory.
Not so fast, Buster. Exactly. After finding out the hard way (blue screen and various other sorts of lock-ups), it looks suspiciously like the ASUS A8N-SLI Premium does not like four DDR-400 modules! (the ValueRAM site hints at this, and there are discussion threads too) that pretty much takes the biscuit.
Is there anything working on Windows XP Pro x64? I think not. Point in case: I just tried to install the Intelli* software for my Microsoft Laser Desktop 6000:

Now come on. This is Intelli* v5.4, a version that is newer than anything to be found on MS' download servers (where you won't find x64 versions either).
Windows XP x64 at this point in time is only for people who are willing to put up with below-par driver and application support. This experience almost comes close to Vista Beta 1...
Update Turns out I was one day too early. The new version 5.5 can be downloaded now, and it supports 64 Bit (IntelliPoint 5.5 x64, IntelliType 5.5 x64 [one download for x86 and x64]).
Only a little more than two weeks to go until our yearly Community Wintercamp - "our" as in German .NET mailing list community. The agenda [German] has been posted quite some time ago, and this year it's going to be great because we already have tons of snow (literally). If you are a .NET aficionado living nearby (I like to define "nearby" as Switzerland, Germany or Austria) you are welcome to join a band of geeks in the snow! To whet your appetite, take a look at the photos and accounts of the past events.
Daniel published the first article in a series about using the SharpDevelop core to build your applications. Those of you tracking the progress of SharpDevelop through the years might be wondering "Aren't there restrictions because SharpDevelop is released under the GPL?" Well, version 1.x is GPL-licensed. But for version 2.0, we changed the license to LGPL. Thus, you can use all of the SharpDevelop2 assemblies in your applications regardless of license.
Aside from the articles, there are videos showing how to write addins for SharpDevelop2. This will get you started with plugging in functionality with SharpDevelop2 via addins (again, your choice of license now!). Be sure to always get the latest bits either via our source control server, or if you prefer from our build server.
Please note that SharpDevelop2 requires .NET Framework 2.0, and, the usual disclaimer, that it is a work in progress. This, however, does not apply to the core - it has been in development for four years+, and as such is very stable and proven. After all, it is the basis for a 300 kLOC C# application!
 |
Tuesday, January 03, 2006 |
This sordid story starts with a good thing to do: I wanted to perform a backup onto my external USB hard disk. So I took the drive that was attached to my old workstation and did my routine: delete an old backup to make space for new ones. But Windows decided that it might be a rather good time to annoy me:

Huh, what are you trying to tell me? At the same time, a tray notification popped up:

USB is usually not a network connection, and I most decidedly did not abuse the cord for bungee jumping at that time. This error also yielded tons of event log entries like this one here:

Being already a little ticked off, I decided to take a peek into Computer Management, section Disk Management:

Gotta be kidding me! Being annoyed already, I dug deeper into the property sheets for this drive:

You remember the error messages about delayed write failures as well as paging? Write caching is disabled?
For good measure, I attached my harddisk to another (non-x64) machine. Working fine there. Next, I switched USB cables. Same result. Used a different external USB hard drive. Again, same result. So that pretty much means that external hard disks don't work at my new workstation.
I am wondering if that is another problem of x64, or the chipset driver in this case. Cables and physical disks are already ruled out - ideas?
Update My drive enclosures have Firewire support too. So I connected the drives via Firewire. That works around the DWF problem, however, now I stumbled into a different issue (event log record):
The device, \Device\Sbp2\ASSMANN AB-PENR35 Combo Devi, did not respond within the timeout period.
The KB article SBP-2 drive stops responding when you try to write data in Windows XP nicely fits this error. Back to square one, research on the USB issue. At least I am not the only one that experiences those kinds of DWF problems, as an Internet search proves.
Update Tried again with USB after updating the nForce chipset driver to v6.82. It got farther this time, but it still crashes with DWF. Judging from a search for "delayed write failed", I am most decidedly not alone.
Solution At least sort-of... I poached ye olde Adaptec DuoConnect card from my old workstation and plugged it into the shiny new one (which, thanks to the A8N board, already has 10 USB 2.0 ports of its own). Booted the machine, drivers were installed automatically, plugged in the harddisk, did the same operations as before - and it worked flawlessly.
Conclusion: There must be an issue in the combination chipset / NVIDIA nForce (x64 only maybe?) chipset driver.
Seems like my computer is living up to its name.
Update I decided that I had to have another go at it. So I bought a brand-new external 3.5" enclosure, a Map-H31S (according to the documentation it should use a Genesyslogic GL811E). I disassembled the old enclosure and put the hard disk in the new enclosure. Connected it to the mainboard's USB connectors - et voila, it works! Seems that this enclosure's IDE to USB chip can deal with my motherboard.
 |
Monday, January 02, 2006 |
Instead of risking my sanity by trying to install Virtual PC 2004 on my x64 box, I decided to go with Virtual Server 2005 R2 x64. Thankfully, this new release of Virtual Server allows installation on an XP host, and the setup experience was pleasantly uneventful.
Of course I ran into a snag - my default browser is Firefox, and the administration Web site didn't fully function with it. So back to Internet Explorer, and configure the first (existing) virtual machine:

I learned the following things:
- Do not forget to configure the network adapters. Otherwise connecting to your domain can be a challenge.
- Definitely enable Remote Desktop on your virtual machines, which brings me to the next item on my list:
- When renaming a virtual machine beware of your own cleverness. Especially if all your virtual machines were copied from a once-configured image, and you renamed one of those instance so that the original name no longer exists in Active Directory.
Other than that I have to say that Virtual Server 2005 R2 is a much better experience than Virtual PC 2004.
My journey through x64 land is getting more frustrating by the minute. When I tried to connect to my dedicated server box via RDP, I got the following error message:
The specified remote computer could not be found. Verify that you have typed the correct computer name or IP address, and then try connecting again.
"That can't be!" was my first reaction. Especially because I use the very same host for email, and that was working from the start. So I fired up my trusty X31 laptop and tried there - working just fine!
Next, I compared the TCP/IP settings - both identical, because I use DHCP in my network to dole out IP configurations. Back to the basics. Ping. Working fine on my laptop, not working on my x64 box. Scratch, scratch. Wait a second! Because I am paranoid, I don't configure the default gateway for my machines, so that when I turn off the ISA client, I have no Internet connectivity whatsoever (nice for testing).
Turns out that the email program makes proper (high-level) use of the network stack, however, ping and mstsc go lower, and - nasty surprise - the ISA client doesn't work properly on x64 (thread here). Now that is the second time that my "no default gateway policy" rears its ugly head (instance #1).
 |
Thursday, December 29, 2005 |
Now THAT takes the biscuit by a long distance:

Those are the two hard disks of my RAID mirror! Showing up in Safely Remove Hardware... hard disks, which of course are nowhere to be seen in the device manager:

Anybody have an idea on how to exclude certain devices from Safely Remove Hardware? Let me know, I'd be really glad to hear.
Update A friend of mine pointed out that he had seen this with a RAID controller on one of his boxes too. He suggested that stopping the device would not work. After some hesitation, I decided to give it a try - and it failed:

Thank goodness. If it had succeeded, I would have had a problem.
it's then you stumble across such an error message: java.lang.StringIndexOutOfBoundsException: String index out of range: -89 at java.lang.String.substring(Unknown Source) at java.lang.String.substring(Unknown Source) at ZeroGla.a(Unknown Source) at com.zerog.ia.installer.util.magicfolders.JavaHomeMF.a(Unknown Source) at com.zerog.ia.installer.util.magicfolders.JavaHomeMF.b(Unknown Source) at com.zerog.ia.installer.util.magicfolders.MagicFolder.initializeAllMagicFolderPaths(Unknown Source) at com.zerog.ia.installer.Main.d(Unknown Source) at com.zerog.ia.installer.Main.c(Unknown Source) at com.zerog.ia.installer.Main.main(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.zerog.lax.LAX.launch(Unknown Source) at com.zerog.lax.LAX.main(Unknown Source)
The application that blew up was the Sony Ericsson Update Service installer 2.2.11b. And guess what: it craps only on x64, not on my trusty 32-bit XP. I pretty much suspect that the programmer of this application didn't expect Program Files (x86) as a directory name.
After Christmas, I set out to assemble the parts of my new x64 workstation:
- ASUS A8N-SLI Premium motherboard
- Athlon 64 3700+
- 2 GB of memory (to be upgraded next week to 4GB)
- 2 WD 400GB RE2 hard disks (used in a mirror, I am too old and lazy for data loss)
- Matrox Millenium P650 PCIe graphics card
- Optical drives (DVD-RAM & DVD-RW DL) - reused from the old workstation
- Arctic Cooling Silentium T5 midi tower case
Lessons learned:
- InCD 4 is my enemy #1 for 2005 - it doesn't work (even install) on XP Pro x64
- Not all AV products' realtime scanners like x64
- If you are used to Arctic Cooling CPU fans, don't install the out-of-the-box fan that ships with your CPU - you will be disappointed. And opening the case soon again to replace it.
- Dual-head sucks. Why doesn't Matrox ship a triple-head card for PCIe?
I am pretty sure those ain't all the snags I will encounter, especially as Virtual Server 2005 R2 is now waiting to be installed instead of VPC 2004 on this machine.
Update Speaking of snags - the Canon LIDE 60 scanner doesn't work on x64. The driver simply doesn't support it. How craptacular.
 |
Saturday, December 17, 2005 |
Today I set out to do something simple - at least I thought so. My server is configured to have a German keyboard layout together with the German input locale, like so:

So I set the Default input language to English (United States). Click Apply & OK, log off, and then log on again. Guess what - I am back to square one. Neither rebooting or any other brute force let me change that, it always automagically reverted back. I'm quickly loosing confidence in my sanity and the Windows server platform.
Update: Good grief! The local input language settings are automatically remoted to the Terminal session. This default behavior I view as counterintuitive. But it can be fixed, thanks to Markus Oestreicher for pointing it out to me - Input Language of Terminal Server Client Does Not Match That of Terminal Server Session
 |
Monday, December 05, 2005 |
Today, a member of our German .NET community asked if it is possible to programmatically query the Google page rank. He had seen it done in PHP (here on the Google Community site), but didn't have time / PHP skills to translate it. All I found on a rather shallow search was PullRank, which I'd describe as non-fit for server use.
So I decided to set out to convert the PHP sample. Being PHP-challenged myself, I decided to give the PHP to ASP.NET Migration Assistant a shot. Whoha! That converted code is the most convoluted contraption to be called code I have seen - ever. I tried to get it to run, but failed because the conversion left me with some loose ends.
Instead of giving in, I contacted Christian Wenz to lend me a hand because he has some PHP experience. He thankfully hosted an "annotated" version of the PHP script so I could look at the output of various stages to test my solution with known-good values. That was most helpful.
Instead of doing a Web site demo application with everything intertwined, I split up the project into two - GPRDotNet being a DLL assembly project you can reference in any type of .NET application (Windows Forms, Web Forms, you name it), as well as a simple Web frontend to demo the usage: DemoSite.

Querying the page rank is really simple - the following snippet is the code from the "Check PageRank" button event handler:
protected void doCheckPageRank_Click(object sender, EventArgs e) { GooglePageRank pr = new GooglePageRank();
string url = webSiteUrl.Text;
try { string rank = pr.GetRank(url); thePageRank.Text = rank; } catch (Exception ex) { // this is rather chatty (telling the end user everything *IS* a bad idea) thePageRank.Text = "Requesting the page rank failed. Reason: " + ex.ToString(); } }
I want to emphasize that the code for the GooglePageRank class is a rather quick & dirty port of the PHP code and that it does not contain the necessary error handling you would expect for a server-side library. After all, it is just a proof of concept for our community.
Finally, here is the source code: PageRank.zip (26.89 KB)
If you find errors, please leave a blog comment so others know about improvements. Thanks!
 |
Sunday, November 27, 2005 |
Next week, I will be in Rosenheim, Germany for the ADC 2005. I'll be teaching the Visual Studio 2005 Team System Hands-on workshop (Tuesday as well as Friday), plus doing two talks during the main conference: IIS 7 and ASP.NET 2.0 Health Monitoring. See you there!
 |
Monday, November 14, 2005 |
In my blog entry Crashing Visual Studio 2005 for Fun I described how to crash Visual Studio 2005. Scott Guthrie followed up, and since then I was in permanent contact with team members. After some research, it turned out that it (a) was seemingly reproducible only on my machine, and (b) likely a tooltip issue.
What is going? Well, my machine is equipped with a Matrox P750 and has three monitors attached, spanning a single 3840x1024 "display". This strechted single display is managed by Matrox PowerDesk-HF, and it comes with a couple of desktop settings to make applications play nice on three physical monitors. One of those options is "Prevent tooltip spanning in strechted mode":

What does this option do? Imagine that I have an application full screen on the middle monitor - without that option turned on, tooltips "overflow" to the monitor to the right (you only see the background image in this screenshot, but that is the 3rd monitor):

Now guess what - once I turn that option on, VS05 crashes the way I described in my previous blog entry. It took me a couple of reboots, configuration from scratch and quite some testing to finally figure out the root cause for this crash.
 |
Saturday, November 12, 2005 |
When I saw this "interior design" store named Avalon in Valle Gran Rey, La Gomera, I had to take a photo:

Quite fitting for Windows Presentation Foundation 
 |
Thursday, October 20, 2005 |
To put this into the right perspective - I am a very peculiar user of word processing applications. I spend most of my time with writing or reviewing documents. That is, the feature areas I care about most are revision tracking and commenting.
To illustrate my point, I took the following screenshot of Word:

This is a rather orderly document, with one comment tacked to a section of a sentence, plus I added "stuff" (a pointless edit). During the lifetime of this document, more comments will be added, as well as edits by multiple people.
So what do I do once all comments are in? Yep, accept or reject the changes. If I am fine with the changes, I mark that block containing all the changes, and go to the toolbar to accept the changes:

That's how it works in Microsoft Word. Now let's take a look at OpenOffice.org Writer:

I couldn't care less about the missing toolbar to access the reviewing functionality directly, however, I do care deeply about the internal workings:
- Comments Added via Insert / Note. But don't make the mistake to expect to be able to select a portion of your text to associate it with - once the note is inserted, the marked text is deleted!
- Changes Making changes to the document works as expected. But look at the above screenshot again: yes, accepting and rejecting changes is done in a separate dialog box! See for yourself:

That might be practical for a small document, but definitely not for one that was reviewed by 5+ people and contains 100+ changes (which, funny enough, does happen a lot for specification documents or book chapters...).
Without a proper editing workflow, OOo is not going to play a major part in my everyday work process any time soon.
 |
Saturday, October 15, 2005 |
 |
Friday, October 14, 2005 |
Remember my call to action in Web applications and SMTP proxies don't mix well (it seems)? I mentioned that I am guilty as well - not only for Web applications as it turned out, but also for other server-based software, such as the Subversion post-commit hook I wrote.
You can already guess the contents of the change log (the last public version was 1.7):
- SMTP authentication & SMTP server port options added
If you are running the hook today, all you need to do is copy the new post-commit.exe over your existing one (assuming you use 1.7), and add the following four lines to your post-commit.exe.config's <appSettings> section: <add key="SMTPAuthentication" value="" /> <add key="SMTPServerPort" value="25" /> <add key="SMTPUsername" value="username" /> <add key="SMTPPassword" value="password" />
Those values default post-commit.exe to the 1.7 behavior. To use authentication, set SMTPAuthentication to BASIC, and provide username and password. Most of the time, you will not need to play with the server port.
Finally, here is the usual binary & source code archive:
SvnPostCommitHook1.8.0.51014.zip (424.24 KB)
My dedicated server box not only serves Web applications (such as this blog), it also handles mail for the respective domains. This means I have to deal with spam. Which on one hand is nice because I can do whatever I please: drop mail based on whatever criteria I set up, and use whatever filtering software I need.
This is how the NoSpamToday! SMTP Proxy found its way on my box. I simply got tired of maintaining my (rather old) standalone SpamAssassin installation, and dealing with MailEnable's integrated but not chained RBL / SPF / virus scanning (by not chained I mean that those filters are evaluated separately, not like SA, where all filters[rules] are weighted and evaluated as a whole).
Because I only have one box, I had to resort to relocate MailEnable to port 45, so that NoSpamToday! could listen on 25 and forward to MailEnable if appropriate (*). I did configure SMTPS previously (port 465 redirected to localhost:45 via stunnel), so standard users could deliver their mail directly to MailEnable instead of having their outgoing mail scanned by the proxy.
But what about my Web applications? Initially, those were sending to localhost directly, and as such I had a relaying exception set up in MailEnable. This one had to go, obviously. So how can applications deliver mail to the mail server via the proxy? SMTP authentication is necessary for this to happen.
But this doesn't solve the whole issue, it opens a can of worms, performance-wise. The problem is, every single application (Community Server, dasBlog, Gemini, ...) assumes that your SMTP server listens on port 25. Wrong. That's the proxy. And that's a problem: all local outgoing email from those applications is scanned by antivirus and antispam filters. And that's completely wasting CPU resources. As well as adding to # of addresses accepted by the backend mailserver, driving up the licenses that would be needed for NoSpamToday! (**).
Call to action: Implement not only SMTP authentication in your applications, but also make the SMTP server port configurable. I'm guilty as well.
(*)

(**)

 |
Wednesday, October 05, 2005 |
Seems IE 7 has sniffed me out:

So please do not try to log on here 
 |
Tuesday, October 04, 2005 |
We all laughed heartily today when we heard about Eli's misfortune, which he describes in his blog entry I'm in Redmond. If it weren't for a first-hand account (he was standing in front of us later today, having arrived in the right Redmond), this story would be too crazy to be true.
From the shits and giggles department: Codename "Spang". What the sound of a Buffalo wing hitting a dish can get started... all you need is a couple of crazy Brits, preferably geeks, sitting together for dinner in a steakhouse. All the craziness about this also can serve as a nice lesson to various people who constantly "wave candy in front of a diabetic" so to speak (yes you, the one blogging about the cool stuff only you have access to). Spang also stirred a debate on Channel9 (read).
This site as well as the German community blogs are running on the latest dasBlog release. The upgrade went smooth (to 1.8.5223.0, for the record), however, one upgrade never worked out - the #develop team blog. I always got the message "An error has been encountered while writing to your content folder. Most likely this error is caused by a configuration error on your server. Contact your hosting provider or check your permissions for SiteConfig, content, logs." Except that the permissions were fine.
I spent way too much time back then trying to figure it out, so in the end I gave up. Until today, when I wanted to give it another shot. To start with a sure-fire success, I copied my blog (this one) to the root of the team blog - this worked. Next, I copied a blank dasBlog 1.8 to that location - this worked. Next, I took the custome theme and copied it - whoops, I did it again:

As copying a theme doesn't influence NTFS permissions (normally I'd vouch for that), I had a look at my prime suspect, theme.manifest: <?xml version="1.0" encoding="utf-8" ?> <theme name="laputa" title=laputa" templateDirectory="themes/laputa" imageDirectory="themes/laputa" />
Guess what - I made a mistake. The title attribute had a missing quotation mark. Hadn't I taken this rigid process of adding one item at a time, I would have spent hours in vein again... thanks to a well-meaning but rather misleading error message.
 |
Monday, October 03, 2005 |
At the MVP Summit, the EMEA / LATAM ASP.NET MVPs were partnering to prepare feedback for the team (any more information and I have to shoot you, or shoot your lawyer if you prefer). We were having a jolly good time (we all agreed to spend money on beer and... but that's another story). At that point I suggested that we (book authors, bloggers, article authors, et al) should slap a mandatory warning on our sample code / application: "Not built to scale."
However, in the German community we have an application built to scale: CodeFairway.NET. I wrote an overview article, now Alex followed up with an in-depth look at the features, architecture and techniques of CFW. Read Code Behind: CodeFairway.NET.
 |
Sunday, October 02, 2005 |
The MVP Summit 2005 is over, and with the exception of Transportationgate, it was a great event - even though I had attended PDC05, and worked with Whidbey for years now. I don't primarily come for the news, but talking to other MVPs as well as product group members.
On the community side of things, Alex and I put the finishing touches on the localization feature of CodeFairway.NET, which now includes the ability to play a tournament in a specific timezone.
You don't know what CodeFairway.NET means? Let me introduce .NET Golf to you:

Now, that is intentionally a graphic, to show that sites made by programmers for programmers need not be ugly but can be quite appealing. Here goes the text for easier reading:
"What is .NET Golf?" How did the union of a programming technology and a lawn sport come about? Well, the idea is simple and fascinating: in 'classical golf' the winner is the player using the least number of strokes to hole out. We transferred this concept to programming: whoever needs the fewest number of characters to solve a given programming problem wins the tournament. Speed and elegance of the solution are not criteria.
Each tournament extends over a given time span, after the end of the tournament we hold 'post mortems', i.e. the participants explain their solutions (so that there may be a great wailing and gnashing of teeth behooving the creative abuse of the technology).
.NET Golf is the successor of ASP Golf which was quite popular among German language developers for a long time (the actual ancestor of code golf is Perl Golf). As many golfers switched over to .NET, we decided to migrate this waste of time ^H^H^H^H^H^H^H^H^H^H^H^H^Hmost excellent use of technology to .NET so that the envelope of programming could continually be pushed further.
Sounds interesting, doesn't it? That's what we thought and that's why we ran a tournament at the MVP summit (all English, you can browse it to learn more) to introduce other MVPs to .NET Golf - and whet their appetite to be the host for .NET Golf in their community. If you didn't get a chance to talk to me at the summit, here's what we (German community members, so that there are no misunderstandings) offer: we host the site for you on CodeFairway.NET, and we provide you with the automated test system we have created so that there is little to no overhead for you. Your job: translate the site into your community's native language, and come up with challenges (we can help get you started). My MSN account to get in touch with me: christoph dot wille at alphasierrapapa dot com (also my email alias if you prefer emailing me upfront).
Funny enough at the MVP summit, for the very first time in history of our tournaments, the VB.NET golfers won the tournament hands down. That might have changed if only Karsten and the others would have paid more attention to the sessions 
The leaderboard for the first three looked like this (and yes, the Show link does show the source of the submission - check it out):

It took them quite a while to get on the green, but as with every other tournament I heard something like this: "I only wanted to play till 11:30PM, but at 1:30AM I finally coaxed me to go to bed". Addictive. Even for a simple challenge such as the one played at the MVP Summit:
How can you tell whether three lines of a given length make up a triangle? Some cases are obivious - equilateral triangles, isosceles triangles and triangles governed by the Pythagorean theorem. General triangles are a different matter though. You are now challenged to decide whether a given set of three integers represents the sides of a triangle and indicate this by passing back true, otherwise passing back false to the test application. Please note that "flat" triangles (triangles which have the shorter sides add up to the length of the longer side) do not count as triangles.
The class name for this challenge is Tee, the method name Off. The values for the three sides are passed as a string (never empty, always three values contained) to the Off method, the values are separated by a single space (eg "300 400 5000" which obviously is not a triangle). The values are non-negative integers.
So if you are interested in being the host for your community, get in touch with me. .NET Golf is very popular: currently, Microsoft Austria is using our German codefairway to play a MSDN Connection tournament. Mario just announced it (English).
 |
Wednesday, September 28, 2005 |
I arrived late yesterday in Seattle after a total flight time of 14 hours. If only Lufthansa were offering a direct connection from Munich. Well. At least another MVP had to endure the same route with me: Christian Wenz.
Learned another lesson about Longhorn yesterday in the hotel: if you have installed ISA client, and are not connected to the network it was configured for, it will balk at being disabled! Only way to straighten this out was uninstalling the firewall software. Guess I will be having some more fun in the next weeks of self-imposed Longhorn testing.
 |
Monday, September 26, 2005 |
Seems that I found another application that more or less breaks entirely on Windows Server Codename Longhorn: SharpReader. It does load the feeds and cache correctly, however, one thing does not work at all - refreshing the feeds. I'd say that this pretty much renders a RSS reader useless. Darn. Especially now that I got everything else up and running, including #develop 2.0 Codename Corsavy Build 510.
Update PEBKAC. I didn't install SP1 for .NET Framework v1.1. Now SharpReader works as expected. Note to self: having a WSUS server up and running for your other boxes really can spoil your Beta experience.
In preparing my laptop for Seattle, I had to copy my SharpReader configuration, which lives in Documents and Settings\<username>\Application Data\SharpReader on my XP box. I did that many times before, however, this was the first time for Longhorn. Again, I was in for a surprise - first, it is now AppData, second, there are two renditions: Local and and Roaming.

I picked the correct one by chance (Roaming, although Administrator is a local account). Seems I have to learn a lot more about Longhorn than I previously thought.
For those of you also going to Seattle, you should read UF's The Lord of the Rings.
 |
Sunday, September 25, 2005 |
I already have one box (the Shuttle XPC) that is running Windows Server Codename Longhorn Build 5219. Because it wasn't all that much of a hassle when compared to Beta 1 of Windows Vista, I decided to set up Longhorn on my laptop - and try to work with that installation for a week, while I am in Seattle for the MVP & AspInsiders summits. Boy did I end up with an installation marathon...
Lessons learned in this Sunday's "don't try this at home kids" department:
- Don't assume that ATI drivers for your IBM X31 will install on Longhorn. They refuse, making for rather crappy UI performance. By the way, on failing, setup suggests to install a VGA driver first.
- None of the network adapters were found - neither the onboard LAN, nor the onboard WLAN. When you peek into Computer Mangement, it is your guess which of the two "Ethernet Controller" is which.
- Don't only update the driver for one, even if it is the LAN one. Your ISA 2004 client installation will mysteriously fail. After installing drivers for all LAN equipement, it just works.
- Minor annoyance: the OS-provided sound driver produces hisses et al. Not too bad, but annoying if you plan to watch loads of Channel 9 movies. Your guess is correct: the vendor-provided driver refuses to install.
- No standby. That sucks royally.
- You learned about that in my previous post - no .NET 1.1 for you by default.
- Installing VS can be so much fun, especially if MSXML 6.0 refuses to install as part of the default install. Doing it separately works so much better. And the "Locate File" dialog for the VM driver irritated me only for the better part of a minute...
- Before installing the Atlas VSIs, you better start VS at least once. Otherwise the Atlas installation will fail. Only mildly interesting.
- Do I need to mention that Virtual PC networking doesn't work? That one didn't change for the better, which will make me dual boot into XP.
On a different note: default installs of 5219 have a blank password for Administrator. And IIS 7 is installed by default, which really baffled me. I'm so trained to enable features after install that at first I was thinking it was not part of the bits I got...

Seen today on Windows Server Codename Longhorn, Build 5219 (the PDC build). At first, I thought Paint.NET was kidding me, but once I checked with Windows Explorer, I knew this was for real. Doh!
 |
Wednesday, September 21, 2005 |
Before PDC, I decided I'd need a new PC for testing purposes - Team System (Beta 3 coming soon), IIS 7.0 on Longhorn Server as well as Windows Vista definitely do run a lot faster when not in VirtualPC. That's what I got myself:

That's a Shuttle XPC SB81P, a Pentium P4 630 (3Ghz, 2MB Cache, FSB800), 2GB of RAM, a 250GB WD SATA HDD and one of my old DVD-RAM drives. Nice setup, and not too expensive either.
 |
Tuesday, September 20, 2005 |
Before heading to PDC, I got my new cell phone - the Sony Ericsson W800i. Hence I didn't have time to put it through the paces, which I then did the past couple of days (how shocking: I never bring my cell phone to the USA). What a difference from the SPV C500! It has great battery lifetime, it starts up really fast compared to the C500, and important functionality is easy to reach.
There are a couple of smart technical choices that I love: for one, the wired headset comes in two parts - one connects to the cellphone and has the mike, the second part connects to the former using a standard stereo jack. Read: I can use my excellent Etymotic ER 6 with it! For phone calls, listening to music (it is after all an MP3 player shipped with a 512MB card in the box) as well as listening to the radio (yep, can do that too, nice touch).
It comes with a USB cable, and it connects to your PC by default as a mass storage device. No need for special software if you want to transfer files - how cool is that? (I already thought about abusing it as a "toolbox" instead of a USB memory stick) If you want to sync with Outlook et al, that is still possible - but you then need software (included). And of course the phone is being charged when connected to USB. Having to install ActiveSync so my C500 would charge annoyed me royally.
The only snag so far: you can use WAV files for ring tones, however, when trying to assign them to individual contacts they are not shown - they are filtered out. For the general ringtone it works fine. Definitely a bug, but not a real issue: Audacity to the rescue I converted the WAV files to MP3.
Finally, the design. My brother's opinion: "schwul" (faggy). I have to agree - white seems to be a real bane since Apple entered the scene of digital lifestyle accessories.
 |
Sunday, September 18, 2005 |
The Seattle Post Intelligencer has the by far best analysis on the "Mono BOF" at the PDC - read it here (Builder UK article for contrast). From the marketing aspect of the BOF refusal to the impact Mono will have to shops that bought into Windows (zilch, that is), those two articles cover all bases.
Especially the one I also like to point out: Mono will always play catch up with .NET (unless the development pace at MS slows down, but there was no such sign at this year's PDC). I had to laugh out loud when the Seattle PI quoted Somasegar as saying that "it's [Mono] a good science experiment that is happening there". And a warning that if it eats into their revenue, they will reconsider their current position. Given that Mono not only implements the ECMA standard, this certainly is an option. Taking further into consideration that MS sure as hell won't risk a class action suit from shareholders growling about lost money because of Mono, this is a threat scenario the Mono project better prepares for.
Before you flame me for the previous paragraph: I am project manager on the open source #develop project, so spare me the FUD blames. Especially if you are IANAL.
 |
Saturday, September 17, 2005 |
The only way for me to not come home with tons of books is to give bookstores a wide berth. This is not an option at a PDC where so many new books are presented, and so many other ones are deeply discounted. Hence the list:
- Threat Modeling We got that book during Monday's Attack and Defense preconference session. Free, of course.
- Coder to Developer That was on my list for a (too) long time.
- Presenting Windows Workflow Foundation I didn't make it to any of the giveaway sessions, so I bought a copy.
- Programming Windows Presentation Foundation I wonder why I couldn't resist <g />
- Visual Studio Tools for Office Since I saw VSTO 2005 for the first time at an event in Redmond this year, I was looking forward to playing with it. Here's my ticket.
- The best of Verity Stob Special thanks to Gary Cornell from Apress for giving me a free copy! A real classic. Shame on you if you don't know Verity Stob, however, about everyone I told about the book so far was like "Verity Who?". You're definitely reading the wrong rags.
- Mastering Windows Server 2003 Affectionately know as "the Minasi", I simply could not pass up on that book on Friday - 42 USD! Compare that to the regular selling price of 55 Euro...
A hopefully luggable list of books...
 |
Friday, September 16, 2005 |
The conference is over, and my brain is full - full of (semi)stupid ideas what I'd like to try with all those new technologies I saw this week. Task #1 for next week is to set up a VPC with Whidbey Beta 2, because I no longer have such an image, but need it for LINQ, Atlas et al. So plenty of good reasons to go back in time.
What did I see today? The obligatory session list:
- Using the .NET Language Integrated Query Framework with Relational Data
- Using the .NET Language Integrated Query Framework with XML Data
- Tips & Tricks: Developing and Testing with Virtual PC
- Windows Presentation Foundation ("Avalon"): Going Under the Hood to Understand the Architecture
The day started with Luca Bolognese's talk on DLINQ (Luca was PM on ObjectSpaces, so it is your guess...). His samples contained a few "references" to James Gosling, and it was a fun session to start with on the last day (whoever came up with deadlock victim had some humor too) Luca weighed in on the top three questions on DLINQ:
- Do you support stored procedures?
- Do you support database xyz?
- How's your performance?
For #1, this is an unqualified yes. For #2, a provider needs to be written. And last but not least: at runtime, you only incur conversion to SQL, and the generation of objects. So no significant hit should be expected.
We got a voucher for the aforementioned today together with disc six of "The Goods". Of course I went to the site to register with the unique PIN - but what did I have to read in the small print? Offer good only to Professional Developers Conference (PDC) 2005 <snip /> registered attendees who are Canadian or US citizens.
You are kidding me, right? First, announce the swag during the keynote. But keep mum on the limitations for us non-Americans! Sure enough I wrote an email to the email address given for questions or concerns. You bet. After JASJARgate, this would be the second annoying thing (I don't mind that the session evaluation drawings are limited to Americans).
Update: According to Euan Garden, this has been addressed.
The day started out with one of those famous spoof videos - this time about a "variation" of Windows error reporting, dubbed WE-SYP (we share your pain). Error reporting tied to a - let's call it - "multimedia" chair. Fun to watch.
Right after that, Bob Muglia showed off what we can expect from Windows Server in the next couple of year. Windows Server 2003 Compute Cluster Solution was demoed together with Excel Services - impressive. TxF (transactional NTFS) wasn't any less exciting, just like the identity solutions - and, of course, IIS 7.0. We got the bits for the latter today.
Sessions I attended today:
- Windows Communications Foundation ("Indigo"): A Deep Dive into Best Practices Using the Windows Communications Foundation
- ASP.NET: Future Directions for Developing Rich Web Applications with Atlas (Part 2)
- ASP.NET: A Sneak Peek at Future Directions in Web Development and Designer Tools
- Windows Vista & "Longhorn" Server: Under the Hood of the Operating System—System Internals and Your Application
- ASP.NET: Deep Dive into the ObjectDataSource Control
The under the hood session for Longhorn server had one interesting tidbit - they aim to require mandatory signing for kernel mode drivers on x64 platforms - bye bye kernel root kits!
Bradley Millington quite overshot his allocated timeslot for the ObjectDataSource control, but he covered interesting areas: filtering and master details, custom sorting and paging, updates inserts deletes as well as transactions and caching. Seeing realistic examples is a welcome change. A good place for you to start: the Advanced Data Scenarios section of the Quickstarts. (Note: those links point to http://beta.asp.net, and I don't think that Whidbey docs will be up and running there forever, given that "Orcas" starts appearing on the horizon).
 |
Thursday, September 15, 2005 |
I had seen it in a Channel 9 video (here), but never actually checked it out. When talking to the AWS (Amazon Web Services) representative @ the PDC expo today, I saw liveplasma again. This is a way cool use of Web services. Map your favorite music or videos - the following screenshot is just one example:

More cool uses of AWS can be found in the Amazon Web Services Blog.
Today's first keynote speaker was Eric Rudder. He unveiled the Expression Suite, which contains Acrylic, Quartz and Sparkle. For the latter, go to Channel 9 and watch this video. Also, the Windows Workflow Foundation saw the light of day during the keynote, as well as (last but not least) VSTA (Visual Studio Tools for Applications). You can learn more about VSTA in this blog post.
Eric was followed by Steven Sinofsky, who focused on Office 12. He demoed SharePoint, InfoPath, the new Access and more. I have to say again what I said previously - this is the first time I'm interested in an Office beta program. Good news is that all PDC attendees are signed up, steak knives being strictly optional <g /> (and even more limited than that phone fiasco from day one, 'nough said).
Now, without further ado(.net), the sessions I attended today:
- Windows Vista: User Account Protection—Securing Your Application with Least Privilege Administration
- The .NET Language Integrated Query Framework: An Overview
- C#: Future Directions in Language Innovation
- ASP.NET: Future Directions for Developing Rich Web Applications with Atlas (Part 1)
Anders Hejlsberg did the LINQ (Language Integrated Query Framework) and C# 3.0 sessions. Highly impressive stuff, and I am looking forward to the DLinq session to learn more about the relational access model. I do like to know what is going on behind the scenes, various OR mappers made me wary. In closing: at least now I know why ObjectSpaces made a rapid disappearance...
 |
Wednesday, September 14, 2005 |
Yesterday, I was reflecting on the PDC's I have attended so far - here is a graphical list:
  
 
and finally this year's:

Wow - my sixth PDC.
 |
Tuesday, September 13, 2005 |
The PDC today officially kicked off with a keynote by Bill Gates. To me, the more interesting parts came later in Jim Allchins keynote: Atlas, Windows Communication Foundation, Windows Presentation Foundation as well as C# 3.0 & LINQ. However, Office 12 does look very promising too. Can't wait to get my hands on that beta (never expected to say that about Office, ever).
In the afternoon, I attended the following breakouts:
- Behind the Scenes of Visual Studio 2005 Team Foundation Server
- Windows Server “Longhorn”: What's New for Developers
- Windows Presentation Foundation ("Avalon"): A Lap around the Windows Presentation Foundation
Looking forward to tomorrow, because Windows Workflow Foundation will be revealed at the keynote (aka general session).
Today was preconference day at the PDC. I opted for Keith Brown's talk Attack and Defense: The Art of Secure Coding. Of course it contained a couple of well-known "friends" such as SQL Injection, but there were other interesting tidbits that made it worthwhile.
Speaking of which, including (four) product demos was a good idea, here is the list of products in order of presentation:
Definitely worth checking out, might save a headache or two when using those tools.
Keith also briefly discussed SDL (Security Development Lifecycle) vs Security Engineering Guidelines. You could also cast that as ideal world (ie lots of cash for security available) vs real world. Therefore: go for patterns & practices stuff to make your projects secure.
 |
Sunday, September 11, 2005 |
If there's one thing I could do without then it is travel, especially when you fly in from Europe. But PDCs have always been worth it - I attended every single one since the ´96 PDC "Building Internet Applications" in SF. Funny enough, I still have the tote bag from that conference, and it made to this years PDC (again, the bag is a frequent traveller in its own respect). The most durable and useful product I ever got from MS <g />. No patches applied so far.
I spent a good portion of the twelve hour flight watching the 2.2 gig Channel 9 videos I brought with me on the plane. It pays off to have two spare batteries for your laptop (did I mention that I really, really like my X31?). I did resist using the Connexion WLAN that was available on this flight. Somebody else couldn't.
Back to PDCs, especially this year's. Originally, I had planned to pay a visit to the Mono user meeting on Tuesday night, however, they scheduled it during the expo hall reception. In a hotel away from the conferene center. Too bad.
 |
Friday, September 09, 2005 |
Although the files for this TechTalk repeat are identical to the TechTalk downloads, I noticed that the download location has been moved. For your convenience, here are the direct download links to the three respective files:
 |
Thursday, August 25, 2005 |
Hot off the press: on 8th of September, I will be doing a rerun of my TechTalk Tools zu erfolgreichen Softwareentwicklung mit .NET (~ Tools for successful software projects in .NET) in Graz at the monthly .NET User Group Styria meeting (sign up here). So if you didn't have a chance to attend my TechTalk in Germany, this is your ticket in Austria.
 |
Thursday, August 18, 2005 |
This is not just a plain announcement of the revamped German MSDN Developer Center - Sicherheit, it also contains some back patting for myself, so be warned.
My part in this relaunch was to go over "Basiswissen: Know How für Einsteiger" (~ Security [1..4]01) and pull together useful content in the security area applicable to developers. The result? A mix of books (some of the very best information still is only available in dead tree rendition), online articles and more. Everything is nicely presented in a box in the middle of the page:

Grundlagen (Foundation), .NET Framework Sicherheit (.NET Fx Security), Web Services (I proposed "Web Services & Distributed Technologies"), ASP.NET and Kryptographie (cryptography, my pet peeve) are the sections that I contributed. Judging from a brief perusal, it seems that mostly only my content is in there. So Michael and Uwe will accept my apologies for me claiming those to be "my" sections.
As a long-time subscriber as well as regular reader of the Bugtraq mailing list, I saw Gregory's post on decrypting MSN Messenger passwords. Because that one really piqued my interest, I immediately headed over to infoGreG and grabbed the source code, put it into a VS.NET 2003 C++ project, fixed a couple of compiler switches, and et voila - it works as advertised!
 |
Tuesday, August 16, 2005 |
 |
Tuesday, August 09, 2005 |
Just minutes ago, I finished my Webcast on Profiling with Visual Studio Team System, which is one in a series of Webcasts for MSDN Connection Service: Visual Studio 2005 Team Systems Beta Experience (MSDN Deutschland). As promised, here is a list of links that prove to be invaluable when navigating the "bits":
That should get you started with profiling. Next week's topic is "The build system of Visual Studio Team System".
 |
Monday, August 08, 2005 |
I finally got around to make a new version of SvnPostCommitHook. For one, it was about time to include Ben's changes, and secondly I wanted to roll a new version onto our Subversion box - it was still running on v1.3. So much for dogfooding...
With that, here is the change log. Note that the last public version was 1.5:
8/8/2005 - 1.7, Changes by Christoph Wille
- LookInfo getter logs when _lookinfo is null
- MailTextOnly & AppendDiffToMail properties added to .config file (text-only currently does not send diffs anyways)
- UU case added to svnlook parser
- Change SvnLookOutputParser.SkipBlanks method to return bool if StringCollection hasMoreLines
5/14/2005 - 1.6, Changes by Ben Lowery, ben AT blowery DOT org
- <pre> blocks for code#
- Updates CSS for new HTML
- Logic for finding CSS updated
- More logging
And here is the usual binary & source code archive: SvnPostCommitHook1.7.zip (420.75 KB)
 |
Sunday, August 07, 2005 |
 |
Wednesday, August 03, 2005 |
Found out about this Webcast on Brian Nantz' blog. This Webcast really is your ticket to skip reading any documentation at all and get productive with OneNote immediately. Only 45 minutes of your time necessary.
 |
Tuesday, August 02, 2005 |
On 12th of August, the Austrian .NET community is hosting a one-day conference on security, targeted at developers (no surprise here). The topics for NCC 2005 A include:
- Threat Modeling
- What's new in .NET 2.0 Security
- What's new in SQL Server 2005 Security
- What's new in Windows Vista Security
Quite a nice line-up I'd say. This event is supported by Microsoft Austria, so attending this event is free, except for your time, but I am sure security does warrant a day of your time! Sign up here
This blog entry confirms my findings from last Thursday - VPC's virtual networking does not work with WinVi. That basically shot down my idea of using Vista as the primary OS on my laptop, aside from the really slow performance and its tendency to hog enormous amounts of memory. I would have put up with the latter two issues, but my VPC images do need network access (Subversion repository access for one).
 |
Sunday, July 31, 2005 |
I spent this weekend in Bad Ischl together with other members of the #develop open source project. This was the first get-together under the "#develop developer days" umbrella, and most of the core team was able to attend the two-and-a-half day event.
Our focus was to talk about #develop 2.0 "Corsavy", feature-set wise as well as hashing out architectural issues not addressed yet. Aside from that, coding was the #1 priority: to tackle a couple of outstanding issues, such as Forms Designer or Refactoring support. Spending time in one room makes communication so much easier when you have to solve tricky issues that span multiple modules in our infrastructure. It definitely paid off to spend this weekend together.
 |
Thursday, July 28, 2005 |
Finished installing WinVi Beta 1 on my IBM X31. It always pays off to have spare partitions when you do OS Beta testing on a regular basis.
IE7 already annoys me - dasBlog (or ASP.NET to be more precise) doesn't know about this browser and thus only presents me we an HTML input box instead of FTB. Well, Firefox will find its way onto this box rather sooner than later anyways.
Vista defaults to a US keyboard on initial startup (surprising, but no showstopper for me). Well, and it didn't find my onboard wireless. This I definitely need to fix, because I want to use it for work.
 |
Tuesday, July 26, 2005 |
The registration for this year's .NET Community Conference in Austria went live today ( register here, it's free). The thread of this years rendition is security: threat modeling, .NET 2.0 security features, SQL Server 2005 security and more. Definitely worth your time, if you have time to spare, join us on 12th of August in Vienna!
Script Callbacks were also part of my "Advanced ASP.NET 2.0" day at the Community Bootcamp 2005 in Bad Ischl. Aside from showing the usual callback sample, I decided that something more useful was in order. That is why I went a tad further by showing off the controls introduced in the RefreshPanel GotDotNet workspace. I came across those a while back when reading articles on Bertrand Le Roy's blog:
Of course we did labs on CallbackProxy and RefreshPanel, the latter one is described in this blog entry (again, a streamlined version of the lab done by Alexander Schoeppl).
Let's start with the result we wanted to achieve:

The render date only acts as a "proof" that no Postback happened, the dropdown control lists all customers in Northwind and is also populated up front. The GridView control, however, is filled using out of band calls. Instead of hacking your own ugly JavaScript, we did that using the RefreshPanel control.
Step 1: Copy RefreshPanel.dll
First, copy RefreshPanel.dll to the \bin directory of your site. You can get it here.
Step 2: Set up a connection string in web.config
We will use that later both in markup and code beside file: <connectionStrings> <add name="NorthwindConnectionString" connectionString="Data Source=cbc05vpc\cbc05;Initial Catalog=Northwind;User=sa;Password=P@ssw0rd"/> </connectionStrings>
Step 3: ShowCustomerOrders.aspx
Basically, "organized" in three sections (separated by a blank line): <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShowCustomerOrders.aspx.cs" Inherits="Show_Customer_Orders" Title="Callback Demo" %> <%@ Register TagPrefix="rp" Namespace="MyControls.RefreshPanel" Assembly="RefreshPanel" %> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> Render Date: <asp:Literal ID="Literal1" runat="server"></asp:Literal> <br /> <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="CustomerID" DataValueField="CustomerID"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [CustomerID] FROM [Customers]"> </asp:SqlDataSource> <rp:RefreshButton ID="MyButton" RefreshPanelID="RFPanel1" runat="server" ClientRefreshArgument="this.form.DropDownList1.options[this.form.DropDownList1.selectedIndex].value" Text="Show Orders"/> <br /> <rp:RefreshPanel runat="server" ID="RFPanel1" OnRefreshing="FillData"> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> </rp:RefreshPanel> </div> </form> </body> </html>
Register imports the RefreshPanel control suite for us, the Label and DropDown are also very straightforward. The RefreshPanel control itself contains a single GridView control, and it is linked to the server-side method FillData which we will examine in the next step. The RefreshButton is responsible for activating the out of band call back to the server - that's also where we get the value from the dropdown control, and pass it as an event argument to FillData.
Note that the control names are hardcoded, in the real world we'd build that string dynamically, because otherwise we'd get into trouble, eg with master pages.
Step 4: ShowCustomerOrders.aspx.cs
Page_Load is trivial, we are only interested in FillData:
public void FillData(object sender, RefreshingEventArgs e) { string connectionString = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ToString();
string sqlCmd = "Select * from Orders where customerID = @CustomerID";
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(sqlCmd, conn); cmd.Parameters.AddWithValue("@CustomerID", (string)e.EventArgument);
conn.Open(); SqlDataReader reader = cmd.ExecuteReader();
GridView1.DataSource = reader; GridView1.DataBind(); reader.Close(); conn.Close(); }
No magic in our code, but: RefreshPanel takes care of giving us a GridView control to work with, and shipping the resulting HTML to the client - and inserting it into the page. Very, very neat indeed.
CallbackDemo.zip (43.51 KB)
Via Virtual PC Guy's WebLog: New WinImage Beta with support for editing VHD's. Now that is not only way cool but actually extremely useful if you need that one important file from a virtual machine - now, and not wanting to wait for the vm to start up and then do the copy operation.
 |
Monday, July 11, 2005 |
Mark Russinovich (his blog is highly recommended) commented on that book during one of his TechEd Europe talks. The book is written (including) by the guy running rootkit.com, famous for the Hacker Defender rootkit for Windows. Looks like there's yet another book to be added to my backlog for reading this summer <g />.
And it works just fine (here you can get one for yourself):

 |
Friday, July 08, 2005 |
I'm sitting right now in that session. The speaker is just demoing yet another example which has a SQL Injection vulnerability! The killer: a script callback that uses the params unvetted to dynamically build a SQL string. MS definitely should vet the demos for security problems.
 |
Sunday, June 26, 2005 |
 |
Friday, June 24, 2005 |
Just registered for PDC05. I will be in LA Sun-Sun, and attending the black belt security preconference session on Monday, which I consider a must - especially given that Michael Howard is one of the presenters.
If you are wondering why there's so little activity on this blog recently: I'm still touring Germany with my Techtalk. The last three legs are next week, and then I am almost on the plane to Amsterdam for TechEd Europe...
 |
Tuesday, May 24, 2005 |
Dino Esposito has posted code updates here for his book Introduction to ASP.NET 2.0. I was tech editor on this book, so I definitely recommend getting the book (and no, I don't get anything for this shameless plug).
 |
Friday, May 20, 2005 |
Next week I will be attending a four day Whidbey training on campus with focus on Visual Studio Team System. Not exactly looking forward to yet another long flight though.
Inhaltsverantwortlich für das Blog http://chrison.net ist:
Christoph Wille Vordernbergerstrasse 27/8 A-8700 Leoben Österreich Tel: +43 699 19675231 Gerichtsstand: Leoben christophw AT alphasierrapapa.com
© 2004-2007 Christoph Wille Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Imprint as required by Austrian media law.
 |
Wednesday, May 18, 2005 |
When I first saw the Toshiba Tecra M4 convertible tablet, I wanted it. Back then, I checked out the prices at Toshiba Direct, and they were reasonable. Now I saw the European prices in c't magazine. I didn't believe what I saw and made a comparison with an equally configured system at Toshiba Direct - 2500 USD compared to 3500 Euro! Are you nuts, Toshiba? Do you think we Europeans like to be ripped off? (Apple seems to think the same) You just lost a couple of customers that were waiting for this tablet.
 |
Sunday, May 15, 2005 |
 |
Friday, May 06, 2005 |
Tomorrow, this year's Giro will kick off with a time trial in Reggio Calabria. This officially marks the start of every year's TV marathon that runs from Giro d'Italia to the Vuelta a España.
 |
Monday, May 02, 2005 |
For quite some time I own an Arctic Cooling T2 case and really enjoy the new-found silence when working with my computer. However, this silence has been disturbed by my recent acquisition of a Matrox P750 (see Finally) and this little screamer here:

It took exactly half an hour to decide that the noise level is unbearable, so I got myself a Zalman ZM-80D-HP:

I read on a forum that with the P750, There is one slight problem, though, and I am wondering whether this is normal. Instead of everything lining up nicely, so that the heatsinks are all square with the board itself, they are slanted somewhat (I would guess 10 degrees maybe).
Turned out that this is true, thanks to some screwy decision by Matrox to not place the heatsink holes where they are supposed to be:

That way, the whole construction looks weird at best (no, I haven't been drinking while composing this monstrosity), although it is fully functional:

Fully functional meaning "Ah, the silence is back!"
 |
Thursday, April 28, 2005 |
You can now download the latest and greatest release of #develop. It features NAnt integration, Help 2.0 support, great XML editing experience, PInvoke import lookup, #report, Web References and more. Some of the cool stuff can be watched as feature videos.
I'll be off to Vienna tomorrow for the regional get-together. Camera is charging right next to me...
I couldn't resist any longer, I had to upgrade from two to three monitors on my desk:

 |
Tuesday, April 26, 2005 |
After owning the ER6 isolator earphones for some time now, I decided to get myself Etymotic's mobile phone headset too. Wow! That is quite a change from the various headsets I have owned so far (including the Logitech Mobile Freedom Bluetooth headset).
Where do you get Etymotic products in Europe? The shop I found is 4YourEars. Good prices, quick shipping.
 |
Monday, April 18, 2005 |
The following dates and locations have been announced for my TechTalk Tools zur erfolgreichen Softwareentwicklung mit .NET:
06.06. Karlsruhe 07.06. Stuttgart 08.06. München 09.06. Nürnberg 14.06. Dresden 15.06. Hannover 16.06. Berlin 20.06. Frankfurt a.M. 21.06. Düsseldorf 22.06. Bremen
See you!
 |
Thursday, April 14, 2005 |
From the "shameless self-promotion departement": we just pushed 1.1PR out the door. You can read the detailed announcement here. It has a bunch of cool new features, now we enter the stablization and polishing phase. Shouldn't take too long to follow it up with a Beta.
 |
Tuesday, April 12, 2005 |
From the Windows Media home page, you can download the Windows Media Encoder 9 Series. This nice little encoder application isn't only limited to post-processing (very nice indeed in this area), but can also do live-broadcasting as well as screen recording.
Narrated screen recordings are sometimes simply more useful than written step-by-step instructions (even if "littered" with screenshots). That's why I recorded a quick (non-scripted, you will be able to tell) how to set up Windows Media Encoder for screen recording.
HowToScreenRecording.wmv (1.88 MB)
 |
Friday, April 08, 2005 |
 |
Thursday, March 31, 2005 |
The TechTalk I will be doing in June has been announced on the msdn TechTalk developer portal (German). Locations and dates are yet to be announced, thus no registration so far. The topic will be "Tools for successful software projects in .NET".
 |
Sunday, March 20, 2005 |
Last week, it was time for a well-deserved skiing vacation [vacation, defined: no computer (and related stuff like books), no radio, no television, and of course no Internet cafe]. As always [always, defined: nineteen times], this Austrian's winter destination is France - 3 Vallees, Meribel, Mottaret.
The heading of this post is motivated by the weather situtation we encountered, which can be described only as le ciel bleu. After six days of skiing we decided to call it a day (so to speak) and head home a day early (a good decision as it turned out on Saturday, which totalled 100+km of traffic standstill in Austria thanks to Easter holidays) - no one any longer able to put up with the prospect of yet another day of sun and blue sky. 71,000 (alti)meters downhill is sufficient anyways.
And now for some photos to prove my point:

Left-hand side: Verdon and Vizelle gondolalifts.

Mont de la Challe.

Saulire, looking in the direction of Mont de la Chambre and 3 Marches.
 |
Saturday, March 05, 2005 |
After dinner yesterday, we decided to go to B&N which happened to be nearby. Well, I left with two more books to read: The .NET Developer's Guide to Windows Security and Open Source .NET Development: Programming with NAnt, NUnit, NDoc, and More. The former is by Keith Brown, and contains all those things you usually don't find C# samples for easily: for example, to how to modify ACLs - and much, much more.
The second one (by Brian Nantz) on OS tools for .NET development will be a reference for me on the various tools that we do use today, as well as others that we are likely to evaluate. It also contains a brief section (roughly a page) on #develop, which I happen to be the PM for. I would like to set the record straight on a couple of things though:
- #ziplib is only used to zip the help index XML files
- #cvslib hasn't been a part of the distribution for a couple of years now. However, it played an extremely vital role in #develop's gestation: the GUI for #cvslib was a prototype for the addin system we later used in #develop.
- Magic Library - in May last year (Fidalgo Beta 1), it was entirely replaced by the DockPanel Suite. Before that, we already had replaced portions of the Magic widgets with Lutz' CommandBar for .NET.
 |
Friday, March 04, 2005 |
Thursday afternoon, we (Bill, Carsten, Chris, Colin, Eric, Jagadish and me) went to Building 7. I decided to post one foto only - the sign will tip you off what happened inside.

 |
Tuesday, March 01, 2005 |
Note to self: need to install SP1 for ISA 2004. From the download page:
ISA Server 2004 Standard Edition SP1 can be installed directly on computers running ISA Server 2004 Standard edition, and includes:
- All software updates issued since ISA Server was released to manufacturing.
- Fixes for common issues reported by customers through Microsoft Product Support Services (PSS).
- Enhanced stability of the ISA Server services and administration tool in a number of scenarios.
Also check out the readme.
 |
Friday, February 25, 2005 |
In the "note to self" category I'm entering today a link to the online version of the fourth edition of The American Heritage® Dictionary of the English Language: Over 90,000 entries feature 10,000 new words and senses, 70,000 audio word pronunciations, 900 full-page color illustrations, language notes and word-root appendixes.
NNNNNOOOOooooo......! reminded me of one thing I still needed to do to speed up XP on my new notebook: regsvr32 /u zipfldr.dll.
 |
Wednesday, February 23, 2005 |
 |
Wednesday, February 09, 2005 |
In my spare time (ok, some might argue about my definition of "spare time") I run the German ASP and .NET mailing lists, and my official title there is Bastard Listmaster from Hell (BLfH for short; me and my assistant have a German-language blog too).
That's not quite the point though. Both the assistant and himself are also tester on the #develop project, which led to the usual team Ts. Those were available for quite some time, but the shop language was German - but now Spreadshirt enabled us to switch to English, and the BLfH shop is now open for international business. Next task: add a cool T-shirt for .NET Golf. Oh, btw, a new hole starts today at 4pm CET, German-speaking programmers welcome!
 |
Saturday, February 05, 2005 |
The past three days I attended the ASP / vs2005 conferences in Munich
as a speaker (not including today of course, which was spent in
sunshine on the slopes of the ski resort Dachstein West, gorgeous
powder included after the snowfalls of last week). As advertised, my
talks were about (near) future technologies: ASP.NET 2.0 Master Pages
& Themes, ASP.NET 2.0 Membership & Security as well as a crash
dive of VSTS Team Developer, with demo focus on Unit Testing, TDD, Code
Coverage as well as Profiling.
I brought back a couple of fotos, the first two are (of course) self promotion - myself in talk #1 and #2.
Thursday evening the speakers were invited to a "VIP Dinner", and I couldn't
resist to test my SPV C500 camera in low-light conditions. It did fare
fairly well if subjects did not move.
Al & Dave
Hannes Preishuber, the conference chair
Christian Wenz, co-speaker and doubling as Peter's and mine taxi back to the hotel
 |
Sunday, January 30, 2005 |
This year's community wintercamp is over - we had two great days
spanning three days. Included here are only two photos - one from
Friday's evening "Bratl in der Rein" in the restaurant Moststadl in
Ebensee, and the second one from Saturday's skiing in the Dachstein
West resort.

 |
Thursday, January 27, 2005 |
The Webcast ".NET development for free with #develop" which I announced recently is already available for download (it is still German though). Those who missed it, go get it.
 |
Tuesday, January 25, 2005 |
Installed the latest version of X1 Desktop Search today. Why ain't I using one of the free desktop search offerings you ask? I need support for Eudora Mail as well as Mozilla, not just Outlook as offered by the freebies. And the preview pane just rocks.
 |
Thursday, January 13, 2005 |
Remember me complaining about InCD and how it gobbles up memory so you cannot use more than 1GB of physical memory with VirtualPC? Well, sometime in December I threw v4.3.0.5 off my machine to finally be able to use the full 2GB. Today I decided to risk a reboot or two to give v4.3.11.1 a shot - and Jehova! the new version works as expected. No more out of memory issues! Using InCD? Get the latest version here.
 |
Wednesday, January 12, 2005 |
It feels good to be no longer grounded by the doctor, especially because this means that my Webcast next week is no longer in danger of being cancelled: ".NET development for free with #develop" (MSDN: .NET-Entwicklung zum Nulltarif mit SharpDevelop is the orginial title, because this Webcast is in German). I will be talking about what cool things you can do with #develop, how it was built, and what the future holds for this free (cost-wise et al) lightweight development environment. Join Uwe and me on Monday 17th @ 4pm (understanding German being a rather big bonus).
 |
Wednesday, January 05, 2005 |
A friend of mine asked me today "Do you know a software / service to (centrally) maintain bookmarks across browsers and machines?". No, I didn't, but I went straight to Sourceforge and did a search which turned up SiteBar (the marchitecture name is ":: SiteBar :: The Bookmark Server for Personal and Team Use", but you already know that from the title). Of course I took them up on the "test on public servers" offer, and here are screenshots for both Firefox and Internet Explorer:

SiteBar for Firefox is an extension, the IE screenshot only shows the "quick & dirty" solution, not the fully integrated one (hey, I don't use IE that much any more, so why bother?). So far, SiteBar looks very promising. Oh, and btw unless you already guessed it from the marchitecture name: you can set up your own SiteBar server in your company!
I simply couldn't resist: Yes, I am again|still MVP for Visual Developer - ASP/ASP.NET. Admittedly, this doesn't quite reflect on this blog for a couple of reasons, the main one being that my MVP-worthyness stems from the time I do (bad pun intended) on German mailing lists and Web sites (see "Deutsche Resourcen" in the left-hand navigation bar to get an idea). In other news, I of course don't do community because of the award - it is a really nice recognition of my work on part of MS, and there of course is one benefit of the MVP award that stands out: getting access to other community people around the globe as well as MS product teams, which allows me to get better information to my communities.
 |
Monday, January 03, 2005 |
I'm not a CS student nor trying to give advice to CS students, but Joel's article Advice for Computer Science College Students has some bits and pieces that are close to my heart. The section I am refering to here is Learn how to write before graduating. A quote is in order:
"The difference between a tolerable programmer and a great programmer is not how many programming languages they know, and it's not whether they prefer Python or Java. It's whether they can communicate their ideas. By persuading other people, they get leverage. By writing clear comments and technical specs, they let other programmers understand their code, which means other programmers can use and work with their code instead of rewriting it. Absent this, their code is worthless. By writing clear technical documentation for end users, they allow people to figure out what their code is supposed to do, which is the only way those users can see the value in their code. There's a lot of wonderful, useful code buried on sourceforge somewhere that nobody uses because it was created by programmers who don't write very well (or don't write at all), and so nobody knows what they've done and their brilliant code languishes."
I am inclined to say "Amen!"
 |
Tuesday, December 28, 2004 |
My "USB BOfH Stick" now has a few new additions - Portable Firefox and Portable Thunderbird (Portable Sunbird didn't make it). Those are USB stick-optimized versions of the respective desktop versions, especially well-received on my end is the optimization to extend the stick's live (Flash memory does indeed have a limited life when it comes to the number of r/w operations).
 |
Monday, December 27, 2004 |
The article U.S. leads the dirty dozen spammers shows that the US has a comfortable lead when it comes to sending out spam. This indigestible rendition of Hormel's rightly famous SPAM is my favorite least favorite topic because I manage two mail servers, one of which serves mailing lists for the German .NET community. The time spent administering (because of spam) could be better spent helping my colleagues on the lists... kismet.
 |
Friday, December 10, 2004 |
I’m one of those next-cool-thing addicts that can’t resist to play with the latest most unstable Whidbey CTP coming out of Redmond. One of the red-hot things is generics that will be included with C#^H^H the CLR v2.0. This intentional blunder is the central point of this editorial - clearing up misconceptions about generics.
When reading postings or talking to fellow early .NET 2.0 adopters you come to categorize those into the following distinct groups:
- The C++ developers
- The Non-C#, Non-VB.NET, Non-Managed C++ developer
- The Java developer (yes, I know…)
- Generics, huh?
Let’s start out with the die-hard C++ programmer, a guy who really is in love with the templating system in C++ (when referring to C++ I really mean the unmanaged C++ world). This is the most vocal among the four groups, and they’ll be very forthcoming in telling you how much better C++ templates are than generics in C#. I hate to break the news to them, but generics are intentionally different: firstly, and most importantly, C++ templates are compile time only, whereas generics are compile as well as runtime. Anders Hejlsberg did a great job of explaining that in [1], and the C# team has a FAQ online on this topic too [2].
Secondly, the being different goal also extends to simplicity of use. Do you remember yourself screaming bloody murder when C# came along with single inheritance? Right. How many people did and do care in real life? See. Same here in generics-land: certain power has been stripped from you because it would tip the balance from easy to use to intimidating and overly complicated. That’s why constraints don’t cover the whole complexity spectrum and don’t allow operator constraining and the like, such as non-default constructor constraints. Oh, you can fake operator constraints if you really, really care with the approach detailed in [1] and [3], but admittedly this won’t solve the problems for intrinsic types.
Speaking of operator constraints constraints (couldn’t resist), a general misconception in the C++ camp is that everything they are used to should be just as dangerous – pardon me, powerful – in other implementations. C++ templates allow you to do what you damn well please, but generics don’t – that very type checking is the one thing to single out that rid us of AVs, remember?
The Non-C#, Non-VB.NET, Non-Managed C++ developer. So who are they? Try one of 30+ (don’t quote me on the actual figure) other programming languages that follow the CLS (Common Language Specification) and produce code that can run on the CLR. It is rather similar if not exactly the same as with Edit and Continue support – “me too!” is heard all around the globe. So, do they get generics? Depends. Because of the many programming languages that exist for .NET, Microsoft decided to not put generics in the CLS. So it is entirely up to the language vendor in 2.0 to support generics or not.
Has the C#/VB.NET developer any beef with that? You bet. If you write a framework that has to be used in other programming languages, that framework has to be CLS compliant (“should be” is too soft in my view). And this means you cannot use generics on the public interfaces if you want to mark your assembly with the CLSCompliant attribute. The Non-CLS compliance of generics is pointed out in [4] and [5], with hints that generics will find their way into the Common Language Specification in the Orcas / Longhorn timeframe.
The Java developer. Now, how do they fit into the picture of the early adopter of .NET 2.0? I’m sure one thing .NET developers will hear a lot is that “Java had generics long before .NET.” Not so fast, Scotty. Just like there are differences between C++ templates and .NET generics, there are differences between Java generics and their counterparts in .NET. Once again, Anders Hejlsberg did a great job in [1] of explaining what is different: for one, .NET generics are actually typed, which means no boxing for value types (a very good thing!). Secondly, .NET generics are runtime too, not just compile time – you can reflect on generics in .NET, you can’t do that in Java. The lowdown: generics in Java spare you the task of casting, but that’s about it.
Finally, the group “Generics, huh?” Those are developers who for example still have the misconception that generics are a C#-only feature, like many programmers using 1.0 initially thought that features offered by the CLR were actually C# features. Let’s chalk that one up to miscommunication, but a repeated one.
You know that generics (will) exist, but have no clear idea what they are intended to be used for? I’d like to quote Anders Hejlsberg: “Generics is essentially the ability to have type parameters on your type.”[1] D’accord? Really simple but really powerful.
You know what generics are (if not, please see the previous paragraph), but have no idea what to use them for? If you are like one of my friends “I’m not in the business of writing frameworks, and the .NET framework already has generic collections, so what use are generics to me?”, rest assured that there are plenty of other non-class uses: generic methods (data access, anyone?) and generic delegates (in an instant makes callbacks that much more fun). Did you know about those two generics use cases?
To conclude this editorial, I’d like to firmly state that generics are positioned somewhere between being “just a fancy way of replacing typed collections” and the all-too-powerful for shooting yourself in the foot C++ templates. Well designed, tightly integrated in the CLR, the right dose of power – with one problem: too many different views of what generics are, what they are intended for, and what they can be used for. I for one am confident that they will be useful to programmers – yes, useful – nothing more, nothing less.
[1] Generics in C#, Java, and C++ http://www.artima.com/intv/generics.html
[2] How do C# generics compare to C++ templates? http://blogs.msdn.com/csharpfaq/archive/2004/03/12/88913.aspx
[3] Generics Algorithms http://blogs.msdn.com/ericgu/archive/2003/11/14/52852.aspx
[4] Dan Fernandez's Blog - Quick information on Generics http://blogs.msdn.com/danielfe/archive/2004/06/21/161962.aspx
[5] Q&A with VJ# and C# Team on Generics http://www.thedatafarm.com/blog/CommentView.aspx?guid=a71779f2-7a6a-4df1-81d4-3ccaa2f18cff
[6] An introduction to Generics http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/csharp_generics.asp
Bootnote: This blog entry originallly was intended to be an editoral, however, an editorial is an opinion piece, and the publisher wanted a different opinion. This is why the text is now in my blog where you can read (and flame) it freely.
 |
Wednesday, December 08, 2004 |
Busy day in open source land for me - after releasing a .NET USB library earlier today, we now finally were able to release the book "Dissecting a C# Application - Inside SharpDevelop" as a free ebook! More than 500 pages of information (architecture and code) on a real-world application written entirely in C#.
The book was originally published (January 2003) by Wrox Press, which went under shortly after the book's release. With all three original authors (Christian Holm, Mike Krüger, Bernhard Spuida) agreeing, I worked with Gary Cornell from Apress to release the book to the general public for free - and I am more than happy to announce this event today! Thanks Gary, you have been really, really forthcoming - and wow, we made it happen before Christmas.
September 13 – 16, 2005 with Pre-conferences September 11 and 12 in the Los Angeles Convention Center, Los Angeles, CA. PDC 2005 Site
Today we released yet another open source project: #usblib (SharpUSBLib). The history for this project is quite similar to many other OS projects ("scratching an itch"): Mike built a terrarium for his soon-to-be-delivered chameleon, and he wanted to manage the ligthing using a USB-controlled power switch. Not having found a suitable USB library for .NET, he decided to write one himself.
The library is used for low level access to USB devices, and it works under WIN32/.NET and Linux/Mono. Documentation can be found in the wiki, a support forum also exists. The download includes source code for this dual-licensed (GPL and LGPL) library.
 |
Thursday, December 02, 2004 |
 |
Thursday, November 11, 2004 |
What would you think if you get this error message: "The virtual machine could not be restored because there was not enough memory available on the host" (Commit Charge Total 628MB / 3433MB in Task Manager, roughly 1.5GB still freely available).
Of course, you blame Microsoft, because after all it is VirtualPC that gives you this error message. No, not this time. It is Ahead's Nero InCD (even in its most current version 4.3.0.5) which I need for my DVD RAM drive. Following the VPC FAQ entry and disabling (Task Manager / End Process) both InCD processes makes VirtualPC work like a charm. Now, what did Ahead do in InCD to make a system with > 1GB act up like that? I'd like to hear why.
 |
Tuesday, November 09, 2004 |
You don't know the IOCCC (IO Triple-C, International Obfuscated C Code Contest)? The following goals are set forth for the contest:
- To write the most Obscure/Obfuscated C program under the rules below.
- To show the importance of programming style, in an ironic way.
- To stress C compilers with unusual code.
- To illustrate some of the subtleties of the C language.
- To provide a safe forum for poor C code.

As I started my Windows programming career on C (ah, message loop!), I'm still an aficionado of this contest. And you'll be too once you come to appreciate the elegance of this year's winning entries.
 |
Wednesday, October 27, 2004 |
Bijan Javidi, Senior Principal Consultant at Microsoft, held a two-day Trainer the Trainer (TTT) event in Augsburg for the GLS Development Process Best Practice training. In the audience: Alexander Zeitler, Peter Koen (soon to be Softie), Bernhard Spuida, Hannes Preishuber, Achim Oellers and others (no specific order, just to name a few).
As rehashing the entire two days would be a tad lengthy, I only pick two items that are important to understand why anyone would attend such a training:
- Why Development Process?
- Definition of Development Process Best Practice
Let's start with "Why Development Process?"
- Make development
- Predictable
- Repeatable
- Manageable
- Reduce costs
- Streamline application construction
- Establish standards
- Reduces risk in .NET projects
After those incentives to have a process at all, let's dig into what DPBP is - here is the definition:
- Process based development methodology
- Ultra light-weight, pragmatic and prescriptive
- End-2-end development process model
- From requirements to deployment
- Minimum set of documents
- Small number compared to UP
- Step-by-step guideline
- How to create these documents
- Uses Office and Visio formats (UML)
- DOC, XLS, and VSD templates
- DPBP is agile
- Leverages many XP features
- End of prose text in development process
- Minimizes text
- Uses structured information
- Lazy modeling
- Model only if you have to
- Architecture metaphor (XP)
- Uses minimum of everything to do the job
Bascically we are talking initialization, analysis, design, implementation and deployment. And that was then the contents of the two-day workshop in Augsburg.
Networking was commenced at the evening event on Monday, in the Welser Kuche with a medieval meal:

Want see more fotos? Look no further (German titles and description though)
 |
Saturday, October 23, 2004 |
This week Microsoft invited quite a few community influencers (I totally hate it when someone uses the term "community leader") to meet in Barcelona (Spain, Europe - just in case).
 |
Got my Channel 9 guy at the Connect Event (more on this later with photos once I have managed to shrink my backlog) in Barcelona this week from Lenn Pryor. This photo will serve as a reminder that I have to get myself a Bluetooth headset for my shiny new C500. |
 |
Monday, October 18, 2004 |
 |
It has been a rather long wait for this SPV C500 Developer Edition. However, got it up and running in next to no time (maybe reading manuals does help after all); but I won't have too much time to tinker with it this week - I'm heading to the Connect event in Barcelona tomorrow morning.
You can rest assured that some kind of self-crafted SmartPhone .NET application source code will tip up on this blog once I have accustomed myself with CF programming on the 'fone' (sooner than later). |
 |
Wednesday, October 13, 2004 |
Good to see that Virtual PC 2004 Service Pack 1 is finally available for download. It includes performance improvements for XP SP2 machines (!) as well as fixes - check out the readme for details.
 |
Thursday, September 23, 2004 |
 |
Wednesday, September 22, 2004 |
 |
Monday, September 20, 2004 |
Finally got the upgrade to 2GB of memory for my developer workstation. If you had told me ten years ago that I'd have more main memory today than I had harddisk space back then, well... hey, we didn't have to test VS.NET Team System back then!
 |
Tuesday, September 14, 2004 |
On a more or less regular basis I screen the results that pop up when I google for my name. This brings back memories of the bad old times of IIS:
Microsoft Active Server Pages IIS server hole (7/20/1997)
::$DATA IIS ISAPI filter (7/2/1998, fix site pulled)
Reminds me of my favorite - writing ISAPI filters in C++. However, as those two incidents have proven: even C++ can be put to good use <g />.
 |
Saturday, September 11, 2004 |
Finally. At long last. It took us four years to lay a solid foundation for #develop's future as a great Integrated Development environment. During that time I worked as the project's senior project wrangler: trust me, steering (open source) developers with their egos makes herding cats look like an easy challenge.
I have to admit that I learned a lot, which after all was the initial idea of joining the project. Managing, architecting, building and testing a project that has a few kLOC of C# code under its belly is a challenge when you have a distributed team - at least the core team was able to meet a few times. I'm proud that it worked out so well.
Read the announcement for 1.0
 |
Wednesday, September 08, 2004 |
The Platform Lab (Building 20) is where product teams meet customers (heck, I was there just recently, and yes, it was the ASP.NET team hosting the event). In this Channel 9 video (download), Scott Guthrie takes you on a tour of the building.

 |
Tuesday, August 17, 2004 |
Finally got my hands on Dino Esposito's book Introducing Microsoft ASP.NET 2.0. The term "finally" has a special meaning for me: I was the technical editor on this book, and quite a lot of work went into this book project, because writing such a book isn't done in a day, and ASP.NET 2.0 was/is a moving target. So even with the most stringent editing, there inevitably will be some "mistakes" caused by changes.
In the Acknowledgements, Dino writes "Christoph Wille, who reviewed the contents from a technical perspective, was one of the most attentive and insightful reviewers I have ever had (and I have written quite a few books)." He has a gift for words - a royal pain in the posterior would be the tagline I'd choose for myself.
 |
Monday, August 16, 2004 |
 |
Wednesday, August 04, 2004 |
I just stumbled across a backup of an old Web site, dating back to 1996. Back then I already had a personal homepage where I posted programming tricks. So if you are interested in a weird COM / MFC trick, read on...
 |
Wednesday, July 28, 2004 |
There is a great article on linux.com (you didn't expect such a link here, did you?) titled SysAdmin to SysAdmin: It's the documentation, stupid! It is about a topic that is close to my heart: developers don't like writing documentation, and keep telling you (user) that the source is the documentation - which I couldn't agree with less, even if I am a programmer-user.
Now though this article is targetted at Open Source projects, you will agree that you too have seen less-than-stellar documented projects in companies (even yours), or you had to work with third party software whose documentation left to be desired. How did you feel when you had to find out how to achieve a task? Right.
Having this said, I'd like to offer a great starting point for writing technical documentation: quite some time ago, Bernd (de) wrote an article titled Technical Writing Made Easier, specifically targetted at programmers. Check it out.
 |
Monday, July 19, 2004 |
With regards to my previous blog post Disagreements gone too far, I can say that the FSF's answers have put the discussion to rest and it looks like everybody can live with it. Note to self: do not discuss flame-worthy issues like licensing in public where lots of trolls and not-so-innocent bystanders make it impossible to have a fact-based discussion. Limit to main actors, go public with results - this is they way to go.
On a different note: when a manager asks you how OSS projects / vendors make money, point them to the article Seven open source business strategies for competitive advantage from the IT Manager's Journal.
 |
Friday, July 16, 2004 |
I already mentioned that in my spare I double as project lead on the free software project #develop. Recently, a licensing issue came up between the #develop and MonoDevelop teams. Because we couldn't agree, the #develop team decided to ask the FSF for clarification (read the PDF, it contains links to the actual discussion threads).
We thought that, ok, let's wait what the FSF has to say, and we'll submit to whatever they decide in this matter. Todd Berman, MD lead, however decided to go frontal. This I had to rebuke, and make public because it is potentially damaging for my company.
Godwin's Law
 |
Thursday, June 24, 2004 |
public class MereMortalProgrammer { }
public class Expert : MereMortalProgrammer { }
public class Blog { public void DailyWork() { Expert e = this.Pose() as Expert; }
public MereMortalProgrammer Pose() { return new Expert(); } }
© Copyright 2010 Christoph Wille
newtelligence dasBlog 2.3.9074.18820  |
|