5/30/2007

Enterprise Library - Library or Framework?

I've been using the Enterprise Library (now 3.1 and significantly more "mature") for a bit now, and on the whole I like what's been done. Policy injection is very AOP-ish and clean (especially with 3.1, you have more freedom to customize) , Logging and Data are provider agnostic (in fact, Ken Scott beat me to it and did a very nice SQLite provider that you can find on the Codeplex extensions bits for EntLib) -- and there are other features that help with the whole concept of "lets build our apps around this".

However, Brad Wilson makes some good points - namely, that "if there is any single failing of Enterprise Library, it is where it tries to behave like a framework where it should instead be acting like a library. Baking the configuration system into EntLib and making it hard to use without it is the most obvious example of this behavior."

I feel the jury is out on this, because if you really want to "engage" with this type of "best practices" concept, at some point, you are going to have to "buy in" to the way it is used, and that means basically, that -- framework or library regardless -- you need to make the business decision of whether you feel you are ready to "bake" all the configuration crap into your apps. Oh, and please don't remind me that I can use the VS.NET integration "Configuration Tool" for this, because it's a piece of junk. I do it manually - I use Reflector to get the assembly data that needs to go into the configuration entries.

While it is certainly possible to use the best practices ideas to attempt to retrofit the Framework "stuff" and backport it into a more-or-less "Library" (e.g. Log4net, NHibernate) type of concept, it would still take a lot of work. My point is that if you decide you want to use this you need to decide to either accept the way its been engineered and use it, or do something else. Bitching isn't going to help much at this late stage of the process.

A lot of this revolves around the strategic decision to use the ObjectBuilder infrastructure to "glue" everything together for the EntLib and related CAB frameworks (Reflection caching and so on) and to try and disassociate this from the dependencies that got baked into earlier versions. Scott Densmore provides more depth on this.

Whatever the end result, it is obvious to me that this whole effort still represents an evolutionary process and that there may be more and different approaches to this whole CAB / Entlib concept forthcoming. However, at this point I feel comfortable with the idea that I can use this the way it is, without fear that I am going to be blown away by some new breaking "innovations" in the future. My point is, take a look. Nobody is holding a gun to your head. If it doesn't fit, then aquit!


In the meantime, developers (IMHO) should take note of the fact that the Entlib as it currently stands is eminently usable, and in fact I am currently doing work for a major client which uses the Entlib 3.0 / 3.1 as an integral part of our work. Everthing can be made to "fit", you can build business and data layers over it, and there seems to be a vibrant community that's evolved over the EntLib / CAB concepts and it's started to take a life of its own. I mean, if you want to see an EntLib evangelist, look at David Hayden. This guy's got Entlib growing out of his ears!

And, you know what? If its good enough for David, then I'm fine with it!

EntLib. It's not just for breakfast anymore.

5/29/2007

Are You Listening, Developer? and Vista Performance

One of the biggest impediments to successful software development is communications, and the biggest part of that, in my opinion, is the ability to listen effectively. I write this not only as an instructional piece, but to remind myself that I too suffer from Listening Dysfunction (LD). I am glad to say that I'm getting better at it all the time, but sometimes I just can't seem to keep it up (the listening, that is). Your doctor generally cannot prescribe some "blue pill" for this, however - you have to fix it yourself.

Have you ever been in a situation where you are conveying a concept or explaining something, and the other person constantly interrupts or "talks over" you? They're not listening. They are involved in some other agenda. Perhaps they hear what you are saying, but the comprehension is not there.

Or, have you ever sent an email to somebody with several points in it, but you get a response that only addresses one point? The respondent didn't "listen" to the whole email.

Or perhaps you were faced with listening to a program manager, team lead or other developer who was attempting to convey some instructions, but they continually wandered from one point to the other, making it much more difficult to get to the main point, and increasing your frustration level. That's the other side of listening - efffective speaking.

Listening versus Hearing

There is a major difference between listening and hearing. Hearing means that you pay attention to what is said. Listening focuses on comprehension. When you listen, you pay complete attention to what is said and try to understand it. This is a critical issue in software development, because it is a big part of what goes into the software. Ineffective listening means you are more likely to get software that does not represent what was requested or required, and the software will need to be corrected and revised, which adds time to the development process.


Good listeners (and speakers):

  • Verbalize raw ideas as they come into your head in a way that you can take notes on
  • Ask questions when you don't understand
  • Focus on someone else's way of thinking to stay engaged in their thought process
  • Move in a methodical way so that you can keep up
  • Compromise on an approach to a solution and agree together on the next steps to take

