Marquee de Sells: Chris's insight outlet via ATOM 1.0 csells on twitter

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.




"Spend A Day With .NET" Tomorrow!

Here. I've heard from folks from all over the world that are using tomorrow as an opportunity to either dive into .NET for the first time or to build their pet project with .NET. People are splitting into teams, designing their entries and looking for 3rd party libraries to get them started, all without writing a single line of code until the stroke of midnight on the morning of August 30th in their local time zone. The competition is fierce, and while the prizes seem to have attracted people’s attention, I think it’s the competition that is getting folks excited. Should be fun! : )

0 comments




Newsletters Are Hard!

Here. "As I write this, several thousand emails are being sent to the initial list of SellsBrothers News newsletter subscribers. My motive (to let folks know what was happening on the site without having to visit every day) was pure, but if I would have know how hard it was going to be to set the thing up, I don't that I would have started."

0 comments




Very interesting insight into working at Microsoft

Here. From Phil: compares microsoft's culture to mainstream company cultutes. The author ended up being a program manager for Excel. He has lots of interesting information on software development in general: http://www.joelonsoftware.com. Chris, I know you've visited the site, just giving a heads up to other folks...

0 comments




Newsletters Are Hard!

As I write this, several thousand emails are being sent to the initial list of SellsBrothers News newsletter subscribers. My motive (to let folks know what was happening on the site without having to visit every day) was pure, but if I would have know how hard it was going to be to set the thing up, I don't that I would have started.

It began with a simple form on the web site to take people's email addresses, which were in turn emailed to me and sorted into a Outlook folder. When that reached a couple thousand without yet having sent out a single issue, I figured it was time to put it into a real database. So, which a bit of data cleaning through VS.NET and Excel to get the dates right, I plunked it into an Access that would serve as the repository on my ISP-managed site. That was all fine and dandy but for one problem: I had to send emails using the data from my own machine, not the machine with my live site (and therefore the latest subscriber data). Did I really want to download an Access database from my ISP every time I needed to send a newsletter? It won't be often, I admit, but that still seems wrong, doesn't it?

So, I paid the extra $10/month to get SQL Server support on my site and worked with a friend of mine (Paul Crutcher) to build the form to take name, email address and HTML vs. Text settings. Except it's not just one form. To make sure that folks aren't subscribing other folks, we send out a confirmation email with an URL in it that updates the database and shows another form indicating whether that worked or not. Then, in case anyone changed their mind, we needed another form to change subscription settings along with another form letting them know that their changes were made. Of course, before we could let them change their settings, we needed to let them log in, which was another form. And, if they forgot their password, they need another form so that they can enter their email address and we can send it to them. Further, if the worst happens and they tire of my musings, they need to be able to unsubscribe themselves.

Not only did Paul build all of these forms, but he built them in two parts, a form part and a control part, so that I could update the form part to have the sellsbrothers.com look 'n' feel, while leaving the real logic in the control part untouched (and potentially reusable). All in all, just letting folks manage their newsletter subscriptions was 46 hunks of HTML packaged as .htm, .aspx and .ascx files. 46! I would have downloaded something and integrated it, but I never found anything to do the job (and this is where I get a hundred emails showing me the error of my ways... : ).

Of course, all that user-managed subscription work was to avoid one thing: angry emails. I didn't want folks who'd forgotten they subscribed many months ago or, worse, folks that were subscribed implicitly from other activities like the DevCon, to find themselves on a list with no way to get off of it except for sending me angry emails. That's just how insecure I am. : )

So, after a few weeks of Paul and I working on the pages to do the administration for me, I thought that the hard part was over. I was wrong. While I did have an SQL database on my site, it was still nearly empty. There were some folks who were newly subscribed after the new code went live, but all of the folks who'd subscribed before then were stuck in an Access database. "That's OK," I thought. "SQL Server and Access were made by the same folks. I'm sure I won't have any problems moving the data." That was two weeks ago. It took tons of advice from my database friends (thanks BobB and ShawnW and BrianR!), along with a final push from my brethren on the Off Topic Mailing List to get the data moved to the right place. The good news is that I got to polish my T-SQL skills a bit and I got to play with DTS and the Enterprise Manager (both very nice pieces of software).

