Archives / 2004 / August
  • Book Review: "Expert Service-Oriented Architecture in C#: Using the Web Services Enhancements 2.0"

    At the time of this writing, the two topics arguably getting the most press, causing the most stir and generating the most buzz for web services aficionados are service-oriented architectures (SOA) for general audiences, and more specifically within Microsoft circles, Web Services Enhancements 2.0.  Author Jeffrey Hasan (of whose work I'm a big fan, notably for his work in "Performance Tuning and Optimizing ASP.NET Applications" ( paints a masterful picture of both topics in this outstanding work.   This is a must-have if you've caught the WSE bug (pun accidentally intended) and need a practical guide to building better web services. 


    The material assumes a fair amount of .NET experience on the part of the developer, so the focus isn't on presenting exhaustive code examples and then describing them line by line; the intent is to give the seasoned .NET programmer a primer on how to make their apps more effective and more available to the rest of the world.


    Using Microsoft .NET's associated technologies for XML Web services development, SOA is presented as being a maturation process for organizational web services, implementing a high level of abstraction, and therefore, a greater degree of universal appeal by promoting broad component reusability.  WSE 2.0 is then tackled, diving into the major areas of consideration for SOAP messaging (security, encryption, routing, reliability, policy creation/enforcement etc.).  Hasan describes the importance and role of SOA within large, disparate systems, preaching the gospel of interface-based systems and use of service agents (mid-tier objects managing communications between web services, business components and type/operation interfaces).  This builds on the same concept discussed by Microsoft's Yasser Shohoud as a major building block for advanced web services development in his seminal book, "Real World XML Web Services" (


    Hasan also offers a refreshing, pragmatic discussion on the debatable misconception of the true "benefits" of loosely-coupled web services within enterprise-grade distributed applications, presenting a decent case for tight coupling in certain situations.


    The book's prime example of an evolving stock quote service is appreciated a lot more than weak "Hello World" examples, and discrete enough to exhibit most of the advanced features of WSE 2.0 with a SOA slant.  Although one of the prime tenets for WSE 2.0 is to facilitate web services in a transport-agnostic manner, many of the examples are geared toward SOAP messaging using HTTP, to the enjoyment of ASP.NET developers – something that's largely missing in the market today, with many current examples being WinForms apps.  Desktop developers may grunt at the lack of representation in the book's examples for using other protocols (i.e., TCP, SMTP, etc.), but it's a minor price to pay.


    Also, the book does sufficiently and consistently make mention of WSE 2.0 development for those of us not married to Visual Studio .NET environments, even though the preference of the author appears to prefer using the IDE.


    This book is wonderfully written, using a voice that makes topics that can be quite difficult to wrap one's brain around easier to grasp.  The chapters are very logically arranged.  However, the book's major selling point is the working code and practicality of its theories, boasting a heavy dollop of both that experienced devs will appreciate and quickly put to use.  With only a sparse amount of syntax-centric documentation, Microsoft Hands-On Labs, articles, and in-print books available at the moment for WSE 2.0 programming, this book is easily the leading resource for concepts and code today on the subject. 


    On that note, the chapter on the future of messaging with Indigo was an unexpected but welcome treat.  I also found myself using the book's appendix more than I do most, which consists of a well-rounded collection of top platform-neutral papers on WS-* initiatives.  Very nice touch.


    This is an advanced book, but not so far out there that a developer with a few months of .ASMX work logged won't be able to pick it up without sacrificing their social lives and/or sanity.  The book's writing style, arrangement of content and oft-brutal honesty (i.e., working with X.509 certificates in WSE 2.0 is pretty easy, but still far from completely painless; VS.NET's Add Web Reference option can royally screw up your proxy classes, et al.) make this a real winner and a great addition to your library.


  • I "borrowed"a feature from .Text

    Well, displaying a "most active members" strip displaying logins and the number of posts they've submitting in some ordered fashion isn't necessarily a .Text creation per se (you've seen variations throughout the Web for years), but I took note of it when building a community imaging service for my site, and just a couple of days ago wrapped a listing of the top posters within a membership communiy within a user control and dropped it on a page:


  • "Boomerang" web service routing using WS-Addressing

    One of the reasons I'm looking forward to the election season being over is the chance to get back working with a WS-Addressing project I'd started for a library of B2C mobile web apps I was doing using WSE.  Months ago I began pondering and pining about a certain type of routing model I'd like to see worked into web services, specifically in terms of reliable messaging and controllable routing.  Not being a very bright human being, I dubbed it the de facto "boomerang model" due to the nature of the message path involved.  A web service using such a model (based on latter WS-Routing recommendations and eventually WS-Addressing) would send request/response messages in SOAP sequentially across a set number of known nodes, and wait for a response from one of them. 


    In the following example, I've got 4 nodes, each representing a SOAP router to receive a message, in an assignment service for a taxi cab company, wherein a dispatcher sends out notifications of new pending pickups to drivers in the field.  The notification/confirmation service ("Homebase") sends a message through the chain of taxi drivers with smartphones in their cabs and waits for a response back.  As each intermediary receives the message, it can either accept ignore and pass along the assignment (requiring transaction support for longer dormancy periods), or accept it, informing the server and terminating any further routing, which at that point would be unnecessary.


    [ HOMEBASE ==> TAXICAB 1 ==> TAXICAB 2 ==> TAXICAB 3 ... TAXICAB n ]


    The routers would be assigned in a non-arbitrary fashion to denote some sort of internally-defined precedence, listed within a WSE-powered web service's referral cache.  Hence the name, the boomerang response would make its way around the nodes, and stop when a node in the router chain reported back after being notified.  An arguably easier model to program would be using a protocol like SMTP and just mass-mail wireless clients in the field and assign the job on a first-come, first-serve basis.  But such would be prone to perceived usability clashes, even when taking great pains to guard against update concurrency issues.   Why alert someone unnecessarily when you can run it through a hierarchical chain-of-command and stop once the current node confirms?  (The catch is altering the precedence levels dynamically, but that's for another day.)


    It's a theoretical messaging model on which I plan to base a lot of the B2C apps I'm putting together in a marketing plan I developed for a local wireless services provider, including a mobile apps framework that'll power the following scenarios: 


    q       An online classroom or collaborative team environment in which roll call must be taken to see who's present or get group consensus on an announcement

    q       A new order engine for a pizza delivery service

    q       An emergency alert service assigning the closest responder to the scene of an accident (your on your own to develop the GPS integration to determine who's where)

    q       An auctioning application


    The big hurdle is emulating functionality traditionally available on desktop or device-specific applications to work over the Wireless Web.  Really fun stuff.


    The concept is that my company - not a for-hire IT shop or ISV, mind you - would be subcontracted by a wireless provider, who'd broker deals in which they'd sell their cell phones and smart devices to businesses in lieu of them having full-blown e-commerce web sites and/or applications with which to upscale/integrate.  I'd provide the applications development and hosting, and charge the wireless provider a licensing fee to tap the secured services.  They get revenue from selling phones and pagers, and from monthly airtime charges; I charge tenancy fees to ISPs and transaction rates from clients directly.


    Since we'd host all our own apps, we'd also be free to offer such licensing to other providers as they get their acts together.  So if you've ever wondered exactly what it is that I do, this is it. 


    Go big or go home, baby.


  • Now this looks like an interesting book...

    While perusing for new ASP.NET titles, I stumbled across "Flash Remoting" by O'Reilly.  Looks intriguing.  My site often has presentation layer requirements that would benefit from long-form animation, and my brain often doesn't have the strength to code miles and miles of JavaScript or tabbed panels.  Plus, I've been one of apparently a small community of ASP.NET devs interested in bridging ASP.NET logic with Flash.  It's admittedly not an easy thing to do and the few samples that float around on are pretty verbose.


  • Requiem for a server control: hope for ASP.NET devs who were looking forward to dynamic imaging

    There's been lots of understandable mourning after the public announcement that the much-ballyhooed DynamicImage control (among other features) that was supposed to ship with ASP.NET v.2.0 now joins Clippy in the Microsoft graveyard of good ideas that just didn't make it.  At least for now. 


    But cheer up - there's hope for all of us, as dynamic web imaging is still do-able, albeit not in the drag-and-drop fashion we were hoping for.  Nikhil Kothari and Vandana Datye's outstanding book "Developing ASP.NET Server Controls and Components" describe dynamic imaging using an HttpHandler and a couple of other tricks within a custom server control, and it's a really great, extensible example.  I can't qualify it, but I'm sure Nikhil has a sample of some sort posted either on his site or somewhere on the Web.


    Now, can someone pass a tissue?


  • ORCSWeb freakin' rules: ASP.NET host implements spam filter

    I've been with ORCSWeb for more than a year now, after having more my site over from Interland, and I've never looked back.  I liken it (no offense) to being in an abusive relationship and then finding your debutante.  The only minor criticism I've had is the server-provoded POP3 mail service wasn't spam-filtered, which made for some rather uncomfortable downloads, and forced me to buy spam-blocking tools, which I'd have to install on all my LAN's machines.


  • Lookout, Madden - ESPN NFL 2K5 ain't child's play

    Although not the gamer I once was in my youth (aren't we all?), I've seen and appreciated the ads for Sega's ESPN NFL 2K5.  But what really blew me away was the ending, with the assertion that a game that looked so good and got suvh positive reviews is selling for only $19.95???  Now there's savvy marketing!


  • Size matters: my PalmOS smartphone locked up and my stupid stylus isn't long enough to hit "RESET"

    I had a minor scare this morning (4:34AM to be exact), in which I fired up my Handspring Treo 600 to check my e-mail wirelessly.  Now fully charged, I removed it from the cradle and fired up the e-mail client, but for some strange reason the unnit lockled up totally, with the backlight and keyboard shining in all their glory.  This is the first time this happened since I got it last week, and having owned previous PalmOS devices, I'm sure it won't be the last.


  • Microsoft tries to make boring team meetings more productive...through software?

    I got the latest edition of the Microsoft Business Insight newsletter in my Inbox just now and had to chuckle at the headline: "Do Team Meetings Seem Like A Waste of Time?The hook is to tease a webcast detailing how to use various components of MS Office 2003 to enable better collaboration.  Sorry folks, if a meeting is truly boring there's no amount of apps that can save it.  It's poor organizational structure, bad chemistry and human ambiguity that make these things a true waste of time.


  • A web dev's education: .NET-developed Win32 apps won't neccesarily run on PCs without the CLR (or, "Yes, Virginia, I am a moron")

    This pretty much sums up my technical acumen outside the comfortable confines of development for the World Wide Web, thereby confirming much speculation that I'm an idiot, but a collaborative project with a friend hit an interesting roadbump when I realized that Win32 apps developed in .NET languages require the CLR installed on the client PC.  During unit testing, I was playing with an early build of a custom IE toolbar written in VB .NET, after which point I asked gingerly, "Umm...this won't require .NET to be installed on the user's machine, right?"  You can pretty much deduce my shock/dismay when finding out that such was a requirement.  D-uh! 


  • How many of you still use AOL Keywords?

    With the timeless riffing of Yngwie J. Malmsteen playing in the background, I'm reminded of the nostalgia of web marketing.  As a person who got started in the biz doing web promotions and marketing strategies, one of the big gimmicky things to do was tout your site having AOL recognition by saying, "Visit us online at, AOL Keyword, Yo Mama." 


  • The hunter has become the hunted

    In a previous blog, I mentioned a new Win32 project I'm undertaking (my first), which is creating a customized IE toolbart that taps various resources on my site, foremost among which is our internal news search tool.  I also mentioned how after lightly investigating the environments and type of programming required to get such a product completed, this was way beyond me.  For the past 7 years, I've been a teacher of all things web-related, and now I'm becoming a total student of the desktop. 


  • Cheers to Ronnie James Dio for setting the record straight on metal's "horns" hand gesture

    One of the most refreshing revelations of the past few years of my life was a few weeks ago on VH-1's outstanding series "The 100 Most Metal Moments".  Rock royalty Ronnie James Dio was crowned with the #3 moment by once and for all speculating on the true origin of what's become known as the "Devil Horns", a hand gesture used commonly by so many in rock and their legions of fans. Including me. 


  • How applicable is "Coder to Developer" for web devs?

    The hottest thing in print these days in technical literary circles has without doubt got to be Mike Gunderloy's "Coder to Developer: Tools and Strategies for Delivering Your Software".  Every dev I know is flocking to that book and reading it like every non-dev I know flocking to "The DaVinci Code".  I'm going to buy it, but I'm wondering how applicable is really is to web-only developers and architects...those of us who don't tread far from the friendly confines of the already-built browser. 


  • My weekend task: build a blog aggregator for smartphones

    I've been doing lots of blogging lately on my smartphone (replies only, not authoring posts), a Handspring Treo 600 - thanks GuamCell!  However, browsing to the ASP.NET Weblogs homepage, or ever the page for non-MS people, is far from painless.  With the time difference between Guam and the U.S. (I'm 14 hours ahead of PST), I usually lie on my bed and catch up on what my friends did that day. 


  • A web dev's first Win32 project - bastardizing Google's IE toolbar

    I know enough about writing software to know that for my latest project, I don't know enough about writing software to do it myself.  I mentioned a few days ago how I was mulling over creating an IE toolbar that provided links to my site and tapped my site's search XML web service.  Well, I started thinking some more about what I'd like to see and intergration with my site's existing services and the feature set took shape, grew outward, and became more complex (see below for spec).  And sadly, this is way more for dumbass me to handle, if it's going to be of the right quality and capacity for expansion to ship as a product for my site's users.  From what I've gathered from people way more talented than I, this isn't exactly starting swimming lessons at the shallow end of the pool.


  • Book review: "ASP.NET v.2.0 – The Beta Version"

    "ASP.NET v.2.0 – The Beta Version" by Alex Homer, Dave Sussman and Rob Howard

    Published by Addison-Wesley


    I'd like to first talk about what this book is NOT.  Contrary to much natural assumption, it isn't a cheesy upgrade from the author's original work in "ASP.NET v.2.0 – A First Look", with the same content and a few of V2's new properties and methods thrown in.  Rather, much of the book is completely fresh and re-written, and therefore, a must-read even if you own the "First Look" title.


    Each chapter is chock-full of the fundamental V2 concepts backed by with helpful, relevant code samples that really work, presented in the easy-to-understand, friendly voice that's a hallmark of Alex & Dave's work.  In my opinion, the following are the book's redeeming qualities:


    q       Great documentation of major ASP.NET V2 APIs with all members, not just "here's some of the notable properties for this class"

    q       The book spoons out a healthy dose of the features of Visual Studio 2005 and touts the drag-and-drop model, but doesn't marry the examples exclusively to that IDE

    q       Early alpha testers and SharePoint enthusiasts will appreciate a great chapter on the new expanded features of WebParts and the Portal Framework

    q       Healthy chapters on new datasource server controls, the GridView server control and databinding in general

    q       Outstanding illustrations, graphics and examples in covering Master Pages – a topic that becomes very difficult to grasp for new readers without appropriate visual aides

    q       The chapter on personalization, particularly anonymous personalization, will be greatly appreciated

    q       The chapter dedicated to centralized application configuration reads really well

    q       Great documentation of the new page-level capabilities of V2 (client callbacks, URL mapping, cross-page posting)

    q       Great discussion of precompilation and SqlCacheDependency features

    q       Good mention of new mobile application development features

    q       The book's new, sturdier physical binding supports its lean but stout size (about 600 pages), so it won't fall apart when you thumb through examples; the thick paper also isn't flimsy


    With the exception of the whole of the code samples being presented exclusively in Visual Basic .NET (clearly the preferred language of the authors), the book is and holistic look at what aspects of V2's feature set that will have Microsoft web developers salivating. 


    In criticism, I was surprised to not see any contributions about the new custom control development model, but as I understand it, that's still in the works.  I also was disappointed not to see anything about the new language features shipping with VB .NET and/or C#, as such would have been a great tie-in with using generics with the ObjectDataSource server control.  The lack of appendices was also a surprise.  But the positives far outweigh the few and minor negatives this book sports.


    In short, if you're an existing ASP.NET developer that's not yet looked into V2, get this book now.  With the first public Beta having been released, check out MSDN, download the Framework, try Visual Web Developer Express Edition, get the Hands-On Labs…and make sure to have this book by your side and at your desk.  You won't be disappointed.


  • Understanding pagination in ASP.NET 1.x mobile apps - my latest 4Guys article

    Now having been an official mobile developer for 6 months, I felt compelled to give back to the community and do a piece on some of the tricks I've learned along the way, specifically in the realm of the importance of knowing about view state, session state, caching and other tricks when dealing with paginated content.



  • "What does he do, Clarice? He COVETS. Do we seek out things to covet? We begin by coveting what we see everyday."

    The “Silence of the Lambs” reference is really appropriate for something I just thought of.

    I often get asked by friends, young developers and burnt out colleagues how to get started using a new platform.  How many times have you talked to someone learning a new technology or platform, who's completely lost and increasingly frustrated because they can't find a project to work on.  Sadly, many people give up without a familiar frame of reference with which to work.

    Cool prototype projects like IBuySpy, the Rainbow Portal and the many Microsoft .NET Architectural Sample Apps are great for best practices learning and general examples, but they don't fit many people's idiosyncratic needs as developers.

    I recommend to people that they create apps with their newfound knowledge on stuff they already know - pro sports team profiles, company phone listings, Mom's cookbook, or high school reunion galleries.  I've found that half the difficulty in implementing new skills in a practical environment is getting over the hump of being comfortable not only with the tools being used, but also with the subject matter being dealt with.  Being a domain expert goes beyond knowing T-SQL like the back of your hand, and it really cuts down on the learning curve if you work with something you already know.

    Give it a shot.


  • Anyone interested in making some quick $$$? Do an IE toolbar for me.

    I blogged last week about Bipin Jopshi and his sweet new IE toolbar he created.  This is actually something I've been meaning to get around to building, but well...not being a WinForm dev, this would really be a little more than a weekend research project.  I asked Bipin if he'd be willing to do such a toolbar for my company, but he's understandably busy with his own projects.  Dang.

    Anyway, I found some companies that do this kind of thing, but it's often overkill.  So if anyone out there wants to make some quick cash, drop me a line at and we'll work something out.

    I'm just looking for a simple IE toolbar that works like the toolbar for Google - tapping an XML web service I've got that runs FTI searches against my company's news article archive and also provide hotlinks to a few URLs I'll send you.  Can't be that hard.

    Or, if anyone knows a great tutorial that a web dev can understand, pass it along to me.  That would be sweet.


  • MSN is considering me for a job (at least last week they were...)

    I was happily surprised last week when I got an e-mail from a Microsoft recruiter from Volt who sent me a form letter letting me know thatI was being considered for a position as a product manager for MSN Autos (aka, “CarPoint“).  The letter indicated that “You recently expressed interest in the following position...“, with “recent“ apparently being a relative term, as I'd applied 8 months prior back in February.  No bother, I won't harp on petty semantics. 

    I'm flattered for once again being considered a candidate for Microsoft employment, this being my third time around.  Let's hope the third time's a charm.  My first time out, as you can read on, was a real eye-opener.  I quickly (but not hastily) sent in a response to the brief questionairre the recruiter sent, and for the first time was brutally honest, not trying to make the world's best impression.

    Anyone that knows me or has even read at least 3 of my blog posts or e-mails knows how hard I've been trying to get into Microsoft for the last 6 years (ask Alex Lowe and Mike Pope, who've each been nice enough to be sounding boards for me on more than one occasion; or Heather Hamilton, who answered a seemlingly endless string of questions I've had on cracking the MS shell, or Kirk Allen Evans, who  shared with me the stress of going through his respective recruiting process months ago before he finally got it - thanks all, if I never told you!). 

    This would be a great job and a great fit for me.  MSN, I think, would be more of a natural fit for me than one of the non-ASP.NET product groups.  It's more in-tune with the type of site and content I manage now.  Man, I hope this works out...could this be the break I'm looking for and the end to my quest to setup camp in Redmond?

    At any rate, the recruiter said I'd get a follow-up not within the week, but nothing yet.  Hope it works out.  Whatever faith you subscribe to or deity to which you align yourself, say a prayer for me - a simple, kinda smart, hardworking dude who's wanted nothing more in a loooooong time to see his own name on a calling card at Microsoft.  :)


  • New features in .TEXT? Cool!

    I'm sure Scott Watermasysk mentioned this at some point, but I took note of the (new?) changes to .TEXT as I made a blog entry this morning.  The TextBox control seems to be an upgrade, and there are some previously unnoticed features in the Feedback tab (checkboxes, Unpublish option) and what appears to be breadcrumb links under each Admin tab.  (At least I didn't notice them until now).


  • Craig Kilborn kicks it old skool on SportsCenter

    Man, what a concept.  As I write this, ESPN is in the first batch of commercials after debuting its week-long engagement of bringing back former SportsCenter anchors, with one of my all-time favorites, Craig Kilborn.  The guy who talked smack about Bristol, Connecticut when he hosted "The Daily Show" pre-Jon Stewart (Bristol by the way is about 25 minutes from Waterbury, where I used to live) didn't miss a beat, and even did some of his classic comedy, intentionally surpressing and then finally revelling in the self-indulgent mannerisms which he was both applauded and scolded for.


  • When "perfect" usability goes wrong: what happens when your users just won't follow directions

    I've had a pretty and enlightening interesting experience over the last week.  It's one that's taught me much about how I've grown as a developer that builds things for the public World Wide Web, and how despite my best research, training, architecture and design, people often just won't follow directions.  I've also learned much about the psychographics of usability when migrating an existing app to a new format, and how delicate the process of weaning users can be.


    I recently released the second version of my site's phenomenally popular online community photo gallery, Familiar Faces.  After having supported the service for nearly five years by receiving pictures via e-mail, I re-built the service to accept submissions through an ASP.NET WebForm using the file upload classes and some clever GDI+, which was a phenomenal improvement on the manual human input it took to render images previously.  At its core, this allowed for faster processing of user submissions, which makes users happy in waiting less to see themselves online.  It's aggregate usability was designed to be in perfect harmony: client-side validation, server-side processing, image caching, personalized skinning, brilliant performance, clear documentation.


    As such, we required – for those who would be submitting images only – simple membership to track posts and allow for individualized photo galleries with custom user-set themes.  I also took great pains to write out simple usage instructions, given the fact people had been used to carte blanche posting via e-mail.  But despite my best literary efforts in preparing the documentation, clearly indicating the ONLY people who would be submitting pictures needed to register for site membership, we've gotten a tidal wave of signups in our database.  Apparently, the message didn't get through.  People from all over the world still signed up for membership accounts, thinking they needed them to either browse our gallery or post comments (both of which are possible anonymously). 


    I also took note when checking my server logs that while our new format is stringent in enforcing submission validation rules for image sizes and file formats, people still seem to be attempting to upload non-JPG images and/or JPGs larger than 300K (our hard-set limit).  We've received in excess of 70 successful user posts in the last three days, but there have been more than 600 total attempts.  Do the math - the ratio for failure isn't flattering.  I've also cited the fact that some people just don't know how to use a file upload form. 


    As such, the little membership system I put together now contains several hundred login profiles, about only 10% of which are actual posters.  People apparently are also not picking up on one of the features of the system in letting them post comments, sans membership, and missing out on one of the key personalization benefits of the new system.  This is a strange dichotomy to be in, people either being too liberal or too reserved in their usage of a system's features.  But again, it's nonetheless educational for me, which I appreciate. 


    To get around this surplus post-mortem, I've written a simple housecleaning stored procedure that removes unused membership accounts after a certain period of time to keep things honest.  In terms of sustainability, I'm curious to see if these behaviors persist over time.


    I've been taught and learned through experience that in designing an app you code against expected undesired behavior and try as best you can to limit the chances for ambiguity.  Upon rollout, I would have never expected our membership requirement to be so misunderstood.  It was at that moment that I realized I've been building web apps to be used by other software developers for too long, who naturally gravitate towards certain concepts.  I tried to make a Plain Jane app and it still didn't take, hinting to me that I've got to get back to grassroots usability programming.


    Evidently, KISS wasn't simple enough.


  • I wonder what ASP.NET 3.0's going to be like…

    I've gotten back into working with ASP.NET 2.0 after a brief hiatus from research.  But now that I've got principle development done on my station's local election and Olympic coverage and our 50th anniversary gala, I've been keeping Scott Guthrie's impressive mantra of the objectives to be baked-into the release of the-product-formerly-known-as-Whidbey firmly in mind.


    Ambitiously planning out the development of enhancements like 70% less code, ramped-up productivity, enhanced security, easier setup, precompilation and other features is really cool.  But even more so is speculating about features of forthcoming releases.  As such, I'm pondering what the feature set of ASP.NET 3.0 will be like. 


    Consider this one idiot's projection of the future. 



    At the point of release for the next major version of ASP.NET (circa 2009), a major competitive strategy of Microsoft will be to definitively tout how its own platform surpasses Java, notably in terms of the number of stable versions released.  This will be a critical driving force in once and for all nailing the coffin shut on JavaServerPages, as by that point, the world's web developers will display a certain polarity – either being devs with a preference towards .NET or PHP (itself still in version 5).


    Prior to RTM rollout, Microsoft makes a grand revelation of the new features of ASP.NET 3.0:


    q       Single-page web sites/web applications – thanks to advances in inheritance, polymorphism, code separation, unlimited partial classes, MultiView & Panel controls and more OOP trickery than you can shake a stick at, all the functionality you ever need in an entire web app will be accessible from a solitary DEFAULT.ASPX file. 

    q       Path-less URLs – Microsoft pioneers technology that passes all view state, session state and cache data all internally and within the context of the current WebForm, eliminating the need for messy query strings, munged URLs and file extensions.  All sites are now known as "".  Bankruptcy filings by out-of-work ad agencies anticipated.

    q       100% less code to write than in ASP.NET 2.0 – programming becomes obsolete altogether.  The entire ASP.NET 3.0 platform is based on single-control, declarative page assembly.  Server-side logic is so indiscriminate from boilerplate HTML that devs with Ph.Ds from Stanford are being replaced by lowly marketing majors from the University of Guam (like me!)

    q       Intra-site search server control – the good MS folks develop a single integrated control that performs Google-like searches against a site's data store, executing a Full-Text Indexed catalog for textual content and binaries. 

    q       Merging of dynamic imaging and personalization – revolutionary steps in intelligently detecting, tracking, storing and persisting user preferences and themes based on a personality trait profile generated by content visited by a user delivers truly dynamic, customized, random imagery on a page based on the personal likes, desires and genre-adherences of the individual.  Greatly appreciated by single, heterosexual, 30-year-old males (like me!)

    q       Airtight security – a cool feature that detects repeated attempts at bad logins, hacks or DoS attacks upon a web app and calls an XML web service that dispatches a real-life outsourced goon squad to pummel the intruding party within an inch of their life.

    q       .NET Documentation – with Microsoft having successfully acquired Adobe, document compression formats are revolutionized, such that the entire .NET Documentation and MSDN Library fit on a single, standard floppy disk.  (Note: by 2009, a single, standard floppy disk is 60GB, but that's not the point...)

    q       TrendDataSource - with the blogging and IM fads having long faded into the sunset, Microsoft creates a generic data source control that lets a developer bind apps to display data in whatever gimmicky format everyone seems to be flocking to at that moment.  Completely flexible, with the intention of its usefulness being short-term.

    q       Auto-indexing of site content with Google – taking a progressive step forward from V2's bold initiative of auto-compilation, V3 now fully indexes your site with the major search services.  Not surprisingly, you get better results with MSN Search.  Since all sites now consist of one page (see above), people give up using bookmarks and Favorites lists.

    q       IIS becomes the new Personal Web Server – brought upon by tough competition and pressure by Apache in 2006, Microsoft releases IIS as a free web server download, to rave reviews.

    q       Intelligent dynamic adaptive browser rendering – we finally have real, decent, consistent looking pages across browsers and platforms.  Loading an MSDN article on a T-1 connection now consistently takes 2 minutes on ANY device.

    q       GridViewDataGridDetailsViewDataListRepeater server control – a databound control that displays tabular data, edits, inserts, deletes, schedules, renders, e-mails, computes, sends alerts, logs, watches your kids, buys groceries and does all sorts of stuff with data.

    q       TivoDataSource – tight integration with HDTV and digital programming, coupled with the increasing expansion of broadband Internet access in residential communities allows for developers to use display TV programming in a BulletedList server control.

    q       Outlook Provider Model – now stable enough to be used within Microsoft's own confines, Exchange Server and the Outlook-based networks that consume them are integrated with ASP.NET 3.0's front-end logic.  Works best with MSN, Hotmail and Passport.

    q       FlashDataSource – finally seceding after years of unsuccessfully being able to champion its own web animation standard, Microsoft "embraces" Macromedia and creates a cool interface with which to merge graphics and data, proving once and for all that there's a place on the Web for Flash besides movie marketing sites that only last for the 6 weeks they’re in theaters.

    q       SmartNavigation – for some reason, this sticks in the ASP.NET feature set.  And for some reason, it's still promoted heavily.  And for some reason, none of us still are able to figure it out and what the hell it does.


    If any of these make it to RTM by V3, tell 'em where you heard it first.  I accept checks or cash.  :)


  • Cheers for V2's new Literal server control

    One of the things I enjoyed reading about in Bill Evjen's book “ASP.NET 2.0 - Beta Preview” was the section on the enhancements to the existing server controls that shipped with v.1.x.

    Foremost among these is the addition of new functionality to the Literal class, specifically the Literal.Mode property, which takes an enumerated value that determines how text is rendered on the client (with HTML markup, with HTML markup removed, as HTML-encoded plaintext).  I can't tell you how many times I've been wanting to do this and have had to mess with hacky utility classes.

    Great job - let's hope this makes it to RTM!


  • Suggestion for the next version of Outlook Express: build-in RSS Bandit

    I'm sure I'm not the first person to think of this, but I'd like to see the next version of Outlook Express have an installation option to include an RSS aggregator in addition to the normative mail client and newsreader.  It would make sense, and would really kick-ass.

    I'm not running it myself, but I'm sure there are Outlook clients with such might help the low-budget crowd, too. 


  • Heaven just got a little funkier - RIP, Rick James

    I was pretty bummed to learn this morning when I checked my mail to learn that Rick James had died.  Being in the media, my compatriots and I so often get labeled as being desensitized to this type of thing, but I was genuinely saddened by it. 

    He made good music, which I appreciated, and his appearance/skits on Chappelle's Show introduced his unique personality to a new generation of people.

    Rest in peace, bro.


  • Book review: "ASP.NET 2.0 – Beta Preview" by Bill Evjen

    Bill Evjen, one of the most prolific writers on all things ASP.NET, presents his latest technical literary offering with his overview of the Beta 1 release of ASP.NET 2.0.  I've been playing with ASP.NET 2.0 since the early alpha bits, and I got a lot of out of this title.


    Admittedly not a primer for the .NET neophyte, Bill dives right into the major changes in the architectural, infrastructure and syntactical concerns facing next-gen web developers.  The book is a quick read, containing 16 succinct but not light chapters on the major areas of building and administering ASP.NET web applications.  Although the book takes a slight slant towards Visual Basic .NET, nearly all the code samples are presented in both VB .NET and C#.


    The book's high points, in my humble opinion, are evident in the "Membership and Role Management", "Personalization", "Additional New Controls" and "Changes to 1.0 Controls" chapters, being an outstanding breakdown of V2's improvements and new features for those respective topics. 


    Also to be appreciated is a great compendium featuring the new languages shipping with both VB .NET 8.0 and C# 2.0, including new enhancements to both languages like generics, partial classes and anonymous methods.  He also breaks down new language-specific improvements, such as VB .NET's new keywords and C# iterators.


    In criticism, I would have liked to see a discussion of authoring the revamped custom control development model, which the book didn't cover.  But in Bill's defense, that respective programming convention isn't quite finished yet.  The only other thing lacking would be more descriptive ASP.NET 2.0 APIs, which is usually a hallmark of Wrox-produced texts (the only area to get such treatment in this title is the WebParts/Portal Framework APIs).  But then again, moving towards more declarative programming is one of V2's goals, so this may be intentional.


    With the exception of Bill looking a bit harried on the cover, it's a masterful work: well-rooted in the ASP.NET fundamentals while accommodating advanced topics, accompanied by relevant, code-heavy examples, all written in Bill's very appreciated friendly voice, with the right timely intermingling of humor.


    Bravo and cheers, Bill!  Great work!


  • Cool new ASP.NET 2.0 books to read tonight

    Julie Lerman once wrote about me and my passion for reading ASP.NET books, something I got a big kick out of.  I've been fortunate enough to get some V2 books for my user group to go through tonight, so I'm amped to go home and crack them open:

    • “ASP.NET 2.0 Beta Preview“ by Bill Evjen - looks to be a good book by a good friend...I was helping Bill with the initial table of contents and chapter organization
      • 5-SECOND FIRST IMPRESSION: samples in both C# and VB.NET, cool graphics; nice primer on V2; some fairly advanced samples using WebParts; Bill looks stressed on the cover :)
    • ASP.NET v.2.0 - The Beta Version“ by Alex Homer, Dave Sussman & Rob Howard - looks to be an update of “A First Look At ASP.NET v.2.0“, which I loved
      • 5-SECOND FIRST IMPRESSION: samples in VB.NET; thicker than the original; better binding; very code-heavy; great organization & API listings

    More formal reviews to come in the next couple of days!


  • Think loading the MSDN Library on a desktop browser is painful? Try it on a smartphone...

    Without doubt the site I visit most is MSDN, so when I got a new smartphone one of the first things I did was browse to to scope out the latest ASP.NET articles.  A happy surprise fell upon me as I noticed that the site will detect if the requesting client is a mobile device (assumedly with Request.Browser[“IsMobileDevice”]) and then redirect the device to a text-only, scaled-down mobile page.  A nice touch.  I was a bit perturbed that there wasn't a dedicated “ASP.NET' section, but I found such links under the general “MSDN Headlines“ category.

    However, when clicking on an article you're taken to the desktop version of the frame-heavy MSDN article template, which I at first didn't mind (and in fact, preferred), as I run Pocket IE, which, despite my minor criticism is a damn fine mobile web browser.  The only problem is that the MSDN Library, even on my 153Kbps wireless Internet connection, took more than 6 minutes, 38 seconds to load (I'm guesstimating, because I started playing “Stairway to Heaven” in the background the pass the time as the page loaded)!

    The article I was after finally did complete loading after much screen flashing, but the incessant top/left frameset made the page unviewable, and some of the frames came out so minimized I couldn't toggle off either the “Search” or “Sync TOC” frames.  Also, while the other frames loaded, the content I was after...didn't.  Hmm.

    Don't get me wrong, I loves me some MSDN, but this was a major let-down.  And so common, as most site developers (me included) figure a handful of irked mobile users who can't fully experience their site is a necessary evil and acceptable loss

    The corollary to this story is that I found a new/better way to browse MSDN content, going straight to the MSDN Magazine content from Google (which also by default displays a mobile friendly splash page).


  • It sucks when your site's RSS feed has better navigation to your content than your site itself

    I installed RSS Bandit awhile ago and find myself using it more and more these days not to keep tabs on my friends and favorite bloggers, but more so to find articles and content on big sites.  I've been noting that I often can find good content more easily on a feed than on the site itself, which is unfortunate. 

    It's a nice alternative and arguably more flexible for those of us who run content-intensive sites that have articles, bios, profiles and other stuff constantly in rotation and fighting for page real esatate, but it's still tragic for optimal usability.


  • Building a SMTP transport w/WSE 2.0 to allow a web service to receive an e-mail message

    I got a note from the always-delightful-to-chat-with Jeannine Hall Gailey, who wrote the outstanding book “Understanding Web Services Specifications and the WSE“, whose timing couldn't be more impeccable.  I'm working on a tough problem: developing a SOAP transport to allow an ASP.NET XML Web service to recieve an inbound e-mail message, which will then be prepped by an image processing component I wrote prior to INSERT'ing it into a database table.  This is rather tough for a lowly web dev.  :(

    I'm understanding the DIME and/or WS-Attachments concerns regarding reading e-mail attachments (of which I need only 1, a JPG), but I've some additional thoughts are keeping me up at night and are making me lean more towards having this solely run on an ASP.NET WebForm, which invalidates my earlier concerns about providing kick-ass usability:

    • the ever-present nuisance of spam. I *may* be able to code against it, and either (1) not recieve unscrupulous messages, or reject ill-former electronic mail, but it'll only get worse, forcing my service to be called a number of times unnecessarily
    • cases wherein the user submits more than one attachment. I figure I can grab the first .JPG attachment in the collection, but it's still iffy, as some MMS/SMS services I've seen send crappy logos that'll wreck a user's submission
    • cases wherein the user forwards a previous e-mail with an attachment, meaning the first seen attachment is another e-mail, not an image
    • the WS-Eventing concerns to launch the logic when the intermediary (the assigned inbox to recieve the messages) is still in my “gray area“
    • I'm still trying to figure out how to read the body of the e-mail after marshalling the message from SMTP to HTTP, and
    • parsing out the chance that the user may have sent the e-mai body as HTML

    It's quite a list now, but I figure a couple days of good thinking and I should be able to figure it out. The big hurdle at this point is developing the cross-protocol transport.  Joseph Cooney was nice enough to point me to Steve Maine's SMTP transport for WSE 2.0, and that did help. 

    Progress marches on!


  • Does modifying an ASP.NET user control force site-wide recompilation?

    I learned something new today.  Apparently, changing the contents of a user control file (.ASCX ) forces ASP.NET to recompile an entire web app upon reload.  This morning I made a slight modification to a header user control, and then when browsing back to my homepage, I noticed that the page was displaying a different set of data, which I've set to occur ONLY when the Cache API detects a change in an XML dependency file, the web app is restarted, or when web.config is modified.


    I had no idea such would kick-in when changing a user control.  I assumed all pages upon which a user control sits have to get recompiled to account for the change, but I didn’t know it would have such an affect site-wide.




  • PalmOS mobile web browser handles DHTML better than Pocket IE

    I recently was fortunate enough to get (on loan) two smartphones to evaluate for the TV show I host on consumer technology - the Handspring Treo 600 and the Audiovox Thera.  The former runs the PalmOS v.5.2, while the latter, to my surprise/dismay, sports the Microsoft PocketPC 2002 OS.  I was hoping for Windows CE.

    This week I've really been concentrating on drilling down into the browser capabilities of each, and as an ASP.NET developer, taking note of how certain pages/apps behave under each browser.  I was surprised to learn that Microsoft's offering leaves much to be desired.  And I'll have to say that while I prefer Pocket IE's management of page layout and graphics rendering better (all smartphones wreck columnar websites, but Pocket IE is a bit more tolerable), I discovered today that the PalmOS mobile browser really does a far superior job at interpreting JavaScript, most notably in client-side validation routines.  (Note: most DHTML gimmicks on either browser, like menus and desktop browser aesthetic tricks are typically written out the page ad nauseum, which is irritating, but better than throwing an error.)

    Here's an example: I browsed to one of my “e-mail this article to a friend“ pages for a news article on my company's site.  With the Treo, all graphics, controls and content rendered as expected, and I was able to quickly fill out the form fields and submit the form, e-mailing the article to myself.  Which is what I expected to be able to do. 

    With Pocket IE, the error messages for the embedded validation controls within the page were displayed upon the first page load, and when attempting to submit the form, the page threw a generic ASP.NET exception, which didn't happen with the Treo (I coulnd't see what exception class, as I was away from the office and couldn't turn error handling off).

    This was/is a real downer and a significant mark in how we're going to be able to use certain apps.  I'm not sure if this behavior is consistent with the browser in Windows CE, but I hope not.

    On that note, does anyone know if RIM Blackberry devices have similar troubles?


  • The more you try and change usability, the more things stay the same

    I demonstrated in a previous blog about how you can easily emulate Photoshop Actions in ASP.NET with GDI+.  I mentioned at the end of the piece how one of the enhancemenrs of the feature set was allowing the core service to be callable via an XML web service, allowing people to e-mail pictures and captions, which would then be prepped and treated before posting to our database.  I was basing the SMTP ==> HTTP transport communication loosely on the SOAPMail sample app that was exhibited around the time WSE 2.0 was still in Tech Preview.

    This actually makes for a pretty important lesson in usability and progression...the main push when automating our image publishing process for use on a popular community photo gallery we run is that we'd force people to transition away from the expected behavior of being able to transmit images through electronic mail, which is the behavior they'd been used to for nearly five years in us supporting the service. 

    Well, people don't change.  And it would be stupid for us to try to get them to change their expected behavior, lest we lose their interest in our product and stop using it altogether.  Better doesn't always necessarily mean bigger.

    After sitting and mulling on this during a catnap, my subconscious revealed unto me that it would be better for the sake of usership, profitability and support to keep the transmission medium constant - and let us do all the dirty work.  It's really fun now that we'll be attempting to have inbound e-mails take action upon a custom SOAP router and then be processed through WS-Eventing and WS-Addressing.  It'll be sweet if (I mean, “when”) we pull this off.


  • What happened to the SOAPMail sample app?

    I'll admit that I've been out of the web services loop for a few months...I had some plain 'ol ADO.NET, XML and ASP.NET programmig to do, so I had to delay the research and toying with the WSE.  However, I've started a new project that's going to heavily rely on WS-Addressing to accept user images and captions via e-mail and process submissions before posting them to a database.

    I tried to review the SOAPMail sample app for background, but I noticed all the MSDN links to a really great article on implementing SMTP==>SOAP router processing using the SOAPMail sample app now redirect to the WS splash page.  I figure SOAPMail's being updated now that WSE 2.0's in final release.  No sweat.

    I hope it comes back though...there seems to be a lot of interest in SMTP-to-HTTP transmissions, and subsequent frystration at the lack of solid solutions and sample code.


  • Don't ask me for genius and then question the manner in which I provide it

    I've always been of the mindset that when it comes to hiring, managing, and working with technical workers, there's a certain level of inherent personal eccentricity to deal with.  Quite often this contradicts the generally-accepted norm of social behavior.  And typically, I've found that the more technically gifted the individual, the more extreme the eccentricity.


    I've always rooted for the underdog and given the little guy a fair chance, so attempting to be a hero of the oppressed, here's a list of some of the better quips I've heard uttered by unhappy, disgruntled or mistreated code warriors over the years that I've stored in my mental rolodex.  I refer to it every now and then as a reality check.


    By your own admission, you don't understand what I do for a living and how I contribute to our organization, and I may seem disgruntled, but I'm quite happy doing what I do, so it would behoove you to just leave me alone and let me create;


    Don't ask me for genius and then question the manner in which I provide it;


    I'm quite confident in my own intellect and abilities, but admittedly, without certain personal "unique traits" you exhibit on a daily basis, I feel way smarter than I actually am;


    You successfully set up RealPlayer on your workstation.  Hip, hip, hoo-fucking-ray.  Please understand that this does NOT make us technically equivalent;


    According to you, the fact that I once had a completely tame picture of Jenna Jameson on my PC makes me a pathetic perv, but that you've successfully downloaded, watched, and distributed Paris Hilton's video ironically makes you acceptable and the life of the party;


    For you – whose overzealous promises to clients and visions of hyper-accelerated timetables continually force me to come into work much earlier and leave much, much later, and for my single-handed effort of building the products and services you push into the market – a process you dare to call "a collaborative team effort";


    I hate to break this to you, but just because you know how to use Microsoft Access, you aren't a database administrator;


    You scoff at me for staring at a computer screen, typing and endlessly being on the Web all day, thinking such isn't not actual work; but apparently, the time you spend on coffee breaks, smoking, out on the golf course and playing Minesweeper is productive;


    You have the gall to force me into obscene work schedules, and then chastise me for not hanging out more;


    You quickly pass me up for social events or passing conversation, but even more expeditiously search for me when something's wrong with the printer or your e-mail address (which, for your information, isn't my job anyway);


    I often am forced to sit in your boring-ass meetings, wherein I occasionally contribute a couple of random ideas, for which you ultimately take credit and reap rewards;


    You laugh at me publicly and in front of others for being different, I mock you privately and to myself for being the same.


  • If I can't have the BMW that comes with it, I'll at least take the iPod

    One of the things that really sucks about living on Guam is the fact that much of the consumer technology products are service provider-dependent, who have their own idiosyncratic system settings and incompatabilities that make using all sorts of tools nearly impossible.  You're forced to buy certain brands and conform to their pricing, settings and bandwidth.  That's why I like things like iPods.  You do your own thing and get on with your life.  You're the master of your own destiny. 

    At least as far as playing MP3s goes.

    I plan to get one for myself by Christmas.  Having turned a spry 30 this past April, I was likewise hoping to be in a financial possession to be able to afford one of the BMWs that now have iPods integrated into them (a damn cool upselling gimmick if there ever was one), but sadly, not.  So, I'll take the player for now, and maybe get the car in my next lifetime.

    And the capacity?  10,000 freakin' songs?  I'm a damn musician and I doubt I know, much less have in my possession, 10,000 songs!


  • I exhumed my iPaq...and it still works!

    This morning while charging up the PocketPC smartphone I've now decided that I'm going to buy, I thought I'd run a fun test and unearthed the first-generation Compaq iPaq PDA I first got in the summer of 2000 (I was the first person on Guam to get such a device, but who's bragging?).

    Anyway, I was surprised to find out that the phone started charing right off the bat, and after about 40 minutes, had enough charge to stay stable and recover the data that was still on it.  Granted, this had been on the bottom of a pile of papers and dust in my room, but it still functions.  I can't do anything wireless with it, but it's still cool to have.