Listening goes hand in hand with speaking - being able to express yourself concisely and in a methodical, logical, "non-wandering" way. Paper is an important part of this process in development work. Many people do not feel comfortable unless they have a pen and paper at hand. Notes can later be turned into documents or emails and shared as a summary of a verbal meeting that provides a "track to run on".

These are all very basic concepts - but it isn't surprising how often they go overlooked. A quick review of some statistics about listening, compiled by the International Listening Association (http://www.listen.org/), yields some insight into why listening is so hard:


• Most of us are distracted, preoccupied or forgetful about 75% of the time we should be listening.
• We listen at 125-250 words per minute, but think at 1000-3000 words per minute.
• Immediately after we listen to someone, we only recall about 50% of what they said.
• Long-term, we only remember 20% of what we hear.
• Dozens of business studies indicate that listening is a top skill needed for success in business.

Some tips:
1. Listen to understand, not to respond
2. Be quiet
3. Let them finish their thoughts
4. Maintain eye contact
5. Ask questions to ensure that you understand




Vista Performance

I have a love-hate with Windows Vista. I like the new features, but some things just make me mad. Recently I noticed that Windows Explorer started taking a very long time to render the folder tree (e.g., "NOT RESPONDING") and so I started looking around for tweaks and fixes. One place I found that has a very detailed list of fixes is here:

http://www.tweakhound.com/vista/tweakguide/index.htm

I've done just about every tweak the guy has listed, and it definitely helped. Worth a visit.

5/15/2007

Patents: Microsoft, Novell, Dell and -- the Devil?

In an unusual but very logical move, Microsoft and Novell signed a pact (with the Devil?) for interoperability and support between Novell's SUSE Linux distro and Microsoft's Windows operating systems. Dell recently signed on.

MS claims to have hundreds of patent infringements documented in the Linux Kernel and other open source software such as Open Office. Companies with business models based on open source software, or other small businesses, would least be able to afford the legal costs of defending against a patent infringement claim by Microsoft.

A Microsoft spokesperson confirmed that open source projects are infringing on 235 of its patents. The company claims that the Linux kernel violates 42 of Microsoft's patents, that the graphical user interface such as the Gnome and KDE projects fall foul of another 65 and that OpenOffice infringes 45. Email programs account for another 15 violations and the remainder is claimed by various other open source applications.

Microsoft did not identify any individual patents on which the software infringes because that could allow open source developers either to challenge the patent or change the software to circumvent the patent. Now I didn't read all the context from the various posts and news items I got this from, but what it sounds like to me is "We're not gonna tell you what we know, because if we did, then we wouldn't be able to threaten you with it as effectively". I don't care who it is --Eolas, Microsoft, whatever - I just take a very dim view of any kind of patent extortion.

Of course, Linus Torvalds wants Microsoft to identify the patents and "come clean". Heh, don't hold your breath D00d!

The whole thing seems to revolve around accomodating the GPL, because open source Linux isn't put out by "a company", but by a "group". Meanwhile, the Supreme Court is getting into this whole deal of what validates a patent, patent parking extortion, and so on. And boy, I really hope they show the guts and wisdom to start straightening it out, because its become a real drag on progress.

I have some interest in stuff like this because more than once I've been contacted by lawyers complaining that extremely generic articles that I've written about some concept or other seem to violate some NDA I signed with a particular company I worked for.

I believe in NDA's, but I don't believe in extortion via horseshit.

5/13/2007

How to repair Windows Vista when there is no Restore Point

Here is an interesting experience. I don't know how this happened, but either through my careless deletion of an errant Registry key, or some other demon in the OS, I lost the COM+ subsystem when I rebooted Vista. This means you get errors like "Not enough storage space" and so on. Windows Restore is grayed-out, and all kinds of other goodness.

Not only that, but the system won't recognize the Windows Vista DVD in the drive since it now thinks it's a blank CD. DOH!

Unlike with previous OS versions, you cannot repair Windows Vista from the Boot CD unless there is either a System Restore point or you've backed up the system to another drive or other acceptable media. Since I had no backup and could not see "System Restore" I was sunk, right? That would leave only the option of a fresh install which would rename my old Windows folder to windows.old or something like that.

