Friday, October 19, 2007

timeout

code download

Sessions are a way of preserving information on a web site between page hits, allowing the programmer to emulate a stateful application when, in fact, web pages are not really stateful.  They are also one of the banes of web development, since sessions eventually timeout when there is no interaction between the user and the web app for a prolonged period of time.  In ASP.NET, this period has a default of 20 minutes, which is really hardly enough time to pick up a donut, refill one's coffee, and chat with fellow workers before returning to one's computer.  What this often means is that the user, upon returning to their computer and continuing work after a 20 minute break will find that all of the data entry they have been doing has been lost.  Worse, strange errors will begin to appear in his web browser if the loss of a session is not handled gracefully. 

The most common workaround is to increase the session grace period, called the session timeout.  This is set in your web.config file, and typically looks like this (the timeout period is measured in minutes):

  <system.web>
    <sessionState
      mode="InProc"
      cookieless="false"
      timeout="20"
     />
posted by J Ashley on Friday, October 19, 2007 4:56:45 AM (Eastern Standard Time, UTC-05:00)  #    Comments [2]
 Tuesday, October 16, 2007

riddler

At a recent Microsoft conference, the presenter did some quick programming that raised a gasp of excitement from the audience (I kid you not).  He inserted two question marks in a line of code as if they were an operator and Intellisense did not protest.

"Is that a new language feature in .NET 3.5?", a member of the audience asked.

The presenter looked somewhat puzzled.  "No, it's in 2.0." 

At which point half the audience suddenly realized that this was a secret 2.0 feature they could now use to impress friends and colleagues, while the other half smiled knowingly because they had been using it for over a year.  Such is the way programmers distinguish the wheat from the chaff.

So, if you aren't using the Null Coalesce Operator, yet, you should.  It is basically a syntactic device for setting a default value for nullable types.  The ?? Operator is the equivalent of the ISNULL function in T-SQL, or the NVL function in PL-SQL, and is very handy when you are trying to translate database values into your business classes.

If, for instance, you have a nullable number type in your Oracle database, or a nullable int in your SQL Server database, it is very convenient to map this to a nullable int in your C# business object.

int? myNum = null;

or

Nullable<Int32> myNum = null;

Being now able to represent this database value, you probably also want to be able to test for the null case and return an alternative value if it turns out to be true.  Here are four ways to do the same thing, in increasingly cool ways, because they are increasingly obscure.

With an IF ELSE block:

if (null == myNum)
    return -1;
else
    return myNum.GetValueOrDefault();

With a SWITCH block:

switch (myNum)
{
   case null:
        return -1;
   default:
        return myNum.GetValueOrDefault();
}

With a Ternary Operator:

return myNum == null ? -1 : myNum.GetValueOrDefault();

And with a Null Coalesce Operator:

return myNum ?? -1;

 

For those who think that in coding compactness == elegance, then this is the syntax for you.  For everyone else, it is a nice recipe you can use to impress co-workers at the next code review.  The most likely, and desirable, response will be:

??

posted by J Ashley on Tuesday, October 16, 2007 9:40:55 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Thursday, October 11, 2007

I have updated the Drag and Drop tutorial code samples for the July CTP.  The samples can be downloaded here: link.

The tutorial pages can be found here:

  1. Introduction
  2. Declarative Drag and Drop
  3. Imperative Drag and Drop
  4. Dynamically Generated Drag Items
  5. Working with Dropzones

The July CTP can be downloaded here: link.

posted by J Ashley on Thursday, October 11, 2007 3:58:23 PM (Eastern Standard Time, UTC-05:00)  #    Comments [3]
 Monday, October 08, 2007

I originally wrote the prize-winning Interop Forms article below for code project.  The prize, an XBox 360 Elite system, was pretty sweet.  Even sweeter, however, was the nod I received from the Microsoft VB Team here: http://blogs.msdn.com/vbteam/archive/2007/06/01/so-what-does-lt-comclass-gt-actually-do.aspx and here: http://blogs.msdn.com/vbteam/archive/2007/06/04/interopforms-2-0-tip-1-font-property.aspx.

posted by J Ashley on Monday, October 08, 2007 9:52:05 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Saturday, October 06, 2007

janerussell

This fall programmers are going to be a little more sassy.  Whereas in the past, trendy branding has involved concepts such as paradigms, patterns and rails, principles such as object-oriented programming, data-driven programming, test-driven programming and model-driven architecture, or tags like web 2.0, web 3.0, e-, i-, xtreme and agile, the new fall line features "alternative" and the prefix of choice: alt-.  The point of this is that programmers who work with Microsoft technologies no longer have to do things the Microsoft way.  Instead, they can do things the "Alternative" way, rather than the "Mainstream" way.  In the concrete, this seems to involve using a lot of open source frameworks like NHibernate that have been ported over from Java ... but why quibble when we are on the cusp of a new age.

posted by J Ashley on Saturday, October 06, 2007 4:25:35 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]