But that's not all. Once I had the subscribers in the database, I then had to send several thousand emails, sorted into folks that want HTML and folks that want Text, keeping track of bad email addresses. This time, I went looking for a commercial product to do the job. I figured that since my inbox was full of spam (SpamNet is my new best friend!), that there must be really great tools for sending emails by the boatload. And again, my friends on the Off Topic mailing list were there to help with a recommendation of the Advanced Direct Remailer. ADR is also a nice piece of software that comes out of the box configured almost right, but not quite and the documentation has to be read very carefully. ADR is an SMTP server that takes mail from your mail client and forwards it to a list of folks based on who you sent it to. For example, you can send it to foo@localhost where "foo" is a mailbox that resolves to a list of email addresses in a text file or you can send it to bar@localhost where "bar" is a mailbox that resolves to a select statement from a database. That all works great, except if you get any of the settings at all wrong, ADR starts acting like a real email server and just tries to send the email to foo@localhost. Well, actually, it can't be foo@localhost for me, since I'm using Outlook XP, a marvel of software engineering that in it's infinite wisdom prohibits me from sending an email to a server without a "." in it. So, I send an email to foo@127.0.0.1, which ends up in ADR, but the default settings only resolve requests sent to "localhost", so ADR won't do the queries. However, it is talking to the built-in SMTP server on my machine (which I need for testing my web site before publishing it), so it looks like it's doing something, making it even harder to figure out what's going on, since I've never seen what ADR does when it works correctly.

When I finally do get everything right and the emails are queued in ADR properly, I can tell it's going to take hours of 100% CPU utilization for the newsletter to get out, so I go on to something else. But I can't stay away for very long, so I'm constantly logging into the machine doing the sending via Terminal Services to check on the progress. With the CPU fully utilized, all the failed TS connections (I have to keep trying!) eventually crash the ADR machine, causing a panic as I reboot. I needed have worried. ADR has kept everything logged and picks up right where it left off before the crash. Truly an amazing piece of software.

Why do I feel like Jerry Pournelle all of a sudden?

Now, as I'm drawing this missive to a close, I'm getting half a dozen emails from subscribers that wish to unsubscribe but can't because of the peculiarities of the imported data vs. what I tested against. So, the angry emails have started. Here's a particularly angry one:

Subject: Get me off your spam list

You are too much of a hassle to remove, you lie about where you got my address, I do not trust you at all.

I will prosecute you my every means possible if you do not remove my address from your database.

If I find out you spread my address, I will go after you for that.

Oh, well. I tried...

0 comments




CollectionGen Updated

Here. The CollectionGen hits, they keep on coming. Tor-Erik Hagen has split the core code from the VS.NET custom tool code to provide for the command line tool he also provided, along with porting all the C# template code to VB.NET. Justin Rudd and James Johnson have also contributed some efficiency and type-safety enhancements. If only we had a wizard, we'd be set (I've got the beginnings of one, if anyone is interested). Enjoy!

0 comments




x86 ASM to IL Compiler

Here. "Yup, it's true. It's really the x86 (Intel 80386 actually) instruction set that gets compiled into IL. Literally it is an '80386 Assembler scripting Language' for ASP.NET." [radio.weblogs.com/0108971]

0 comments




Microsoft Developer Tools Roadmap 2002–2004

Here. "This document contains a summary of Microsoft's plan for Visual Studio .NET and the .NET Framework over the next two releases."

0 comments




Web Services Development Kit Technology Preview

Here. "The Web Services Development Kit is a new .NET library for building ASP.NET Web services that use more advanced protocols, including: -WS-Security -WS-Routing -WS-Attachments and DIME"

0 comments




SQL Server Notification Services ships

Here. "Microsoft SQL Server 2000 Notification Services is the premier platform for developing and deploying a new class of scalable Web applications that deliver personalized, timely information updates to a variety of mobile devices."

0 comments




"Spend A Day With .NET" on August 30th

Here. I've heard from individuals and teams all over the world who are going to participate in the "Spend A Day With .NET" coding contest on August 30th. And as the fever spreads, the prizes increase, now including five different software packages, 12 books, a free year of MSDN Universal and the grand prize, free admission to the Web Services DevCon. It's not too late to call in sick and send in your entry!

0 comments




"Spend A Day With .NET" Coding Contest (with prizes and everything!)

Midnight to Midnight, August 30th, 2002