Then, if I wanted my software, I'd have to boot into another OS (I've got Window Server 2003 dual - boot on the other drive), and then copy the saved Registry Hives (at least, the Software hive) back over the new in order to get back my "Stuff".

Fortunately, I had copied the entire Windows Vista DVD to a folder on the hard drive. From within my crippled Windows, I ran Setup off that, and did an UPGRADE. That is, I upgraded Windows Vista with Windows Vista! All is fine.

Some additional ideas

Once you get your machine up and running again, you may find that simple things like allowing Windows Update to run before you've ensured that critical developer items (like installing and enabling IIS 7.0) can mess up your day. Create a new System Restore Point at each juncture to ensure that you can always roll-back to a previously working system state before you go on with your adventures. This simple action, which only takes a couple minutes, can save you hours of pain.

And - another thing: Lars Hederer's ERUNT utility installs and runs fine on Vista - as long as you run it as Administrator and have UAC turned off. There is nothing like a fresh backup of the entire registry that can be easily replaced on-demand to solve problems! Moreover - unlike Windows Vista Restore, you can restore your full Registry from an ERDNT backup folder from a DOS box, with no OS booted! So even if all you've got is the Recovery Console or a Windows PE disk, you can still navigate to the folder and execute the ERUNT recovery executable.

I don't know about you, but I've got a real "Love / Hate" going with Windows Vista. I really like some of the new features, and others, like UAC (which I keep "off") just seem to be the biggest annoyances. There's no question in my mind that Vista is a real memory hog compared to say, Windows XP. And - I can't even get a DirectX 10 graphics card because my box doesn't have a PCI Express slot. Maybe when Longhorn Server comes out in RTM I'll try the 64-bit version.

Summary

1) Keep a full copy of the Windows Vista installation media on your hard drive.
2) Create incremental System Restore Points as you reach "working set" milestones.
3) use the free ERUNT utlity to make regular (or better yet - automated, on startup) restorable Registry backups.

5/12/2007

Is Al Gore full of -- Hot Air?

"An Inconvenient Truth" won an Oscar for best documentary. According to the NY Daily News, fewer than 300 people were eligible to vote in the documentary category for the award. As most are aware, in his movie, Gore claims that production of carbon-dioxide from human energy use will cause devastating changes to the Earth’s atmosphere within 10 years.

The Tennessee Center for Policy Research reported that Gore’s 20-room mansion in Nashville, TN guzzles nearly 20 times the energy of the average American home. Gore, who took more than a month to concede his loss to President George W. Bush in the Presidential election of 2000, has spent the past year promoting his film, making frequent use of private jets. One cross-country flight in a private jet produces nearly double the amount of carbon dioxide produced by an average American in an entire year. I'm not saying other people, Republicans included, aren't just as hypocritical - but Gore's presence in the global warming space certainly seems to be speeding up the process!

Personally, I don't have much doubt that we (people) are contributing to the CO2 content of the atmosphere. However the science and the alarmism don't quite match up.

Dr. William Gray, a top hurricane researcher, called Gore a "gross alarmist", adding, "He's one of these guys that preaches the end of the world type of things. I think he's doing a great disservice and he doesn't know what he's talking about".

The problem is, the long term climatic record shows that we are actually headed for another Ice Age, so whatever we do now is likely to be money grossly misspent.

The scientific record shows that it is warming that precedes the increase in C02 in the atmosphere - not the other way around, as the global warming alarmists claim.

According to Bjorn Lomborg, a respected environmental author, implementing the Kyoto protocol will basically postpone global warming for about five years at the end of the century. Lomborg says, "With global warming you're going to see more heat deaths, but what most people don't tell us is we're also going to see much less cold deaths...The point is again to say we have a tendency to bark up the wrong tree.

