Monday, October 22, 2007

gn

 

Giornale Nuovo, a blog written anonymously by someone calling himself Misteraitch, is coming to an end after five years.  Without any exaggeration, it has been one of the best things available on the net over that time, and Misteraitch's  efforts will be sorely missed.

Giornale Nuovo falls into that strange category of erudite blogs in which the author takes a personal passion and draws one into it.  M.'s passion happens to be rare books, and in particular rare illustrated books.  Based in Italy, and later somewhere in Scandinavia, he would haunt the odd bookstores of Europe tracking down rumors of quaint and curious volumes of forgotten lore -- so to speak -- and once acquired, he would digest them through his scanner and publish them on his blog, pointing out the peculiarities of his acquisitions.  He is also an art lover, and was quite good at finding painters, sculptors, and installation artists that you had never heard of before but whom, after reading the blog, you would never forget.

And now, M. is hanging up his spurs.  Fortunately, he will be leaving the archives of his blog up for a while, giving readers a chance to catch up on his industriousness somewhat belatedly -- I almost said posthumously.  M.'s main complaint, I take it, is exhaustion.  It takes much out of a person to continuously publish writing of this caliber, and no doubt M. was concerned that his output would eventually flag.  Going through the archives, however, I see little sign of this.  All the entries are consistently good.  Take, for instance, his contribution to our common knowledge with Curiosities of Literature, or his frequent entries on Emblem Books, or this one about Anthropomorphic Alphabets.  These I selected randomly, just to give you a taste of what I have been enjoying for many months.

M. is also rightly famous for his giveaways.  Every so often, he would decide that his bookshelves were too full, or his CD collection too disorganized, and he would simply list the overflow of books or music on his site, with charming descriptions, and then mail them, gratis, to the first person who showed any interest (one year I received Rachmaninov's Vespers from him). 

Such generosity was not uncommon with M., and his entire site is, in fact, a five year act of generosity in which he artfully lay out his personal tastes for the world to view.  If you have never visited Giornale Nuovo before, then I heartily recommend that you take this opportunity to browse through its archives while it is still available.  It is a monument of the Internet not to be missed, and a rare example of how technology, rather than twisting the human soul, can actually make it soar.

posted by J Ashley on Monday, October 22, 2007 9:04:01 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]
 Sunday, October 21, 2007

I had a weird problem with my DVD player, such that while I was able to burn the Visual Studio 2008 image successfully, I was not able to use it to install.  Instead, the DVD would just lock up my XP operating system.  So I resorted to my backup plan, which involved simply mounting the image as if it were a media device and running the install from there.

I was able to do this using free software provided by Microsoft called the XP Virtual CD Control Panel. The Visual Studio 2008 (Orcas) beta image file can be downloaded here, while the Virtual CD software can be gotten here.

posted by J Ashley on Sunday, October 21, 2007 2:33:08 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 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]