<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-6802992731660752198</id><updated>2010-03-16T14:55:59.426-07:00</updated><title type='text'>Iteratively Perfecting</title><subtitle type='html'></subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/blogger.html'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.deltronweb.com/hcovitz/resume/blog/atom.xml'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>44</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-5547314284239617749</id><published>2010-03-16T14:52:00.000-07:00</published><updated>2010-03-16T14:55:59.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><title type='text'>Database DEnormalization and Violating Simplicity Principles</title><content type='html'>Timothy Claason, at SQL Server Central, writes:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Denormalization is not a design strategy. It is a design work-around. Well&lt;br /&gt;normalized databases represent a good design strategy, but can often lead to a&lt;br /&gt;great deal of complexity when it comes to support, maintenance, and new&lt;br /&gt;development. A well designed database can mean that, in order to get specific&lt;br /&gt;data you need, you need to go through 5, 10, or even more tables which represent&lt;br /&gt;the data you're looking for. Though there are many solutions to this dilemma,&lt;br /&gt;such as virtual tables (views), programmatic solutions, temporary tables, and&lt;br /&gt;more, I think it's important to not discount the value of well-placed&lt;br /&gt;denormalization in the database. &lt;strong&gt;The intent of this article is to consider some&lt;br /&gt;use cases for denormalization, and from those use cases, assert some&lt;br /&gt;generalizations about when and why to use denormalization&lt;/strong&gt;."&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sqlservercentral.com/articles/denormalization/69484/#"&gt;Continued&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-5547314284239617749?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/5547314284239617749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=5547314284239617749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/5547314284239617749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/5547314284239617749'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2010/03/database-denormalization-and-violating.html' title='Database DEnormalization and Violating Simplicity Principles'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-3651938557079495735</id><published>2010-03-10T11:22:00.000-08:00</published><updated>2010-03-10T11:34:15.290-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='file compare'/><category scheme='http://www.blogger.com/atom/ns#' term='hash code'/><category scheme='http://www.blogger.com/atom/ns#' term='hash'/><category scheme='http://www.blogger.com/atom/ns#' term='compare files'/><title type='text'>File Hash Checker</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.deltronweb.com/hcovitz/resume/blog/uploaded_images/screenshotFileHashChecker-709472.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 99px;" src="http://www.deltronweb.com/hcovitz/resume/blog/uploaded_images/screenshotFileHashChecker-709467.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.deltronweb.com/hcovitz/resume/blog/uploaded_images/screenshotFileHashChecker-735900.jpg"&gt;&lt;/a&gt;&lt;a href="http://www.deltronweb.com/hcovitz/lab/FileHashCheckerSetup.zip"&gt;Download here&lt;/a&gt;   &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a simple utility I wrote that displays the &lt;a href="http://en.wikipedia.org/wiki/Hash_function"&gt;hash code&lt;/a&gt; of one or two files, and then compares them to see if they are the same.  I used this to find duplicate image files (where the names of the files could be different).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-3651938557079495735?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/3651938557079495735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=3651938557079495735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/3651938557079495735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/3651938557079495735'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2010/03/file-hash-checker.html' title='File Hash Checker'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-8307132468349194587</id><published>2010-03-05T12:47:00.000-08:00</published><updated>2010-03-05T12:50:14.112-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conditional compilation vb.net c#'/><title type='text'>Conditional Compilation</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;#define test = true&lt;br /&gt;class TestClass {&lt;br /&gt;void test() {&lt;br /&gt;#if test&lt;br /&gt;// do something&lt;br /&gt;#else&lt;br /&gt;// do something else&lt;br /&gt;#endif&lt;br /&gt;}}&lt;br /&gt;&lt;br /&gt;Here's the equivalent code in VB.NET:&lt;br /&gt;&lt;br /&gt;#Const test = True&lt;br /&gt;Class TestClass&lt;br /&gt;Sub test()&lt;br /&gt;#If test&lt;br /&gt;'do something&lt;br /&gt;#Else&lt;br /&gt;'do something else&lt;br /&gt;#End If&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Here's the same but using the DEBUG constant which is automatically set by Visual Studio based on whether you are in debug mode:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;Class TestClass&lt;br /&gt;Sub test()&lt;br /&gt;#If DEBUG&lt;br /&gt;'do something&lt;br /&gt;#Else&lt;br /&gt;'do something else&lt;br /&gt;#End If&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-8307132468349194587?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/8307132468349194587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=8307132468349194587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/8307132468349194587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/8307132468349194587'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2010/03/conditional-compilation.html' title='Conditional Compilation'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-2037024638654177397</id><published>2010-03-05T12:38:00.000-08:00</published><updated>2010-03-05T12:44:10.640-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareTesting Testing'/><title type='text'>Software Testing</title><content type='html'>&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Unit Tests&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;The major benefits to be had from unit testing are&lt;br /&gt;&lt;br /&gt;1. It allows the developer test parts of an application without waiting for the other parts to be available.&lt;br /&gt;&lt;br /&gt;2. Exceptional conditions can be tested for the unit&lt;br /&gt;&lt;br /&gt;3. The debugging process is simplified by limiting the search for bugs to a small unit rather than the complete application.&lt;br /&gt;&lt;br /&gt;4. It helps avoid lengthy compile-build-debug cycles when debugging difficult problems.&lt;br /&gt;&lt;br /&gt;5. Detection and removal of defects can be done at a much lower cost.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Integration Testing&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;The purpose of this kind of testing is to verify whether the major subsystems of the application are integrated. It helps in uncovering the errors that may arise due to conflicts between different units of an application. Integration testing is performed in different ways.&lt;br /&gt;&lt;br /&gt;Bottom Up Approach: The testing is commenced from the smallest subsystem and progresses up the hierarchy to cover the whole system. This methodology requires the developer to write a number of test driver programs that test the integration between the subsystems.&lt;br /&gt;&lt;br /&gt;Top down Approach: This begins at the top. The top level interfaces are first tested and then the smaller sub systems are examined. Stubs are written for modules that are not ready for testing.&lt;br /&gt;&lt;br /&gt;Umbrella Approach: The focus in this methodology is on testing the modules that have a high degree of user interaction. Stubs are used in place of process intensive modules. This enables the developer test the graphical user interface and improves the functionality of the interface.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Regression Testing&lt;/b&gt;&lt;br /&gt;Regression testing is performed whenever the program is modified. The process involves the rerun of all the tests mentioned in the preceding sections. It has two main goals:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Verification of known bugs that were corrected&lt;/li&gt;&lt;li&gt;Verification of new bugs.&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;b&gt;Testing International Applications&lt;/b&gt;&lt;br /&gt;Applications created for international usage are to be tested by checking for the language, the country and dependencies. The following factors are to be considered when testing such applications:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Whether the application’s data and user interface conform to the locale’s standards for date, time, numeric values, currency, list separators and measurements.&lt;/li&gt;&lt;li&gt;Whether the application runs on different languages and culture variants.&lt;/li&gt;&lt;li&gt;If Unicode has not been used in the application the culture/locale code of the operating system will have to be set to the localized version of the application.&lt;/li&gt;&lt;li&gt;The Input data in the language should be supported by the localized version.&lt;/li&gt;&lt;li&gt;In this section of the lesson we have focused upon the testing of Windows applications. In the sections that follow we shall briefly look at tracing windows applications.&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-2037024638654177397?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/2037024638654177397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=2037024638654177397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/2037024638654177397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/2037024638654177397'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2010/03/software-testing.html' title='Software Testing'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-4768926052433379697</id><published>2009-02-05T13:58:00.000-08:00</published><updated>2009-02-05T15:20:12.238-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Javascript Error trapping</title><content type='html'>&lt;code&gt;&lt;br /&gt;onerror=handleErr;&lt;br /&gt;var noErrors = true;&lt;br /&gt;&lt;br /&gt;function handleErr(msg,url,l)&lt;br /&gt;{&lt;br /&gt; if(noErrors){&lt;br /&gt;  txt="There was an error detected.\n\n";&lt;br /&gt;  txt+="Error: " + msg + "\n";&lt;br /&gt;  txt+="URL: " + url + "\n";&lt;br /&gt;  txt+="Line: " + l + "\n\n";&lt;br /&gt;  txt+="Click OK to continue.\n\n";&lt;br /&gt;  alert(txt);&lt;br /&gt;  noErrors = false;&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt; else{&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-4768926052433379697?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/4768926052433379697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=4768926052433379697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/4768926052433379697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/4768926052433379697'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2009/02/javascript-error-trapping.html' title='Javascript Error trapping'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-6279309865828791119</id><published>2008-10-13T10:31:00.000-07:00</published><updated>2008-10-13T10:32:40.096-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Attaching SQL Server .mdb without .ldf file</title><content type='html'>If you're using SQL Server 2005:&lt;br /&gt;create a database of equal size to the one you're trying to attach&lt;br /&gt;shutdown the server&lt;br /&gt;swap in the old mdf file&lt;br /&gt;bring up the server and let the database attempt to be recovered and then go into suspect mode&lt;br /&gt;put the database into emergency mode with ALTER DATABASE&lt;br /&gt;run DBCC CHECKDB (dbname, REPAIR_ALLOW_DATA_LOSS) which will rebuild the log and run full repair&lt;br /&gt;Your database will be available again but you'll have lost data and the data won't be transactionally consistent - see the following blog posts:&lt;br /&gt;https://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/15/632398.aspx&lt;br /&gt;https://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/16/633645.aspx&lt;br /&gt;https://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/18/636105.aspx&lt;br /&gt;If you're on SQL Server 2000, you can still do this but you'll need to use the undocumented DBCC REBUILD_LOG at your own risk. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=630182&amp;SiteID=1"&gt;original post on MSDN&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-6279309865828791119?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/6279309865828791119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=6279309865828791119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/6279309865828791119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/6279309865828791119'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2008/10/attaching-sql-server-mdb-without-ldf.html' title='Attaching SQL Server .mdb without .ldf file'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-5098207985787949181</id><published>2008-08-13T12:30:00.000-07:00</published><updated>2008-08-13T12:31:22.196-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Flash Frame by Frame Animation</title><content type='html'>Found out two great shortcuts for creating flash frame by frame animation:&lt;br /&gt; &lt;br /&gt;1.  When you begin, in the timeline, select a whole range of frames and right click, and select "Convert to Blank Keyframes"&lt;br /&gt;2.  Turn on Onion Skinning, of course.&lt;br /&gt;3.  As you draw each frame, just use the period key to move forward (and the comma key to go back to previous frame).&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;So much faster and easier!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-5098207985787949181?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/5098207985787949181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=5098207985787949181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/5098207985787949181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/5098207985787949181'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2008/08/flash-frame-by-frame-animation.html' title='Flash Frame by Frame Animation'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-6967391257714530482</id><published>2008-08-13T11:46:00.001-07:00</published><updated>2008-08-13T11:48:22.252-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Flash after 7 years...</title><content type='html'>I'm getting back into Flash after about 7 years.  I find it inscrutable why, after all that time, the designers still don't want to show the keyboard shortcuts on the menu for inserting a KEYFRAME and a BLANK KEYFRAME.&lt;br /&gt;&lt;br /&gt;F5 - Insert Frame&lt;br /&gt;F6 - Insert Keyframe&lt;br /&gt;F7 - Insert Blank Keyframe&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-6967391257714530482?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/6967391257714530482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=6967391257714530482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/6967391257714530482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/6967391257714530482'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2008/08/flash-after-7-years.html' title='Flash after 7 years...'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-1927733602218316964</id><published>2008-06-02T12:06:00.001-07:00</published><updated>2008-06-02T12:07:32.126-07:00</updated><title type='text'>Unicode</title><content type='html'>Succinctly puts in context:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;[edit] Variable-Width Characters&lt;br /&gt;Before UNICODE, there was an internationalization attempt that introduced character strings with variable-width characters. Some characters, such as the standard ASCII characters would be 1 byte long. Other characters, such as extended character sets, were two characters long. These types of character formats fell out of favor with the advent of UNICODE because they are harder to write and much harder to read. Windows does still maintain some functionality to deal with variable-width strings, but we won't discuss those here.&lt;br /&gt;&lt;br /&gt;Unfortunately all advantages of using wide characters were lost because the number of characters needed quickly exceeded the 65,536 possible 16-bit values. Windows actually uses what is called UTF-16 to store characters, where a large number of characters actually take //two// words, these are called "surrogate pairs". This development is after much of the Windows API documentation was written and much of it is now obsolete. You should never treat string data as an "array of characters", instead always treat it as a null-terminated block. For instance always send the entire string to a function to draw it on the screen, do not attempt to draw each character. Any code that puts a square bracket after a LPSTR is wrong.&lt;br /&gt;&lt;br /&gt;At the same time, variable-width character-based strings made a big comeback in the multi-platform standard called UTF-8, which is pretty much the same idea as UTF-16 except with 8-bit units. It's primary advantage is that there is no need for two api's, the 'a' and 'w' apis would have been the same if this was used, and since both are variable-sized, it has no disadvantage. Although most Windows programmers are unfamiliar with it, you may see increased references to using the non-UNICODE api.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;-- from &lt;a href="http://en.wikibooks.org/wiki/Windows_Programming/Unicode"&gt;Windows Programming&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-1927733602218316964?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/1927733602218316964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=1927733602218316964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/1927733602218316964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/1927733602218316964'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2008/06/unicode.html' title='Unicode'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-5205035624011864812</id><published>2008-05-19T14:03:00.000-07:00</published><updated>2008-05-19T14:06:02.727-07:00</updated><title type='text'>SearchPlugins for Firefox</title><content type='html'>Trying to figure out this baby. In this arena, IE has Firefox beat.&lt;br /&gt;&lt;br /&gt;In Firefox, look at the xml files in the following folder:&lt;br /&gt;C:\program files\Mozilla Firefox\searchplugins&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So far, to search Amazon MP3's, I've winnowed the search url down to:&lt;br /&gt;&lt;br /&gt;http://www.amazon.com/s?url=search-alias%3Ddigital-music&amp;field-keywords=TEST&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-5205035624011864812?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/5205035624011864812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=5205035624011864812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/5205035624011864812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/5205035624011864812'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2008/05/searchplugins-for-firefox.html' title='SearchPlugins for Firefox'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-8021122406032957917</id><published>2008-04-01T15:46:00.000-07:00</published><updated>2008-04-01T15:49:23.127-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><title type='text'>SQL for Running Totals: The Power of Cross Join</title><content type='html'>&lt;code&gt;&lt;br /&gt;SELECT &lt;br /&gt;t.transaction_date, t.amount, t.[description], sum (t2.amount) as RunningTotal&lt;br /&gt;FROM &lt;br /&gt;cash_transaction_table t &lt;br /&gt;CROSS JOIN cash_transaction_table t2&lt;br /&gt;WHERE&lt;br /&gt;(t2.transaction_date &lt;= t.transaction_date)&lt;br /&gt;GROUP BY&lt;br /&gt;t.transaction_date,&lt;br /&gt;t.amount,&lt;br /&gt;t.[description]&lt;br /&gt;ORDER BY&lt;br /&gt;t.transaction_date&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-8021122406032957917?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/8021122406032957917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=8021122406032957917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/8021122406032957917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/8021122406032957917'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2008/04/sql-for-running-totals-power-of-cross.html' title='SQL for Running Totals: The Power of Cross Join'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-2214721878871597503</id><published>2008-01-09T14:28:00.000-08:00</published><updated>2008-01-09T14:34:25.527-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE7 Unicode Entities Character'/><title type='text'>IE7 and Mathematical Characters</title><content type='html'>Certain mathematical characters no longer display in the default font of IE7 unless the operating system is Vista, including the "union" and "element of" characters.  To get around this, in CSS you have to specify a different font, and the most common Windows font that works is 'Lucida Sans Unicode'.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;div style="font-family: 'Lucida Sans Unicode';"&gt;&amp;#8712;&lt;/div&gt;&lt;br /&gt;will display fine in both XP and Vista, but&lt;br /&gt;&amp;#8712; &lt;br /&gt;will not display correctly on XP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-2214721878871597503?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/2214721878871597503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=2214721878871597503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/2214721878871597503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/2214721878871597503'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2008/01/ie7-and-mathematical-characters.html' title='IE7 and Mathematical Characters'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-288899575344127892</id><published>2007-11-15T15:39:00.000-08:00</published><updated>2007-11-15T15:40:59.809-08:00</updated><title type='text'>Amazon Goes Ajax - New Interface Today</title><content type='html'>Well, mark today down in UI design for websites and e-commerce.  Amazon.com unveiled their new interface and it is Ajax (particular the Dynamic HTML aspect).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-288899575344127892?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/288899575344127892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=288899575344127892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/288899575344127892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/288899575344127892'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/11/amazon-goes-ajax-new-interface-today.html' title='Amazon Goes Ajax - New Interface Today'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-9220121712613343795</id><published>2007-11-15T08:45:00.000-08:00</published><updated>2007-11-15T08:48:11.399-08:00</updated><title type='text'>Certified E-Mail</title><content type='html'>Let it be known throughout the land, I received my first ever CERTIFIED e-mail today in Yahoo Mail.  Will this be a turning point in web history?&lt;br /&gt;&lt;br /&gt;The e-mail was from Build-a-Bear Workshop, so parents of young children are probably going to be the first to notice the trend.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also see:&lt;br /&gt;&lt;a href="http://help.yahoo.com/l/us/yahoo/mail/yahoomail/context/context-08.html"&gt;http://help.yahoo.com/l/us/yahoo/mail/yahoomail/context/context-08.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-9220121712613343795?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/9220121712613343795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=9220121712613343795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/9220121712613343795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/9220121712613343795'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/11/certified-e-mail.html' title='Certified E-Mail'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-3899071329619863951</id><published>2007-11-08T11:21:00.000-08:00</published><updated>2007-11-08T11:27:14.008-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web server'/><category scheme='http://www.blogger.com/atom/ns#' term='Hosting'/><title type='text'>Apache losing market share to Microsoft IIS?</title><content type='html'>&lt;a href="http://www.deltronweb.com/hcovitz/resume/blog/uploaded_images/overallc-744111.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://www.deltronweb.com/hcovitz/resume/blog/uploaded_images/overallc-744110.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Wow, I was startled to see this graph!&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Apache has around a 10% market share advantage over IIS now, which is the smallest gap between the two since IIS was launched in 1996.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;src: &lt;a href="http://news.netcraft.com/archives/web_server_survey.html"&gt;Netcraft&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-3899071329619863951?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/3899071329619863951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=3899071329619863951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/3899071329619863951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/3899071329619863951'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/11/apache-losing-market-share-to-microsoft.html' title='Apache losing market share to Microsoft IIS?'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-3765103634973538617</id><published>2007-11-06T12:59:00.000-08:00</published><updated>2007-11-06T14:21:21.502-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApplicationBlocks'/><title type='text'>Idiot's Guide to Implementing Microsoft.Practices.EnterpriseLibrary.ExceptionHandling</title><content type='html'>A simple tutorial for VB.NET folks.&lt;br /&gt;&lt;br /&gt;Get &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4c557c63-708f-4280-8f0c-637481c31718&amp;displaylang=en"&gt;Enterprise Library 3.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Install.&lt;br /&gt;&lt;br /&gt;In your app, add reference to C:\Program Files\Microsoft Enterprise Library 3.1—May 2007\Bin &lt;br /&gt;&lt;br /&gt;Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll &lt;br /&gt;Microsoft.Practices.EnterpriseLibrary.Common.dll &lt;br /&gt;&lt;br /&gt;If you con't have an app.config file, add one now (you could have this done for you later, but let's keep it simple).&lt;br /&gt;&lt;br /&gt;Now open up "Enterprise Library Configuration", a utility installed along with the Enterprise Library that can be found off the Start menu....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do File/Open... and point to the app.config file in your app.&lt;br /&gt;&lt;br /&gt;Right-click the name of your app, select New... and then "Exception Handling Application Block".&lt;br /&gt;&lt;br /&gt;Right-click the newly created tree node (it will have a red stop sign with a white X in it) and select New..Exception Policy.  Name this "Global Policy".&lt;br /&gt;&lt;br /&gt;Save it.&lt;br /&gt;&lt;br /&gt;Now, back in Visual Studio 2005, your Try Catch blocks should be changed to the following pattern:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Try&lt;br /&gt;            'for testing: Throw New Exception("This is a sample exception.")&lt;br /&gt;            'put your real code here&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Catch ex As Exception&lt;br /&gt;            Dim rethrow As Boolean = Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex, "Global Policy")&lt;br /&gt;            If rethrow Then&lt;br /&gt;                Throw&lt;br /&gt;            End If&lt;br /&gt;End Try&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You should now be able to compile and start playing with the advanced features of the Enterprise Library 3.0 version of the old ApplicationBlocks.&lt;br /&gt;&lt;br /&gt;Also see: &lt;a href="http://www.devx.com/dotnet/Article/35736/1954?pf=true"&gt;C# Tutorial&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-3765103634973538617?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/3765103634973538617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=3765103634973538617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/3765103634973538617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/3765103634973538617'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/11/idiots-guide-to-implementing.html' title='Idiot&apos;s Guide to Implementing Microsoft.Practices.EnterpriseLibrary.ExceptionHandling'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-7349564986872305376</id><published>2007-11-01T11:04:00.000-07:00</published><updated>2007-11-01T11:07:23.972-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>I Hate Overloads</title><content type='html'>I just started working the the replacement for Microsoft's Application Blocks. ExceptionManagement, called Microsoft.Practices.EnterpriseLibrary.  Specifically, I'm using the Logging class.  Guess how many overloads there are for the Write method?  NINETEEN!!! 19 overloads, that's right.  Imagine if you did not have Intellisense.  In my opinion, overloads undermine the whole organization of Object Oriented Programming (OOP), and are to be used SPARINGLY.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-7349564986872305376?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/7349564986872305376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=7349564986872305376' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/7349564986872305376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/7349564986872305376'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/11/i-hate-overloads.html' title='I Hate Overloads'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-3693649517450260791</id><published>2007-10-22T14:17:00.000-07:00</published><updated>2007-10-22T14:19:03.713-07:00</updated><title type='text'>Speech Synthesis with .NET 3.0</title><content type='html'>Very simple:&lt;br /&gt;Reference System.Speech.dll&lt;br /&gt;&lt;code&gt;&lt;br /&gt;        Dim synth As New Speech.Synthesis.SpeechSynthesizer&lt;br /&gt;        synth.SpeakAsync("Hello world.")&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-3693649517450260791?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/3693649517450260791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=3693649517450260791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/3693649517450260791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/3693649517450260791'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/10/speech-synthesis-with-net-30.html' title='Speech Synthesis with .NET 3.0'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-8578234029955355993</id><published>2007-09-24T10:07:00.000-07:00</published><updated>2007-09-24T10:13:18.375-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Optimized Code Generation setting'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Generation Settings'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Forms Designer'/><title type='text'>Visual Studio 2005 Code Generation Settings</title><content type='html'>Microsoft does not acknowledge the existence of an Option Setting in Visual Studio 2005. &lt;br /&gt;&lt;a href="http://www.deltronweb.com/hcovitz/resume/blog/uploaded_images/MicrosoftNoDocumentation-795168.GIF"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://www.deltronweb.com/hcovitz/resume/blog/uploaded_images/MicrosoftNoDocumentation-795165.GIF" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I could not find any mention of the Windows Forms Designer, General, Code Generation Settings, Optimized Code Generation setting on MSDN, nor, surpisingly, on Google.  It remains a mystery.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-8578234029955355993?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/8578234029955355993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=8578234029955355993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/8578234029955355993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/8578234029955355993'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/09/visual-studio-2005-code-generation.html' title='Visual Studio 2005 Code Generation Settings'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-8730628629958972984</id><published>2007-09-18T17:07:00.001-07:00</published><updated>2007-09-18T17:08:56.649-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Flash quick notes</title><content type='html'>Put this in the Action window (F9) for a movie clip's instance.&lt;br /&gt;&lt;br /&gt;onClipEvent(enterFrame){&lt;br /&gt;    _x = _root._xmouse;&lt;br /&gt; _y = _root._ymouse;&lt;br /&gt; _alpha = _root._xmouse/10;&lt;br /&gt; _rotation = _root._ymouse/10;&lt;br /&gt; &lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-8730628629958972984?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/8730628629958972984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=8730628629958972984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/8730628629958972984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/8730628629958972984'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/09/flash-quick-notes.html' title='Flash quick notes'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-931110007278588028</id><published>2007-09-07T13:42:00.001-07:00</published><updated>2007-09-07T13:52:51.778-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Widescreen Monitors'/><title type='text'>Adoption of Widescreen Monitors</title><content type='html'>I had a good discussion today with colleagues about the impact of widescreen monitors on application and web design.  I am skeptical about the usability of widescreen monitors for readability (due to the well known design principle of narrow text columns increasing readability).  I've also noticed that generally stores are discounting widescreens below the cost of standard aspect ration monitors.  For all I know, this is because they are having trouble getting rid of them.  &lt;br /&gt;&lt;br /&gt;Then, seemingly explaining all this, I came across this tidbit:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Philips: Widescreen adoption in LCD monitors not as quick as expected        &lt;br /&gt;&lt;br /&gt;By: Calvin Shao, Taipei; Carrie Yu, DIGITIMES [Friday 20 January 2006]  &lt;br /&gt;Friday, January 20, 2006 15:23  &lt;br /&gt;&lt;br /&gt;Although panel makers have aggressively pushed widescreen LCD monitor panels, the adoption rate is not expected to proceed as fast as expected, with the penetration rate of the segment now set to increase from 2% in 2005 to 9.8% in 2008, according to Sara Liu, assistant manager of market intelligence, Philips CEBLC-MMFD, Royal Philips Electronics.&lt;br /&gt;&lt;br /&gt;Panel makers have rolled out various widescreen monitor panels, as it is more cost-efficient to cut glass substrates from later generation panel plants into widescreen models, rather than into standard (4:3 ratio) panels, sources said.&lt;br /&gt; &lt;br /&gt;For example, a sixth-generation (6G) LCD substrate can output four more widescreen 20.1-inch panels than standard 20.1-inch panels. In addition, the utilization rate of the substrate would increase by 15 percentage points to over 90%, the sources indicated.&lt;br /&gt;&lt;br /&gt;However, when purchasing monitors, consumers tend to judge the size of a monitor by the height of the model. As a result, widescreen models, which look smaller, may not end up being as attractive to customers, Liu said. In fact, a 16:9 20-inch LCD monitor has a 182 square-inch viewing area, compared with 194 square-inches for a 4:3 20.1-inch model, she added.&lt;br /&gt;&lt;br /&gt;Chi Mei Optoelectronics (CMO) was the main producer of 19-inch widescreen LCD monitor panels as of the end of last year. ViewSonic, Acer and CMV all use CMO panels in their 19-inch widescreen LCD monitors.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And I thought it had to do with pushing users to view movies on their computers. Instead, it looks like the marketplace is trying to push users to want to view movies on their computers so that they can sell them the less expensive widescreens.&lt;br /&gt;Or something like that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-931110007278588028?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/931110007278588028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=931110007278588028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/931110007278588028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/931110007278588028'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/09/adoption-of-widescreen-monitors.html' title='Adoption of Widescreen Monitors'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-6887747195132994197</id><published>2007-08-10T23:11:00.000-07:00</published><updated>2007-08-10T23:12:58.121-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='prototype.js'/><title type='text'>Notes from Peepcode tutorial on Prototype.js</title><content type='html'>Notes from Peepcode tutorial on Prototype.js&lt;br /&gt;ver 1.5.1&lt;br /&gt;&lt;br /&gt;$H()&lt;br /&gt;$A()&lt;br /&gt;&lt;br /&gt;for Hash Object and Array Objects&lt;br /&gt;&lt;br /&gt;var smedly = {ape:'brown',frog:'green'}&lt;br /&gt;smedly.ape&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;var smedly = $H({ape:'brown',frog:'green'})&lt;br /&gt;smedly.keys()&lt;br /&gt;&lt;br /&gt;$A isn't really needed...&lt;br /&gt;var asmedly = ['ape','frog','toad']&lt;br /&gt;asmedly.first()&lt;br /&gt;&lt;br /&gt;Element.hide('smedly')&lt;br /&gt;&lt;br /&gt;$('smedly').hide()&lt;br /&gt;&lt;br /&gt;$('smedly').show()&lt;br /&gt;&lt;br /&gt;$$('boldTextCSSclass').invoke('hide')&lt;br /&gt;&lt;br /&gt;$$('a').invoke('hide')&lt;br /&gt;&lt;br /&gt;Anonymous Functions:&lt;br /&gt;&lt;br /&gt;$$('a').each(takesAFunction)&lt;br /&gt;&lt;br /&gt;$$('a').each(function(element){element.hide()})&lt;br /&gt;&lt;br /&gt;Other selector syntaxes (generally uses CSS):&lt;br /&gt;$$('a,p') selects both a's and p's&lt;br /&gt;$$('div p') selects all p's in a div&lt;br /&gt;$$('img') selects all images&lt;br /&gt;$$('img[alt=mephisto-badge]') selects all images with 'mephisto-badge' as alt parm&lt;br /&gt;--------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Modules&lt;/strong&gt;&lt;br /&gt;This is pure JavaScript. Create modules using Hashes.&lt;br /&gt;&lt;br /&gt;var myHash = {mykey:myvalue, mykey2:myvalue2}&lt;br /&gt;&lt;br /&gt;Now just put function in for the key:value pairs:&lt;br /&gt;&lt;br /&gt;var HandyFunctions = {hideLinks: function(){}, showLinks: function(){}}&lt;br /&gt;var HandyFunctions = {&lt;br /&gt;hideLinks: function(){&lt;br /&gt;$$('a').invoke('hide');&lt;br /&gt;},&lt;br /&gt;showLinks: function(){&lt;br /&gt;$$('a').invoke('show')&lt;br /&gt;}&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;Note: when you call these functions, even though they are Hash keys, make sure to put parentheses at end:&lt;br /&gt;HandyFunction.hideLinks()&lt;br /&gt;&lt;br /&gt;Classes&lt;br /&gt;Note: see Yahoo video for painfully in-depth exploration of JavaScript classes.&lt;br /&gt;Prototype makes it simpler. Just use Class.create() !!&lt;br /&gt;They are similar to the Module concept above, but with some added functionality:&lt;br /&gt;initialize,&lt;br /&gt;parameters that can be passed to functions,&lt;br /&gt;and you can use "this" keyword.&lt;br /&gt;&lt;br /&gt;var Butter = Class.create()&lt;br /&gt;Butter.prototype = {mykey:myvalue}&lt;br /&gt;&lt;br /&gt;Butter.prototype = {&lt;br /&gt;initialize: function(brand) {&lt;br /&gt;this.brand = brand;&lt;br /&gt;this.melted = false;&lt;br /&gt;},&lt;br /&gt;melt: function(){&lt;br /&gt;this.melted = true;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var parkay = new Butter('Parkay');&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Extend&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;addMethods&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;See Quirksmode for list of cross-browser behaviors (onmousever, onclick, etc)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-6887747195132994197?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/6887747195132994197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=6887747195132994197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/6887747195132994197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/6887747195132994197'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/08/notes-from-peepcode-tutorial-on.html' title='Notes from Peepcode tutorial on Prototype.js'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-5661575728008719878</id><published>2007-08-10T12:22:00.000-07:00</published><updated>2007-08-10T12:23:37.960-07:00</updated><title type='text'>JavaScript Hash</title><content type='html'>&lt;DIV&gt;&lt;SPAN class=838021719-10082007&gt;&lt;FONT face=Arial size=2&gt;var animalColors =  {'ape':'black', 'pig':'pink', 'frog':'green'}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=838021719-10082007&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=838021719-10082007&gt;&lt;FONT face=Arial  size=2&gt;alert(animalColors['ape'])&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=838021719-10082007&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=838021719-10082007&gt;&lt;FONT face=Arial  size=2&gt;alert(animalColors.ape)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=838021719-10082007&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=838021719-10082007&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-5661575728008719878?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/5661575728008719878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=5661575728008719878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/5661575728008719878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/5661575728008719878'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/08/javascript-hash.html' title='JavaScript Hash'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-7715933063447759516</id><published>2007-08-06T11:05:00.001-07:00</published><updated>2007-08-06T11:15:38.208-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='Stored Procedures'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Too Many Stored Procedures</title><content type='html'>Is there such a  thing as Too Many Stored Procedures?&lt;br /&gt;Jeff Atwood at Coding Horror makes  some great points that reflect my own thoughts over at:&lt;br /&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000117.html"&gt;http://www.codinghorror.com/blog/archives/000117.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think SQL Server's  Object Explorer needs to have a built-in mechanism for managing the thousands of  stored procedures that occupy a database, instead of trusting that a sensible  naming convention will be used.&amp;nbsp; In my experience, eventually any naming  convention breaks down after time, as new developers and technologies  arrive.&lt;br /&gt;&lt;br /&gt;Linked to in Atwood's post is this by Frans Bouma, who seems to be the main promoter of cautionary use of Stored Procedures: &lt;a href="http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx"&gt;http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-7715933063447759516?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/7715933063447759516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=7715933063447759516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/7715933063447759516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/7715933063447759516'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/08/too-many-stored-procedures.html' title='Too Many Stored Procedures'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6802992731660752198.post-598989781915794619</id><published>2007-08-02T11:00:00.000-07:00</published><updated>2007-08-02T11:01:03.410-07:00</updated><title type='text'>Quick ASP Log</title><content type='html'>&lt;DIV&gt;&lt;SPAN class=664155917-02082007&gt;&lt;FONT face=Arial size=2&gt;Handy for debugging  errors:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=664155917-02082007&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=664155917-02082007&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=664155917-02082007&gt;&lt;FONT face=Arial size=2&gt;function  writeLog(msg)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=664155917-02082007&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;Dim  fso&lt;BR&gt;&amp;nbsp;Dim logfile&lt;BR&gt;&amp;nbsp;Dim logFileName&lt;BR&gt;&amp;nbsp;Dim strLog&amp;nbsp;  &lt;BR&gt;&amp;nbsp;logFileName&amp;nbsp; = Server.MapPath("logfile.txt")&lt;BR&gt;&amp;nbsp;Set fso =  Server.CreateObject("Scripting.FileSystemObject") &lt;BR&gt;&amp;nbsp;Set logfile =  FSO.OpenTextFile(logFileName, 8, True)&lt;BR&gt;&amp;nbsp;logfile.writeline now() &amp;amp;  ":" &amp;amp; msg&lt;BR&gt;&amp;nbsp;set fso = nothing&lt;BR&gt;&amp;nbsp;set logfile =  nothing&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=664155917-02082007&gt;&lt;FONT face=Arial size=2&gt;end  function&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6802992731660752198-598989781915794619?l=www.deltronweb.com%2Fhcovitz%2Fresume%2Fblog%2Fblogger.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/598989781915794619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6802992731660752198&amp;postID=598989781915794619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/598989781915794619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6802992731660752198/posts/default/598989781915794619'/><link rel='alternate' type='text/html' href='http://www.deltronweb.com/hcovitz/resume/blog/2007/08/quick-asp-log.html' title='Quick ASP Log'/><author><name>Howard</name><uri>http://www.blogger.com/profile/12698012741990744311</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11563146056363810292'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>