We worry intensely about climate change, but the point is we can do very little good at very high cost. What the Nobel laureates basically told us is if we spend our money on HIV/AIDS, we can do $40 worth of good for every dollar. If we spend it on Kyoto, we can only do 30 cents. Let`s do the $40 first."

Lomborg continues, "Basically what they told us was it was HIV/AIDS, malnutrition, free trade, malaria and agricultural research. Those are things that we can do cheaply and do an immense amount of impact in this world right now and also for future generations. Kyoto came down at the bottom. Not because climate change is not real, but simply because the way we tackled it through Kyoto is very expensive and a very poor way of helping the world."


Of course, when scientists want to debate, there is one solution: belittle, insult and sometimes threaten the lives of those opposing voices until they're snuffed out and can no longer be heard. Isn't it ironic that the Greenies who so vehemently advocate that we ride bicycles to work refuse to support one of the cleanest and safest forms of power - nuclear electric plants? The French get 70 percent of their electricity from nuclear power, but we Americans haven't licensed a new nuclear plant in 35 years!

Because nuclear plants emit no greenhouse gases, France has the cleanest air in the industrialized world, and because the price of oil is now around $60 a barrel, it has the lowest electric bills in Europe. In fact, France has so much cheap electricity, it exports it to its European neighbors. French nuclear plants supply power to parts of Germany, Italy and help light the city of London. Boy are we Americans a bunch of ideo-political-greenie IDIOTS!

Scientific consensus has been overturned over and over again throughout history, from eugenics in the 1940s to global cooling of the 1970s, and every generation has groups that think that they are so right they shouldn't be questioned.

I know this will be tough to believe, but sometimes fear makes people act irrationally. Luckily, we have the media to put things into perspective, because nothing ever gets over hyped on television or documentaries, or newpapers:


  • From the "L.A. Times" in 1978: "No End in Sight to 30-Year Cooling Trend in Northern Hemisphere".
  • TIME magazine`s big spread from 1974, asking "Another Ice Age?"
  • "Newsweek" said global cooling evidence had "begun to accumulate so massively that meteorologists are hard pressed to keep up with it."
  • Even in the mid-'90s, the New York Times was talking about a frozen earth, except it wasn`t the 1990s. It was 1895 when it first appeared!

    Yikes! All you need to do is switch the words "cooling" with "warming" and we've heard it all before!

    I'm not going any further with this. I think I've made my point. We cannot just swallow this garbage whole - we need to chew on it carefully, and THINK. And you know what? That ain't hot air.

5/04/2007

Web Site Project -- or Web Application Project?

The Romans would never have found time to conquer the world if they had been obliged first to learn Latin. --Heinrich Heine

I write this because I still see many, many posts and questions from n00b developers who have difficulty with the Web Site project model. In many cases,I believe they do not even know that Web Application Projects are an option, or they simply haven't installed Service Pack 1.

When Visual Studio 2005 first came out, I immediately took a disliking to the only ASP.NET model it had at the time, the "Web Site" project. Fortunately,I wasn't alone, and after listening to the screaming hordes of developers bitching about it, Mr. ASP.NET & Co. finally came out with the Web Application Project, which restored my sanity (and my productivity).

I do not like having multiple "per page" assemblies with weird, cryptic names; I do not like distributing my .cs source files onto a production webserver, and that's just the beginning! If I want my site to be updatable, I can recompile it in 2 seconds and copy over the new SINGLE ASSEMBLY very easily, and not have to worry -- because the names of the files will be identical. Same with revised ASPX pages.

Here is a detailed comparison , but the main differences are:

  • Web Application projects have a physical project file and resemble the "classic" Visual Studio 2003 web project model.
  • Web Application Projects compile all codebehind classes and related free class files in your project into a SINGLE ASSEMBLY.
  • Web Site projects have no project file (very annoying -- in a lot of different scenarios) and are solely based on what’s on the filesystem below the root folder.
  • Web Application projects are standard as of Visual Studio 2005 Service Pack 1.

At this stage, I can say that I would not create a Web Site project for anything except temporary small demos. Web Site ASP.NET web projects are particularly irksome in Team System due to the lack of a physical file that contains project information and metadata. It's impossible to check in code analysis rules on Web Site projects, for example. In addition, the wacky code compilation model that encourages developers to put what "should be" in separate class library projects in the same parent Solution into the APP_CODE folder instead -- just drives me NUTS!

In fact, when you right - click on a converted project and choose "Convert to Web Application" it actually renames the APP_CODE folder to "OLD_APP_CODE" - just so ASP.NET doesn't try to "double - compile" your stuff (a source of many "Tearing my hair out" type issues for inexperienced devs, to be sure!).

Bottom line is, make it a Web Application Project to keep your sanity, and if you have a Web Site project, consider converting it NOW.

Scott Guthrie has an excellent tutorial on how to do this. It doesn't take very long. You'll thank me later!

Now you will always get a few who disagree with me on this one. You know what I have to say to you? Phooey! Vee don't need no steenking Web Site projects! Don't forget the penultimate principle: "Less -- is more!" Rest my case. Some interesting comments so far. In particular, take a look at Ted Jardine's blog.