Adobe crash report

Wow, I thought it was just my PC. I have had these same issues with CS4.

Some lessons to be learned here, maybe you shouldn’t forget how you became what you are.

This level of awesome doesn’t happen by accident or iteration or lucky lottery ticket. Each app’s a joy to use precisely because it’s built from scratch to solve certain problems real people have in a certain context — not to do everything for everyone and certainly not to fit into a “Suite” that was invented by some white-toothed Stanford grad who knows each app’s “Features & Benefits” bullets better than the needs of its battlefield users.

View the rest here.


Ten Common SQL Programming Mistakes

Full article here.

It is not always easy to spot “antipatterns” in your SQL, especially in more complex queries. In this article, Plamen demonstrates some of the most common SQL coding errors that he encounters, explains their root cause, and illustrates potential solutions

  1. NULLs and the NOT IN predicate
  2. Functions on indexed columns in predicates
  3. Incorrect subquery column
  4. Data type mismatch in predicates
  5. Predicate evaluation order
  6. Outer joins and placement of predicates
  7. Subqueries that return more than one value
  8. Use of SELECT *
  9. Scalar user-defined functions
  10. Overuse of cursors
Posted in SQL. Tags: . Leave a Comment »

ASP.NET 4.0 and Visual Studio 2010 Web Development Beta 2 Overview

Whitepaper on all the new things to come:

Many exciting changes for ASP.NET are coming in the .NET Framework version 4. This document gives an overview of many of the new features that are included in the upcoming Beta 2 release of the .NET Framework 4 and of Visual Studio 2010.

My favorites so far:

UpdatePanel Async Postsback slow in IE…Part 3

So, I have received an updated script from Microsoft for KB 2000262.  The issues I found in the last script are now fixed.  In my testing so far it appears to be faster and stable.  The JS function is below, I am sure the KB will be updated soon.

    function disposeTree(sender, args) {
        var elements = args.get_panelsUpdating();
        for (var i = elements.length - 1; i >= 0; i--) {
            var element = elements[i];
            var allnodes = element.getElementsByTagName('*'),
                length = allnodes.length;
            var nodes = new Array(length)
            for (var k = 0; k < length; k++) {
                nodes[k] = allnodes[k];
            for (var j = 0, l = nodes.length; j < l; j++) {
                var node = nodes[j];
                if (node.nodeType === 1) {
                    if (node.dispose && typeof (node.dispose) === "function") {
                    else if (node.control && typeof (node.control.dispose) === "function") {

                    var behaviors = node._behaviors;
                    if (behaviors) {
                        behaviors = Array.apply(null, behaviors);
                        for (var k = behaviors.length - 1; k >= 0; k--) {
            element.innerHTML = "";

Part 2
Part 1