On this page.... RSS 2.0 | Atom 1.0 | CDF
# Friday, 18 August 2006

Here's a quick tip for something pretty neat in ASP.NET 2.0.  You can specify output cache profiles in the application configuration like so (this is under the system.web configuration section):

<caching>
 
<outputCache enableOutputCache="true" />
  <
outputCacheSettings>
   
<outputCacheProfiles>
      <
add name="StandardPages" duration="300" varyByCustom="browser;culture" />
    </
outputCacheProfiles>
  </
outputCacheSettings>
</
caching>

Then in your Global.asax code, add the following handler:

public override sealed string GetVaryByCustomString(HttpContext context, string custom)
{
 
string[] variances = custom.Split(';');
  System.Text.
StringBuilder response = new System.Text.StringBuilder();
  foreach (string variance in variances)
  {
   
switch (variance)
    {
     
case "browser":
        response.Append(
this.Request.Browser.Type);
       
break;
      case "culture":
        response.Append(System.Globalization.CultureInfo.CurrentUICulture.LCID.ToString());
        break;
      }
    }
 
return response.ToString();
}

Now, on any pages you want to be cached like this, you can just add the output cache directive like so:

<%@ OutputCache CacheProfile="StandardPages" %>

Of course, you can add other profiles for pages that, say, vary by parameters, controls, and the like, but this makes it easy to control the caching of all of a kind of a page via the web.config and also shows how you might set up a profile that varies by browser and culture.  And with an implementation of GetVaryByCustom like this, you can add your own variances and mix and match them in your profiles as desired.  It makes for a pretty flexible caching system.  For instance, you could add a check for authentication and, if authenticated, effectively turn off caching by appending a user ID or name and the current date and time (DateTime.Now.ToString()).  That way pages would be cached for anonymous visitors but for authenticated users, where the content is more dynamic, you might not want to cache.

Friday, 18 August 2006 16:54:02 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, 02 August 2006

I just ran across Ryan Plant's post about the "Web Architect."  He seems affronted at the idea, but this was one of my titles in a former life.  So it's not so surprising to me.  There are indeed a lot of considerations (some of which Ryan talks about) that you have to think about when designing web applications that you don't have to think about in other kinds of applications.  It really does take a specialized set of skills.

That said, I don't think that having those specialized skills would necessarily qualify one as a web architect.  Given my previous thoughts on the subject (illuminated here and elsewhere), many of which seem to echo or be echoed in other publications on the quesiton of what is IT architecture, I tend to think that the web architect role would be a valid role if it was thought of as the individual responsible for a company's web presence.  There are I think distinct questions that have to be thought about in terms of the business and how it is represented on the web (at least on the properties controlled by the business). 

Depending on the company, there may be warrant to have an individual in a web architect role, which would of course assume the knowledge of the specific skills Ryan speaks to, but, more importantly, this role would be responsible to consider how to strategically take advantage of the web to address business needs.  In some companies, such a role may be subsumed into the greater enterprise architect or solutions architect roles, but in others, I could see it being a peer or possibly a report to the enterprise architect and a peer with other IT architects, working with him to coordinate technology application for the business specifically on the web.  This assumes that there is sufficient business need for such a distinguished role, not just a need for the web skill set.

Wednesday, 02 August 2006 14:13:41 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, 01 August 2006

I was just reminded via email today that I never came through on my intention to post something about my Oracle ELMAH provider.

There's not a lot to it, and if you want to understand it, just look at the ELMAH docs for how to write a provider.  There are some SQL files in the project that you'll need to run on your Oracle db.  Alternatively, there is a CreateElmahTable static method you can call from code to automate setting the table up.

Note that in addition to your standard connection string, there is a schema attribute you need to set in your ELMAH config to tell Oracle what schema to use for the ELMAH stuff.  Other than that, it should be plug-n-play just like ELMAH.  Enjoy!

Without further ado: Oracle ELMAH Provider (15kb)

 

Tuesday, 01 August 2006 11:31:30 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, 26 July 2006

Okay, so I'm a little late to this bandwagon, but on an email list I'm on, Michael Campbell alluded to Robert McLaws' shell extension idea to run the ASP.NET web development server for any folder.  Then, in a comment on that blog, Chris Frazier provides the code for a console application that overcomes some of the limitations that Robert's idea had and adds the nice feature of opening your default browser to the new root.

This is all fine and dandy, but where's the dang EXE?!  So I took Chris' code, incorporated Daniel Fisher's suggestion for getting the path to the web dev server.  In fact, I took it a step further and created a simple installer so taking advantage of this neat idea is as simple as running an installer.  So without further ado:

OpenCassini.msi (355kb) <-- This will do it all for you, including making it easy to remove via Add/Remove Programs

OpenCassini.zip (11kb) <-- You'll have to manually place the files and modify the .reg file to get it going.

I hope others find this useful and maybe a bit easier than setting all this up on your own.  Also, I'll be happy to share the project with anyone who cares, but there's not much to it beyond what's outlined in Robert's post.

UPDATE: I just found the post that Robert alluded to (too bad it wasn't linked from the original).  Unfortunately, his link is giving me a 404, so maybe my time wasn't totally wasted after all. :)

Wednesday, 26 July 2006 16:48:28 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, 20 July 2006
I've recently been informed that "the .NET Framework groups are offering another series of Live Meeting presentations called “Live from Redmond”. These talks are given by product team members, so it’s content directly from the program managers and developers on the team. The feedback from the first series that was done in partnership with INETA was overwhelmingly positive so Microsoft has decided to offer another set of talks."  Looking over the list, it looks like there's a lot of good stuff, so I thought I'd pass 'em along.

Client Talks

Date

Title

Speaker

Registration URL

16-Aug

Smart Client: Offline Data Synchronization and Caching for Smart Clients

Steve Lasker

Click here

23-Aug

Windows Forms: An Overview of Windows Forms in Microsoft Visual Studio 2005

Saurabh Pant

Click here

30-Aug

Visual Studio: Developing Local and Mobile Data Solutions with SQL Server Everywhere

Steve Lasker

Click here

13-Sep

(WinFX) Windows Forms: How to Leverage Windows Forms and Windows Presentation Foundation in a Single Hybrid Application

Scott Morrison

Click here

20-Sep

Windows Forms: Solutions to the Most Common Windows Forms Development Challenges

Scott Morrison

Click here

Web Talks

Date

Title

Speaker

Registration URL

25-Jul

ASP.NET: An Overview of ASP.NET and Windows Workflow Foundation Integration

Kashif Alam

Click here

3-Aug

ASP.NET: Building Real-World Web Application UI with Master Pages, Themes and Site Navigation

Pete LePage

Click here

10-Aug

ASP.NET: Creating Web Applications Using Visual Studio 2005 Team System

Jeff King

Click here

17-Aug

ASP.NET Atlas: A Developers Introduction to Microsoft Atlas

Joe Stagner

Click here

22-Aug

Best Practices and Techniques for Migration Visual Studio 2003 Web Projects to Visual Studio 2005

Omar Khan

Click here

24-Aug

ASP.NET: An ASP.NET Developer’s Look at Using RSS

Joe Stagner

Click here

7-Sep

ASP.NET: Under the Covers - Creating High-Availability, Scalable Web Applications

Stefan Schackow

Click here

14-Sep

ASP.NET: Using User, Roles, and Profile in ASP.NET 2.0

Joe Stagner

Click here

21-Sep

ASP.NET: Comparing PHP and ASP.net

Joe Stagner

Click here

28-Sep

ASP.NET: Security Tips & Tricks for ASP.NET Developers

Joe Stagner

Click here

Commerce Server Talks

Date

Title

Speaker

Registration URL

1-Aug

Multi-Channel, Connected Commerce (BTS/CS integration)

Caesar Samsi

Click here

15-Aug

Commerce Server 2007 Overview

Mark Townsend

Click here

12-Sep

Commerce Server 2007 Architectural Deep-Dive

David Messner

Click here

.NET Compact Framework Talks

Date

Title

Speaker

Registration URL

29-Aug

.NET Compact Framework 2.0: Optimizing for Performance

Ryan Chapman

Click here


Thursday, 20 July 2006 20:49:01 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, 19 July 2006

While reading over the latest issue of Perspectives from the IASA, it struck me my current thinking about philosophy rings true for how I'm thinking about architecture, at least in one rather important aspect.  You see, in considering all of the various philosophical systems developed over human history, it strikes me that there is no one philosophy that suits all people, at least not realistically speaking.

Sure, as a devout Roman Catholic and amateur philosopher myself, I do think, ideally speaking, that Catholicism is the best philosophy for all human beings.  The problem is that, first, not all humans are philosophers.  Second, and vastly more importantly, all philosophers and non-philosophers alike are humans. 

As humans, we're made up of more than just plain ol' objective reasoning.  Indeed, I rather think that we are first and foremost a bundle of nerves and emotions, and only a few among us even try to tame that bundle into something resembling objective and rational thought.  Even those are still far and away subject to the non-rational whims of humanity, including prejudices, presuppositions, and all that other non-rational goo that makes us who we are.

