You've reached the internet home of Chris Sells, who has a long history as a contributing member of the Windows developer community. He enjoys long walks on the beach and various computer technologies.
Monday, Sep 16, 2002, 11:45 AM in .NET
.NET Compact Framework Tools and Samples
Here. From Jim Wilson: The DevelopMentor .NET Compact Framework Tools and Samples page is finally available. Check it out to see if there is something that you need or if you have something that you think would be helpful to others please post it.
Monday, Sep 16, 2002, 10:05 AM
Official Transparent Prevalence Implementation
Here. From Jesse Ezell: Bamboo.Prevalence now contains support for the transparent prevalence concept. In the end, it was decided to use proxies rather than context bound objects, but you still get a completely transparent object persistance system.
Sunday, Sep 15, 2002, 12:00 AM in Fun
"Spend A Day With .NET" Winning Entries
Sorry it took so long to judge the entries, but I was overwhelmed. That'll teach me to host an international, pan-galactic, cross-universe coding contest. : )
Grand Prize Winner and Best Developer Tool: Stoyan Damov
Stoyan wins the grand prize of free admission to the Web Services DevCon. His entry is shown here:
KbView allows the user to pick a technology or set of technologies that s/he is interested in and see what's new in that space. Once the articles are fetched, they're listed on the right hand side, where they can be shown directly in the text viewer below or they can be hosted in a separate IE window. Also, once the article has been downloaded, it's cached for quick access for next time. This is an app that I will use. Great work, Stoyan!
Best Rookie: Sorin Jianu
Sorin wins a year subscription to MSDN Universal for his submission:
Sorin's submission is a functional proxy server and represents his first .NET project ever. It's fully asychronous and uses non-blocking I/O. It's quite a testament to what can be done in .NET in a single day.
Most Polished: Jeff Braunstein
Jeff wins a 12-month subscription (5 points) to Safari Tech Books Online for his entry:
Jeff's entry was the most polished I got, both in the UI as shown above, but also in the documentation, which included a market justification. I can see Jeff selling a version of this tool soon. The UI above is a front end to an NT service, also written in .NET, that takes jobs off of an MSMQ queue for batch dispatch. Because of the flexible architecture, these jobs can be spawned on a single machine or across multiple machines.
Best VS.NET Add-In: Igal Ioffe
Igal wins a signed box copy of Visual Studio .NET for his VS.NET add-in:
Igal's submission is simple, but effective. I often mail snippets of code around and now I can do it with the context menu from without VS.NET.
Best Consumption of XML: Dejan Jelovic
Dejan won his pick of a combination of things, but I couldn't talk him into taking anything -- he just wanted to compete. His application is a fully functional RSS reader:
Dejan's RSS reader has two tabs, one for the RSS feed administration itself, persisted between sessions, and one for the combination of the content for all of your feeds in a single web page, cached between sessions.
Best Use of SQL: Simon E.P. Wilson, Markus Burri & Thomas Schwarz
Simon, Markus and Thomas win a 10-user copy of rmTrack for their SQL Stored Procedure code generator:

