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.
Tuesday, May 25, 2004, 12:03 AM in Tools
.NET Framework 2.0: BindingList<T>
After spending a bunch of time with various partial IBindingList implementations, I just stumbled onto a brand new one in the Visual Studio 2005 Community Technology Preview: BindingList<T>. It's not done yet, e.g. sorting doesn't work, but the model is certainly what you'd want, e.g. you create a BindingList<Person>, bind it to something smart, like a DataGrid or a DataGridView, and you're able to edit instances of your custom type or add or remove instances, as well as search or sort instances, just like you'd need a custom implementation of IBindingList for today. Very nice.
Tuesday, May 25, 2004, 12:00 AM in The Spout
Post/Reply Alphabet Soup
Newsgroups, mailing lists, web forums and blogs (with comments) are all very similar. Fundamentally, they'll all about posts and replies. Sometimes the posts are replicated to servers around the world, acccepting replies in the same way. Sometimes the posts are replicated to a set of subscribers via SMTP and replies come in via POP3. Sometimes the posts are part of a web page and provided via HTTP, using HTML forms to take replies. Sometimes the posts are served up via a centralized server using HTTP + RSS or HTML, accepting responses via HTML forms or the CommentAPI. Fundamentally, it's all the same thing, though: posts and replies. Why do I have to suffer with the limitations of any one of these protocols just to hang out with my friends to talk shop?
I don't like newsgroups because I don't like having a separate reader outside of my mail reader (and NewsGator ain't anywhere close to what I want yet). Plus, newsgroups are very susceptible to spam, although the MS newsgroups are carefully patrolled to kill it before it spreads.
I don't like web forums because I either have to poll the site (which RSS has cured me of) or the integration of the forum into my mail reader is limited to notification only. Plus, every single web forum has a vastly different UI and set of features and the inconsistencies bug me. On the other hand, web forums are pushing the envelope on features that I really want, like author and content ratings. I love mailing lists, but don't want to duplicate any of the WinFX newsgroups in mailing lists just yet to avoid fracturing the budding developer community.
Blogs are wonderful, of course, and RSS is the only thing that's worth me spinning up a whole separate reader than my mail reader, but it's impossible to follow a thread of conversation between blogs or comments on other people's blogs. On the other hand, the server-per-poster model is great because I can just subscribe to the posters that I like, increasing the signal to noise ratio substantially.
I think we should pack all of the features of mailing lists, newsgroups, web forums and blogs into a single backend and expose it via HTTP, NNTP, SMTP/POP3 and RSS as appropriate. Is it time for a new protocol that can be dumbed down to the existing protocols for the diehards that won't give up their readers of choice? Personally, I'd like to get everything via SMTP/POP3 except for my RSS feeds (although I don't know why -- maybe it's just that I can't seem to get a handle on a keyboard-only mode for RSS reading in NewsGator the way I can in SharpReader...).
DiscussMonday, May 24, 2004, 2:08 PM in Tools
A Gathering of VS05 Team System Info
I find that in the process of learning about something, I often dig through a lot of places before I come up with what I'm looking for.
In the case of Visual Studio 2005 Team System (aka "Burton"), I wanted to know a lot more about the features that MS was building into VS for teams, including much more flexible source code control integration, web site functionality and stress testing, static code analysis like FxCop and perf. analysis built right into the build system and stats recording as part of the normal workflow for project management reporting.
In the process of gathering these details, here are the places I went:
- Official Visual Studio 2005 Team System home page
- VSTS screenshots from the MS Developer Tools Roadmap
- VSTS demonstration videos
- VSTS FAQ, including the ever favorite "Where do I get it?"
- Korby Parnell's announcement as a member of the VSTS team
- Official Visual ActiveKent Sharkey .NET SE 3.11 VSTS Announcement
Here are some things that tickled my fancy:
- Data binding to drive web site testing. I want the same thing for stand-along client testing
- The real-time stats and drill-down for ongoing web site stress testing
- Building static code analysis right into the build process so that I can fix those issues along with my compiler issues
- The idea of collecting project stats as part of what the developer is doing in VS and using those to roll-up conprehensive stats for the whole team
- Seeing our own internal tools, like PREfast, made available to our customers and integrated so nicely into VS
Monday, May 24, 2004, 3:41 AM
bar
foo
Sunday, May 23, 2004, 11:04 AM in .NET
A Gathering of Avalon 3D Materials
Greg Schecter, one of the designers of the new support for 3D in Avalon available in the Longhorn WinHEC build, provides a nice overview and some other links to Avalon 3D resources:
- Greg Schechter's Introducing 3D in Avalon and 2D/3D Integration
- Basic 3D in the Longhorn SDK
- Joe Beda's WinHEC report, including a screenshot of an Avalon 3D sample
3D support in Avalon is not meant to build Doom 3, but it does shine especially brightly in two places: 1) you can do 3D in a declarative way in XAML, just like the rest of Avalon and 2) as Greg describes, the integration of 2D and 3D in Avalon is nice and clean the way it isn't in most current 3D APIs. I'm looking forward to taking advantage of the 3D support in my own apps, which isn't something I ever considered before with DirectX. Thanks, guys!
Friday, May 21, 2004, 10:49 PM in .NET
Strengths and Weaknesses
Here. The one where I learn that DevelopMentor was my own personal speed reading course.
Friday, May 21, 2004, 1:54 PM in The Spout
Employers Check References
I got an email asking to serve as a reference for a guy I'd never heard of today. Just so you know, especially in a down economy, employers check references. Also, it's a good idea to ask a reference between adding them to your resume so they don't have to respond, "Roy? I don't know anyone named Roy..." : )
Friday, May 21, 2004, 1:08 PM in The Spout
Another Killer App for Web Services
Here. The one where the idea of intranet services being exposed as web services gets me hot.
Friday, May 21, 2004, 12:28 PM in .NET
WinHEC Avalon Slides
Here.
The Avalon team has posted their WinHEC slides:
Friday, May 21, 2004, 12:26 PM in .NET
The Power of Vector Drawing
Ian blathers on about the power for vector graphics for a while then hits you with this link demonstrating the power of vector graphics. Wow. Some of those pictures are amazing.
Friday, May 21, 2004, 12:12 PM in .NET
Interview: Bob Muglia, MS Longhorn Server Sr. VP
ZDNet asks Bob Muglia, the Sr. VP in charge of Longhorn Server, questions like: What does MS think about Linux? When will Longhorn client and server ship? What about WinFS? And my personal favorite: Can you tell us what's on Blackcomb's feature list?
Friday, May 21, 2004, 12:00 AM in The Spout
Another Killer App for Web Services
Friday, May 21, 2004
At the last Applied XML Dev.Conf., I went ga-ga over Amazon's use of web services in their business and called it the "killer app for web services." Now I'd like to revise my statement: it think that it's one of the killer apps for web services.
Here's another one: exposing the functionality of all of those internal corporate services apps that are now exposed as web sites as web services instead.
Now that I've been back inside of a giant corp. adrift in a sea of sites to "help" me with the various "business processes" that I have to execute, I yearn for them all to be exposed as web services. There are several problems with the internal business-processes-as-web-apps morass that we're stuck in:
The web apps are generic for all uses across all companies, which means that there are tons of options for other uses then mine, but I still have to deal with the UI for all of the options
To get my business tasks accomplished, I have to string together several of these web apps in series, manually moving the data from one to the other
Just going from one page of a web app to another, even in a corp. intranet, is so slow when you are always going to pick the same options and your fingers want to be far ahead of what the server can handle when generating the UI a page at a time
For example, here at MSDN, we have package source code sent to us by authors into an MSI with a EULA, code sign it with the Microsoft key and submit it for download to the MS download site. A year ago, it took me an hour of instruction to understand the process and it involved using VS.NET to build the MSI and two separate web sites, both with several pages and tons of fields to get a folder of files available for download by our good readers. This took me 30-60 minutes to do each time I had to do it, which made me cranky, so I built this:
This tool takes the minimum number of fields necessary to turn the source files provided by the author into a signed MSI. Plus, it's a smart client, so the UI is snappy and I can make it smart about what specifically it should remember between sessions for our own uses. And, I can provide a single UI for multiple back-end services, duplicating the data between them as necessary w/o requiring the user to duplicate the data for me.
The way I was able to minimize the number of fields was to build all kinds of assumptions into the app based on how MSDN does things, aka the business rules, and build my own app that programmatically generates when I need. In other words, my app combines business rules with programmatic interfaces to save me and my friends all kinds of time (the process is now about 10x faster than it used to be and 100x less tedious and less error prone).
And that's the beauty of allowing programmatic access to internal business processes: it allows each group in the company to build specific apps that meet their needs more specifically, letting them consolidate the processes into their own group-specific tasks. Not only does this speed things up and increase consistency for our customers, but it also removes the tedium and lowers the possibility of human error. If you could gain all those benefits, would you do it? That's the promise of web services and SOA when applied internally, because it allows the groups that provide the services to be general-purpose, meeting the needs of all groups, but lets each group be specific when they apply it, instead of forcing a web interface that requires everyone to be general.
Am I alone in getting aroused when thinking about this kind of thing? : )
Friday, May 21, 2004, 12:00 AM in The Spout
Strengths and Weaknesses
Friday, May 21, 2004
I took a Gallup questionnaire and 3-hour seminar on the philosophy of strength-based development. The central idea is to identify one's strengths and concentrate on those. This is opposed to general thinking which says that you should work on your weaknesses. According to Gallup, no one can really change their weaknesses much, but if you focus on your strengths, you can really make a difference in yourself.
As evidence of this claim, Gallup sites a study of teaching speed reading to average and above average readers. The average readers started at 90wpm and the speed reading course increased their speed to 150wpm, an increase of 67%. The above average readers started at 350wpm and increased by more than 800% to 2900wpm. Or, to put it another way, it was 10x more effective to concentrate on a strength than to try to improve a weakness.
The dark subtext of the strength-based point of view is that if I can't really fix my weaknesses, then I can only really do well in certain kinds of ways. I don't like this idea. It sounds too much like fate, which just pisses me off because I don't like the idea that it's my nature and not my effort that determines how well I do at something.
When I mentioned this to one of instructions of the seminar, she looked at my strengths and said, "Oh, I see why you want to think it's you that governs how well you do," which didn't make me feel any better. My strengths, in order, are Achievement, Command, Communication, Learner and Intellection. In other words, I like to get things done, tell people what I think, learn new things and think about them. This set of strengths wasn't really a surprise, but here's one: I think DevelopMentor was speed reading for my particular strengths. DM was an environment that encouraged all of my strengths and I stumbled onto it by pure, dumb luck.
On the other hand, before DM, I wasn't nearly the Communicator that I am now. In fact, I think it would've been one of my weaknesses had I taken the Gallup questionnaire 10 years ago. And if that's the case, I would have been discouraged from spending too much time working on it by, for example, teaching, presenting at conferences and writing courses, articles and books, which I think would've been a shame, because I really love to write.
So, while I like the idea of concentrating on one's strengths, I still don't like the idea of ignoring one's weaknesses.
Wednesday, May 19, 2004, 5:50 PM in .NET
WinFS StoreSpy v0.8 for the WinHEC Longhorn
Doh! I jumped the gun on this post. The WinFS team doesn't think that StoreSpy is ready for prime time, so I've taken it down. Bad dog. No bone!
Wednesday, May 19, 2004, 2:55 PM in The Spout
"No coding question unanswered for < 24 hours"
Here.
After the official question was discussed for a good long time -- "What more can MSDN do for developers?" -- I asked this follow-up question in 3 parts:
- How many of you are unsatisfied Microsoft developers? 0 hands raised
- How many of you are somewhat satisfied Microsoft developers? 0 hands raised
- How many of you are very satisfied Microsoft developers? 30 hands raised
After the session, one Portland nerd came up and told me that he can't remember the last time that he had a coding question that went unanswered for more than 24 hours. Wow. We'd come quite a ways when that's the case.