This is why I say, realistically speaking, there is and can be no unifying philosophy that all humans can follow, as much as I might like for it to be otherwise.  I think this much has proven true in that neither by force nor by argument has any one philosophy been able to subdue humanity in all our history, despite attempts at it by both the very strong, the very intelligent, and the very persuasive among us.

If this is true, what is then the best thing that we can do?  Right now, it seems to me that perhaps the best thing that philosophers can do is to try to discover philosophies that are the best for persons with a given background, a given culture, and at a given time.  I don't think this is the same thing as relativism because, first, we can still talk about the best objective philosophy for all humans (even if all humans will never follow it), and second, we can talk about an objectively best philosophy for persons of similar backgrounds, cultures, and times.  We can still say that our philosophy is the best for humanity while realizing that perhaps the best for this person over here is another, given all the factors that have shaped him or her.

About now, my technical readers will be wondering when I'll get back to talking about architecture and how it relates to these ramblings, and, happily for them, here we are.  The most recent issue from the IASA has several articles purporting what it means to be an architect, how to become an architect, and how best to educate for architecture, among other things.  In reading these, I was struck (I should say again) that there doesn't seem to be one unifying idea of what it means to be a IT architect or how to become one.

Certainly, there are commonalities and core competencies, but I think that ultimately, the question of whether or not one can know if he is an IT architect (shall we say, the epistemology of IT architecture) and consequently whether or not you can tell someone else you are one, depends largely on the context of the question.  Just as there are many different industries, company sizes, and corporate cultures, so it seems there should be many different categories of architects to match. 

In an earlier blog post and article this year, I tried to throw out some ideas about what software architecture is and how we should be thinking about it.  I still think that the distinctions I was drawing are valid as are the key differentiators between software architects and developers, and incidentally, I'd suggest that the distinctions are also valid for the infrastructure side of IT.  It seems to me that the key defining aspect of an architect is the ability to tangle with both the business and the technology problems and effectively cut through that Gordian Knot, arriving at the best solution.

If so, then what makes a person an IT architect depends on the business at hand and the technology at hand, not on some presupposed host of experience with different businesses and architects.  The issue I take with Mr. Hubert in his "Becoming an IT Architect" (IASA Perspectives, Issue 4) is that it sounds as if one must have visited all his "stations" in order to know one is an architect.  While he starts out the article saying he is just recounting his particular journey, most of the article smacks of an attempt at generalizing his individual experience into objective truth, in much the same way that some philosophers have tried to draw out the best objective philosophy based on their own experiences and cultures.  In the end, such attempts invariably fall flat. 

Without digging into the specifics of the "stations" that I don't think are core to becoming an IT architect, let's stick to the central proposition at hand (which makes such a specific deconstruction unnecessary), namely that IT architecture at its essence is the previously described weaving of business and technology skill, with an admittedly stronger technical than business bent.  If that is the case, there is no one definition for what it means to be an IT architect, nor is there consequently any one path to become one.  With that in mind, reading Mr. Hubert's story is valuable in as much as one wants to know how to become a software architect at the kinds of companies, projects, and technologies that Mr. Hubert works with today, but it is only one story among many in the broader realm of IT architecture.

Rather than trying to establish some single architect certification that costs thousands of dollars and requires specific kinds of experience to achieve, we should think in terms of what it means to be an architect for a company of this size, with this (or these) primary technologies, this culture, and at this time in the company's life.  Only within that spectrum can we realistically determine the best definition of an IT architect, much like there may be a best philosophy for individuals within the spectrum of particular backgrounds, cultures, and times.

Does this mean we can't talk about skills (truths) that apply to all architects?  I don't think so.  The chief skill is what I've already mentioned (solving business problems with technology), but perhaps we could say that all architects need deep experience and/or training in a technology (or technologies).  Similarly, we could say that architects need training or experience in business in general (those concepts and skills that span different industries).  We might also say that they need training or experience in particular industries, at least one.  These individual truths combine to form something of an objectively best architect, but the specific best architect definition will vary depending on the context.

This kind of talk provides a broad framework for speaking about IT architecture as a profession while leaving room for the specific categories that could be specified to enable better classification of individuals to aid in both education and recruiting.  We already have some of these definitions loosely being developed with such terms as "solutions architect," "enterprise architect," and "infrastructure architect."  However, I feel that these may still be too broad to be able to sufficiently achieve an epistemology of IT architecture.  Maybe "enterprise" is the best one among them in that it historically does imply a large part of the context needed to have a meaningful category within IT architecture, but I tend to think that "solutions" and "infrastructure" are still too vague and lacking context. 

