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!

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. :)

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.

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.

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.

AuthoringFor 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 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 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 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 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).

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.

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.

ReadingNow, 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!

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.

I just heard that my governor has shut down half the state government because some other politicians won't go along with his plan to increase sales tax. Given that New Jersey has the most ridiculous property tax I've heard of, and we're supposedly the most densely populated state in the union, I find it hard to believe that we really need to increase the sales tax to balance our budget. Apparently, a lot of politicians agree.

Not only is he shutting down stuff, but he's also keeping government employees working without pay. That's just not right. For his own sake, and for all the affected gov. employees, I hope they figure something out quickly...

This is a repost. The new blog authoring software I tried tonight overwrote this post instead of posting a new one. I'll be reporting that bug. :)

------

For some, this may be old news, but I was just visiting again today, and I thought this is something that more people should know about. So in case you haven't heard, the ASP.NET teams have put up a little section on asp.net to host side projects that they're working on; they call it the sand box. Right now, they have 10 projects up there, including the famed "Atlas."

There are a number of other tantalizing tidbits that you might find interesting. I just downloaded and installed the CSS Properties Window, which is a pretty neat way to edit your styles. It will let you see the styles applied to a particular element while in design view and let you modify them, even ones in a linked style sheet, even using themes.

One they just recently released is this thing called the Blinq Prototype, which as I understand it is a tool that will generate an ASP.NET application using DLinq (ORM paradigm) based on a database. Now, I'm a strong advocate of object-oriented and domain-driven design, but if you need a good starting place for an application that is based on an existing database schema that uses objects (not data sets) and integrated language query (which is totally awesome!), this promises to be a RAD tool (in both senses).

Yet another nice tool is the table profile provider. The out-of-the-box profile provider in ASP.NET stores profiles data as a blob-like manner; this tool enables you to store the profile properties separately in the database as distinct columns. I don't know about you, but that's how I prefer it. It's always nice when you get free code done pretty much the way you want it.

One tool there that I find absolutely indispensible is the Web Application Projects. That one's actually a tad more official than some of the others as it is a released add-on, but despite its official suit and tie status, it's still a really cool tool. I find that I pretty much want to do all my ASP.NET apps as WAPs, maybe because it is more familiar from the 1.x days, but mostly because most of the apps I work on are team projects, and WAP plays much better with VSS, in my experience, than the 2.0 web site projects.

So the sand box is definitely a spot you should keep your eye on for new, cool stuff that comes out of band from the regular release cycles from Microsoft. As far as I know, there is not currently an RSS feed for the sand box, but if you watch Scott Guthrie's blog, he's usually good about talking up the stuff they put out there.

I recently got an email about a new service to add my blog RSS feed to Live.com (note the new icon on my blog, if you visit it). For some time, I've been wanting to look into an AJAX-based web client for reading my blogs because I've found, like newsgroups, I just don't like having to set up everything I'm subscribed to on every computer I use. At the same time, I do want a good UI.

Well, I've been putting off doing the research for it (and my blog reading has suffered for it). Today I thought I'd check out what Live.com is like as an RSS reader, so I first tested using my new link to add to Windows Live. It works and basically adds a little RSS reader gadget for my blog. So then I thought I'd check out how it'd work with all my blogs, so I got the latest OPML (based on my blog roll here) and used Live.com's import feature to import them all.

At first, I was a bit disoriented because it said it imported but it wasn't showing them anywhere (I expected them to be put on the page I was looking at when I imported them). But then I found them in the My Stuff section. So I started building out my layout.

I started with the default two-column, but I quickly realized that wouldn't work, so I switched to four column, which seems to be just right at 1280x1024. I knew I wouldn't want them all on one page, but I did want some categorization, so I came up with non-technical blogs, architecture blogs, and other technical blogs, one Live page for each. Then, if it made sense, I categorized by column. The results follow.

This is the "Other Technical Blogs" page.

This is the "Architecture Blogs" page.

Now great, you may be thinking, I can use this as well. Let me warn you, there were a couple MSDN blogs that repeatedly and totally hosed IE7 (I'm running Vista B2 x64 on this box). I figured out which blogs they were and removed them from my stuff. But even doing that, IE was still having problems, and as you can see from the image below, there's a reason for that.

Note the top entry. IE is running at 50%, but this is a dual-core Athlon CPU, which means on some machines it'd be trying to use 100%, and the memory usage is out of this world (350MB), even bigger than Visual Studio!

From the people I've talked to, having Live.com eat up CPU and RAM is not unusual. Not being a Javascript and AJAX guru, I'll withhold any harsh judgments as I can readily imagine how it could be problematic. But all I'm sayin' is that it ain't ready for primetime blog reading at a very basic level.

Beyond the performance issues, it also has no tracking of read/unread and no notification of new posts, both of which I think are indispensible for any kind of RSS reader. Now, I understand that maybe I'm abusing what they intend for the usage scenarios to be, but why else make it possible to subscribe to RSS feeds than to be an RSS reader? As it is, the gadget is only good for limited use for maybe news services or the like where you don't care about having your read/unread tracked.

I will say that it has a neat little image capture feature where it'll grab any images in the feed and thumbnail them for you, even do a fade in/out if there is more than one. It also has neat little mouseover previews, which I like. It's not totally unusuable in terms of features to be sure, but it would be nice to see a better blog reader gadget that maybe would offer some basic categorization, read tracking, and possibly some sort of notification, though I'm not sure how that'd fly given it is web based. I'm going to keep trying out Live.com like this to see if they improve it.

On the positive side, this motivated me to blog about it and, in the process, try out a new blog authoring tool, WB Editor 2, based on the recommendations of John Forsythe. It has a pretty friendly interface, is easy to set up (as these things go), and it is cheap. This post is being authored with it, so if there are any issues, well, there you go, but it was easy to add the images, and it created the thumbnails for me and uploaded them along with the main images. I also like that it has a plug-in architecture that is .NET based, even if it is 1.1. So far, I like it even better than BlogJet.