Brad Abrams, Lead Program Manager on the Microsoft .NET Framework team, said something that inspired me the other day. He was being broadcast along with Chris Andersen (another lead PM) on The .NET Show on the topic of Understanding the Framework. Brad and Scott spent almost the entire show talking about how the various benefits of .NET, e.g. productivity, reliability, security, backwards compatibility with Win32 and COM, being able to recompile your C++ code in managed mode to use and expose .NET components without changing any of the code or losing noticeable efficiency (apparently they didn't ship until they could do this with Word), the consistency and universality of the Framework Class Libraries, and on and on, all without mentioning "web services." He did say that .NET was hands down the best platform for doing web services, but even if you're not doing web services, .NET enhances your programming experience across the board for the existing kinds of applications and components that you're developing now. Normally I'm not into this kind of hyperbole, but in this case, I absolutely agree with Brad and wish that Microsoft would push these features for things you're doing right now as well as web services for the future. Microsoft, in their interminable marketing wisdom, has completely undersold the rest of .NET, at the expense of developers the world over, still stuck in the old unmanaged world.

So, in the spirit of freedom and happiness for developers everywhere, I hereby declare Friday, August 30th to be International, Pan-Galactic, Cross-Universe "Spend A Day with .NET" Day. On that day, I'm calling for all developers everywhere to spend up to 24-hours, midnight to midnight, building a .NET application of some kind or another. I don't care if you have to bootleg a copy of VS.NET from your friend or download the freely available .NET Framework SDK and write your code while you pretend to work, lie to your boss or take a sick day, but I want developers around the globe to spend all day doing nothing but writing something in .NET. It can be absolutely anything, e.g. web site, web service, NT service, component, control, VS.NET add-in, shell extension, game, utility, graphics demo, etc, so long as you build it with .NET. Feel free to spend from now until then researching .NET with any number of books, articles, whitepapers, conferences, mailing lists, bits of online documentation, sample projects, 3rd party components, etc, but all .NET code must written on August 30th. And then when you're done at 11:59pm, I want you to send me what you built and my team of judges will decide who's deserves the prizes.

The Prizes (updated!)

In the spirit of one of the many things that .NET does very well, the Grand Prize is a free pass to the Web Services DevCon. These are the other prizes, in no particular order, based on what I have at my immediate disposal to offer. If anyone would like to contribute a prize, let me know.

The Rules

  1. Thou shall sign this agreement before submission. In a nutshell, it says that you own the code you're submitting, that you wrote it in a 24-hour period on August 30th and that you won't sue me over it.
  2. Thou may use existing unmanaged code via MC++ "IJW" (It Just Works) technology or via Win32 or COM interop, but the lines of unmanaged code may consist of no more than 49% of the total lines of code in the submission.
  3. Thou may use 3rd party libraries.
  4. Thou may work in teams, but prizes may need to be split between submitters.
  5. Thou shall include instructions for building and exercising your submission simple enough that even our judges can follow them. A description of why your code is cool is highly recommended.
  6. Thou shall check these rules again before making your submission in case I think of any more (engineers are tricky).

The Judging Criteria

So long as the rules are met, the judges are looking strictly for the completely subjective "cool" factor. Any time you can make a judge say "wow," or "I didn't know you can do that in .NET," that's good. If you do decide to use existing unmanaged code or 3rd party libraries, the added functionality of your code should outshine the functionality of the code you didn't write, or you will be judged accordingly. If there is some doubt that you actually wrote the code in the single 24-hour period of August 30th, the judges may ask for further confirmation and will need to be convinced, e.g. don't send a managed word processor including hyphenation rules unless you've got a signed affidavit from a notary.

The Submission

If you're planning to send in a submission, please let me know. This helps me to arrange prizes, judges, etc. The community response has been overwhelming, with lots of blog coverage of this event, along with lots of prize donations. So far, I've gotten about a dozen folks promising submissions that represent individuals or teams. Some have even been from within Microsoft, so submissions should be pretty cool (I guess even guys inside of MS don't get enough coding time : ).

At 11:59pm on August 30th, send me an URL to your submission, including full source. If you have a prize preference along with whether you mind me posting your source on my site or not. At the very least, I'd like to host the binaries for the winners on my site so that visitors can see what .NET can really do in just a day.

The Rest

If you've got any questions or comments or you'd like to sponsor this event or send along a prize or whatever, drop me a line.

0 comments




foreach is Your Friend, part 1

Here. "Of course, the flexibility and expressiveness of C++ that allowed this kind of thing to be built at the library level, instead of directly into the language itself, was both its best feature and its worst problem. C# eschews this kind of flexibility, and the complexity that follows, by simply building a foreach statement into the language that knows how to handle both arrays and custom types."

0 comments




Second .NET Framework Service Pack

Here. From Razvan Caciula: "The .NET Framework Service Pack 2 (SP2) release focuses on security issues and other problems Microsoft has found since SP1's release; this release also includes all the fixes from .NET Framework SP1."

0 comments




The Diminishing Importance of HTML

Here. "HTML-based Web development has dominated application development for the last six years or so and there are no signs of that changing. However, things are changing as the .NET initiative takes hold. Although Microsoft has put a lot of effort into its Web-based interfaces, which include the powerful new ASP.NET Web Forms framework, I am guessing that there will actually be a push back to desktop-driven, forms-based applications once .NET takes hold."

0 comments




The Microsoft Script Center

Here. From Razvan Caciula: This site rocks!

0 comments




295 older posts       2340 newer posts