Once the settings are chosen, the generated code lets the user make calls into the stored procedure from their .NET language of choice almost as if the function was a native .NET method:
class MyApp {
static void Main(string[] args) {
// Create Connection
SqlConnection conn = new SqlConnection(@"...");
conn.Open();
// Invoke the Stored Procedure
SalesByCategory.Result res = SalesByCategory.Invoke(conn, "Beverages", "");
// Show Results
foreach (SalesByCategory.Row row in res.Rows) {
Console.WriteLine("{0} : {1}", row.ProductName, row.TotalPurchase);
}
conn.Close();
}
}
Honorable Mention
There were so many other great entries that I couldn't narrow it to just the big prize winners. The following were each awarded their pick of a book or a free software package:
- Best Use of XML, Adam Cogan: This entry was cool because it used a smart client to gather information about a user's system, email to deliver it and XML to make server-side processing a snap (screen shot).
- Best Web Service Client, Darrel Miller: I liked Darrel's application because of the nice mix of a smart client front-end to capture all settings to make a single, atomic web service call and the production of a web site based on the posted data (screen shot 1, screen shot 2).
- Best Technical Insight, Gert Lombard: Gert's command line parser was near and dear to me for two reasons. One, he'd built a command line parser based on .NET's Reflection, just like I've done in Genghis with the CommandLineParser class, and two, he built it because he fell in love with Reflection, just like I did (screen shot, source).
- Best Game Library, Richard Caetano: Richard's entry wasn't quite complete, but I love Poker as much as I love .NET, so I thought I'd point out that he's provided a complete managed card drawing library, in case anyone needs one (screen shot and source).
- Best Entry From High School Student, Ryan Dawson: I'm not sure I should be encouraging such behavior, but I certainly spent my fair share alone in my parent's basement with my computer and I turned out all right (didn't I?!?), so I thought I'd mention that Ryan was the only high school student (that I know of) that submitted an entry. Also, he used my pi calculator to calculate 20K digits of pi for extra credit, so clearly things are working out for him. Remember to cite your sources, Ryan! : )
Sunday, Sep 15, 2002, 12:00 AM in Fun
"Spend A Day With .NET" Winning Entries
Sorry it took so long to judge the entries, but I was overwhelmed. That'll teach me to host an international, pan-galactic, cross-universe coding contest. : )
Grand Prize Winner and Best Developer Tool: Stoyan Damov
Stoyan wins the grand prize of free admission to the Web Services DevCon. His entry is shown here:
KbView allows the user to pick a technology or set of technologies that s/he is interested in and see what's new in that space. Once the articles are fetched, they're listed on the right hand side, where they can be shown directly in the text viewer below or they can be hosted in a separate IE window. Also, once the article has been downloaded, it's cached for quick access for next time. This is an app that I will use. Great work, Stoyan!
Best Rookie: Sorin Jianu
Sorin wins a year subscription to MSDN Universal for his submission:
Sorin's submission is a functional proxy server and represents his first .NET project ever. It's fully asychronous and uses non-blocking I/O. It's quite a testament to what can be done in .NET in a single day.
Most Polished: Jeff Braunstein
Jeff wins a 12-month subscription (5 points) to Safari Tech Books Online for his entry:
Jeff's entry was the most polished I got, both in the UI as shown above, but also in the documentation, which included a market justification. I can see Jeff selling a version of this tool soon. The UI above is a front end to an NT service, also written in .NET, that takes jobs off of an MSMQ queue for batch dispatch. Because of the flexible architecture, these jobs can be spawned on a single machine or across multiple machines.
Best VS.NET Add-In: Igal Ioffe
Igal wins a signed box copy of Visual Studio .NET for his VS.NET add-in:
Igal's submission is simple, but effective. I often mail snippets of code around and now I can do it with the context menu from without VS.NET.
Best Consumption of XML: Dejan Jelovic
Dejan won his pick of a combination of things, but I couldn't talk him into taking anything -- he just wanted to compete. His application is a fully functional RSS reader:
Dejan's RSS reader has two tabs, one for the RSS feed administration itself, persisted between sessions, and one for the combination of the content for all of your feeds in a single web page, cached between sessions.
Best Use of SQL: Simon E.P. Wilson, Markus Burri & Thomas Schwarz
Simon, Markus and Thomas win a 10-user copy of rmTrack for their SQL Stored Procedure code generator:

Once the settings are chosen, the generated code lets the user make calls into the stored procedure from their .NET language of choice almost as if the function was a native .NET method:
class MyApp {
static void Main(string[] args) {
// Create Connection
SqlConnection conn = new SqlConnection(@"...");
conn.Open();
// Invoke the Stored Procedure
SalesByCategory.Result res = SalesByCategory.Invoke(conn, "Beverages", "");
// Show Results
foreach (SalesByCategory.Row row in res.Rows) {
Console.WriteLine("{0} : {1}", row.ProductName, row.TotalPurchase);
}
conn.Close();
}
}
Honorable Mention
There were so many other great entries that I couldn't narrow it to just the big prize winners. The following were each awarded their pick of a book or a free software package:
- Best Use of XML, Adam Cogan: This entry was cool because it used a smart client to gather information about a user's system, email to deliver it and XML to make server-side processing a snap (screen shot).
- Best Web Service Client, Darrel Miller: I liked Darrel's application because of the nice mix of a smart client front-end to capture all settings to make a single, atomic web service call and the production of a web site based on the posted data (screen shot 1, screen shot 2).
- Best Technical Insight, Gert Lombard: Gert's command line parser was near and dear to me for two reasons. One, he'd built a command line parser based on .NET's Reflection, just like I've done in Genghis with the CommandLineParser class, and two, he built it because he fell in love with Reflection, just like I did (screen shot, source).
- Best Game Library, Richard Caetano: Richard's entry wasn't quite complete, but I love Poker as much as I love .NET, so I thought I'd point out that he's provided a complete managed card drawing library, in case anyone needs one (screen shot and source).
- Best Entry From High School Student, Ryan Dawson: I'm not sure I should be encouraging such behavior, but I certainly spent my fair share alone in my parent's basement with my computer and I turned out all right (didn't I?!?), so I thought I'd mention that Ryan was the only high school student (that I know of) that submitted an entry. Also, he used my pi calculator to calculate 20K digits of pi for extra credit, so clearly things are working out for him. Remember to cite your sources, Ryan! : )
Friday, Sep 13, 2002, 5:54 PM
Never Send An Email In Anger
Here. My proposal for an Outlook Add-In that notices and warns you when this is about to happen...
Friday, Sep 13, 2002, 12:48 PM
TechEd2002 Sessions / MS Videos
Here. From Jesse Ezell: If you are looking for a place to brush up on your .NET skills and missed TechEd this year, you can see the TechEd 2002 sessions (like 200+ sessions with slides, video, and audio) from here, as well as check out some great Balmer videos like the infamous "developers! developers! developers!" chant. Definately a top notch resource.
Friday, Sep 13, 2002, 11:27 AM in .NET
QuickCode for .NET
Here. QuickCode is a VS.NET add-in that expands phrases into code, e.g.
prop int test
Friday, Sep 13, 2002, 12:00 AM in The Spout
Never Send An Email In Anger
I learned how to write good emails at the foot of the master -- Don Box. Whenever we'd decide we wanted something, he'd grab his computer and say, "Let's write the email" and it would be done.
One of the most important things that I've ever learned about high-tech communications is to never, ever write an email in anger. Or, to be more precise, never *send* an email in anger. I encourage you to actually write it. It always makes me feel better. But don't address it, because you want that email to first end up in your Drafts folder and go from there to your Deleted folder. If you address it and mean to press Ctrl+S to Save but manage to press Alt+S to Send by mistake, you might well be looking for work in another industry. If you don't address it, however, Outlook complains and you can breathe a sigh of relief. Frankly, I wish there was an add-in that protected me even if I ignore my own advice:

Of course, this spouting could only occurred after I've violated my own advise, as I've often done over the years, always to my determent. When you're angry, all you care about is making sure that your anger comes through. If I give myself an hour or two to think on it, when I come back to read that angry email, it always makes me flinch. Writing an email once I'm done being angry always yields the nicest, most thoughtful emails that I can write. Those I find to be *much* more effective.
Thursday, Sep 12, 2002, 10:29 PM
DevelopMentor Developer Resources
Here. The list of tools and samples from recognized experts across technologies has grown to monstrous proportions at the new DevelopMentor Developer Resources page. Highly recommended.
Thursday, Sep 12, 2002, 5:31 PM in .NET
KDE To Support .NET
Here. "The KDE Project has emerged as possibly the first real-world adopter of Project Mono for application development. Mono is an open source alternative to .NET for Unix and Linux desktops, initiated in July 2001 by Ximian Inc." The reason that this is interesting for Windows developers is that with both of the major Linux desktops, i.e. Gnome and KDE, supporting .NET, it's possible that a simple .NET application or component could actually work across Windows, Gnome and KDE. Now .NET becomes the OS. Shades of Java, which failed in this space I know, but still interesting...
Thursday, Sep 12, 2002, 12:28 PM in Conference
Less Than 40 Seats Left at the Web Services DevCon
Here. Register now for the Web Services DevCon, October 10-11 in greater Boston, featuring Don Box, Tim Ewald and keynote speaker Sam Ruby. In addition to amazing talks by Microsoft’s Web Services Program Manager, Keith Ballinger, and IBM Distinguished Engineer, Noah Mendelsohn, as well as wizened practitioners from HP, Macromedia and the W3C, all attendees receive exclusive SellsBrothers t-shirts available nowhere else. Register now!
Thursday, Sep 12, 2002, 12:26 PM in .NET
foreach is Your Friend: Part 2
Here. Just when you'd thought you're learned everything there was to know about foreach in part 1, I've got more in part 2! This part (the final : ) discusses implementing support for foreach in your own custom types as well as how to patch holes in the framework where they forgot to add foreach support. Enjoy.
Thursday, Sep 12, 2002, 12:24 PM in .NET
Multithreaded .NET Web Service Clients
Here. Ian Griffiths and Chris Sells "Unresponsive programs are extremely frustrating to use. Applications that sometimes freeze for a moment are a source of much irritation, especially if they don't provide any feedback on what they are doing, or how long it is likely to be before they start responding again. This behaviour can be particularly common among applications that use remote facilities such as Web services. This article describes how to maintain responsiveness in .NET Windows Forms rich client applications, even when invoking potentially long-running Web services, by using multiple threads."
Thursday, Sep 12, 2002, 12:23 PM in .NET
Rich Client Database Interactions with ADO.NET
Here. Shawn Wildermuth and Chris Sells "In the .NET Framework, rich clients can bring database servers to their knees, just like Web-based applications. But with the disconnected nature of ADO.NET, your rich clients can manipulate and analyze database data without impacting the database server. Once you have the data in the rich client, you can do high-performance analysis of the data—including sorting, filtering, and querying—without expensive server calls. In this article we will show you how to use DataSet, DataView, and XmlDataDocument to make your rich clients work with database data in a disconnected way."
Thursday, Sep 12, 2002, 12:21 PM
Intel Rich Client Series
Here. I'd like to announce a new series of articles specially requested by Intel on the topic of making the most of the client tier. Topics include high-performance graphics, data and XML querying and filtering on the client-side, smart client deployment and more. Two articles are up now with more to come through the end of the year. Enjoy.