<2004 December>

On this page...



Member of...

ASP Insiders

MVP Visual Developer ASP/ASP.NET

Enter CodeZone

Blog Categories



Deutsche Resourcen


Sign In

#  Monday, 27 December 2004

This can be pretty useful to get an idea which open source projects are available, and today I did it (again) for C#. Of course you will see the usual suspects (NUnit, NAnt, RSS Bandit, NHibernate and a lot of others), as well as ones you haven't yet heard of, such as dotLucene (I knew of the Java one) or Report.NET. And on occasion you stumble upon something really wacky, such as Pr0nspider, which is a multithreaded sample for the WebSpider library... this sample definitely drives home the concept!

Categories: .NET | C# | Use the source Luke
Monday, 27 December 2004 09:29:19 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


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.

Categories: Newsbites | this
Monday, 27 December 2004 08:07:50 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


#  Thursday, 23 December 2004

This is the most current version of the Team Foundation Installation Guide for the December 2004 CTP release of Visual Studio Team System. It contains any changes that were made to the guide since the public release of the December 2004 CTP release of Visual Studio Team System.

Categories: .NET | 2 Ohhhh | Team System | Visual Studio
Thursday, 23 December 2004 08:36:04 (W. Europe Standard Time, UTC+01:00)  #    Comments [1]


#  Monday, 20 December 2004

I previewed the search feature last week with a couple of screenshots. Today I did what I promised to do (review the new code thoroughly), and now I'd like to invite you to download the latest version of the registry editor (0.8.2 dated 12/20/2004).

Note on the search feature: it is pretty intuitive in Tree View mode which node is the search root. However, in List View mode, things are inferred in a way that I hope is intuitive enough: when no subkey is selected, then the search root is the current key whose subkeys / values are currently displayed.

Also of note: deployment to the SmartPhone is now easier, please see the PDF for details (I am now using RapiDeploy).

Monday, 20 December 2004 12:13:17 (W. Europe Standard Time, UTC+01:00)  #    Comments [3]


#  Thursday, 16 December 2004

I just finished the search feature, which means I haven't had the time for thorough testing and code review (no download today, next week). But I have a few screenshots for you to whet your appetite.

Go to the key where you want to start your search (tree view or list view doesn't matter even if it is shown here in tree view):

Choose Search (now option #1) from the menu:

This brings up the search form. Nothing really stellar, but it does the trick. By clicking Search, you kick off the search thread (yes, this thingie is multithreaded!):

The search results are shown in a listview of its own right, with values and keys mixed. Note that there is an infobox at the bottom which tells you where it found the key / value:

Now for the cool stuff - clicking on the key takes you to the listview you already know:

When you now do Menu / Search again, you are back at the search results:

Guess what - clicking on a value opens the value editor. I think I got the user interface right on this one.

Thursday, 16 December 2004 16:21:11 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


The Mobile and Embedded Application Developer Center has a nice Developer Resource Kits page. Especially interesting are the WeRock247.NET & Football247.NET Training DVDs, of which you can download the WeRock247.NET SmartClient Training DVD (Football 247.NET is order only).

For me, the most interesting parts are (as in I have the DVDs) the bonus sessions that are included on the DVDs. I wanted to blog about those Learn247 projects for a long time, but kept forgetting about it - now the Resource Kits page reminded me once again, for good this time.

Thursday, 16 December 2004 08:05:47 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


#  Wednesday, 15 December 2004

RapiDeploy is a command-line that can be used to deploy files to devices connected via ActiveSync (this includes the Pocket PC 2003 Emulator). In addition, if you are deploying CAB files, you can use the optional /install switch to install the CAB's contents. Download

Will be included in the next drop of the Registry Editor for easier installation.

Wednesday, 15 December 2004 12:58:01 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


#  Tuesday, 14 December 2004

Finally found some time to add a few missing things to the registry editor: most importantly editors for string[] (REG_MULTI_SZ) and byte[] (REG_BINARY), as well as some other improvements (mostly behind the scenes).

Like last time: please read doc\Program Notes (4 Dev and User).pdf before installing!

Details from ChangeLog.txt:

- Byte[] editor added (needs to be improved user-input-wise)
- String[] editor added
- Editors are now loaded via Hashtable and Reflection (easier to maintain)
- Menu restructuring (New Value submenu)
- KeyPress event for DWORD editor modified to only allow numbers to be entered
- New project directory structure

Download (795KB)

Tuesday, 14 December 2004 21:06:22 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


#  Monday, 13 December 2004

The Microsoft ASP.NET v1.1 Membership Management Component Prototype contains classes that allow a developer to more easily authenticate users, authorize users, and store per-user property data in a user profile. The authentication feature validates and stores user credentials which a developer can use to manage user authentication on a web site. The authorization feature lets you treat groups of users as a unit by assigning users to roles such as manager, sales, member, and so on. Combined with ASP.NET's built-in authorization functionality, Windows Shared Hosting developers have end-to-end support for maintaining user-to-role mappings and authorizing users based on this information. The profile feature enables you to provide users of your Web site with a custom experience. By defining and using profile properties, you can track any custom information your application requires, including user information and user preferences. Download

Categories: ASP.NET | Cool Download | Visual Studio
Monday, 13 December 2004 14:23:32 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


#  Friday, 10 December 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++

[2] How do C# generics compare to C++ templates?

[3] Generics Algorithms

[4] Dan Fernandez's Blog - Quick information on Generics

[5] Q&A with VJ# and C# Team on Generics

[6] An introduction to Generics

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.

Categories: .NET | 2 Ohhhh | C# | this
Friday, 10 December 2004 10:22:26 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


© Copyright 2017 Christoph Wille

newtelligence dasBlog 2.3.9074.18820
Subscribe to this weblog's RSS feed with SharpReader, Radio Userland, NewsGator or any other aggregator listening on port 5335 by clicking this button.   RSS 2.0|Atom 1.0  Send mail to the author(s)

Don't contact us via this (fleischfalle@alphasierrapapa.com) email address.