I don't propose to have the solution all worked out, but I do think that the key things, both in philosophy and software architecture, are to provide contextual trappings to determine the most meaningful solution to the problem at hand.  If that means speaking of a software architect for a local, small, family-owned brewery on the one hand, and an infrastructure architect for a multinational, Fortune 500, telecom company on the other, so be it.  But if we can generalize these sort of highly-contextual categorizations into something more usable for education and certification, all the better.  Granted, we won't have categories that sufficiently address every meaningful variation (as is the case with all taxonomies), but as long as we're working forward with the necessary framework of context, I think we'll get a lot closer than many of the current attempts that result in over generalization (and thus lose meaning as categories per se). 

In the meantime, I'd suggest that my assertion that the key distinction is in one's purpose (see the aforementioned article) is the best way to establish a basic epistemology of IT architecture.  I think it is certainly sufficient for individual knowledge and broad group identification, though clearly more needs to be worked out to assist in the development of training, education, and certification that will feed into trustworthy standards in the various categories of IT architecture.

Wednesday, 19 July 2006 22:30:40 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [2]  | 
# Saturday, 08 July 2006

Well, I've finally settled on the software I'm going to use to write my blogs as well as read them.  I'm pretty picky about UI these days, and most of the software out there is just not that great when it comes to that.  But of course, I also need it to integrate and minimize the time it takes to set things up and the time I have to spend jacking with it on a regular basis. 

Authoring
For authoring, I've decided to go with WB Editor 2.5.1 by Yiyi Sun.  I like the UI.  It currently uses the webby L&F, which when done right has a pleasant, light feel to it.  One thing that immediately strikes me as nice is that when I save a post for the second time, unlike BlogJet, it just saves to the same file I saved before and doesn't prompt me to pick a new file and then, when I select the same file, ask me if it's okay to overwrite it.  That really bugged me about BlogJet.  With WB Editor 2.5.1, CTRL-S works just like you'd hope, although it does pop up a notification saying it was saved, which is a bit annoying but can be dismissed with a spacebar slap.  I'd prefer the notification be in the status bar, but it's still much better than BlogJet in terms of saving drafts.

Post Authoring 
Post Authoring with WB Editor 2.5.1

Note that the color is green; it comes with three theme (skin) options: Blue (default), Green, and Pink.  I've always had a penchant for green.  Note also that the coloring of the post itself is like my dotNetTemplar blog; you can set this up using the options by specifying styles.  It's kind of nice so that you get a better feel for what it looks like, but it would be helpful to 1) allow for a stylesheet per blog and 2) encapsulate the entire post in a div to better capture the L&F of a single entry on a blog site (not sure how this would work in the editor, though).

I also like how ridiculously easy it is to insert images and screen shots.  When you click the insert/upload image icon, it has a friendly dialog that lets you pick the image or even paste from the clipboard.  It offers the option to automatically create a thumbnail and upload them both either via FTP or to Flickr.  I haven't tried the Flickr option, but it works great with FTP.

Adding Images
Adding Images with WB Editor 2.5.1

The HTML itself is clean, too, and it has a nifty little snippet insert drop-down for common stuff.  This is important to me because I don't want my editor using any markup--I want to leave it to my style sheets.  And it seems to play well with that.  It also highlights nicely, and the highlighting colors are personalizable.

HTML Editor
HTML Editing with WB Editor 2.5.1

Being a sucker for good UI, I enjoy the main screen that shows your registered blogs.  Yiyi has gone to the trouble to get images for the major blog engines (needs to update .Text to CS), so you get that along with a screen shot of your blog, the URL, and the categories.  And yes, you can of course cross post to multiple blogs, which is one reason to use an editor like this.

 WB Editor Home
WB Editor 2.5.1 Home

One of the really nice things about WB Editor from a .NET developer's perspective is that it has a plug-in architecture (currently running on .NET 1.1). 

Plugins
WB Editor 2.5.1 Plugins

An important plug-in for devs is a code highlighter.  It may not be the nicest formatting, but it works.  If you don't like it, you could easily write a plug-in to use a formatter that you do like.

[Serializable]
[XmlRoot("links")]
public class NavigationRoot
{
    NavigationLinkCollection items = 
        new NavigationLinkCollection();
    [XmlElement("link")]
    public NavigationLinkCollection Items 
    { 
        get 
        { 
            return items; 
        } 
        set 
        { 
            items = value; 
        } 
    }
}

