<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>TECH NOTES</title>
	<atom:link href="http://blackfalconsoftware.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blackfalconsoftware.wordpress.com</link>
	<description>Black Falcon Software&#039;s Technical News For .NET Development</description>
	<lastBuildDate>Thu, 05 Jan 2012 08:04:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blackfalconsoftware.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>TECH NOTES</title>
		<link>http://blackfalconsoftware.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blackfalconsoftware.wordpress.com/osd.xml" title="TECH NOTES" />
	<atom:link rel='hub' href='http://blackfalconsoftware.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Software Engineering: The ASP.NET (Web Forms) – ASP.NET MVC Debate; A Software Engineer&#8217;s Perspective</title>
		<link>http://blackfalconsoftware.wordpress.com/2010/10/24/software-engineering-the-asp-net-web-forms-%e2%80%93-asp-net-mvc-debate-a-software-engineers-perspective/</link>
		<comments>http://blackfalconsoftware.wordpress.com/2010/10/24/software-engineering-the-asp-net-web-forms-%e2%80%93-asp-net-mvc-debate-a-software-engineers-perspective/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 18:12:36 +0000</pubDate>
		<dc:creator>Black Falcon</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[asp.net mvc]]></category>
		<category><![CDATA[mvc]]></category>

		<guid isPermaLink="false">http://blackfalconsoftware.wordpress.com/?p=2469</guid>
		<description><![CDATA[Now that ASP.NET MVC is headed into its third release version there is enough information out and about as to whether it is a viable platform for developing production implementations as compared to its more mature sibling, Web Forms. For any developer who decides to do such comparative research, he or she will find a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2469&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://blackfalconsoftware.files.wordpress.com/2010/10/asp-net-web-forms-asp-net-mvc-debate.jpg?w=600" alt="" /></p>
<p>Now that ASP.NET MVC is headed into its third release version there is enough information out and about as to whether it is a viable platform for developing production implementations as compared to its more mature sibling, Web Forms.</p>
<p>For any developer who decides to do such comparative research, he or she will find a plethora of articles and documents touting the efficiencies of ASP.NET MVC over its older, more embedded forbear.  And all of these writings will be very much on target from a technical perspective.</p>
<p>ASP.NET MVC does in fact use the reliable MVC design pattern to more efficiently separate the web-based interface from the support modules allowing for more efficient testing of such constructs.  ASP.NET MVC does take advantage of the stateless nature of the Internet in a more direct way by not hiding its limitations from the developer.  ASP.NET MVC does use more efficient URL mapping instead of the bulkier page-life-cycle methodology that Web Forms uses tying the corresponding interface to a single middle-tier module (code-behind).</p>
<p>And ASP.NET MVC, though nearing its version 3.0 release, is still relatively new for the .NET community making it more tantalizing than using a more mature technology.</p>
<p>All of this is good from a technical perspective as it was good for Java at the time it was being touted as the new development paradigm for the Internet.  But ASP.NET MVC shares the same weakness that has always plagued the Java Community;  it is promoted by purists and evangelists for the sake of the technology and not its actual relationship to providing efficient methodologies for getting jobs done quickly, efficiently and with levels of corresponding quality.</p>
<p>Younger technicians with a penchant for using the latest technologies available or the slightly older ones who have been severely inundated with the latest techno-babble from vendors and vendor-evangelists see nothing wrong in merely using the technical advantages of newer technologies when compared to similar disadvantages to older ones.  However, does this in of itself make it the correct basis for decision making processes for real-world application implementation?  In a word; No…</p>
<p>Making such decisions in the chaotic, business world that we inhabit today takes experience in seeing the varying forms of failures that projects can experience from bad decision making.  And with a continuous software project failure rate still hovering around 70% since the inception of modern, application development in the 1960s, one has to be cognizant of what causes such failure in order to provide a better than average chance of having their project implementations succeed.  Unfortunately, most developers and technical managers are blind to such foresight since few take the time to study the actual requirements of software development and if they do, they rarely stand by proven methods of success.</p>
<p>Most often people simply give in to the stresses of just getting the job done as a result of supervisory pressures and tight deadlines.</p>
<p>Moving from a rather complex Web Forms project on my last consulting assignment which wrapped up this past August to my current position, I was recently exposed to the stark realities of rushing to use newer technologies based on their technical advantages over more mature options.</p>
<p>Moving into a new ASP.NET MVC project was admittedly very much like being thrown into a lake of icy cold water.  All of the familiar underpinnings of existing Web Form paradigms were gone replaced by an intimidating but somewhat familiar environment of “Classic ASP” but on steroids.  Despite the fears of many Web Form developers, that ASP.NET MVC is a step backwards towards the older methodologies of implementing web applications, such reactions are based upon only a knowledge of what this framework appears to be on the surface.</p>
<p>There is a lot more to it than just a reflection of “Classic ASP”, though it is very easy to understand why so many would have such a reaction.  I have done a number of years of “Classic ASP” as well as the equivalent number of years doing Web Forms and my initial reactions were exactly that of a giant step backwards.  However, once you get involved in understanding the intricacies of this new framework, you quickly find that the only thing “Classic” about ASP.NET MVC are the server tags mixed in with the HTML markup…</p>
<p>That being said, there are however, some severe penalties for using this platform without first thoroughly familiarizing oneself with it.</p>
<p>ASP.NET MVC is not a platform that is ready for “prime time” if your project has strict deadlines.  It is not ready for “prime time” if the project team is not familiar with the tools required to replace those that had become so familiar when developing with Web Forms.  And it is most definitely not ready for “prime time” if the project manager has no time for that level of “project risk” that will have to include a major learning curve for the team.</p>
<p>Simply put, ASP.NET MVC is not a “Rapid Application Development Environment” or “RADE” if one wants to conjure up similarities with the well-known insect terminator product…  It is simply designed to be too low-level for want of a better description in order for it to be able to provide quick responses  in terms of development efforts.  ASP.NET MVC is also an environment that enforces software engineering paradigms simply by its very nature.  And software engineering paradigms are both misunderstood and distrusted by most technical managers since all they see are the additional time requirements that such paradigms incur when scheduling a development project.  This in turn has encouraged such fads as XP and Agile programming both of which are no more than what we used to call “guerilla programming” in the mainframe world; fads that encourage minimalistic planning while turning out small bits of working code with little in-depth knowledge as to where the overall project should be heading.  Even planning in many instances is now considered a waste of time by many project managers; just “code &amp; go” is what is actually wanted in many situations.</p>
<p>Because of its adherence to software engineering paradigms, ASP.NET MVC can literally sink a project if the user or client overseeing the project is in a constant state of chaos due to their own inability to articulate exactly what it is they want from the software development effort they have commissioned.  This is because ASP.NET MVC forces development to occur in a certain manner which also encourages a lot more fore-thought on the part of the development team.</p>
<p>However, one thing that can be said about this new environment is that once you get a working knowledge of it, it is not only quite a bit fun but terribly addictive because of the fact that it does provide such a nice way to implement a project’s middle-tier.  Once mastered, you are forced to reconsider development with a Web Form model merely due to the elegance and simplicity of the ASP.NET MVC paradigm.</p>
<p>Unfortunately however, such views are the sole purview of technical professionals and do not align with those of our clients.  And just as unfortunately, inept clients and users are pretty much the norm in our profession not the exception.  Thus the first hurdle that any new project engaging with the ASP.NET MVC environment should resolve is a good working control over how and when the user can make requirements changes.  True, they may be the ones footing the bill but it would behoove the project manager on such a project to make the user(s) understand that making chaotic demands on their development efforts will only guarantee that the bill will be much higher than desired.</p>
<p>Just as importantly and before and project team jumps into the use of ASP.NET MVC, the project user must be made to understand the benefits of each of the environments.  Thus if their overriding concern is quick development due to strict deadlines, than the choice should be made for the implementation of the Web Forms paradigm with the understanding that this paradigm will also not have the performance benefits that ASP.NET MVC naturally has with its bypassing of the heavier Web Form page-life cycle.  That being said, it should be noted that there are many things that can be done to improve the performance of Web Forms including the use of the highly efficient AJAX library, Gaia AJAX (<a href="http://gaiaware.net/">http://gaiaware.net/</a>).</p>
<p>If however, the client or user wants extensibility with an embedded level of maximum HTTP performance than the choice should than easily be for ASP.NET MVC.</p>
<p>But even here there are certain things that require understanding to properly implement an ASP.NET MVC project.  First and foremost, forget all of the hype that has been currently surrounding this new ASP.NET framework.  It will not do you any good if you run into trouble.  The hype comes from mostly technology evangelists who can’t see past their noses when it comes to adhering to good software engineering paradigms especially the paradigm about using the right tools based on the knowledge of the resources involved and the criteria of the project.  Yes, ASP.NET MVC technologically is superior to the Web Forms model but this is not a real-world consideration unless the client is adept enough to understand the ramifications that come with it.</p>
<p>And looking at ASP.NET MVC as a possible or eventual replacement for Web Forms would be a serious mistake when considering it as opposed to the older technology for a client’s requirements.  With its rapid development qualities along with a very large third-party support community, Web Forms is not going to disappear any time soon and nor does Microsoft have any plans to eliminate it from its development software stack.</p>
<p>ASP.NET MVC adheres to the MVC design pattern.  It does this rather altruistically since it has its origins with the ASP.NET MonoRail project (<a href="http://www.castleproject.org/">http://www.castleproject.org/</a>).  The MVC design pattern is not an easy one to wrap your head around quickly if you have never used it.  And you will find that even the leading writers of ASP.NET texts on the subject also found similar difficulties in moving from the Web Form paradigm to that of MVC.</p>
<p>In a nutshell, and a very tiny one at that, ASP.NET MVC is made up of three critical components; the “View”, which is your web-page interface (actually any interface that is sent to the client), the “Controller” (and you can have more than one for any single web page) that processes the HTTP requests to the server and back to the client, and the “Model”, which in effect is the data structure that the controller will use to provide the “View” with its content.</p>
<p>In reality, this design pattern should actually be called VCM (View-Controller-Model) for the simple fact this is how most developers will see the relationships between these components.  Calling it MVC is actually a source of a tremendous amount of confusion which isn’t helped by the technical manuals that promote the theoretical methodologies for understanding this paradigm.  However, the reason for this moniker is that the theory behind this paradigm is that the “Model” is the most important aspect of it since it is the data definition behind any “View”.</p>
<p>I find that, when attempting to learn a new technology, a lot of theory just gets in the way and adds confusion to the subject matter.  And this is mostly because as professional developers we do not use theory to implement projects but in fact, use patterns of development processes that we know will work properly and get the job done.  This is also why design patterns are not very popular and tend to be used again by technology evangelists and those favoring theory.  There is nothing wrong with design patterns except for the fact that developers for the most part do not think in those terms.  And as long as most development projects are run in typical slipshod style, they never will.</p>
<p>When we compare ASP.NET MVC to the older Web Forms model in terms of project’s technical implementation, what becomes quickly apparent is that ASP.NET MVC has little third-party support when compared to the more mature Web Forms model.  If you look for tools to provide additional support for an ASP.NET MVC effort, what you find most commonly are the top tier JavaScript libraries such as jQuery (made part of a new project implementation by Visual Studio), MooTools, ExtJs, and PrototypeJS; none of which provide any “out of the box” capabilities similar to server controls.  However, both jQuery and ExtJS have quite a number of component plugins that can be used to extend the capabilities of both libraries.</p>
<p>All four libraries provide superior ways of handling client-side JavaScript implementations but there are learning curves involved for each as well as a requirement to develop extensive JavaScript code in order to provide similar functionality on the client as server controls do in the middle-tier.  This additional code development also drives up the time required to debug and test implementations forcing developers to literally use two different environments to debug their implementations; client-side debugging tools such as Firefox’s, “Firebug” and IE’s “Developer Toolbar” for the fornt-end and Visual Studio for the middle-tier.  So in this particular instance and others similar to it, making use of such libraries ease the implementation of client-side functionality but adds additional time required to do so.  Even if one is knowledgeable of a specific library it still requires the coding to make things work.</p>
<p>The question then is why bother when you have a lot of this already done for you in the form of server controls?  The answer given… it provides better performance without the extra baggage that server controls bring along with them since such implementations are all based upon AJAX.</p>
<p>However, this is only partly true.</p>
<p>What you are trading with in ASP.NET MVC is less server-control view-state baggage for a similar amount of JavaScript for the more complex web pages.  True, JavaScript does not expand the way view-state may with a data-grid or a grid-view but a heap of JavaScript has as many penalties for too much of it as does markup.  And if you need to present your data in a complex display such as a data-grid, the JavaScript to do it will all be sitting at the client.  The code that has to process these implementations has go somewhere&#8230;</p>
<p>In the end, like everything else in software development, there is little advantage to one or the other, its merely the advantages and\or disadvantages that you decide to accommodate.  And if you are crunched for time, using such a minimalistic framework as ASP.NET MVC for a highly complex project will not mitigate the stresses of pending deadlines when having to work much harder to get the same work done that the Web Forms model already provides for with many existing and mature tools.</p>
<p>A few major software houses such as Telerik Corporation are beginning to offer competent controls for the ASP.NET MVC framework.  However, after the length of time the MVC implementation has been available, the amount of support is not gaining a similar broad base of momentum as was done with the server control vendor community.  In addition, such controls are similarly JavaScript based as the previously mentioned libraries so there is really nothing new here.</p>
<p>ASP.NET MVC evangelists are touting the idea that such support will be forthcoming but don’t hold your breath.  As long as Web Forms is the easier of the two methodologies to use to implement web-based applications quickly, this is where third-party control vendors are going to continue to emphasize their product development efforts.  And there is little money to be made with JavaScript libraries as all the current popular ones are free.</p>
<p>But let’s forget for a moment the technology support for such development and take a look at the learning curve involved to implement a complex ASP.NET MVC application.  Where Web Forms attempted to hide the underbelly of the Internet from most development efforts (and did a reasonable job of doing this as well), ASP.NET MVC comes with the requirement that you actually have to understand how the Internet works with knowledge requirements that involve routing mechanisms, POST and GET processes, Request and Response processes and the like while intermixing all of this with a lot of JavaScript and AJAX processes as well.  What was originally done at the server level as well as the client is now turned on its head with the admonition that more can now be done at the client providing a better “user experience”.</p>
<p>However, much of this promotion of ASP.NET MVC is based upon the idea that it is also “now” the “correct and elegant” way to do web-development  due to its compactness as well as the correct technique for working with the stateless environment of the HTTP protocol and topology of the web.  For once I have to agree with such popularizations; ASP.NET MVC does in fact work at a more natural level with the Internet’s topology. Nonetheless, this criteria for ASP.NET MVC is not a real-world response to the nature of most software development efforts but instead a purist view for the use of a technology for the sake of technology; a deadly mistake for its adoption when schedules are tight.</p>
<p>The idea of Rapid Application Development is NOT to go low-level as ASP.NET MVC encourages but to keep it at a substantially higher level in order to get the job done quickly and efficiently.  And this is where ASP.NET MVC simply cannot currently compete with the Web Forms paradigm in this instance.</p>
<p>The idea that as the Internet has evolved  along with newer types of business requirements along with it is complete and utter nonsense.  The Internet has neither evolved since its inception in the 1960s and 1970s and nor have business requirements changed.  The internet still retains the same topology and protocols it was given with its inception and business managers are still making the same unplanned requests they have always made towards IT personnel with the only difference being that they have been subjugated to much more propaganda by the technology vendors who are all promising “magic bullets” to their business issues.</p>
<p>Nonetheless, ASP.NET MVC is above all an excellent choice when and if a development team has the time to do the job properly and everyone is well versed in the areas of expertise that are needed to support the project due to the learning curves required to become competent with this framework.   It is not a good choice when basing such a decision on the promotions of technical purists, engineering types, and technology evangelists.  Such promotions are often short cited,  self-serving, or the result of narrowly focused training.</p>
<p>Last but not least is the perverted admonition for this new paradigm that by using it will provide an elimination of  “the spaghetti code that Web Forms often encouraged&#8221;.  In fact, for those of us who did “Classic ASP” for quite a number of years, this is the same exact reasoning that was given for moving to the new ASP.NET Web Forms model when it was first commercially released in 2001.  In fact, Microsoft is great at regurgitating the same reasons for using a new technology that were used to get rid of an older one.  Stay in the field long enough and it gets sadly very repetitive.</p>
<p>There is no such thing as a paradigm being used to prevent sloppy coding habits.  Any language and any paradigm can be turned into a complete mess.  You just need the right incompetents to do it or the lack of time that prevents quality personnel from developing quality code.</p>
<p>Does all this mean that ASP.NET MVC has a questionable future for real world applications? Absolutely not!  On the contrary, ASP.NET MVC has a very bright future due its natural bent towards the Internet architecture</p>
<p>It simply means that it is not a good choice currently for getting a job done efficiently and quickly when a client or a corporate user is controlling a project&#8217;s scheduling and they are keeping to very tight deadlines.  However, the more important aspect of this discussion has nothing to do with which model works better or doesn&#8217;t.  Instead it has to do with the realities of Internet development.  And those realities include the fact that the majority of tools used to develop web applications with are nothing more than &#8220;kludges&#8221; or &#8220;parlor tricks&#8221; based on a current set of circumstances and this is especially true for the popular AJAX paradigm.  By now with the amount of effort and time that vendors have expended in developing tools alongside the efforts that developers have expended in implementing such applications one would think that a standardized framework would have been refined well enough by now to offer pretty much what any web application requires in terms of acceptable performance and user-interface capabilities.  Instead the industry has bounced from scripted languages to compiled languages and back again all the while throwing the Internet development processes along the way into the same turmoil.</p>
<p>Such turmoil serves only one purpose and that is to support the capabilities of vendors to maintain their brand and make revenues on them.  Whether you elect to  use an MVC paradigm with the .NET framework or not will not make a stark difference in application performance with well-designed and well implemented development efforts in which either are properly tuned for performance benefits.  Such efforts will most often provide similar levels of performance since Internet performance is still mostly a factor of the hardware and bandwidth supporting a specific application as well as the amount of data being sent to and from web-pages.</p>
<p><em>Black Falcon</em></p>
<p><span></span><br />
<span></span><br />
The following links, tools and books will provide enough in-depth knowledge to help you decide if your next production project has the criteria that could support an ASP.NET MVC implementation…</p>
<p><strong>Dino Esposito on ASP.NET MVC…</strong></p>
<p>Dino Esposito provides the most balanced coverage on the ASP.NET MVC framework that I have seen to date…</p>
<p><a href="http://msdn.microsoft.com/en-us/magazine/dd942833.aspx#id0080027">http://msdn.microsoft.com/en-us/magazine/dd942833.aspx#id0080027</a></p>
<table>
<tr>
<td valign="middle" colspan="2">
<span></span></p>
<h1>Getting Started With ASP.NET MVC</h1>
</td>
</tr>
<tr>
<td>
<strong>MS ASP.NET MVC Home</strong> – The best working tutorial for learning this new framework is the one concerning building the &#8220;MVC Music Store&#8221;
</td>
<td>
<p>http://www.asp.net/mvc</a></p>
</td>
</tr>
<tr>
<td valign="middle" colspan="2">
<span></span></p>
<h1>JavaScript Libraries</h1>
</td>
</tr>
<tr>
<td>
<strong>jQuery</strong> – The Microsoft choice for client-side development
</td>
<td>
<a href="http://jquery.com/">http://jquery.com/</a>
</td>
</tr>
<tr>
<td>
<strong>MooTools</strong> – For those who only want to extend the basic JavaScript framework.
</td>
<td>
<a href="http://mootools.net/">http://mootools.net/</a>
</td>
<tr>
<td>
<strong>ExtJS</strong> – Probably the best overall JavaScript library for all things JavaScript that also comes with a host of very refined interface components that should satisfy most developer requirements.
</td>
<td>
<a href="http://www.sencha.com/">http://www.sencha.com/</a>
</td>
</tr>
<tr>
<td>
<strong>PrototypeJS</strong> – Basically a JavaScript library to assist with AJAX request development.
</td>
<td>
<a href="http://www.prototypejs.org/">http://www.prototypejs.org/</a>
</td>
</tr>
<tr>
<td valign="middle" colspan="2">
<span></span></p>
<h1>Books – JavaScript Libraries</h1>
</td>
<tr>
<td>
<strong>Learning jQuery 1.3</strong>
</td>
<td>
<a href="http://www.amazon.com/Learning-jQuery-1-3-Jonathan-Chaffer/dp/1847196705/ref=sr_1_4?ie=UTF8&amp;qid=1287862105&amp;sr=8-4">http://www.amazon.com/Learning-jQuery-1-3-Jonathan-Chaffer/dp/1847196705/ref=sr_1_4?ie=UTF8&amp;qid=1287862105&amp;sr=8-4</a>
</td>
</tr>
<tr>
<td>
<strong>jQuery UI 1.7: The User Interface Library for jQuery</strong>
</td>
<td>
<a href="http://www.amazon.com/jQuery-UI-1-7-Interface-Library/dp/1847199720/ref=sr_1_3?ie=UTF8&amp;qid=1287862105&amp;sr=8-3">http://www.amazon.com/jQuery-UI-1-7-Interface-Library/dp/1847199720/ref=sr_1_3?ie=UTF8&amp;qid=1287862105&amp;sr=8-3</a>
</td>
</tr>
<tr>
<td>
<strong>MooTools 1.2 Beginner&#8217;s Guide</strong>
</td>
<td>
<a href="http://www.amazon.com/MooTools-Beginners-Guide-Jacob-Gube/dp/1847194583/ref=sr_1_2?s=books&amp;ie=UTF8&amp;qid=1287862228&amp;sr=1-2">http://www.amazon.com/MooTools-Beginners-Guide-Jacob-Gube/dp/1847194583/ref=sr_1_2?s=books&amp;ie=UTF8&amp;qid=1287862228&amp;sr=1-2</a>
</td>
</tr>
<td>
<strong>Learning Ext JS 3.2</strong>
</td>
<td>
<a href="http://www.amazon.com/Learning-Ext-3-2-Shea-Frederick/dp/1849511209/ref=sr_1_5?s=books&amp;ie=UTF8&amp;qid=1287862342&amp;sr=1-5">http://www.amazon.com/Learning-Ext-3-2-Shea-Frederick/dp/1849511209/ref=sr_1_5?s=books&amp;ie=UTF8&amp;qid=1287862342&amp;sr=1-5</a>
</td>
</tr>
<td>
<strong>Ext JS 3.0 Cookbook</strong>
</td>
<td>
<a href="http://www.amazon.com/Ext-3-0-Cookbook-Jorge-Ramon/dp/1847198708/ref=pd_bxgy_b_img_b">http://www.amazon.com/Ext-3-0-Cookbook-Jorge-Ramon/dp/1847198708/ref=pd_bxgy_b_img_b</a>
</td>
</tr>
<tr>
<td valign="middle" colspan="2">
<span></span></p>
<h1>Books &#8211; Project Management, Performance, &amp; MVC</h1>
</td>
</tr>
<tr>
<tr>
<td>
<strong>Rapid Development: Taming Wild Software Schedules</strong>
</td>
<td>
<a href="http://www.amazon.com/Rapid-Development-Taming-Software-Schedules/dp/1556159005/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1287939625&amp;sr=1-1">http://www.amazon.com/Rapid-Development-Taming-Software-Schedules/dp/1556159005/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1287939625&amp;sr=1-1</a>
</td>
</tr>
<tr>
<td>
<strong>Ultra-Fast ASP.NET: Build Ultra-Fast and Ultra-Scalable web sites using ASP.NET and SQL Server</strong>
</td>
<td>
<a href="http://www.amazon.com/Ultra-Fast-ASP-NET-Build-Ultra-Scalable-Server/dp/1430223839/ref=sr_1_4?s=books&amp;ie=UTF8&amp;qid=1287862608&amp;sr=1-4">http://www.amazon.com/Ultra-Fast-ASP-NET-Build-Ultra-Scalable-Server/dp/1430223839/ref=sr_1_4?s=books&amp;ie=UTF8&amp;qid=1287862608&amp;sr=1-4</a>
</td>
</tr>
<tr>
<td>
<strong>Programming Microsoft ASP.NET MVC</strong>
</td>
<td>
<a href="http://www.amazon.com/Programming-Microsoft-ASP-NET-Dino-Esposito/dp/0735627142/ref=sr_1_3?s=books&amp;ie=UTF8&amp;qid=1287862695&amp;sr=1-3">http://www.amazon.com/Programming-Microsoft-ASP-NET-Dino-Esposito/dp/0735627142/ref=sr_1_3?s=books&amp;ie=UTF8&amp;qid=1287862695&amp;sr=1-3</a>
</td>
</tr>
<tr>
<td>
<strong>Pro ASP.NET MVC 2 Framework, Second Edition</strong>
</td>
<td>
<a href="http://www.amazon.com/ASP-NET-Framework-Second-Experts-Voice/dp/1430228865/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1287862695&amp;sr=1-1">http://www.amazon.com/ASP-NET-Framework-Second-Experts-Voice/dp/1430228865/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1287862695&amp;sr=1-1</a>
</td>
</tr>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blackfalconsoftware.wordpress.com/2469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blackfalconsoftware.wordpress.com/2469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blackfalconsoftware.wordpress.com/2469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blackfalconsoftware.wordpress.com/2469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blackfalconsoftware.wordpress.com/2469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blackfalconsoftware.wordpress.com/2469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blackfalconsoftware.wordpress.com/2469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blackfalconsoftware.wordpress.com/2469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blackfalconsoftware.wordpress.com/2469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blackfalconsoftware.wordpress.com/2469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blackfalconsoftware.wordpress.com/2469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blackfalconsoftware.wordpress.com/2469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blackfalconsoftware.wordpress.com/2469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blackfalconsoftware.wordpress.com/2469/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2469&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blackfalconsoftware.wordpress.com/2010/10/24/software-engineering-the-asp-net-web-forms-%e2%80%93-asp-net-mvc-debate-a-software-engineers-perspective/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eeb60e8ab7b0b9e0b398831575a6e7e4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Black Falcon</media:title>
		</media:content>

		<media:content url="http://blackfalconsoftware.files.wordpress.com/2010/10/asp-net-web-forms-asp-net-mvc-debate.jpg" medium="image" />
	</item>
		<item>
		<title>R&amp;R: Polish Cosmoligist Claims Universes Could Exist Inside Black Holes</title>
		<link>http://blackfalconsoftware.wordpress.com/2010/08/03/rr-polish-cosmoligist-claims-universes-could-exist-inside-black-holes/</link>
		<comments>http://blackfalconsoftware.wordpress.com/2010/08/03/rr-polish-cosmoligist-claims-universes-could-exist-inside-black-holes/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 20:58:09 +0000</pubDate>
		<dc:creator>Black Falcon</dc:creator>
				<category><![CDATA[R&R]]></category>
		<category><![CDATA[black hole]]></category>
		<category><![CDATA[cosmology]]></category>
		<category><![CDATA[universe]]></category>

		<guid isPermaLink="false">http://blackfalconsoftware.wordpress.com/?p=2435</guid>
		<description><![CDATA[A universe could exist &#8216;inside every black hole,&#8217; claims scientist A hidden universe could exist inside every black hole, a Polish cosmologist has claimed. By Amy Willis Published: 4:25PM BST 02 Aug 2010 Go to article source&#8230; hidden universe could exist inside every black hole, a Polish cosmologist has claimed. Photo: PA Using an adaptation [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2435&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://blackfalconsoftware.files.wordpress.com/2010/08/telegraph-co-uk.jpg?w=600" /></p>
<div>
<h2>A universe could exist &#8216;inside every black hole,&#8217; claims scientist</h2>
<p><strong>A hidden universe could exist inside every black hole, a Polish cosmologist has claimed.</strong><br />
By Amy Willis<br />
Published: 4:25PM BST 02 Aug 2010<br />
<a href="http://www.telegraph.co.uk/science/space/7918978/A-universe-could-exist-inside-every-black-hole-claims-scientist.html" target="_blank">Go to article source&#8230;</a><br />
<span></span><br />
<img src="http://i.telegraph.co.uk/telegraph/multimedia/archive/01217/blackhole_1217240c.jpg" alt="Save money by avoiding these common personal finance mistakes" width="460" height="288" /></p>
<div>hidden universe could exist inside every black hole, a Polish cosmologist has claimed. Photo: PA</div>
<div>
<div>
<p>Using an adaptation of Einstein&#8217;s general theory of relativity, Nikodem Poplawski, of Indiana University, Bloomington, analysed the theoretical motion of particles entering a black hole.</p>
</div>
<div>
<p>He concluded that it was possible for a whole new universe to exist inside every black hole, which could mean that our own universe could be inside a black hole as well.</p>
<p>&#8220;Maybe the huge black holes at the centre of the Milky Way and other galaxies are bridges to different universes,&#8221; he told New Scientist.</p>
<p>Explaining his theory in the journal Physics Letters B, he said he used the Einstein-Cartan-Kibble-Sciama (ECKS) theory of gravity, in his analysis to account for the angular momentum of particles in a black hole. Doing this it made it possible to calculate a quality of space-time called torsion, a property believed to repel gravity.</p>
<p>He says instead of matter reaching infinite density in a black hole called &#8220;singularities&#8221; in Einstein&#8217;s theory of relativity &#8211; the behaviour of the space-time acts more like a spring being compressed with matter rebounding and expanding continuously.</p>
<p>Dr Poplawski explains that this &#8220;bounce-back&#8221; effect is caused by the torsion of space-time having a repulsive force against the gargantuan strength of gravity in a black hole.</p>
<p>Dr Poplawski also claims that this recoiling effect could be what has led to our expanding universe that we observe today and could explain why our universe is flat, homogeneous and isotropic without needing cosmic inflation.</p>
<p>It is hard to see how we could test whether or not Dr Poplawski&#8217;s theory is correct; the force of gravity in black holes is such that nothing can escape, so no information about what is going on inside one can ever reach us.</p>
<p>However, according to Dr Poplawski, if we were living in a spinning black hole then the spin would transfer to the space-time inside, meaning the universe would have a preferred direction &#8211; something we would be able to measure. Such a preferred direction could be related to the observed imbalance of matter and anti-matter in the universe and could explain the oscillation of neutrinos.</p>
</div>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blackfalconsoftware.wordpress.com/2435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blackfalconsoftware.wordpress.com/2435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blackfalconsoftware.wordpress.com/2435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blackfalconsoftware.wordpress.com/2435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blackfalconsoftware.wordpress.com/2435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blackfalconsoftware.wordpress.com/2435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blackfalconsoftware.wordpress.com/2435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blackfalconsoftware.wordpress.com/2435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blackfalconsoftware.wordpress.com/2435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blackfalconsoftware.wordpress.com/2435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blackfalconsoftware.wordpress.com/2435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blackfalconsoftware.wordpress.com/2435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blackfalconsoftware.wordpress.com/2435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blackfalconsoftware.wordpress.com/2435/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2435&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blackfalconsoftware.wordpress.com/2010/08/03/rr-polish-cosmoligist-claims-universes-could-exist-inside-black-holes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eeb60e8ab7b0b9e0b398831575a6e7e4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Black Falcon</media:title>
		</media:content>

		<media:content url="http://blackfalconsoftware.files.wordpress.com/2010/08/telegraph-co-uk.jpg" medium="image" />

		<media:content url="http://i.telegraph.co.uk/telegraph/multimedia/archive/01217/blackhole_1217240c.jpg" medium="image">
			<media:title type="html">Save money by avoiding these common personal finance mistakes</media:title>
		</media:content>
	</item>
		<item>
		<title>Tools &amp; Code: Making Sure Web.Config Parameters Exist</title>
		<link>http://blackfalconsoftware.wordpress.com/2010/08/01/tools-code-making-sure-web-config-parameters-exist/</link>
		<comments>http://blackfalconsoftware.wordpress.com/2010/08/01/tools-code-making-sure-web-config-parameters-exist/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 17:31:29 +0000</pubDate>
		<dc:creator>Black Falcon</dc:creator>
				<category><![CDATA[Tools & Code]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[parameters]]></category>
		<category><![CDATA[web.config]]></category>
		<category><![CDATA[web.config parameters]]></category>

		<guid isPermaLink="false">http://blackfalconsoftware.wordpress.com/?p=2376</guid>
		<description><![CDATA[If you are working on an assignment as a single consultant, independent, or even an employee singularly responsible for his or her project, moving your project&#8217;s code base to the server environments whether it be development, user-acceptance, or production is always a stressful situation since no two server environments are ever the same and no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2376&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://blackfalconsoftware.files.wordpress.com/2010/08/making_sure_web_config_parameters_exist.jpg?w=600" /></p>
<p>If you are working on an assignment as a single consultant, independent, or even an employee singularly responsible for his or her project, moving your project&#8217;s code base to the server environments whether it be development, user-acceptance, or production is always a stressful situation since no two server environments are ever the same and no server environment mirrors that of a local developer&#8217;s workstation environment.</p>
<p>In practically all cases in the environments I have worked in, the issues that have arisen from project moves are either security permissions or configuration.  It is very rare to find a project that is working properly on a local workstation to suddenly cease working in a server environment due to something being wrong within the code base.</p>
<p>However, one area that can drive any technician to the brink of complete despair, especially when moving ASP.NET projects between environments, is newly defined application parameters that have been added into the &#8220;web.config&#8221; file.  Most often the server web.config files are not touched by developers since they often include additional parameters unique to the server environment in which they reside.  As a result, application specific parameters have to be promoted either by sending the appropriate server group the information or doing it on one&#8217;s own.</p>
<p>The biggest issue then is remembering to do this.</p>
<p>Under certain circumstances the lack of any such parameter can yield very ambiguous application errors that can take long periods of time to uncover given that many of us would have forgotten about a parameter update to a server&#8217;s web.config file simply due to stress and tensions.  It happens because we are Human&#8230;  Though, often enough that does not seem to be reasonable enough excuse for such a lapse.</p>
<p>There is a very simple way to always avoid such a situation with a little snippet of code that follows.</p>
<p>Most often when retrieving a parameter from the web.config file we simply use the following code:</p>
<table width="100%" bgcolor="gray">
<tbody>
<tr>
<td style="font-family:courier new;" width="100%" align="left">string  lsSQLConnectionString = ConfigurationManager.AppSettings.Get(&#8220;SQL_CONNECTION_STRING&#8221;);</td>
</tr>
</tbody>
</table>
<p>To guarantee that a web.config parameter exists or have the application tell you that it doesn&#8217;t is by adding the following code to all such parameter retrievals within forms, code-behind modules and business objects while using a centralized error-handler component.</p>
<table width="100%" bgcolor="gray">
<tbody>
<tr>
<td style="font-family:courier new;" width="100%" align="left">
***** METHOD CALL IN BUSINESS OBJECT</p>
<p>string lsSQLConnectionString = Verify_WebConfigParameter(&#8220;SQL_CONNECTION_STRING&#8221;, ConfigurationManager.AppSettings.Get(&#8220;SQL_CONNECTION_STRING&#8221;));
</td>
</tr>
<tr>
<td style="font-family:courier new;" width="100%" align="left">
***** METHOD IN BUSINESS OBJECT</p>
<p>            private string Verify_WebConfigParameter(string psWebConfigParameterName, object poWebConfigParameterValue)<br />
            {<br />
                MyNameSpace.Classes.clsErrorHandling  loErrorHandling = new MyNameSpace.Classes.clsErrorHandling();</p>
<p>                return (loErrorHandling.Verify_WebConfigParameter(&#8220;ModuleName&#8221;, psWebConfigParameterName, poWebConfigParameterValue));<br />
            }<br />
</tr>
<tr>
<td style="font-family:courier new;" width="100%" align="left">
***** METHOD IN SUPPORT ERROR HANDLER OBJECT</p>
<p>			public string Verify_WebConfigParameter(string psModuleName, string psWebConfigParameterName, object poWebConfigParameterValue)<br />
			{<br />
                                string lsMessage = &#8220;Error: [ " + psModuleName + " ]&#8220;;</p>
<p>				if (poWebConfigParameterValue != null)<br />
				{<br />
					return (poWebConfigParameterValue.ToString().Trim());<br />
				}</p>
<p>                                Insert_RecordIntoMessageLog(&#8216;E&#8217;, lsMessage, &#8220;APPLICATION&#8221;, &#8220;parameter missing: &#8221; + psWebConfigParameterName, &#8220;&#8221;);<br />
                                Redirect_ToErrorPage(lsMessage + &#8220;<br />&#8221; + &#8220;parameter missing: &#8221; + psWebConfigParameterName + &#8220;</p>
<p>&#8220;);</p>
<p>				return (&#8220;&#8221;);<br />
			}
</td>
</tr>
</tbody>
</table>
<p>Trust me&#8230; This simple additional coding practice can save one a lot of embarrassment and stress in tight situations.</p>
<p>This code can be easily converted to VB.NET by making use of the excellent online conversion utility found at <a href="http://www.developerfusion.com/tools/" target="_blank">http://www.developerfusion.com/tools/</a></p>
<p><em>Black Falcon</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blackfalconsoftware.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blackfalconsoftware.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blackfalconsoftware.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blackfalconsoftware.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blackfalconsoftware.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blackfalconsoftware.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blackfalconsoftware.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blackfalconsoftware.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blackfalconsoftware.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blackfalconsoftware.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blackfalconsoftware.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blackfalconsoftware.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blackfalconsoftware.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blackfalconsoftware.wordpress.com/2376/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2376&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blackfalconsoftware.wordpress.com/2010/08/01/tools-code-making-sure-web-config-parameters-exist/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eeb60e8ab7b0b9e0b398831575a6e7e4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Black Falcon</media:title>
		</media:content>

		<media:content url="http://blackfalconsoftware.files.wordpress.com/2010/08/making_sure_web_config_parameters_exist.jpg" medium="image" />
	</item>
		<item>
		<title>Database: A Paging Stored Procedure For SQL Server 2000</title>
		<link>http://blackfalconsoftware.wordpress.com/2010/07/20/database-a-paging-stored-procedure-for-sql-server-2000/</link>
		<comments>http://blackfalconsoftware.wordpress.com/2010/07/20/database-a-paging-stored-procedure-for-sql-server-2000/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 17:16:03 +0000</pubDate>
		<dc:creator>Black Falcon</dc:creator>
				<category><![CDATA[Database]]></category>

		<guid isPermaLink="false">http://blackfalconsoftware.wordpress.com/?p=2369</guid>
		<description><![CDATA[Every developer knows that both the Microsoft Datagrid and the newer Gridview controls are quite versatile when it comes to displaying data. They both offer a raft of capabilities that makes it far easier to provide tabular data displays than was easily possible with “Classic ASP”. One of these capabilities is the capability to page [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2369&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://blackfalconsoftware.files.wordpress.com/2010/07/a_paging_stored_procedure_for_sqlserver2000.jpg?w=600" alt="" /></p>
<p>Every developer knows that both the Microsoft Datagrid and the newer Gridview controls are quite versatile when it comes to displaying data.  They both offer a raft of capabilities that makes it far easier to provide tabular data displays than was easily possible with “Classic ASP”.  One of these capabilities is the capability to page through data.  However, the paging process is rather inefficient as the potential data for display grows in size.</p>
<p>In such paging, as experienced developers know, all of the data is returned to the control and the selected “slice” of data is then used for the selected page.  As the number of records grows into the thousands for such displays, performance starts to suffer considerably.</p>
<p>The answer to this issue is to create backend stored-procedure that will do the “data slicing” at the database end and thus only return that data, which is to be currently displayed.</p>
<p>With the new capabilities in SQL Server 2005 and 2008 such as the ROW_NUMBER() function, slicing data on the backend has become much easier.  However, if you are working at a client that has let the new technologies pass them by and you find yourself working with SQL Server 2000 you will need a stored procedure that mimics the new capabilities of the new database engines.</p>
<p>The following stored procedure code provides one way to handle paging with SQL Server 2000.  The code is in use at a client I have been working at and is far more extensive than what is shown here.  However, what is shown below is what is needed to get basic paging at the backend of a SQL Server 2000 database working…</p>
<p><em>Black Falcon</em></p>
<table>
<tr>
<td colspan="2">
<strong>SP_GET_PAGE_DATA_FOR_SQL2000</strong>
</td>
</tr>
<tr>
<td colspan="2">
CREATE PROCEDURE [dbo].[SP_GET_PAGE_DATA_FOR_SQL2000]<br />
@PI_SELECTED_PAGE int,<br />
@PI_PAGE_SIZE int,<br />
AS
</td>
</tr>
<tr>
<td colspan="2">
declare @LS_SQL_QUERY_STRING  varchar(8000)<br />
declare @LI_START_RECORD      int<br />
declare @LI_END_RECORD        int
</td>
</tr>
<tr>
<td colspan="2">
begin
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
  &#8212; create temporary table<br />
  create table #TEMP_DATA_TABLE<br />
    (<br />
      TTT_ROW_NUMBER                          int IDENTITY (1, 1),<br />
      TTT_SUBSIDIARY_CODE                     varchar(10),<br />
      TTT_SUBSIDIARY_NAME                     varchar(200),<br />
      TTT_REPRESENTATIVE_NAME                 varchar(75),<br />
      TTT_REPRESENTATIVE_ADDRESS              varchar(60),<br />
      TTT_REPRESENTATIVE_ADDRESS_2            varchar(60) DEFAULT NULL,<br />
      TTT_REPRESENTATIVE_CITY                 varchar(25) DEFAULT NULL,<br />
      TTT_REPRESENTATIVE_STATE_PROVINCE       varchar(25) DEFAULT NULL,<br />
      TTT_REPRESENTATIVE_POSTAL_CODE          varchar(25) DEFAULT NULL,<br />
      TTT_REPRESENTATIVE_COUNTRY              varchar(5)  DEFAULT NULL,<br />
    )</p>
<p>  &#8212; find first record on selected page<br />
  SET @LI_START_RECORD = (@PI_SELECTED_PAGE &#8211; 1) * @PI_PAGE_SIZE + 1</p>
<p>  &#8212; find last record on selected page<br />
  SET @LI_END_RECORD = @PI_SELECTED_PAGE * @PI_PAGE_SIZE</p>
<p>  &#8212; setup query string to load temp table<br />
  set @LS_SQL_QUERY_STRING =<br />
      &#8216;insert #TEMP_DATA_TABLE&#8217; +<br />
      &#8216;  ( &#8216; +<br />
      &#8216;    TTT_SUBSIDIARY_CODE,&#8217; +<br />
      &#8216;    TTT_SUBSIDIARY_NAME,&#8217; +<br />
      &#8216;    TTT_REPRESENTATIVE_NAME,&#8217; +<br />
      &#8216;    TTT_REPRESENTATIVE_ADDRESS,&#8217; +<br />
      &#8216;    TTT_REPRESENTATIVE_ADDRESS_2,&#8217; +<br />
      &#8216;    TTT_REPRESENTATIVE_CITY,&#8217; +<br />
      &#8216;    TTT_REPRESENTATIVE_STATE_PROVINCE,&#8217; +<br />
      &#8216;    TTT_REPRESENTATIVE_POSTAL_CODE,&#8217; +<br />
      &#8216;    TTT_REPRESENTATIVE_COUNTRY,&#8217; +<br />
      &#8216;  )&#8217; +<br />
      &#8216; &#8216; +<br />
      &#8216;  select top &#8216; + CAST(@LI_END_RECORD AS varchar(20)) +<br />
      &#8216;         CD_SUBSIDIARY_CODE,&#8217; +<br />
      &#8216;         CD_SUBSIDIARY_NAME,&#8217; +<br />
      &#8216;         CD_REPRESENTATIVE_NAME,&#8217; +<br />
      &#8216;         CD_REPRESENTATIVE_ADDRESS,&#8217; +<br />
      &#8216;         CD_REPRESENTATIVE_ADDRESS_2,&#8217; +<br />
      &#8216;         CD_REPRESENTATIVE_CITY,&#8217; +<br />
      &#8216;         CD_REPRESENTATIVE_STATE_PROVINCE,&#8217; +<br />
      &#8216;         CD_REPRESENTATIVE_POSTAL_CODE,&#8217; +<br />
      &#8216;         CD_REPRESENTATIVE_COUNTRY,&#8217; +<br />
      &#8216;    from DB_CONTRACT_DATA&#8217;</p>
<p>  exec (@LS_SQL_QUERY_STRING)</p>
<p>  set @LS_SQL_QUERY_STRING =<br />
      &#8216;  select TTT_ROW_NUMBER,&#8217; +<br />
      &#8216;         TTT_SUBSIDIARY_CODE,&#8217; +<br />
      &#8216;         TTT_SUBSIDIARY_NAME,&#8217; +<br />
      &#8216;         TTT_REPRESENTATIVE_NAME,&#8217; +<br />
      &#8216;         TTT_REPRESENTATIVE_ADDRESS,&#8217; +<br />
      &#8216;         TTT_REPRESENTATIVE_ADDRESS_2,&#8217; +<br />
      &#8216;         TTT_REPRESENTATIVE_CITY,&#8217; +<br />
      &#8216;         TTT_REPRESENTATIVE_STATE_PROVINCE,&#8217; +<br />
      &#8216;         TTT_REPRESENTATIVE_POSTAL_CODE,&#8217; +<br />
      &#8216;         TTT_REPRESENTATIVE_COUNTRY,&#8217; +<br />
      &#8216;    from #TEMP_DATA_TABLE&#8217; +<br />
      &#8216;    where TTT_ROW_NUMBER &gt;= &#8216; + CAST(@LI_START_RECORD AS varchar(20)) +<br />
      &#8216;      and TTT_ROW_NUMBER &lt;= &#039; + CAST(@LI_END_RECORD AS varchar(20)) +</p>
<p>  set nocount on<br />
  exec (@LS_SQL_QUERY_STRING)
</td>
</tr>
<tr>
<td colspan="2">
end
</td>
</tr>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blackfalconsoftware.wordpress.com/2369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blackfalconsoftware.wordpress.com/2369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blackfalconsoftware.wordpress.com/2369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blackfalconsoftware.wordpress.com/2369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blackfalconsoftware.wordpress.com/2369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blackfalconsoftware.wordpress.com/2369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blackfalconsoftware.wordpress.com/2369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blackfalconsoftware.wordpress.com/2369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blackfalconsoftware.wordpress.com/2369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blackfalconsoftware.wordpress.com/2369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blackfalconsoftware.wordpress.com/2369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blackfalconsoftware.wordpress.com/2369/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blackfalconsoftware.wordpress.com/2369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blackfalconsoftware.wordpress.com/2369/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2369&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blackfalconsoftware.wordpress.com/2010/07/20/database-a-paging-stored-procedure-for-sql-server-2000/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eeb60e8ab7b0b9e0b398831575a6e7e4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Black Falcon</media:title>
		</media:content>

		<media:content url="http://blackfalconsoftware.files.wordpress.com/2010/07/a_paging_stored_procedure_for_sqlserver2000.jpg" medium="image" />
	</item>
		<item>
		<title>Tools &amp; Code: Organizing ASP.NET Application &amp; Session State…</title>
		<link>http://blackfalconsoftware.wordpress.com/2010/07/20/tools-code-organizing-asp-net-application-session-state%e2%80%a6/</link>
		<comments>http://blackfalconsoftware.wordpress.com/2010/07/20/tools-code-organizing-asp-net-application-session-state%e2%80%a6/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 15:09:35 +0000</pubDate>
		<dc:creator>Black Falcon</dc:creator>
				<category><![CDATA[Tools & Code]]></category>
		<category><![CDATA[application state]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[session state]]></category>

		<guid isPermaLink="false">http://blackfalconsoftware.wordpress.com/?p=2352</guid>
		<description><![CDATA[When developing ASP.NET applications, one of the most important aspects of that development is the management of application or session-state for an application or a user. A variety of techniques have been implemented, all of them good. My personal favorite is to use the built-in ASP.NET database for such purposes since it allows me to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2352&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://blackfalconsoftware.files.wordpress.com/2010/07/organizing_session_state.jpeg?w=600" alt="" /></p>
<p>When developing ASP.NET applications, one of the most important aspects of that development is the management of application or session-state for an application or a user. A variety of techniques have been implemented, all of them good. My personal favorite is to use the built-in ASP.NET database for such purposes since it allows me to offload some of the memory management to SQL Server thereby splitting the processes between IIS and another machine… or at least a process.</p>
<p>However, actually implementing state within code has often been quite a messy proposition with many developers simply using application or session variables within code wherever and whenever they are needed. The result of this is that state variables are then peppered throughout the code base with little or no sense of organization.</p>
<p>To alleviate this issue many companies have developed their own state management processes in order to bring a more organized approach to the situation. However, one does not need to get overly complex in order to do this for most applications.</p>
<p>The code that follows comprises two classes that can be easily implemented as an assembly, which can be referenced by the application it applies to enforcing not only a modularized layer for application and session state management but an organizational model that will make it much easier for new members of a project to understand what variables involve state in a central location.</p>
<p>The first class, which is the “work horse” class I have called, “clsWebCache”. Of course you can call it whatever suits your naming convention paradigm. I always prefix my class names with the moniker of “cls” so that developers will automatically know what such a module is.</p>
<p>“clsWebCache” has three primary methods; one to persist state, one to retrieve it, and one to delete it. As such, this class will allow you to save state to either the application cache or session cache with the use of a single character indicator. The use of the “object” data type for the actual value allows you to save any type of data that is required. However, with complex data types you will most often have to do casting when retrieving data.</p>
<p>Notice also that all of the methods are provided the access modifier of “internal” (VB.NET would be “Friend”). This is done so that the class is global only to the class library it a part of.</p>
<table>
<tr>
<td colspan="2">
<strong>clsWebCache.cs</strong><br />
using System;<br />
using System.Web;<br />
using System.Collections;<br />
using System.Configuration;<br />
using System.Text;
</td>
</tr>
<tr>
<td colspan="2">
internal class clsWebCache<br />
{
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
// save a data item to cache\session-state<br />
internal bool Save_WebCacheItem(string psCacheType,<br />
string psItemName,<br />
object poObjectItem)<br />
{<br />
try<br />
{<br />
switch (psCacheType.Trim().ToUpper())<br />
{<br />
case &#8220;A&#8221;: // application cache<br />
HttpContext.Current.Cache[psItemName] = poObjectItem;<br />
break;</p>
<p>case &#8220;S&#8221;: // session cache<br />
HttpContext.Current.Session[psItemName] = poObjectItem;<br />
break;<br />
}<br />
}<br />
catch (Exception loException)<br />
{<br />
return (false);<br />
}</p>
<p>return (true);<br />
}
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
// get data item from cache\session-state<br />
internal object Get_WebCacheItem(string psCacheType, string psItemName)<br />
{<br />
object loCacheObject = null;</p>
<p>try<br />
{<br />
switch (psCacheType.Trim().ToUpper())<br />
{<br />
case &#8220;A&#8221;: // application cache<br />
loCacheObject = HttpContext.Current.Cache[psItemName];<br />
break;</p>
<p>case &#8220;S&#8221;: // session cache<br />
loCacheObject = HttpContext.Current.Session[psItemName];<br />
break;<br />
}<br />
}<br />
catch (Exception loException)<br />
{<br />
return (null);<br />
}</p>
<p>return (loCacheObject);<br />
}
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
internal bool Delete_WebCacheItem(string psCacheType, string psItemName)<br />
{<br />
try<br />
{<br />
switch (psCacheType.Trim().ToUpper())<br />
{<br />
case &#8220;A&#8221;: // application cache<br />
HttpContext.Current.Cache.Remove(psItemName);<br />
break;</p>
<p>case &#8220;S&#8221;: // session cache<br />
HttpContext.Current.Session.Remove(psItemName);<br />
break;<br />
}<br />
}<br />
catch (Exception loException)<br />
{<br />
return (false);<br />
}</p>
<p>return (true);<br />
}
</td>
</tr>
<tr>
<td colspan="2">
}
</td>
</tr>
</table>
<p>The class that developers would interface with is where the actual items to be persisted are defined. This class I have called, “clsWebCacheObjects”. And it is in this class where you may define any type of item or collection you would like to persist. In the code below I several types of data being stored…</p>
<table>
<tr>
<td colspan="2">
<strong>clsWebCacheObjects.cs</strong></p>
<p>using System;<br />
using System.IO;<br />
using System.Data;<br />
using System.Text;<br />
using System.Collections;
</td>
</tr>
<tr>
<td colspan="2">
public class clsWebCacheObjects<br />
{
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
// &#8212;<br />
// NOTE:<br />
// &#8220;A&#8221; &#8211; indicates the property is to access application cache<br />
// &#8220;S&#8221; &#8211; indicates the property is to access session cache<br />
// &#8212;
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
private clsWebCache coWebCache = new clsWebCache();
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
public string SESSION_ID<br />
{<br />
get<br />
{<br />
if (coWebCache.Get_WebCacheItem(&#8220;S&#8221;, &#8220;gsSessionId&#8221;) == null)<br />
{<br />
return (&#8220;&#8221;);<br />
}<br />
else<br />
{<br />
return (string)coWebCache.Get_WebCacheItem(&#8220;S&#8221;, &#8220;gsSessionId&#8221;);<br />
}<br />
}</p>
<p>set { coWebCache.Save_WebCacheItem(&#8220;S&#8221;, &#8220;gsSessionId&#8221;, value); }<br />
}
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
public bool SESSION_KEEPALIVE<br />
{<br />
get<br />
{<br />
if (coWebCache.Get_WebCacheItem(&#8220;S&#8221;, &#8220;gboolSessionKeepAlive&#8221;) == null)<br />
{<br />
return (true);<br />
}<br />
else<br />
{<br />
return (bool)coWebCache.Get_WebCacheItem(&#8220;S&#8221;, &#8220;gboolSessionKeepAlive&#8221;);<br />
}<br />
}</p>
<p>set { coWebCache.Save_WebCacheItem(&#8220;S&#8221;, &#8220;gboolSessionKeepAlive&#8221;, value); }<br />
}
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
public DateTime SESSION_KEEPALIVE_START_TIME<br />
{<br />
get<br />
{<br />
if (coWebCache.Get_WebCacheItem(&#8220;S&#8221;, &#8220;giSessionKeepAliveMinute&#8221;) == null)<br />
{<br />
return (DateTime.Now);<br />
}<br />
else<br />
{<br />
return (DateTime)coWebCache.Get_WebCacheItem(&#8220;S&#8221;,<br />
&#8220;giSessionKeepAliveMinute&#8221;);<br />
}<br />
}</p>
<p>set { coWebCache.Save_WebCacheItem(&#8220;S&#8221;, &#8220;giSessionKeepAliveMinute&#8221;, value); }<br />
}
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
public string MESSAGE<br />
{<br />
get<br />
{<br />
if (coWebCache.Get_WebCacheItem(&#8220;S&#8221;, &#8220;gsMessage&#8221;) == null)<br />
{<br />
return (&#8220;&#8221;);<br />
}<br />
else<br />
{<br />
return (string)coWebCache.Get_WebCacheItem(&#8220;S&#8221;, &#8220;gsMessage&#8221;);<br />
}<br />
}</p>
<p>set { coWebCache.Save_WebCacheItem(&#8220;S&#8221;, &#8220;gsMessage&#8221;, value); }<br />
}
</td>
</tr>
<tr>
<td width="25px"></td>
<td>
public ArrayList CONTRACT_OBJECT_LIST<br />
{<br />
get<br />
{<br />
if (coWebCache.Get_WebCacheItem(&#8220;S&#8221;, &#8220;goContractObjectList&#8221;) == null)<br />
{<br />
return (new ArrayList());<br />
}<br />
else<br />
{<br />
return (ArrayList)coWebCache.Get_WebCacheItem(&#8220;S&#8221;,<br />
&#8220;goContractObjectList&#8221;);<br />
}<br />
}</p>
<p>set { coWebCache.Save_WebCacheItem(&#8220;S&#8221;, &#8220;goContractObjectList&#8221;, value); }<br />
}
</td>
</tr>
<tr>
<td colspan="2">
}
</td>
</tr>
</table>
<p>These two classes do not yield anything earth shattering in terms of technology but they do provide a good way to organize an application’s state as well as enforce some discipline as to what gets put into it…</p>
<p><em>Black Falcon</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blackfalconsoftware.wordpress.com/2352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blackfalconsoftware.wordpress.com/2352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blackfalconsoftware.wordpress.com/2352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blackfalconsoftware.wordpress.com/2352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blackfalconsoftware.wordpress.com/2352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blackfalconsoftware.wordpress.com/2352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blackfalconsoftware.wordpress.com/2352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blackfalconsoftware.wordpress.com/2352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blackfalconsoftware.wordpress.com/2352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blackfalconsoftware.wordpress.com/2352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blackfalconsoftware.wordpress.com/2352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blackfalconsoftware.wordpress.com/2352/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blackfalconsoftware.wordpress.com/2352/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blackfalconsoftware.wordpress.com/2352/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2352&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blackfalconsoftware.wordpress.com/2010/07/20/tools-code-organizing-asp-net-application-session-state%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eeb60e8ab7b0b9e0b398831575a6e7e4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Black Falcon</media:title>
		</media:content>

		<media:content url="http://blackfalconsoftware.files.wordpress.com/2010/07/organizing_session_state.jpeg" medium="image" />
	</item>
		<item>
		<title>Black Falcon Software: ORAHelper – Easy To Use .NET Oracle Database Access Layer</title>
		<link>http://blackfalconsoftware.wordpress.com/2010/06/12/black-falcon-software-orahelper-%e2%80%93-easy-to-use-net-oracle-database-access-layer/</link>
		<comments>http://blackfalconsoftware.wordpress.com/2010/06/12/black-falcon-software-orahelper-%e2%80%93-easy-to-use-net-oracle-database-access-layer/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 15:41:28 +0000</pubDate>
		<dc:creator>Black Falcon</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Tools & Code]]></category>
		<category><![CDATA[dal]]></category>
		<category><![CDATA[database data access]]></category>
		<category><![CDATA[database data access layer]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[orahelper]]></category>

		<guid isPermaLink="false">http://blackfalconsoftware.wordpress.com/?p=2342</guid>
		<description><![CDATA[&#8220;ORAHelper&#8221; is the latest release from Black Falcon Software in its &#8220;Data Access Layer&#8221; project at Microsoft&#8217;s CodePlex. With the many new database provider &#8220;factories&#8221; appearing on the market both in commercial and free open-source form, one would wonder why add to the fray with a new DAL for Oracle. The reason is simple, &#8220;KISS&#8221; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2342&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://blackfalconsoftware.files.wordpress.com/2009/12/falcon_against_the_sun_tech_notes_logo.jpg?w=600" alt="" /><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p>&#8220;ORAHelper&#8221; is the latest release from Black Falcon Software in its &#8220;Data Access Layer&#8221; project at Microsoft&#8217;s CodePlex.</p>
<p>With the many new database provider &#8220;factories&#8221; appearing on the market both in commercial and free open-source form, one would wonder why add to the fray with a new DAL for Oracle.  The reason is simple, &#8220;KISS&#8221; or &#8220;Keep it simple, stupid!&#8221;.</p>
<p>Most application development today, no matter what the platform, requires only a single database engine.  Though there are projects that require access to multiple databases, these projects are usually relegated to the complex and are in the domain of sophisticated IT organizations.  Some, to be fair, are not and can be found in smaller arenas but the number remains rather small when compared to single database applications.</p>
<p>The use of such &#8220;heavy duty&#8221; tools are perfect solutions when programming such projects but those who only need to program for one database, and in this case Oracle, require only a single interface for their needs.</p>
<p>Enter, &#8220;ORAHelper&#8221;, which has all of the standard features that any DAL would have to provide for full application development.  If you have already tried our &#8220;SQL Server&#8221; DAL, than you will find it quite easy to use &#8220;ORAHelper&#8221; since it contains practically the same functionality.</p>
<p>All project and source code modules are provided in both their C# and VB.NET versions for both the 2.0 and 3.5 .NET Frameworks along with complete documentation for the API.  In addition, for ease of testing a complete test-client module has been.</p>
<p>To get this software, simply go to the link below to perform the download.</p>
<p>If you like the software please leave your comments here or write to Black Falcon Software at the following address… <span style="color:blue;"> support@blackfalconsoftware.com</span></p>
<p><em>Black Falcon</em></p>
<p><span style="color:blue;"><br />
<a href="http://databasedals.codeplex.com/" target="_blank">Download SQLHelper from our CodePlex site&#8230;</a><br />
</span></p>
<p><strong>Suggested Reading&#8230;</strong></p>
<table border="1">
<tbody>
<tr>
<td><a href="http://www.amazon.com/gp/product/0470257024?ie=UTF8&amp;tag=thnaapon-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0470257024" target="_blank">Professional Microsoft SQL Server 2008 Programming (Wrox Programmer to Programmer)</a><img style="border:none!important;margin:0!important;" src="http://www.assoc-amazon.com/e/ir?t=thnaapon-20&amp;l=as2&amp;o=1&amp;a=0470257024" border="0" alt="" width="1" height="1" /></td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blackfalconsoftware.wordpress.com/2342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blackfalconsoftware.wordpress.com/2342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blackfalconsoftware.wordpress.com/2342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blackfalconsoftware.wordpress.com/2342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blackfalconsoftware.wordpress.com/2342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blackfalconsoftware.wordpress.com/2342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blackfalconsoftware.wordpress.com/2342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blackfalconsoftware.wordpress.com/2342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blackfalconsoftware.wordpress.com/2342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blackfalconsoftware.wordpress.com/2342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blackfalconsoftware.wordpress.com/2342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blackfalconsoftware.wordpress.com/2342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blackfalconsoftware.wordpress.com/2342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blackfalconsoftware.wordpress.com/2342/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2342&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blackfalconsoftware.wordpress.com/2010/06/12/black-falcon-software-orahelper-%e2%80%93-easy-to-use-net-oracle-database-access-layer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eeb60e8ab7b0b9e0b398831575a6e7e4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Black Falcon</media:title>
		</media:content>

		<media:content url="http://blackfalconsoftware.files.wordpress.com/2009/12/falcon_against_the_sun_tech_notes_logo.jpg" medium="image" />

		<media:content url="http://www.assoc-amazon.com/e/ir?t=thnaapon-20&#38;l=as2&#38;o=1&#38;a=0470257024" medium="image" />
	</item>
		<item>
		<title>Software Engineering: Writing Client Proposals for DotNETNuke</title>
		<link>http://blackfalconsoftware.wordpress.com/2010/02/14/software-engineering-writing-client-proposals-for-dotnetnuke/</link>
		<comments>http://blackfalconsoftware.wordpress.com/2010/02/14/software-engineering-writing-client-proposals-for-dotnetnuke/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 19:24:30 +0000</pubDate>
		<dc:creator>Black Falcon</dc:creator>
				<category><![CDATA[Tools & Code]]></category>
		<category><![CDATA[DotNETNuke]]></category>
		<category><![CDATA[dotnetnuke core features]]></category>
		<category><![CDATA[dotnetnuke proposals]]></category>

		<guid isPermaLink="false">http://tech-notes.info/?p=2318</guid>
		<description><![CDATA[  One of the most critical aspects of writing a document for a new client regarding the installation of the DotNETNuke (DNN) platform is to tell the client what features he or she could expect to get from such an installation. Here you are preparing such a proposal and you want a simple, well outlined [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2318&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dotnetnuke.com/"><img src="http://www.dotnetnuke.com/Portals/_default/Skins/Ultimo/images/DotNetNuke-Logo.gif" border="0" alt="DotNetNuke Home" /></a> </p>
<p>One of the most critical aspects of writing a document for a new client regarding the installation of the DotNETNuke (DNN) platform is to tell the client what features he or she could expect to get from such an installation.</p>
<p>Here you are preparing such a proposal and you want a simple, well outlined feature-list for your potential client so you head on over to <a href="http://www.dotenetuke.com" target="_blank">http://www.dotenetuke.com</a> to get such a list and after a few moments you find yourself stopped dead in your tracks. You can&#8217;t seem to find such a list beyond the general capabilities provided in the DNN feature overview.</p>
<p>Don&#8217;t despair&#8230; The DNN site is becoming like Microsoft&#8217;s due to its popularity and the inability of the DNN team to keep up with their own success and increasing amount of documentation. And if you have ever tried to find anything on Microsoft&#8217;s site you will understand.</p>
<p>The information you are seeking in this respect is actually in the DNN &#8220;Help&#8221; area. Why a technical, pre-sales piece of documentation would be filed under a &#8220;Help&#8221; area is a question for the DNN team. However, if you do not want to gather all of this information yourself, simply download the Zip-file below to get both a Word document as well as its corresponding PDF version of a nicely laid out feature list that is perfect as additional documentation for any client proposal involving the implementation of the DNN Framework.</p>
<p>And if you want to update the Word document but prefer to distribute it as a PDF, such as the one that accompanies the download, then simply go <a href="http://www.dopdf.com/" target="_blank">http://www.dopdf.com/</a> and download the excellent Word-To-PDF converter tool. It is not only an excellent tool but is also Freeware as well. Kudos to Softland for their excellent product&#8230;</p>
<table width="100%">
<tbody>
<tr>
<td align="center"><a title="Free PDF Creator, doPDF" href="http://www.dopdf.com" target="_blank"><img src="http://www.dopdf.com/images/banner_dopdf_468_60_exp.png" alt="" /></a></td>
</tr>
</tbody>
</table>
<p><em>Black Falcon</em></p>
<table>
<tbody>
<tr>
<td>DotNETNuke Core Features Files</td>
<td><a href="http://www.mediafire.com/file/jzezzy1wzuv/DotNETNuke Proposal Support Information.zip" target="_blank">http://www.mediafire.com/file/jzezzy1wzuv/DotNETNuke Proposal Support Information.zip</a></td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blackfalconsoftware.wordpress.com/2318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blackfalconsoftware.wordpress.com/2318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blackfalconsoftware.wordpress.com/2318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blackfalconsoftware.wordpress.com/2318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blackfalconsoftware.wordpress.com/2318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blackfalconsoftware.wordpress.com/2318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blackfalconsoftware.wordpress.com/2318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blackfalconsoftware.wordpress.com/2318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blackfalconsoftware.wordpress.com/2318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blackfalconsoftware.wordpress.com/2318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blackfalconsoftware.wordpress.com/2318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blackfalconsoftware.wordpress.com/2318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blackfalconsoftware.wordpress.com/2318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blackfalconsoftware.wordpress.com/2318/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2318&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blackfalconsoftware.wordpress.com/2010/02/14/software-engineering-writing-client-proposals-for-dotnetnuke/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eeb60e8ab7b0b9e0b398831575a6e7e4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Black Falcon</media:title>
		</media:content>

		<media:content url="http://www.dotnetnuke.com/Portals/_default/Skins/Ultimo/images/DotNetNuke-Logo.gif" medium="image">
			<media:title type="html">DotNetNuke Home</media:title>
		</media:content>

		<media:content url="http://www.dopdf.com/images/banner_dopdf_468_60_exp.png" medium="image" />
	</item>
		<item>
		<title>Tools &amp; Code: Installing DotNETNuke From The Source-Code Package</title>
		<link>http://blackfalconsoftware.wordpress.com/2010/02/07/tools-code-installing-dotnetnuke-from-the-source-code-package/</link>
		<comments>http://blackfalconsoftware.wordpress.com/2010/02/07/tools-code-installing-dotnetnuke-from-the-source-code-package/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 19:15:58 +0000</pubDate>
		<dc:creator>Black Falcon</dc:creator>
				<category><![CDATA[Tools & Code]]></category>
		<category><![CDATA[DNN]]></category>
		<category><![CDATA[DotNETNuke]]></category>
		<category><![CDATA[installation issues]]></category>
		<category><![CDATA[installation resolutions]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[source code pacakge]]></category>

		<guid isPermaLink="false">http://tech-notes.info/?p=2305</guid>
		<description><![CDATA[  DotNETNuke (DNN), is probably one of the best complete CMS frameworks developed for the ASP.NET platform. Yes, there are others, but in my research none of these alternative frameworks combine the capabilities and extensibility that the current DNN platform does. Unfortunately, the success of DNN has had a detrimental effect on their ongoing documentation [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2305&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.dotnetnuke.com/"><img src="http://www.dotnetnuke.com/Portals/_default/Skins/Ultimo/images/DotNetNuke-Logo.gif" border="0" alt="DotNetNuke Home" /></a> </strong></p>
<p><strong>DotNETNuke (DNN),</strong> is probably one of the best complete CMS frameworks developed for the ASP.NET platform. Yes, there are others, but in my research none of these alternative frameworks combine the capabilities and extensibility that the current DNN platform does.</p>
<p>Unfortunately, the success of DNN has had a detrimental effect on their ongoing documentation efforts, which many can already attest are falling behind in their compatibility to current versions and framework extensions. Downloaded documentation files are still displaying 2006\2007 timestamps and have not been revisited since.</p>
<p>The DNN site itself has become as proportionately extensive as that of Microsoft’s. The result, as any technician who has visited the site can attest to, is a maddening labyrinth of articles, blogs, notes, and documentation files that seemingly have little connection or relevance to each other in terms of their placement within the site let alone the aging nature just mentioned.</p>
<p>Installation then from a source-code package, which most professional developers would select, if for nothing else curiosity, is basically well-done but has issues with minor aspects of the installation process that could affect such an installation along with the sanity of the developer doing it.</p>
<p>Several months ago, I wrote a technical memorandum to the DNN team clarifying these installation issues, while demonstrating that by adding just some minor re-organization to the installation information along with some minor clarifications, a source-code package installation could be made much easier and less fraught with issues that could literally cancel out any promising endeavor for the use of this framework.</p>
<p>For your benefit, this document has now been posted here for developers who are looking to install DNN on their company site’s servers or their own. The technical notes included should make any such installation a rather easy process without any of the potential headaches…</p>
<p>The document that follows was accepted by the people at DNN Corporation and I was placed on their list for additional assistance with their documentation projects.</p>
<p><em>Black Falcon</em></p>
<table>
<tbody>
<tr>
<td> </td>
</tr>
</tbody>
</table>
<table>
<p><strong>Re: Installing DNN 5.01.01 From The Source Code</strong>Hello…</p>
<p>I have just finished about 9 hours worth of in-depth analysis on the DotNETNuke Framework in terms of installation issues with both your source package as well as the standard installation package… and I have a number of comments to make.</p>
<p>As a senior software engineer with over 35 years in the field I have done just about everything there is to do in the business application arena so I have seen a wide swath of issues with scores of applications and frameworks.  So if you would allow, I speak here from extensive experience in the IT field/</p>
<p>First and foremost, DotNETNuke is an incredible framework given the breadth of its capabilities and the community that supports it. And for once something of this scale is written in VB.NET and not C#.</p>
<p>I have been researching the use of this framework for years and have finally been able to propose it to my client as a consideration for the document management functionality they would like to offer both the corporate environment as well as the many subsidiaries this client owns.  This proposal is going into some very serious business environments that have nothing to do with current web fads, startups and the like.  As  a result, if this proposal is accepted, The DotNETNuke community just may see an interesting uptick in their installations that involve some very serious business concerns.</p>
<p>That being said, there are a number of installation issues that have to be addressed; there are simply too many issues that come up without immediate answers available.  This contention is corroborated by the many installation problems reported in your forums.</p>
<p>Most often technical personnel will be doing DNN installations for their sites with a lesser number being installed by end-users with some technical knowledge (ie: web hosting DNN installations).  Thus the installation support should be first and foremost towards the technician and not the administrator who may or may not be competent technically.   And though you have made a good attempt at performing a non-technical installation, I have found  from my own attempts at running the installs (and I have done several) that there are too many questions that a technical person would naturally pose that aren’t clarified with any supporting information to help him or her make informed judgments as to why they are selecting a certain option or updating some installation code.</p>
<p>For example, your installation to SQL Server 2008 Express, though it works just fine, actually goes against the “grain”, more or less, as to how database development professional would view such an installation.  DNN makes use of the new “User Instance” in the express versions of SQL-Server but what database developer would use such an attribute?  I researched the use of this new addition to SQL Server and found it to be very similar in nature to typed-datasets, designed for less technical personnel but highly limiting to well trained personnel.  I certainly would never use it but try setting up DNN with SQL Server 2008 Express without the “User Instance=True” and you get a minefield of issues that are not readily explained or apparent.</p>
<p>I run SQL Server Express 2008 on my laptop and workstation at home.  My laptop supports my work at my client.  On my personal workstation it is simply there for quick work when I do not want to power up my database server for the full versions.  I connect to SQL Server 2008 Express the same way I connect to my server databases.  It should be that way with DNN or at least an option that DNN understands right out of the box making connection string updates easy and without any issues.</p>
<p>In terms of the DNN source-package installs, this can be a nightmare of potential pitfalls for the technician.  And yet it doesn’t have to be.  Like many .NET web-based applications that are designed for distribution to the public, the solution structure can often be a determining factor in the success or failure of such an installation.  Some solutions are built in such an arcane fashion that one small change to its setup can blow the entire installation out of the water.  To some extent this is true of DNN, maybe not so much as a result of the solution structure but from the lack of detail and information as to why it is structured in the way it is and the variety of dependencies that exist.  In addition, installing the source-package for a SQL Server 2008 Express environment has some different aspects to it than that of a server environment as noted above.  All of this should be clearly spelled out for a developer who is tackling such an installation.</p>
<p>For starters, your “README” file is in the wrong place.  It should be placed at the top-most level of your source package where the solution files reside.  It should also scream “READ ME BEFORE DOING ANYTHING WITH THIS SOURCE CODE!!!</p>
<p>Second, to make this file more prominent it should be as nicely setup as your PDF manuals are to further the impression on the new developer that this information is critical to a successful source-package installation.</p>
<p>In addition, I have made some notes, which I believe will resolve numerous installation issues which you may want to elaborate on and include in this file.  They are as follows…</p>
<ul>
<li><strong>Rename the &#8220;Development.config&#8221; file in the &#8220;Website&#8221; directory</strong> to &#8220;web.config&#8221; (You say this in your own Notes but as a result of the placement of the file such information is not readily significant.)</li>
<li><strong>Place the updated\renamed &#8220;web.config&#8221; </strong>in both the top-most directory where the solution &#8220;.sln&#8221; files are andkeep it as well in the &#8220;Website&#8221; directory.  This is probably not required in terms of placing this file in bothdirectories but it certainly will avoid any issues while running an installation.</li>
<li><strong>Create a Virtual Directory in IIS called DotNetNuke</strong> which points to the &#8220;Website&#8221; directory where theDotNetNuke.webproj file exists.  It is preferable to place the DotNETNuke directories and files in a separatedirectory structure that is not part of “inetpub\wwwroot” so that no potential conflicts may arise during compileand installation.</li>
<li><strong>Compile the entire DotNETNuke solution</strong> and make sure that there are no errors.  If errors are listed this means that the web.config files have not been properly updated and placed.  Go back to items 1 and 2…</li>
<li><strong>If using SQL-Server 2000, 2005, or 2008,</strong> create ONLY the database structure on SQL-Server 2000, 2005, or 2008 before attempting to run a source-package installation; obtain the proper connection information and update the connection strings in bothweb.config files with the added connection-string parameter of &#8220;User Instance=False&#8221;</li>
<li><strong>If using SQL-Server 2005\2008 Express,</strong> DO NOT CHANGE EXISTING CONNECTION STRINGS except for database name; leave the login credentials alone. User Instance=True&#8221;  (this is required when using SQL-Server Express editions for DNN</li>
</ul>
<p>If you prepare the “README” file and these notes are followed in the order they are listed you should see a substantial reduction in with reported installation issues.</p>
<p>Finally, I would recommend preparing a detailed source-package manual for the current version of DNN that not only details the notes I have mentioned but the many details that comprise the understanding of the source-package such as what each module does, why it is included, and what issues can come up if the appropriate references are not left intact.</p>
<p>Thank you for your consideration and time in reviewing this information.</p>
<tbody></tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blackfalconsoftware.wordpress.com/2305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blackfalconsoftware.wordpress.com/2305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blackfalconsoftware.wordpress.com/2305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blackfalconsoftware.wordpress.com/2305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blackfalconsoftware.wordpress.com/2305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blackfalconsoftware.wordpress.com/2305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blackfalconsoftware.wordpress.com/2305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blackfalconsoftware.wordpress.com/2305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blackfalconsoftware.wordpress.com/2305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blackfalconsoftware.wordpress.com/2305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blackfalconsoftware.wordpress.com/2305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blackfalconsoftware.wordpress.com/2305/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blackfalconsoftware.wordpress.com/2305/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blackfalconsoftware.wordpress.com/2305/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2305&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blackfalconsoftware.wordpress.com/2010/02/07/tools-code-installing-dotnetnuke-from-the-source-code-package/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eeb60e8ab7b0b9e0b398831575a6e7e4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Black Falcon</media:title>
		</media:content>

		<media:content url="http://www.dotnetnuke.com/Portals/_default/Skins/Ultimo/images/DotNetNuke-Logo.gif" medium="image">
			<media:title type="html">DotNetNuke Home</media:title>
		</media:content>
	</item>
		<item>
		<title>Tools &amp; Code: The Black Art of Installing PHP under Microsoft IIS (5.1, 6.0, 7.0)</title>
		<link>http://blackfalconsoftware.wordpress.com/2010/01/26/tools-code-the-black-art-of-installing-php-under-microsoft-iis-5-1-6-0-7-0/</link>
		<comments>http://blackfalconsoftware.wordpress.com/2010/01/26/tools-code-the-black-art-of-installing-php-under-microsoft-iis-5-1-6-0-7-0/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 19:13:02 +0000</pubDate>
		<dc:creator>Black Falcon</dc:creator>
				<category><![CDATA[Tools & Code]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[iis 5]]></category>
		<category><![CDATA[iis 5.1]]></category>
		<category><![CDATA[iis 6]]></category>
		<category><![CDATA[iis 7]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://tech-notes.info/?p=2274</guid>
		<description><![CDATA[You would think that one of the most popular dynamic languages in the industry would have a rather straight-forward process of being installed in a Windows environment with the capability of running under IIS. The disappointing news is that PHP is a literal brain-crushing, mind-blowing, nightmarish experience when it comes to this implementation scenario. Why? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2274&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://blackfalconsoftware.files.wordpress.com/2010/01/php_logo.jpg?w=600"></p>
<p>You would think that one of the most popular dynamic languages in the industry would have a rather straight-forward process of being installed in a Windows environment with the capability of running under IIS.  The disappointing news is that PHP is a literal brain-crushing, mind-blowing, nightmarish experience when it comes to this implementation scenario.</p>
<p>Why?  More than likely because PHP was never really designed to run under Windows and is more at home in the Linux world.  However, it is now in Windows environment and getting increasingly stronger in it on a daily basis.</p>
<p>One could ask, why a technical site devoted to .NET technologies is suddenly publishing an article on PHP and the answer is fairly straight-forward.  If you develop web-sites, even if you are a hard-core .NET professional at some point you are going to run into PHP.  And since I have found myself in this very position recently I want to get the information out before I completely forget it…</p>
<p>In the .NET world we already have Phalanger, which is a Microsoft sponsored project for PHP.NET and there is also “Iron-PHP” along with an add-on for Visual Studio if you prefer to remain in that environment.</p>
<p>A lot of Internet web-sites are developed using this tool and there is no sign of this trend abating since it is not only free to obtain but works with all the major components in the web world such as databases.</p>
<p>However, getting it up and running under IIS is still sort of a “Black Art” that I hope this article will make a little easier to handle.</p>
<p>So let’s begin…</p>
<p>First and foremost you have to make a decision if you want to run PHP with plain old CGI processing or the newer FastCGI option.  Depending on how your system has been configured, such as those you may be using at your place of employment, you may not be able to install FastCGI and PHP along side with it.</p>
<p>If you install FastCGI and your PHP installer throws up an error during the install process that states that the PHP package may be corrupted, this is a sure sign that your FastCGI implementation on that machine is not compatible with the PHP installation.  This has nothing to do with PHP but with the underlying configuration of your machine.</p>
<p>If you are comfortable that you can install FastCGI, go here to obtain the Microsoft version for IIS 5.1 and 6.0… <a href="http://www.iis.net/expand/fastcgi">http://www.iis.net/expand/fastcgi</a></p>
<p>Before you install FastCGI you may have to install the Microsoft Web Platform Installer first.  Simply download it from the link noted above to a directory on your machine and execute the installer.  Than you can go back to the web page above and begin the FastCGI installation process.</p>
<p>For Vista users you can find a similar article here… <a href="http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/">http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/</a>.  And for both Vista and Windows-7 users, the following article applies… <a href="http://technet.microsoft.com/en-us/library/cc753077%28WS.10%29.aspx" target="_blank">http://technet.microsoft.com/en-us/library/cc753077%28WS.10%29.aspx</a></p>
<p>Since FastCGI is already an installed component with Vista and Windows-7, these articles at the links above will describe how to make use of it.</p>
<p>For those of us who have yet to upgrade from XP, we have just as much work to do with the addition of installing the FastCGI component if we elect to use it.</p>
<p>Once installed, check to make sure that it was done successfully by checking for the <strong>fcgiconfig.js</strong> file in your “inetsrv” directory, which can be found in &#8220;Windows\System32\inetsrv&#8221;.  If its there you can proceed.  There should be no problems with installing the FastCGI component but checking to make sure is just a good practice.</p>
<p>Now we need PHP itself.  Head on over to the following link and make sure you download the “non-thread-safe” version of PHP of the Windows installer… <a href="http://www.php.net/downloads.php" target="_blank">http://www.php.net/downloads.php</a>.  According to one document I came across the same holds true for Vista and Windows-7 users.  You can review this document at <a href="http://www.hauser-wenz.de/s9y/index.php?/archives/280-Installing-PHP-on-Windows-7.html" target="_blank">http://www.hauser-wenz.de/s9y/index.php?/archives/280-Installing-PHP-on-Windows-7.html</a> which is a guide written up for Windows-7 installations.</p>
<p>For Windows Vista, this article will apply… <a href="http://www.mattsilverman.com/2009/03/install-php-on-windows-vista.html" target="_blank">http://www.mattsilverman.com/2009/03/install-php-on-windows-vista.html</a></p>
<p>Ok… Now for the PHP installation….</p>
<p>One thing to take note of.  PHP does not like directory names with spaces in them.  So don’t use them!  As a result, don’t install PHP into “Program Files\PHP”.  You will most likely have issues either during the install or after it.  The common recommendation is “C:\PHP” for your installation.  It is a rather safe bet.  However, you can install PHP to any directory of your choosing.  Just make sure there are no spaces anywhere in the path.</p>
<p>Once installed, you will find your “PHP.ini file in the root installation directory (ie: “C:\PHP”).  You now have to make a few minor updates to this file.  Here they are…</p>
<p>Under CGI:</p>
<ul>
<li>fastcgi.impersonate = 0</li>
<li>fastcgi.logging = 0</li>
<li>cgi.fix_pathinfo=1</li>
<li>cgi.force_redirect = 0</li>
</ul>
<p>Under FastCGI</p>
<ul>
<li>fastcgi.impersonate = 1</li>
<li>fastcgi.logging = 0</li>
<li>cgi.fix_pathinfo=1</li>
<li>cgi.force_redirect = 0</li>
</ul>
<p>If you are using FastCGI than you will also have to run the following script to get it initialized properly for IIS…</p>
<pre>
<strong>cscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" ^ -extension:php -path:"C:\PHP\php-cgi.exe"</strong>

(see the article at the end of this piece… “PHP – Miccrosoft IIS 5.1 and IIS 6.0”)
</pre>
<p>Before running the script make sure you change the path name to where your <strong>php-cgi.exe</strong> module is located.</p>
<p>Next, you should add PHP default document to IIS as &#8220;index.php&#8221; via your PHP virtual site&#8217;s &#8220;Properties&#8221; option&#8230;</p>
<table>
<tbody>
<tr>
<td align="center"><img src="http://blackfalconsoftware.files.wordpress.com/2010/01/add_php_defaultdocument.jpg?w=600" alt="" /></td>
</tr>
</tbody>
</table>
<p>And finally, you will have to add the “.php” extension mapping to your PHP virtual directory.  And this is a critical implementation.  Without it, your PHP scripts simply will not run.</p>
<table>
<tbody>
<tr>
<td align="center"><img src="http://blackfalconsoftware.files.wordpress.com/2010/01/add_php_extension.jpg?w=600" alt="" /></td>
</tr>
</tbody>
</table>
<p>Of course, when  you try to do this in XP you will find that you will be unable to save your new mapped extension.  You will immediately think this is a permissions issue.  It isn’t but merely one of those undocumented features by Microsoft to drive technicians insane.  See the following article for the complete work-around for this annoyance.</p>
<table>
<tbody>
<tr>
<td align="center"><a href="http://support.microsoft.com/kb/317948" target="_blank">http://support.microsoft.com/kb/317948</a></td>
</tr>
</tbody>
</table>
<p>If you are going to use FastCGI and you have run the initialization script successfully along with the rest of the steps outlined, you should now be able to run a PHP script file under IIS.  If you are using just CGI than the initialization script is not part of the process.</p>
<p>Now save the following script to your PHP projects directory…</p>
<p><code><br />
&lt;?php</code></p>
<p>echo &#8220;test&#8221;;</p>
<p>?&gt;</p>
<p>Open up your browser and access this script via a URL (http://&#8230;).  You should see “Test” appear in the browser’s display.  If you do… you’re set to go…</p>
<p>Now that you have gotten PHP installed, what do you do with it?  Creating PHP scripts in a text editor is fine if you are a hard-core UNIX\Linux aficionado.  However, for the rest of us who have to get work done, an IDE is a far superior choice.  The problem is that most PHP IDEs are rather useless or overly expensive since this is still rather a niche market.</p>
<p>However, the one IDE that stands above all others and will give you a completely professional environment is “Netbeans”.  “Netbeans” will provide you with everything you need to develop robust PHP web applications, including a debugger.  And the best part is that it is completely free.</p>
<p>Since “Netbeans” was originally developed for Java and has since added a number of dynamic languages to its platform, you could download the entire package if you are interested.  However, you don’t have to.  All you need is “Netbeans-PHP”, which is a subset of the entire platform.</p>
<p>You can download a copy of Netbeans at  <a>http://netbeans.org/downloads/index.html</a></p>
<p>The image below shows you the download option you should select at the Netbeans site…</p>
<table>
<tr>
<td>
<img src="http://blackfalconsoftware.files.wordpress.com/2010/01/netbeans_download.jpg?w=600">
</td>
</tr>
</table>
<p><em>Black Falcon</em></p>
<table>
<tr>
<td>
Installing PHP To Run On IIS 5-6
</td>
<td>
<a href="http://www.mediafire.com/file/uneleyy1mhd/Installing PHP To Run On IIS 5-6.doc" target="_blank">http://www.mediafire.com/file/uneleyy1mhd/Installing PHP To Run On IIS 5-6.doc</a>
</td>
</tr>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blackfalconsoftware.wordpress.com/2274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blackfalconsoftware.wordpress.com/2274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blackfalconsoftware.wordpress.com/2274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blackfalconsoftware.wordpress.com/2274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blackfalconsoftware.wordpress.com/2274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blackfalconsoftware.wordpress.com/2274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blackfalconsoftware.wordpress.com/2274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blackfalconsoftware.wordpress.com/2274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blackfalconsoftware.wordpress.com/2274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blackfalconsoftware.wordpress.com/2274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blackfalconsoftware.wordpress.com/2274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blackfalconsoftware.wordpress.com/2274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blackfalconsoftware.wordpress.com/2274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blackfalconsoftware.wordpress.com/2274/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2274&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blackfalconsoftware.wordpress.com/2010/01/26/tools-code-the-black-art-of-installing-php-under-microsoft-iis-5-1-6-0-7-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eeb60e8ab7b0b9e0b398831575a6e7e4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Black Falcon</media:title>
		</media:content>

		<media:content url="http://blackfalconsoftware.files.wordpress.com/2010/01/php_logo.jpg" medium="image" />

		<media:content url="http://blackfalconsoftware.files.wordpress.com/2010/01/add_php_defaultdocument.jpg" medium="image" />

		<media:content url="http://blackfalconsoftware.files.wordpress.com/2010/01/add_php_extension.jpg" medium="image" />

		<media:content url="http://blackfalconsoftware.files.wordpress.com/2010/01/netbeans_download.jpg" medium="image" />
	</item>
		<item>
		<title>Health: Maybe Its Time to Get Rid of All The Technological Junk in Our Lives&#8230;</title>
		<link>http://blackfalconsoftware.wordpress.com/2009/12/28/health-maybe-its-time-to-get-rid-of-all-the-technological-junk-in-our-lives/</link>
		<comments>http://blackfalconsoftware.wordpress.com/2009/12/28/health-maybe-its-time-to-get-rid-of-all-the-technological-junk-in-our-lives/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 18:14:51 +0000</pubDate>
		<dc:creator>Black Falcon</dc:creator>
				<category><![CDATA[Health]]></category>
		<category><![CDATA[depression]]></category>
		<category><![CDATA[happiness]]></category>
		<category><![CDATA[psychology]]></category>
		<category><![CDATA[self-determination theory]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://tech-notes.info/?p=2262</guid>
		<description><![CDATA[27 December 2009 by Yair Amichai-Hamburger Go to Article Source&#8230; &#8220;THE age of melancholy&#8221; is how psychologist Daniel Goleman describes our era. People today experience more depression than previous generations, despite the technological wonders that help us every day. It might be because of them. Our lifestyles are increasingly driven by technology. Phones, computers and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2262&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="hldhdMidSect">
<div id="hldhdLogoName">
<div id="hdLogo"><a href="http://www.newscientist.com/"><img title="New Scientist" src="http://www.newscientist.com/img/misc/ns_logo.jpg" alt="New Scientist" /></a></div>
</div>
<div id="hldhdTools">
<div id="hldHdLogin"><!-- rollInfoHd --></div>
<p><!-- hldHdLogin --></div>
<p><!-- hldhdTools --></div>
<p>27 December 2009 by <strong>Yair Amichai-Hamburger</strong></p>
<p><a href="http://www.newscientist.com/article/mg20427390.100-free-yourself-from-oppression-by-technology.html">Go to Article Source&#8230;</a></p>
<p>&#8220;THE age of melancholy&#8221; is how psychologist Daniel Goleman describes our era. People today experience more depression than previous generations, despite the technological wonders that help us every day. It might be because of them.</p>
<p>Our lifestyles are increasingly driven by technology. Phones, computers and the internet pervade our days. There is a constant, nagging need to check for texts and email, to update Facebook, MySpace and LinkedIn profiles, to acquire the latest notebook or 3G cellphone.</p>
<p>Are we being served by these technological wonders or have we become enslaved by them? I study the psychology of technology, and it seems to me that we are sleepwalking into a world where technology is severely affecting our well-being. Technology can be hugely useful in the fast lane of modern living, but we need to stop it from taking over.</p>
<p>For many of us it is becoming increasingly difficult to control the impulse to check our inbox yet again or see whether the headlines have changed since we last looked. Our children are in a similar position, scared to miss a vital Tweet or status update on Facebook. In many homes, the computer has become the centre of attention; it is the medium through which we work and play.</p>
<p>How did this arise, and what is it doing to us? In this era of mass consumption, we are surrounded by advertising that urges us to find fulfilment through the acquisition of material goods. As a result, adults and children increasingly believe that in order to belong and feel good about themselves, they must own the latest model or gadget.</p>
<p>Yet research by psychologist <a href="http://www.knox.edu/tkasser.xml" target="nsarticle">Tim Kasser</a> of Knox College in Galesburg, Illinois, has shown that people who place a high value on material goals are unhappier than those who are less materialistic. Materialism is also associated with lower self-esteem, greater narcissism, greater tendency to compare oneself unfavourably with other people, less empathy and more conflict in relationships.</p>
<table width="100%">
<tbody>
<tr>
<td align="center"><em>&#8220;People who place a high value on material goals are unhappier than those who are less materialistic&#8221;</em></td>
</tr>
</tbody>
</table>
<p>Our culture also constantly reminds us that time is money. This implies a need for total efficiency, which is why we are allowing laptop computers and mobile phones to blur the separation between work and home. As one unhappy human-resource manager in a high-tech company put it: &#8220;They gave me a mobile phone so they can own me 24 hours a day, and a portable computer, so my office is now with me all the time &#8211; I cannot break out of this pressure.&#8221; Sound familiar?</p>
<p>Psychologists generally believe that the lack of a clear separation between work and home significantly damages our relationships with loved ones. It also predisposes us to focus on the here and now at the expense of long-term goals.</p>
<p>By imposing these twin pressures, modern society is in danger of swapping standard of living for quality of life. We need ways to help recover those increasingly large parts of our lives that we have ceded to technology, to regain mastery over technology and learn to use it in a healthy and positive way.</p>
<p>My prescription is <a href="http://www.psych.rochester.edu/SDT/index.php" target="nsarticle">self-determination theory</a>, developed by psychologists Edward Deci and Richard Ryan of the University of Rochester in New York state. It identifies three vital elements of healthy personal development and functioning which I think can be used to recalibrate our relationship with technology.</p>
<p>The first is autonomy &#8211; the feeling that our activities are self-chosen and self-endorsed. When we feel in control, we are able to organise our priorities and place effective boundaries around them. But when we feel we have insufficient control, it leaves us vulnerable to our impulses and causes us to abdicate decisions to other people. It is easy to see how technology undermines autonomy, but also how to regain it. This may be as simple as switching off mobile phones during meals and family time, setting aside specific times to answer emails, and being available only when we choose to be.</p>
<p>We also need a sense of competence, a belief that our actions are effective. In this respect our relationship with technology is complex, because many of us feel competent when we deal with an email, when we have the newest BlackBerry, or because 50 people enjoyed the holiday snaps we posted on Facebook. But being truly competent must be a continuation of our autonomy: knowing which activities are important to us and carrying them out in the most effectual way possible, making use of technology where applicable.</p>
<p>The other factor is relatedness: our need to feel close to other people. Technology is a threat to this. Devices like the iPod can be used to create a bubble that disconnects us from normal human interactions, and while some virtual relationships may be truly meaningful, in many cases they come at the expense of real-world connections. Psychologists have found that the pivotal difference between happy and unhappy people is the presence or absence of rich and satisfying social relationships. Spending meaningful time with friends, family and partners is necessary for happiness.</p>
<p>I would add a fourth factor, too: critical thinking. In today&#8217;s world, where we are potentially available 24/7 to absorb messages from well-honed advertisements, it is vital that we know how to analyse and evaluate their validity &#8211; and to neutralise them where necessary.</p>
<p>I believe that autonomy, competence, relatedness and critical thinking are the best ways to establish a balanced approach to technology, and so enhance our well-being.</p>
<p><em>Yair Amichai-Hamburger is director of the Research Center for Internet Psychology at the Sammy Ofer School of Communications, the Interdisciplinary Center in Herzliya, Israel. His book <a href="http://www.amazon.co.uk/Technology-Psychological-Well-being-Edited-Amichai-Hamburger/dp/0521885817/ref=sr_1_1?ie=UTF8&amp;qid=1252502182&amp;sr=8-1" target="nsarticle"><em>Technology and Psychological Well-being</em></a> is published by Cambridge University Press</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blackfalconsoftware.wordpress.com/2262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blackfalconsoftware.wordpress.com/2262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/blackfalconsoftware.wordpress.com/2262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/blackfalconsoftware.wordpress.com/2262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/blackfalconsoftware.wordpress.com/2262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/blackfalconsoftware.wordpress.com/2262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/blackfalconsoftware.wordpress.com/2262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/blackfalconsoftware.wordpress.com/2262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/blackfalconsoftware.wordpress.com/2262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/blackfalconsoftware.wordpress.com/2262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/blackfalconsoftware.wordpress.com/2262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/blackfalconsoftware.wordpress.com/2262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/blackfalconsoftware.wordpress.com/2262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/blackfalconsoftware.wordpress.com/2262/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blackfalconsoftware.wordpress.com&amp;blog=754762&amp;post=2262&amp;subd=blackfalconsoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blackfalconsoftware.wordpress.com/2009/12/28/health-maybe-its-time-to-get-rid-of-all-the-technological-junk-in-our-lives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eeb60e8ab7b0b9e0b398831575a6e7e4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Black Falcon</media:title>
		</media:content>

		<media:content url="http://www.newscientist.com/img/misc/ns_logo.jpg" medium="image">
			<media:title type="html">New Scientist</media:title>
		</media:content>
	</item>
	</channel>
</rss>