Another feature that I like about WB Editor is its roadmap, which promises to stay on top of the latest technologies from Microsoft, such as 2.0 and ClickOnce (coming in the next version) and ultimately .NET Framework 3.  It's a project that I could get excited about working on, and as you can see from the blog, it is actually being worked on.  Of course, it has other features that you can read about in its features list; I'm just highlighting the ones I think are cool.

So in short, it has everything that I'm looking for in a rich-client blog editor, and I'd recommend it over the much lauded BlogJet.  It is also competitive in pricing, currently at $19.99, which for a great piece of software like this is outstanding.

Reading
Now, I did mention at the beginning that I'd also settled on an RSS Reader.  I looked at a few, RSS Bandit, FeedDemon, Windows Live, Awasu, and probably a few others that don't readily come to mind.  My issue with all of these is the amount of work involved in setting them up.  It's not that they're particularly troublesome if you can live with a straight list of blogs from your OPML file, but if you like to categorize like I do, then it becomes troublesome, especially when you use multiple machines with multiple OSes on them.  Having to repeatedly setup my subscriptions kills me, and it's one reason I have always avoided using newsgroups.

Ideally, I'd like to just set them up once, and be able to read them either online or in a rich client, and have both of those stay in sync.  The only such RSS reader I ran across that met the bill was NewsGator, and in particular, their Inbox product that integrates with Outlook.  I might have gone with their FeedDemon product, except I am in fact one of those users that almost always has Outlook open, and I figure why have another app that is always running.  Also, I bought Newsgator way back in '04 when it first came out, so having an already-purchased license (with a free upgrade to the latest version) helped me decide.  Naturally, I had long since lost my license info, but they have a nifty license retrieval mechanism, so it was painless to get it going. 

The feature I most like, in case I wasn't already clear, is that they integrate and synchronize with their online reader, so I can have the best of both worlds, and when I want to set the rich client up, I can just grab the stuff from my already setup online source.  I can make new subscriptions and reorganize them on either the rich client or web, and it will keep them in sync.  It's the best of Plaxo for RSS.  Ah, now this is software for the connected world.

So that's about it.  I just thought I'd pass along my findings to you in case you've found yourself in a similar predicament.  I'm not trying to convince you to change if you're already happy with your setup, but if you aren't happy, consider these two products for the total blog/RSS reading and authoring solution.  I hope it helps!

Saturday, 08 July 2006 13:45:13 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, 03 July 2006

I just finished reading Blink based on the recommendation of a presenter at TechEd.  I don't recall the presenter's name, but it was an architecture track about bridging the gap between infrastructure and development.  Turns out I could have pretty much just not read the book and gone with this presenter's synopsis of the main points.

I don't want to downplay the work that Malcom Gladwell (author) put into the book.  He clearly spent a good deal of time researching and interviewing, and the book is engaging.  He uses a lot of anecdotes to illustrate his points, and the overall impression reminded me a lot of the Dale Carnegie books.  Both use anecdotes to prove points, and both have points that, when you think about them, are pretty much a given.

I will hand it to Gladwell in that he has gone to more trouble in the research department and has gone to lengths to use scientific studies and anecdotes from pundits to support his points.  For those who need the scientific evidence, that will be important.  But I personally found that the points are things that can be inferred from human experience, if you think about them.

The nice thing about books like these is that they do humanity a service to draw out and highlight important elements of our shared humanity and how we can take advantage of them to be more successful in life.  It would be so easy to go through life without thinking twice about the propositions that this book makes, but just like the Carnegie books, if you are conscious of them, you can try to employ them to better yourself.

The book is a very easy read, and so it is easy to forgive that there isn't terribly much in the way of thought-provoking substance.  In fact, it is its easiness that makes it worthwhile.  While the same points could be presented in a much more concise format, it would be a much drier read and may not even have the same impact.  Because it was peppered with anecdotes, like the Carnegie books, the points made were more relatable and more memorable.

If all you care about are the points being made in a book, I'd suggest you just read the Publishers Weekly review on Amazon, but if you like to be entertained while you learn and learn in a memorable way, I'd recommend picking up a copy of this book.  The points are valuable on a personal as well as a business level.

Monday, 03 July 2006 20:45:29 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 

Disclaimer
The opinions expressed herein are solely my own personal opinions, founded or unfounded, rational or not, and you can quote me on that.

Thanks to the good folks at dasBlog!

Copyright © 2017 J. Ambrose Little