<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Shivam's shared items in Google Reader</title><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ShivamsSharedItems" /><language>en</language><managingEditor>noemail@noemail.org (Shivam)</managingEditor><lastBuildDate>Sun, 27 May 2012 00:00:00 PDT</lastBuildDate><generator>Google Reader http://www.google.com/reader</generator><gr:continuation xmlns:gr="http://www.google.com/schemas/reader/atom/">CPyF9r7lrqsC</gr:continuation><feedburner:info uri="shivamsshareditems" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><description></description><geo:lat>-20.2119444</geo:lat><geo:long>57.5138889</geo:long><item><title>Links for 2012-05-26 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/81Mjj22yKBY/shiv11</link><pubDate>Sun, 27 May 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/shiv11#2012-05-26</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://uk.cars.yahoo.com/news/fancy-a-drive--darling--on-road--off-road-or-in-the-sea-.html"&gt;Fancy a drive, darling? On road, off road or in the sea? - Yahoo! Cars&lt;/a&gt;&lt;br/&gt;
The Scamander:On road, off road or in the sea? http://t.co/FppZmq5n&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/81Mjj22yKBY" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/shiv11#2012-05-26</feedburner:origLink></item><item><title>Links for 2012-05-24 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/rMnMj3in9-A/shiv11</link><pubDate>Fri, 25 May 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/shiv11#2012-05-24</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?gl=GB&amp;v=7mbsI2UXA8U"&gt;Noisebridge Anti/Surveillance Fashion Show - YouTube&lt;/a&gt;&lt;br/&gt;
Anti-Surveillance Fashion Show http://t.co/kVgdwDu2&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dismagazine.com/dystopia/evolved-lifestyles/8115/anti-surveillance-how-to-hide-from-machines/"&gt;How to Hide from Machines &amp;laquo; DIS Magazine&lt;/a&gt;&lt;br/&gt;
How to Hide from Machines http://t.co/EEH0RkxE&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/rMnMj3in9-A" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/shiv11#2012-05-24</feedburner:origLink></item><item><title>Links for 2012-05-23 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/SPUV7hSYzUA/shiv11</link><pubDate>Thu, 24 May 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/shiv11#2012-05-23</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=KBluUZ4NnZg"&gt;Golden Loves Guitar !! - YouTube&lt;/a&gt;&lt;br/&gt;
Golden Loves Guitar !! - YouTube
Golden Loves Guitar !! - YouTube http://t.co/2OsdD5B3
 http://t.co/Pce3SMA6 #reader&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.readwriteweb.com/archives/read-write-daily-watch-out-for-zombie-drones.php?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+readwriteweb+(ReadWriteWeb)"&gt;Read/Write Daily: Watch Out for Zombie Drones&lt;/a&gt;&lt;br/&gt;
RT @RWW: Read/Write Daily: Watch Out for Zombie Drones http://t.co/3Tvq1sOi
Microsoft Webcams: LifeCam P... http://t.co/ItPrvKAO #reader&lt;/li&gt;
&lt;li&gt;&lt;a href="http://delicious.com/shiv11?utm_source=twitterfeed&amp;utm_medium=twitter&amp;utm_campaign=Feed%3A+ShivamsSharedItems+(Reading...)"&gt;Delicious.com - Discover Yourself!&lt;/a&gt;&lt;br/&gt;
Journalist Hacks Kickstarter - IEEE Spectrum
Journalist Hacks Kickstarter - IEEE Spectrum http://t.... http://t.co/Hmg50sDo #reader&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/SPUV7hSYzUA" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/shiv11#2012-05-23</feedburner:origLink></item><item><title>Links for 2012-05-20 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/cGRb5C89aN0/shiv11</link><pubDate>Mon, 21 May 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/shiv11#2012-05-20</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.nypost.com/p/news/international/lockerbie_bomber_megrahi_dies_in_MhgoQESWFu7tjSwwtLFIIL?utm_source=SFnewyorkpost&amp;utm_medium=SFnewyorkpost"&gt;Abdel Basset al-Megrahi, convicted for his role in the 1988 bombing of Pan Am Flight 103 has died, brother says - NYPOST.com&lt;/a&gt;&lt;br/&gt;
RT @NewYorkPost: BREAKING UPDATED: Lockerbie bomber dies in Libya, brother says http://t.co/DE4xWOcE&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/cGRb5C89aN0" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/shiv11#2012-05-20</feedburner:origLink></item><item><title>Links for 2012-05-19 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/MLCphaKAD4w/shiv11</link><pubDate>Sun, 20 May 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/shiv11#2012-05-19</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.space.com/"&gt;Space and NASA News &amp;ndash; Universe and Deep Space Information | Space.com&lt;/a&gt;&lt;br/&gt;
NASA Solar Eclipse Viewing Party at Grand Canyon Sunday | http://t.co/Uqm1HTYv http://t.co/r46iEeuq&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.space.com/15763-solar-eclipse-grand-canyon-may20.html"&gt;NASA Solar Eclipse Viewing Party at Grand Canyon Sunday | Space.com&lt;/a&gt;&lt;br/&gt;
NASA Solar Eclipse Viewing Party at Grand Canyon Sunday | http://t.co/Uqm1HTYv http://t.co/r46iEeuq&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/MLCphaKAD4w" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/shiv11#2012-05-19</feedburner:origLink></item><item><title>Links for 2012-05-18 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/K-A_5Ai9aNs/shiv11</link><pubDate>Sat, 19 May 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/shiv11#2012-05-18</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=KBluUZ4NnZg"&gt;Golden Loves Guitar !! - YouTube&lt;/a&gt;&lt;br/&gt;
Golden Loves Guitar !! - YouTube http://t.co/2OsdD5B3&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/K-A_5Ai9aNs" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/shiv11#2012-05-18</feedburner:origLink></item><item><title>Links for 2012-05-17 [del.icio.us]</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/JzldUyXlra0/shiv11</link><pubDate>Fri, 18 May 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/shiv11#2012-05-17</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://spectrum.ieee.org/automaton/robotics/artificial-intelligence/laserequipped-mav-demonstrates-aggressive-autonomous-flight"&gt;Laser-Equipped MAV Demonstrates Aggressive Autonomous Flight - IEEE Spectrum&lt;/a&gt;&lt;br/&gt;
Laser-Equipped MAV Demonstrates Aggressive Autonomous Flight - IEEE Spectrum http://t.co/kmXtVG6L&lt;/li&gt;
&lt;li&gt;&lt;a href="http://spectrum.ieee.org/tech-talk/biomedical/imaging/wearable-brain-scanner-tells-your-computer-when-youre-overwhelmed"&gt;Wearable Brain Scanner Tells Your Computer When You're Overwhelmed - IEEE Spectrum&lt;/a&gt;&lt;br/&gt;
Wearable Brain Scanner Tells Your Computer When You're Overwhelmed - IEEE Spectrum http://t.co/f334qw0G&lt;/li&gt;
&lt;li&gt;&lt;a href="http://spectrum.ieee.org/tech-talk/consumer-electronics/portable-devices/googles-augmented-reality-concept-video"&gt;Google&amp;rsquo;s Augmented Reality Concept Video - IEEE Spectrum&lt;/a&gt;&lt;br/&gt;
Google’s Augmented Reality Concept Video - IEEE Spectrum http://t.co/wYpbx2Be&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/JzldUyXlra0" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/shiv11#2012-05-17</feedburner:origLink></item><item><title>Dealing with “Really Big” Images: Image Adapters</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/UUpbAP7zjDM/</link><category>Uncategorized</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Steve Eddins</dc:creator><pubDate>Fri, 23 Sep 2011 05:20:10 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/cfa64ef3cbcdaff1</guid><description>&lt;div&gt;
   
      &lt;p&gt;&lt;i&gt;I'd like to welcome back guest blogger Brendan Hannigan, for the third in a series of three posts on working with very large
            images in MATLAB.&lt;/i&gt;&lt;/p&gt;
      &lt;p&gt;In the previous two blog posts, I've been discussing how to avoid Out of Memory errors while working with large images using
         MATLAB and the Image Processing Toolbox.  I first showed how to view and explore arbitrarily large images by creating a reduced
         resolution data set (R-Set) from an image file.  Next, I demonstrated how you can process large images files using a file-to-file
         workflow, never loading the entire image into memory at once.
      &lt;/p&gt;
   
   &lt;h3&gt;Contents&lt;/h3&gt;
   &lt;div&gt;
      &lt;ul&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#1"&gt;"Right, but my data is not in TIFF, NITF, or JPEG2000, remember?"&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#5"&gt;"Whoa there buddy!.. Object - "Oriented" ?!  That's too complicated for me!"&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#8"&gt;"Ok so, how did Doug solve his problem?"&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#12"&gt;"Ok, that's some pretty dense code you have there."&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#15"&gt;"How do you know what properties and methods you need?"&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#16"&gt;"Hey wait, you don't define ImageSize in your properties block!!"&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#17"&gt;"Well that's not super intuitive, but ok.  What goes inside the methods?"&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#22"&gt;"How am I supposed to know which block it needs?"&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#26"&gt;"Ok I think I got it, but what about writing to new files?"&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#30"&gt;"Cool, everything turned out better than expected!"&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
   &lt;/div&gt;
   &lt;h3&gt;"Right, but my data is not in TIFF, NITF, or JPEG2000, remember?"&lt;a name="1"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;Yes, there's the problem.  &lt;tt&gt;rsetwrite&lt;/tt&gt; &amp;amp; &lt;tt&gt;blockproc&lt;/tt&gt; support a few file formats "natively", but not everyone works with data in those formats.
   &lt;/p&gt;
   &lt;p&gt;There are some issues we face when creating functions like &lt;tt&gt;rsetwrite&lt;/tt&gt; &amp;amp; &lt;tt&gt;blockproc&lt;/tt&gt; which allow incremental processing of files from disc.  Here are two:
   &lt;/p&gt;
   &lt;div&gt;
      &lt;ol&gt;
         &lt;li&gt;Not all file formats are amenable to incremental "region-based" I/O.&lt;/li&gt;
         &lt;li&gt;There are a lot of file formats.  Seriously.&lt;/li&gt;
      &lt;/ol&gt;
   &lt;/div&gt;
   &lt;p&gt;That said, we wanted to provide this large data workflow to as many of out customers as possible.  So, as of release R2010a,
      in addition to our "built-in" file formats, both &lt;tt&gt;rsetwrite&lt;/tt&gt; and &lt;tt&gt;blockproc&lt;/tt&gt; also support "image adapter" objects!
   &lt;/p&gt;
   &lt;p&gt;The &lt;tt&gt;ImageAdapter&lt;/tt&gt; is an object-oriented MATLAB class.  It is actually an "abstract" class, meaning that by itself it is not very useful.  What
      it &lt;b&gt;does&lt;/b&gt; do it define an interface for reading and writing image data.  All you have to do is to tell us how to read and/or write
      sub-regions of your particular file format, and then we can do the rest!
   &lt;/p&gt;
   &lt;h3&gt;"Whoa there buddy!.. Object - "Oriented" ?!  That's too complicated for me!"&lt;a name="5"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;No, it's not.  Don't sweat it, it's really not.  I won't go into a full tutorial on how to write MATLAB classes in this blog
      as there are excellent videos and tutorials available on our website and in our product documentation that cover that.  Instead,
      I will walk through a quick example that recently came up in this very blog.
   &lt;/p&gt;
   &lt;p&gt;In 2009 Steve published a blog post titled "MATLAB R2009a - imread and multipage TIFFs".  Over the last 2 years many folks
      have commented on this post in an ongoing discussion about multi-page TIFF files.  One customer, we'll call him "Doug", &lt;a href="http://blogs.mathworks.com/steve/2009/04/02/matlab-r2009a-imread-and-multipage-tiffs/#comment-24057"&gt;had a problem using &lt;tt&gt;blockproc&lt;/tt&gt; to process arbitrary pages of a multi-page TIFF file&lt;/a&gt;.
   &lt;/p&gt;
   &lt;p&gt;"Doug" was frustrated because he found that there was no way to tell &lt;tt&gt;blockproc&lt;/tt&gt; that he wanted to process the Nth "page" in his TIFF file. &lt;tt&gt;blockproc&lt;/tt&gt; is hard-wired to process the first page of a TIFF file when passed a multi-page TIFF image.  We didn't provide a syntactic
      option to select which page to process, because we wanted to avoid format-specific syntaxes/parameters in &lt;tt&gt;blockproc&lt;/tt&gt;.  Otherwise you can imagine the function interface could get pretty complex pretty fast.
   &lt;/p&gt;
   &lt;h3&gt;"Ok so, how did Doug solve his problem?"&lt;a name="8"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;This was a perfect use case for the &lt;tt&gt;ImageAdapter&lt;/tt&gt; class.  Image adapter objects are useful when you want to have more control over the I/O in &lt;tt&gt;blockproc&lt;/tt&gt; and &lt;tt&gt;rsetwrite&lt;/tt&gt;.  You may want to just control some specific aspect of how your file is read/written (like Doug) or you might want to read/write
      a completely new file format.
   &lt;/p&gt;
   &lt;p&gt;I wrote Doug a quick image adapter class to solve his problem which I will share with you, but first let's look at how it
      is used in a quick example.  The image adapter class is called &lt;tt&gt;PagedTiffAdapter&lt;/tt&gt;.  We'll be using it to work with a multi-paged TIFF image, mri.tif (&lt;a href="http://blogs.mathworks.com/images/steve/2011/mri.tif"&gt;download link&lt;/a&gt;).
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;&lt;span style="color:#228b22"&gt;% Get some image information, we'll need this later.&lt;/span&gt;
filename = &lt;span style="color:#a020f0"&gt;'mri.tif'&lt;/span&gt;;
page = 5;
info = imfinfo(filename);
cmap = info(page).Colormap;

&lt;span style="color:#228b22"&gt;% Create our PagedTiffAdapter object!&lt;/span&gt;
my_adapter = PagedTiffAdapter(filename,page);

&lt;span style="color:#228b22"&gt;% Let's not "do" anything to the data, let's just read it and return it&lt;/span&gt;
no_op_fun = @(bs) bs.data;

&lt;span style="color:#228b22"&gt;% Call blockproc using our image adapter object as the input source&lt;/span&gt;
single_page = blockproc(my_adapter,[100 100],no_op_fun);

&lt;span style="color:#228b22"&gt;% Display our single page from this TIFF file&lt;/span&gt;
imshow(single_page,cmap)&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/blockproc_3_01.jpg"&gt; &lt;p&gt;Voila.  That's pretty simple right?  We've now used &lt;tt&gt;blockproc&lt;/tt&gt; to read in the 5th page of our multi-page TIFF file, &lt;tt&gt;mri.tif&lt;/tt&gt;.  Granted, this is not a particularly compelling use of block processing, but I'm just trying to show how you can use image
      adapter objects in place of "conventional" input images.
   &lt;/p&gt;
   &lt;p&gt;Let's have a look at the class now.&lt;/p&gt;&lt;pre&gt;classdef PagedTiffAdapter &amp;lt; ImageAdapter
    properties
        Filename
        Info
        Page
    end
    methods
        function obj = PagedTiffAdapter(filename, page)
            obj.Filename = filename;
            obj.Info = imfinfo(filename);
            obj.Page = page;
            obj.ImageSize = [obj.Info(page).Height obj.Info(page).Width];
        end
        function result = readRegion(obj, start, count)
            result = imread(obj.Filename,&amp;#39;Index&amp;#39;,obj.Page,...
                &amp;#39;Info&amp;#39;,obj.Info,&amp;#39;PixelRegion&amp;#39;, ...
                {[start(1), start(1) + count(1) - 1], ...
                [start(2), start(2) + count(2) - 1]});
        end
        function result = close(obj) %#ok
        end
    end
end&lt;/pre&gt;&lt;h3&gt;"Ok, that's some pretty dense code you have there."&lt;a name="12"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;The class is quite straightforward.  It begins with a &lt;tt&gt;classdef&lt;/tt&gt; line, which defines the name of the class and also indicates that the class inherits from our base-class, &lt;tt&gt;ImageAdapter&lt;/tt&gt;, using the &lt;tt&gt;&amp;lt;&lt;/tt&gt; symbol.
   &lt;/p&gt;
   &lt;p&gt;Next we see 2 sub-sections of our class definition, a &lt;tt&gt;properties&lt;/tt&gt; block which holds important data that we will need over the lifespan of each object...
   &lt;/p&gt;&lt;pre&gt;    properties
        Filename
        Info
        Page
    end&lt;/pre&gt;&lt;p&gt;...and a &lt;tt&gt;methods&lt;/tt&gt; block which defines the behavior of the objects.
   &lt;/p&gt;&lt;pre&gt;    methods
        function obj = PagedTiffAdapter(filename, page)
            obj.Filename = filename;
            obj.Info = imfinfo(filename);
            obj.Page = page;
            obj.ImageSize = [obj.Info(page).Height obj.Info(page).Width];
        end
        function result = readRegion(obj, start, count)
            result = imread(obj.Filename,'Index',obj.Page,...
                'Info',obj.Info,'PixelRegion', ...
                {[start(1), start(1) + count(1) - 1], ...
                [start(2), start(2) + count(2) - 1]});
        end
        function result = close(obj) %#ok
        end
    end&lt;/pre&gt;&lt;h3&gt;"How do you know what properties and methods you need?"&lt;a name="15"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;Ahh, good question.  Classes which inherit from the &lt;tt&gt;ImageAdapter&lt;/tt&gt; base class are REQUIRED to have:
   &lt;/p&gt;
   &lt;div&gt;
      &lt;ol&gt;
         &lt;li&gt;A class constructor for initialization (all MATLAB classes require this)&lt;/li&gt;
         &lt;li&gt;a &lt;tt&gt;readRegion&lt;/tt&gt; method (required by the &lt;tt&gt;ImageAdapter&lt;/tt&gt; base class)
         &lt;/li&gt;
         &lt;li&gt;a &lt;tt&gt;close&lt;/tt&gt; method (required by the &lt;tt&gt;ImageAdapter&lt;/tt&gt; base class)
         &lt;/li&gt;
         &lt;li&gt;a &lt;tt&gt;ImageSize&lt;/tt&gt; property (required by the &lt;tt&gt;ImageAdapter&lt;/tt&gt; base class)
         &lt;/li&gt;
      &lt;/ol&gt;
   &lt;/div&gt;
   &lt;h3&gt;"Hey wait, you don't define ImageSize in your properties block!!"&lt;a name="16"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;That is true.  The &lt;tt&gt;ImageSize&lt;/tt&gt; property is defined in the base class, so you don't have to redefine it here, you just have to &lt;i&gt;set it&lt;/i&gt;. That's why at the end of my class constructor, I make sure to set the &lt;tt&gt;ImageSize&lt;/tt&gt; property to be the size of the page that I am interested in.
   &lt;/p&gt;
   &lt;h3&gt;"Well that's not super intuitive, but ok.  What goes inside the methods?"&lt;a name="17"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;This class is going to be used to read data from a TIFF file, so in the class constructor all we do is gather information
      about the file that we'll need later and store that information in the appropriate properties.
   &lt;/p&gt;
   &lt;p&gt;Let's look the other methods individually.  First the &lt;tt&gt;close&lt;/tt&gt; method.
   &lt;/p&gt;&lt;pre&gt;        function result = close(obj) %#ok
        end&lt;/pre&gt;&lt;p&gt;The &lt;tt&gt;close&lt;/tt&gt; method, in this case does nothing.  The reason it does nothing is that we are doing our actual file I/O using the &lt;tt&gt;imread&lt;/tt&gt; function, which does not require us to open the file handle directly.  If we were writing an image adapter to read say, some
      arbitrarily formatted binary image, then we would likely be opening our file handle in the constructor, storing it in a property,
      and then in the &lt;tt&gt;close&lt;/tt&gt; method we would close the file handle and do any other necessary clean up tasks. This example class is just very simple,
      so we have no "cleaning up" to do when we are done, but if we did, we would put that code in our &lt;tt&gt;close&lt;/tt&gt; method.  Regardless of what clean up code you need, you &lt;i&gt;must&lt;/i&gt; have a close method.  The &lt;tt&gt;close&lt;/tt&gt; method is called by &lt;tt&gt;blockproc&lt;/tt&gt; and &lt;tt&gt;rsetwrite&lt;/tt&gt; only once, after all file I/O has completed.
   &lt;/p&gt;
   &lt;p&gt;Now let's look closely at the &lt;tt&gt;readRegion&lt;/tt&gt; method.
   &lt;/p&gt;&lt;pre&gt;        function result = readRegion(obj, start, count)
            result = imread(obj.Filename,'Index',obj.Page,...
                'Info',obj.Info,'PixelRegion', ...
                {[start(1), start(1) + count(1) - 1], ...
                [start(2), start(2) + count(2) - 1]});
        end&lt;/pre&gt;&lt;p&gt;This is the real work horse of the class.  You will probably never need to call this method (or any method other than the
      constructor) yourself. Instead the image adapter &lt;i&gt;clients&lt;/i&gt; will call these functions. &lt;tt&gt;blockproc&lt;/tt&gt; is going to call this &lt;tt&gt;readRegion&lt;/tt&gt; method when it wants to read a block of the input image.  It's your job to figure out which block it needs, read that data,
      and send it back to it.
   &lt;/p&gt;
   &lt;h3&gt;"How am I supposed to know which block it needs?"&lt;a name="22"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;It'll tell you!  It's all contained in the 2 input arguments to the &lt;tt&gt;readRegion&lt;/tt&gt; method, &lt;tt&gt;start&lt;/tt&gt; and &lt;tt&gt;count&lt;/tt&gt;.  The &lt;tt&gt;start&lt;/tt&gt; argument is a 2-element vector specifying the [row col] of the first pixel we need. The &lt;tt&gt;count&lt;/tt&gt; argument is a 2-element vector specifying the size of the requested region in [rows cols].
   &lt;/p&gt;
   &lt;p&gt;For example, let's say &lt;tt&gt;start&lt;/tt&gt; was [5 9] and &lt;tt&gt;count&lt;/tt&gt; was [2 3].  Your method should return the data in rows 5-6 and columns 9-11, just as if you had indexed a variable like this:
   &lt;/p&gt;
   &lt;p&gt;&lt;tt&gt;return_to_blockproc = myVariable(5:6,9:11);&lt;/tt&gt;&lt;/p&gt;
   &lt;p&gt;So your implementation of &lt;tt&gt;readRegion&lt;/tt&gt; needs to take these 2 input arguments and then return the appropriate image data that they specify.
   &lt;/p&gt;
   &lt;p&gt;What will that mean for you?  Well it depends on what your image adapter is designed for.  In this case we are simply reading
      a specific page of a TIFF file, so I'm using &lt;tt&gt;start&lt;/tt&gt; and &lt;tt&gt;count&lt;/tt&gt; to construct a &lt;tt&gt;'PixelRegion'&lt;/tt&gt; argument to the &lt;tt&gt;imread&lt;/tt&gt; function that will fetch only the pixels I am interested in.  In your case, your &lt;tt&gt;readRegion&lt;/tt&gt; might be pulling data from some binary formatted file, using a 3rd party mex-file to read a piece of data, or just whatever!
       That's the beauty of the image adapters, you can get your data from whereever you want.
   &lt;/p&gt;
   &lt;h3&gt;"Ok I think I got it, but what about writing to new files?"&lt;a name="26"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;You can use your class to write to files as well, by defining a &lt;tt&gt;writeRegion&lt;/tt&gt; method.  The &lt;tt&gt;writeRegion&lt;/tt&gt; method is (not surprisingly) almost the exact opposite of the &lt;tt&gt;readRegion&lt;/tt&gt; method.  Instead of you returning data from a specified block, you will receive data as an input argument and then write
      that data to our image at a specified block location.
   &lt;/p&gt;
   &lt;p&gt;After you write a &lt;tt&gt;writeRegion&lt;/tt&gt; method, you can then use objects of your class as &lt;tt&gt;'Destination'&lt;/tt&gt; parameters to &lt;tt&gt;blockproc&lt;/tt&gt;, allowing you to both read and write to arbitrarily large files of arbitrary format!
   &lt;/p&gt;
   &lt;p&gt;Specifying a &lt;tt&gt;writeRegion&lt;/tt&gt; method is completely optional, but you &lt;i&gt;must&lt;/i&gt; specify it if you want to use your image adapter object as a &lt;tt&gt;'Destination'&lt;/tt&gt; in &lt;tt&gt;blockproc&lt;/tt&gt;.  Otherwise, your objects will be "read-only".
   &lt;/p&gt;
   &lt;p&gt;In the spirit of brevity, I'm not going to do that for our &lt;tt&gt;PagedTiffAdapter&lt;/tt&gt;.  I've found that &lt;tt&gt;writeRegion&lt;/tt&gt; methods are often more complex than their &lt;tt&gt;readRegion&lt;/tt&gt; counterparts.  I'll leave that as an exercise for the reader.
   &lt;/p&gt;
   &lt;h3&gt;"Cool, everything turned out better than expected!"&lt;a name="30"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;Thanks!  Well that about wraps it up.  If you want to learn more about writing and using image adapter objects there is a
      chapter in the Image Processing Toolbox Users' Guide called "Working with Data in Unsupported Formats".  There we walk thought
      writing an adapter for a more complex binary formatted file.  You can also see the documentation for &lt;tt&gt;blockproc&lt;/tt&gt;, &lt;tt&gt;rsetwrite&lt;/tt&gt;, and &lt;tt&gt;ImageAdapter&lt;/tt&gt;.
   &lt;/p&gt;
   &lt;p&gt;Thanks again Steve for letting me talk about this stuff!  Have a great day!&lt;/p&gt;&lt;p style="text-align:right;font-size:xx-small;font-weight:lighter;font-style:italic;color:gray"&gt;&lt;br&gt;&lt;a href="javascript:void(0);"&gt;&lt;span style="font-size:x-small;font-style:italic"&gt;Get 
            the MATLAB code 
            (requires JavaScript)&lt;/span&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
      Published with MATLAB® 7.13&lt;br&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/SteveOnImageProcessing/~4/hT06t5EdDOc" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/UUpbAP7zjDM" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/SteveOnImageProcessing/~3/hT06t5EdDOc/</feedburner:origLink></item><item><title>Digital image processing using MATLAB: reading image files</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/JHg1sePgxMI/</link><category>DIPUM tutorials</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Steve Eddins</dc:creator><pubDate>Tue, 27 Sep 2011 00:00:27 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/b2906c105a0f55a7</guid><description>&lt;div&gt;
   
      &lt;p&gt;&lt;i&gt;Today's post is part of an ongoing &lt;a href="http://blogs.mathworks.com/steve/category/dipum-tutorials/"&gt;tutorial series on digital image processing using MATLAB&lt;/a&gt;. I'm covering topics in roughly the order used in the book &lt;a href="http://imageprocessingplace.com/DIPUM-2E/dipum2e_main_page.htm"&gt;Digital Image Processing Using MATLAB&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;
   
   &lt;h3&gt;Contents&lt;/h3&gt;
   &lt;div&gt;
      &lt;ul&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#1"&gt;Reading images&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#5"&gt;Reading from multi-image TIFF files&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#6"&gt;Reading subsets of an image&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#9"&gt;Sample image files&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="http://blogs.mathworks.com/steve#11"&gt;For more information&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;
   &lt;/div&gt;
   &lt;h3&gt;Reading images&lt;a name="1"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;The MATLAB function &lt;tt&gt;imread&lt;/tt&gt; reads image data from a variety of formats, including:
   &lt;/p&gt;
   &lt;div&gt;
      &lt;ul&gt;
         &lt;li&gt;Windows Bitmap (BMP)&lt;/li&gt;
         &lt;li&gt;Windows Cursor resources (CUR)&lt;/li&gt;
         &lt;li&gt;Flexible Image Transport System (FITS)&lt;/li&gt;
         &lt;li&gt;Graphics Interchange Format (GIF)&lt;/li&gt;
         &lt;li&gt;Hierarchical Data Format (HDF)&lt;/li&gt;
         &lt;li&gt;Windows Icon resources (ICO)&lt;/li&gt;
         &lt;li&gt;JPEG 2000&lt;/li&gt;
         &lt;li&gt;Joint Photographic Experts Group (JPEG)&lt;/li&gt;
         &lt;li&gt;Portable Bitmap (PBM)&lt;/li&gt;
         &lt;li&gt;Windows Paintbrush (PCX)&lt;/li&gt;
         &lt;li&gt;Portable Graymap (PGM)&lt;/li&gt;
         &lt;li&gt;Portable Network Graphics (PNG)&lt;/li&gt;
         &lt;li&gt;Portable Any Map (PNM)&lt;/li&gt;
         &lt;li&gt;Portable Pixmap (PPM)&lt;/li&gt;
         &lt;li&gt;Sun Raster (RAS)&lt;/li&gt;
         &lt;li&gt;Tagged Image File Format (TIFF)&lt;/li&gt;
         &lt;li&gt;X Window Dump (XWD)&lt;/li&gt;
      &lt;/ul&gt;
   &lt;/div&gt;
   &lt;p&gt;For example, the following line reads the pixels from a PNG file into the MATLAB variable &lt;tt&gt;I&lt;/tt&gt;:
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;I = imread(&lt;span style="color:#a020f0"&gt;'rice.png'&lt;/span&gt;);&lt;/pre&gt;&lt;p&gt;After you run the code above, the Workspace Browser shows you that your variable &lt;tt&gt;I&lt;/tt&gt; is a 256x256 matrix of uint8 (unsigned eight-bit integer) values in the range [40,204].
   &lt;/p&gt;
   &lt;p&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/workspace-browser-screenshot.png"&gt; &lt;/p&gt;
   &lt;p&gt;Although &lt;tt&gt;imread&lt;/tt&gt; uses the file extension (such as .png) to help determine the file format, it can also determine the format automatically.
      Suppose, for example, you have a set of files in which the file extension is used to indicate a particular data series, which
      I'll simulate here by copying rice.png to another filename:
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;s = which(&lt;span style="color:#a020f0"&gt;'rice.png'&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="font-style:oblique"&gt;
s =

C:\MATLABs\R2011b\toolbox\images\imdemos\rice.png

&lt;/pre&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;copyfile(s, &lt;span style="color:#a020f0"&gt;'rice.series-x03a'&lt;/span&gt;)
dir(&lt;span style="color:#a020f0"&gt;'rice.*'&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="font-style:oblique"&gt;
rice.series-x03a  

&lt;/pre&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;I = imread(&lt;span style="color:#a020f0"&gt;'rice.series-x03a'&lt;/span&gt;);
imshow(I)&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/dipum_2_2_reading_images_01.jpg"&gt; &lt;h3&gt;Reading from multi-image TIFF files&lt;a name="5"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;TIFF files can store multiple independent images. The function &lt;tt&gt;imread&lt;/tt&gt; has a syntax for specifying which image you want. The file mri.tif (&lt;a href="http://blogs.mathworks.com/images/steve/2011/mri.tif"&gt;download link&lt;/a&gt;) contains 27 images. Here is how you would read the 1st, 6th, and 11th images in the file.
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;I1 = imread(&lt;span style="color:#a020f0"&gt;'mri.tif'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'Index'&lt;/span&gt;, 1);
I6 = imread(&lt;span style="color:#a020f0"&gt;'mri.tif'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'Index'&lt;/span&gt;, 6);
I11 = imread(&lt;span style="color:#a020f0"&gt;'mri.tif'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'Index'&lt;/span&gt;, 11);&lt;/pre&gt;&lt;h3&gt;Reading subsets of an image&lt;a name="6"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;For very large image files it can be useful to read in only a subset of the image pixels. The &lt;tt&gt;imread&lt;/tt&gt; function can do this for both TIFF and JPEG 2000 files. Here's how to read rows 50-100 and columns 150-200 of shadow.tif:
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;I = imread(&lt;span style="color:#a020f0"&gt;'shadow.tif'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'PixelRegion'&lt;/span&gt;, {[50 100], [150 200]});
imshow(I)&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/dipum_2_2_reading_images_02.jpg"&gt; &lt;p&gt;You can use the MATLAB function &lt;tt&gt;imfinfo&lt;/tt&gt; to read &lt;i&gt;metadata&lt;/i&gt; about an image file without reading in all the pixel data.  Here's an example:
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;imfinfo(&lt;span style="color:#a020f0"&gt;'peppers.png'&lt;/span&gt;)&lt;/pre&gt;&lt;pre style="font-style:oblique"&gt;
ans = 

                  Filename: 'C:\MATLABs\R2011b\toolbox\images\imdemos\peppers.png'
               FileModDate: '16-Dec-2002 06:10:58'
                  FileSize: 287677
                    Format: 'png'
             FormatVersion: []
                     Width: 512
                    Height: 384
                  BitDepth: 24
                 ColorType: 'truecolor'
           FormatSignature: [137 80 78 71 13 10 26 10]
                  Colormap: []
                 Histogram: []
             InterlaceType: 'none'
              Transparency: 'none'
    SimpleTransparencyData: []
           BackgroundColor: []
           RenderingIntent: []
            Chromaticities: []
                     Gamma: []
               XResolution: []
               YResolution: []
            ResolutionUnit: []
                   XOffset: []
                   YOffset: []
                OffsetUnit: []
           SignificantBits: []
              ImageModTime: '16 Jul 2002 16:46:41 +0000'
                     Title: []
                    Author: []
               Description: 'Zesty peppers'
                 Copyright: 'Copyright The MathWorks, Inc.'
              CreationTime: []
                  Software: []
                Disclaimer: []
                   Warning: []
                    Source: []
                   Comment: []
                 OtherText: []

&lt;/pre&gt;&lt;p&gt;The display shows that peppers.png is a truecolor image with 24 bits per pixel. The size of the file is 287677 bytes, and
      it was last modified in the morning of December 16, 2002, during a period of heavy snowfall. By capturing the output of &lt;tt&gt;imfinfo&lt;/tt&gt; in a variable, you can write code based on this information, such as:
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;info = imfinfo(&lt;span style="color:#a020f0"&gt;'peppers.png'&lt;/span&gt;);
num_rows = info.Height;
num_cols = info.Width;&lt;/pre&gt;&lt;h3&gt;Sample image files&lt;a name="9"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;The files rice.png, shadow.tif, and peppers.png read by the code above are sample images that ships with Image Processing
      Toolbox. I use sample images from the toolbox a lot in this blog because I want readers to be able to run the code examples
      in my posts. You can see a list of the sample image files in the toolbox with this command:
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;help &lt;span style="color:#a020f0"&gt;imdemos&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-style:oblique"&gt;  Image Processing Toolbox --- demos and sample images
 
    iptdemos           - Index of Image Processing Toolbox demos.
 
    ipexaerial         - Registering an Aerial Photo to an Orthophoto.
    ipexangle          - Measuring Angle of Intersection.
    ipexbatch          - Batch Processing ImageFiles in Parallel.
    ipexblind          - Deblurring Images Using a Blind Deconvolution Filter.
    ipexblockprocedge  - Block Processing Large Images.
    ipexblockprocstats - Computing Statistics for Large Images.
    ipexcell           - Detecting a Cell Using Image Segmentation.
    ipexcheckerboard   - Creating a Gallery of Transformed Images.
    ipexconformal      - Exploring a Conformal Mapping.
    ipexcontrast       - Contrast Enhancement Techniques.
    ipexfabric         - Color-based Segmentation Using the L*a*b* Color Space.
    ipexhistology      - Color-based Segmentation Using K-Means Clustering.
    ipexlanstretch     - Enhancing Multispectral Color Composite Images.
    ipexlucy           - Deblurring Images Using a Lucy-Richardson Filter.
    ipexndvi           - Finding Vegetation in a Multispectral Image.
    ipexnormxcorr2     - Registering an Image Using Normalized Cross-Correlation
    ipexpendulum       - Finding the Length of a Pendulum in Motion.
    ipexprops          - Measuring Regions in Grayscale Images.
    ipexradius         - Measuring the Radius of a Roll of Tape.
    ipexreconstruct    - Reconstructing an Image from Projection Data.
    ipexregularized    - Deblurring Images Using a Regularized Filter.
    ipexrice           - Correcting Nonuniform Illumination.
    ipexrotate         - Finding the Rotation and Scale of a Distorted Image.
    ipexroundness      - Identifying Round Objects.
    ipexshear          - Padding and Shearing an Image Simultaneously.
    ipexsnow           - Granulometry of Snowflakes. 
    ipextexturefilter  - Texture Segmentation Using Texture Filters.
    ipextraffic        - Detecting Cars in a Video of Traffic.
    ipexwatershed      - Marker-controlled watershed segmentation.
    ipexwiener         - Deblurring Images Using the Wiener Filter.
 
  Extended-example helper files.
    HistogramAccumulator           - Used by blockproc stats example.
    batchDetectCells               - Used by batch processing example.
    batchProcessFiles              - Used by batch processing example.
    conformalForward1              - Used by conformal mapping example.
    conformalForward2              - Used by conformal mapping example.
    conformalInverse               - Used by conformal mapping example.
    conformalInverseClip           - Used by conformal mapping example.
    conformalSetupInputAxes        - Used by conformal mapping example.
    conformalSetupOutputAxes       - Used by conformal mapping example.
    conformalShowLines             - Used by conformal mapping example.
    conformalShowCircles           - Used by conformal mapping example.
    conformalShowInput             - Used by conformal mapping example.
    conformalShowOutput            - Used by conformal mapping example.
    propsSynthesizeImage           - Used by measuring regions example.
    LanAdapter                     - Used by blockproc stats example.
 
  Sample MAT-files.
    imdemos.mat           - Images used in demos.
    pendulum.mat          - Used by ipexpendulum.
    regioncoordinates.mat - Used by ipexfabric.
    trees.mat             - Scanned painting.
    westconcordpoints.mat - Used by aerial photo registration example.
    mristack.mat          - Used by help example in IMPLAY.
    cellsequence.mat      - Used by help example in IMPLAY.
 
  Sample FITS images.
    solarspectra.fts
 
  Sample HDR images.
    office.hdr
 
  Sample JPEG images.
    football.jpg
    greens.jpg
 
  Sample PNG images.
    bag.png
    blobs.png
    circles.png
    coins.png
    concordorthophoto.png
    concordaerial.png
    fabric.png
    gantrycrane.png
    glass.png
    hestain.png
    liftingbody.png
    onion.png
    pears.png
    peppers.png
    pillsetc.png
    rice.png
    saturn.png
    snowflakes.png
    tape.png
    testpat1.png
    text.png
    tissue.png
    westconcordorthophoto.png
    westconcordaerial.png
 
  Sample TIFF images.
    AT3_1m4_01.tif
    AT3_1m4_02.tif
    AT3_1m4_03.tif
    AT3_1m4_04.tif
    AT3_1m4_05.tif
    AT3_1m4_06.tif
    AT3_1m4_07.tif
    AT3_1m4_08.tif
    AT3_1m4_09.tif
    AT3_1m4_10.tif
    autumn.tif  
    board.tif
    cameraman.tif
    canoe.tif   
    cell.tif
    circbw.tif
    circuit.tif
    eight.tif   
    forest.tif
    kids.tif
    logo.tif
    mandi.tif
    m83.tif
    moon.tif
    mri.tif
    paper1.tif
    pout.tif
    shadow.tif
    spine.tif
    tire.tif
    trees.tif
 
  Sample Landsat images.
    littlecoriver.lan
    mississippi.lan
    montana.lan
    paris.lan
    rio.lan
    tokyo.lan
 
  Sample AVI files.
    rhinos.avi
    traffic.avi
 
  Sample Analyze 7.5 images.
    brainMRI.img
 
  Photo credits
    board:
 
      Computer circuit board, courtesy of Alexander V. Panasyuk,
      Ph.D., Harvard-Smithsonian Center for Astrophysics.
 
    cameraman:
 
      Copyright Massachusetts Institute of Technology.  Used with
      permission.
 
    cell:
    AT3_1m4_01:
    AT3_1m4_02:
    AT3_1m4_03:
    AT3_1m4_04:
    AT3_1m4_05:
    AT3_1m4_06:
    AT3_1m4_07:
    AT3_1m4_08:
    AT3_1m4_09:
    AT3_1m4_10:
 
      Cancer cells from rat prostates, courtesy of Alan W. Partin, M.D,
      Ph.D., Johns Hopkins University School of Medicine.
 
    circuit:
 
      Micrograph of 16-bit A/D converter circuit, courtesy of Steve
      Decker and Shujaat Nadeem, MIT, 1993. 
 
    concordaerial and westconcordaerial:
 
      Visible color aerial photographs courtesy of mPower3/Emerge.
 
    concordorthophoto and westconcordorthophoto:
 
      Orthoregistered photographs courtesy of Massachusetts Executive Office
      of Environmental Affairs, MassGIS.
 
    forest:
 
      Photograph of Carmanah Ancient Forest, British Columbia, Canada,
      courtesy of Susan Cohen. 
 
    gantrycrane:
 
      Gantry crane used to build a bridge, courtesy of Jeff Mather.
    
    hestain:
 
      Image of tissue stained with hemotoxylin and eosin (H&amp;amp;E) at 40X
      magnification, courtesy of Alan W. Partin, M.D., Ph.D., Johns Hopkins
      University School of Medicine.
 
    liftingbody:
 
      Public domain image of M2-F1 lifting body in tow, courtesy of NASA,
      1964-01-01, Dryden Flight Research Center #E-10962, GRIN database
      #GPN-2000-000097.
 
    mandi:
 
      Bayer pattern-encoded image taken by a camera with a sensor
      alignment of &amp;#39;bggr&amp;#39;, courtesy of Jeremy Barry.
 
    m83:
 
      M83 spiral galaxy astronomical image courtesy of Anglo-Australian
      Observatory, photography by David Malin. 
 
    moon:
 
      Copyright Michael Myers.  Used with permission.
 
    pears:
 
      Copyright Corel.  Used with permission.
 
    tissue:
 
      Cytokeratin CAM 5.2 stain of human prostate tissue, courtesy of 
      Alan W. Partin, M.D, Ph.D., Johns Hopkins University School
      of Medicine.
 
    trees:
 
      Trees with a View, watercolor and ink on paper, copyright Susan
      Cohen.  Used with permission. 
 
    LAN files:
 
      Permission to use Landsat TM data sets provided by Space Imaging,
      LLC, Denver, Colorado.
 
    saturn:
 
      Public domain image courtesy of NASA, Voyager 2 image, 1981-08-24, 
      NASA catalog #PIA01364
 
    solarspectra:
 
      Solar spectra image courtesy of Ann Walker, Boston University.
 
  See also COLORSPACES, IMAGES, IMAGESLIB, IMUITOOLS, IPTFORMATS, IPTUTILS.

&lt;/pre&gt;&lt;p&gt;The output also shows you the image credit information for the images that are not copyrighted by MathWorks.&lt;/p&gt;
   &lt;h3&gt;For more information&lt;a name="11"&gt;&lt;/a&gt;&lt;/h3&gt;
   &lt;p&gt;For more information, see Section 2.2 of &lt;a href="http://imageprocessingplace.com/DIPUM-2E/dipum2e_main_page.htm"&gt; &lt;i&gt;Digital Image Processing Using MATLAB&lt;/i&gt;&lt;/a&gt;.
   &lt;/p&gt;
   &lt;p&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/dipum-cover.png"&gt; &lt;/p&gt;
   &lt;p&gt;See also the reference pages for &lt;a href="http://www.mathworks.com/help/techdoc/ref/imread.html"&gt;&lt;tt&gt;imread&lt;/tt&gt;&lt;/a&gt; and &lt;a href="http://www.mathworks.com/help/techdoc/ref/imfinfo.html"&gt;&lt;tt&gt;imfinfo&lt;/tt&gt;&lt;/a&gt;, as well as the section &lt;a href="http://www.mathworks.com/help/toolbox/images/f13-19056.html"&gt;Reading and Writing Image Data&lt;/a&gt; in the Image Processing Toolbox User's Guide.
   &lt;/p&gt;&lt;p style="text-align:right;font-size:xx-small;font-weight:lighter;font-style:italic;color:gray"&gt;&lt;br&gt;&lt;a href="javascript:void(0);"&gt;&lt;span style="font-size:x-small;font-style:italic"&gt;Get 
            the MATLAB code 
            (requires JavaScript)&lt;/span&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
      Published with MATLAB® 7.13&lt;br&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/SteveOnImageProcessing/~4/TGaENZpYA7Y" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/JHg1sePgxMI" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/SteveOnImageProcessing/~3/TGaENZpYA7Y/</feedburner:origLink></item><item><title>Binary image convex hull</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/O5M5e5xuQ4M/</link><category>Uncategorized</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Steve Eddins</dc:creator><pubDate>Fri, 30 Sep 2011 00:00:12 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/ffe2d942ab3bacb6</guid><description>&lt;div&gt;
   &lt;p&gt;I've been intending to mention a new function &lt;a href="http://www.mathworks.com/help/toolbox/images/ref/bwconvhull.html"&gt;&lt;tt&gt;bwconvhull&lt;/tt&gt;&lt;/a&gt; that was introduced in the Image Processing Toolbox last spring in the R2011a release. Now that R2011b is out, I figure I
      better go ahead and do it!
   &lt;/p&gt;
   &lt;p&gt;&lt;tt&gt;bwconvhull&lt;/tt&gt; computes the "convex hull of a binary image." Now I have to admit that this terminology is a little loose, so I'd better
      clarify. The convex hull of a set of 2-D points is the smallest convex polygon that contains the entire set. Here's an example
      from the MATLAB documentation for &lt;a href="http://www.mathworks.com/help/techdoc/ref/convhull.html"&gt;&lt;tt&gt;convhull&lt;/tt&gt;&lt;/a&gt;:
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;xx = -1:.05:1; yy = abs(sqrt(xx));
[x,y] = pol2cart(xx,yy);
k = convhull(x,y);
plot(x(k),y(k),&lt;span style="color:#a020f0"&gt;'r-'&lt;/span&gt;,x,y,&lt;span style="color:#a020f0"&gt;'b+'&lt;/span&gt;)&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/bwconvhull_example_01.png"&gt; &lt;p&gt;The polygon in red is the convex hull of the set of points shown in blue. So &lt;tt&gt;convhull&lt;/tt&gt; takes a set of points and returns a polygon, whereas &lt;tt&gt;bwconvhull&lt;/tt&gt; takes a binary image and returns another binary image. What's up with that? It means simply that &lt;tt&gt;bwconvhull&lt;/tt&gt; computes the convex hull of all the foreground pixels in the input image, and then it produces an output binary image with
      all the pixels inside the convex hull set to white. It's a little easier to show than to say, so here's what it looks like:
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;bw = imread(&lt;span style="color:#a020f0"&gt;'text.png'&lt;/span&gt;);
imshow(bw)&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/bwconvhull_example_02.png"&gt; &lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;bw2 = bwconvhull(bw);
imshow(bw2);&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/bwconvhull_example_03.png"&gt; &lt;p&gt;Let's overlay the foreground pixel locations from the input image (using blue dots) and the convex hull computed by &lt;tt&gt;convhull&lt;/tt&gt; (using a thick red line).
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;[y, x] = find(bw);
k = convhull(x, y);
hold &lt;span style="color:#a020f0"&gt;on&lt;/span&gt;
plot(x, y, &lt;span style="color:#a020f0"&gt;'b.'&lt;/span&gt;)
plot(x(k), y(k), &lt;span style="color:#a020f0"&gt;'r'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'LineWidth'&lt;/span&gt;, 4)
hold &lt;span style="color:#a020f0"&gt;off&lt;/span&gt;&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/bwconvhull_example_04.png"&gt; &lt;p&gt;An important variation supported by &lt;tt&gt;bwconvhull&lt;/tt&gt; is to compute the convex hulls of the individual objects in the input image. Here's how you do that:
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;bw3 = bwconvhull(bw, &lt;span style="color:#a020f0"&gt;'objects'&lt;/span&gt;);
imshow(bw3)&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/bwconvhull_example_05.png"&gt; &lt;p&gt;Something called the &lt;i&gt;convex deficiency&lt;/i&gt; is sometimes used in shape recognition applications. Loosely speaking, the convex deficiency of a shape is the convex hull
      of the shape minus the shape. Here's an example using the letter "T" from the text image above.
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;bwt = bw(7:24, 4:18);
imshow(bwt, &lt;span style="color:#a020f0"&gt;'InitialMagnification'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'fit'&lt;/span&gt;)&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/bwconvhull_example_06.png"&gt; &lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;bwtc = bwconvhull(bw_t);
imshow(bwtc, &lt;span style="color:#a020f0"&gt;'InitialMagnification'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'fit'&lt;/span&gt;)
title(&lt;span style="color:#a020f0"&gt;'Convex hull image'&lt;/span&gt;)&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/bwconvhull_example_07.png"&gt; &lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;bwtcd = bwtc &amp;amp; ~bwt;
imshow(bwtcd, &lt;span style="color:#a020f0"&gt;'InitialMagnification'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'fit'&lt;/span&gt;)
title(&lt;span style="color:#a020f0"&gt;'Convex deficiency image'&lt;/span&gt;)&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/bwconvhull_example_08.png"&gt; &lt;p&gt;The convex deficiency of the letter "T" has two connected components. This kind of measurement can be useful for recognizing
      shapes.
   &lt;/p&gt;&lt;p style="text-align:right;font-size:xx-small;font-weight:lighter;font-style:italic;color:gray"&gt;&lt;br&gt;&lt;a href="javascript:void(0);"&gt;&lt;span style="font-size:x-small;font-style:italic"&gt;Get 
            the MATLAB code 
            (requires JavaScript)&lt;/span&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
      Published with MATLAB® 7.13&lt;br&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/SteveOnImageProcessing/~4/Q9tIVhH8-Nw" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/O5M5e5xuQ4M" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/SteveOnImageProcessing/~3/Q9tIVhH8-Nw/</feedburner:origLink></item><item><title>Binary image convex hull – algorithm notes</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/T5RuUZ4UCfM/</link><category>Uncategorized</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Steve Eddins</dc:creator><pubDate>Tue, 04 Oct 2011 15:07:16 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/7b3ce47f2bb57a81</guid><description>&lt;div&gt;
   &lt;p&gt;Today I want to tell a little image processing algorithm story related to my &lt;a href="http://blogs.mathworks.com/steve/2011/09/30/binary-image-convex-hull/"&gt;post last week&lt;/a&gt; about the new &lt;a href="http://www.mathworks.com/help/toolbox/images/ref/bwconvhull.html"&gt;&lt;tt&gt;bwconvhull&lt;/tt&gt;&lt;/a&gt; function in the Image Processing Toolbox.
   &lt;/p&gt;
   &lt;p&gt;The developer (&lt;a href="http://blogs.mathworks.com/steve/2011/09/23/dealing-with-really-big-images-image-adapters/"&gt;Brendan&lt;/a&gt;) who worked on this function came to see me sometime last year to find out how the 'ConvexImage' measurement offered by &lt;a href="http://www.mathworks.com/help/toolbox/images/ref/regionprops.html"&gt;&lt;tt&gt;regionprops&lt;/tt&gt;&lt;/a&gt; was computed so that he could use the same procedure for &lt;tt&gt;bwconvhull&lt;/tt&gt;. I believed that I knew the answer off the top of my head, so without looking at the code I rattled off the following steps:
   &lt;/p&gt;
   &lt;div&gt;
      &lt;ol&gt;
         &lt;li&gt;Compute the x- and y-coordinates for the four corners of all the foreground pixels in the binary image.&lt;/li&gt;
         &lt;li&gt;Use &lt;a href="http://www.mathworks.com/help/techdoc/ref/convhull.html"&gt;&lt;tt&gt;convhull&lt;/tt&gt;&lt;/a&gt; to compute the convex hull of the (x,y) pairs from step 1.
         &lt;/li&gt;
         &lt;li&gt;Use &lt;a href="http://www.mathworks.com/help/toolbox/images/ref/poly2mask.html"&gt;&lt;tt&gt;poly2mask&lt;/tt&gt;&lt;/a&gt; to convert the convex hull polygon to a binary image mask.
         &lt;/li&gt;
      &lt;/ol&gt;
   &lt;/div&gt;
   &lt;p&gt;A few days later Brendan came back to tell me that, although my description was clear, the code that I wrote ten years ago
      for &lt;tt&gt;regionprops&lt;/tt&gt; actually does something else.
   &lt;/p&gt;
   &lt;p&gt;Oops.&lt;/p&gt;
   &lt;p&gt;I looked at the code and realized that Brendan was right, and I started to remember that I had actually made this same mistake
      many years before.
   &lt;/p&gt;
   &lt;p&gt;In fact, I did originally implement 'ConvexImage' in &lt;tt&gt;regionprops&lt;/tt&gt; using the procedure outlined above. Before it shipped, though, I discovered (and fixed) a big problem with it.
   &lt;/p&gt;
   &lt;p&gt;Let me show you the problem using a small example. Here's a tiny binary image.&lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;bw = [&lt;span style="color:#0000ff"&gt;...&lt;/span&gt;
    0 0 0 0 0 0 0 0 0
    0 0 0 0 1 0 0 0 0
    0 0 0 1 0 1 0 0 0
    0 0 1 0 0 0 1 0 0
    0 1 0 0 0 0 0 1 0
    0 0 0 0 0 0 0 0 0 ];
imshow(bw, &lt;span style="color:#a020f0"&gt;'InitialMagnification'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'fit'&lt;/span&gt;)&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/convex_hull_calculation_01.png"&gt; &lt;p&gt;Now here's the convex image as computed by &lt;tt&gt;bwconvhull&lt;/tt&gt;. The "filled-in" pixels are shown in light gray.
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;bwch = bwconvhull(bw)
hold &lt;span style="color:#a020f0"&gt;on&lt;/span&gt;
h = imshow(bwch);
set(h, &lt;span style="color:#a020f0"&gt;'AlphaData'&lt;/span&gt;, 0.8);
hold &lt;span style="color:#a020f0"&gt;off&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-style:oblique"&gt;
bwch =

     0     0     0     0     0     0     0     0     0
     0     0     0     0     1     0     0     0     0
     0     0     0     1     1     1     0     0     0
     0     0     1     1     1     1     1     0     0
     0     1     1     1     1     1     1     1     0
     0     0     0     0     0     0     0     0     0

&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/convex_hull_calculation_02.png"&gt; &lt;p&gt;Now I'll graphically illustrate the computational procedure above. First, compute the set of corner locations for all the
      foreground pixels.
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;[y,x] = find(bw);
dx = [-0.5 -0.5  0.5  0.5];
dy = [-0.5  0.5 -0.5  0.5];
x_corners = bsxfun(@plus, x, dx);
y_corners = bsxfun(@plus, y, dy);
x_corners = x_corners(:);
y_corners = y_corners(:);&lt;/pre&gt;&lt;p&gt;Visualize step 1 by superimposing those corner locations on the input image.&lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;imshow(bw, &lt;span style="color:#a020f0"&gt;'InitialMagnification'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'fit'&lt;/span&gt;)
hold &lt;span style="color:#a020f0"&gt;on&lt;/span&gt;
plot(x_corners, y_corners, &lt;span style="color:#a020f0"&gt;'og'&lt;/span&gt;)
hold &lt;span style="color:#a020f0"&gt;off&lt;/span&gt;&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/convex_hull_calculation_03.png"&gt; &lt;p&gt;Step 2: Compute the convex hull of all the corner points. Visualize by superimposing the convex hull in red.&lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;k = convhull(x_corners, y_corners);
x_hull = x_corners(k);
y_hull = y_corners(k);
hold &lt;span style="color:#a020f0"&gt;on&lt;/span&gt;
plot(x_hull, y_hull, &lt;span style="color:#a020f0"&gt;'r'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'LineWidth'&lt;/span&gt;, 4)
hold &lt;span style="color:#a020f0"&gt;off&lt;/span&gt;&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/convex_hull_calculation_04.png"&gt; &lt;p&gt;Step 3: Use &lt;tt&gt;poly2mask&lt;/tt&gt; to convert the convex hull to a binary image mask.
   &lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;mask = poly2mask(x_hull, y_hull, 6, 9);

imshow(bw, &lt;span style="color:#a020f0"&gt;'InitialMagnification'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'fit'&lt;/span&gt;)
hold &lt;span style="color:#a020f0"&gt;on&lt;/span&gt;
h = imshow(mask);
set(h, &lt;span style="color:#a020f0"&gt;'AlphaData'&lt;/span&gt;, 0.8)
plot(x_hull, y_hull, &lt;span style="color:#a020f0"&gt;'r'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'LineWidth'&lt;/span&gt;, 4)
hold &lt;span style="color:#a020f0"&gt;off&lt;/span&gt;&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/convex_hull_calculation_05.png"&gt; &lt;p&gt;You can see that there are extra pixels along the diagonal edges that got put into the mask. That's not good. If you repeat
      the operation, those diagonals will keep filling out until you're left with a rectangle. That's not supposed to happen with
      repeated application of the convex hull.
   &lt;/p&gt;
   &lt;p&gt;The reason this is happening is that the convex hull goes exactly through the center of pixels that are along the diagonal
      but "outside" the original set of foreground pixels. Because of the &lt;a href="http://blogs.mathworks.com/steve/2006/12/22/poly2mask-and-roipoly-part-3/"&gt;tie-breaking rules applied by &lt;tt&gt;poly2mask&lt;/tt&gt;&lt;/a&gt;, all (in this case) of those outside pixels got included in the output mask.
   &lt;/p&gt;
   &lt;p&gt;The solution that I settled on ten years ago, and which is now also used in &lt;tt&gt;bwconvhull&lt;/tt&gt;, was to modify the first step of the procedure. Instead of collecting the set of &lt;b&gt;corner&lt;/b&gt; points of each foreground pixel, the correct procedure collects points along the center of each edge of each foreground pixel.
   &lt;/p&gt;
   &lt;p&gt;Here's what that looks like.&lt;/p&gt;&lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;dx = [0.0  0.0  0.5 -0.5];
dy = [0.5 -0.5  0.0  0.0];
x_edges = bsxfun(@plus, x, dx);
y_edges = bsxfun(@plus, y, dy);
x_edges = x_edges(:);
y_edges = y_edges(:);

k = convhull(x_edges, y_edges);
x_hull = x_edges(k);
y_hull = y_edges(k);

imshow(bw, &lt;span style="color:#a020f0"&gt;'InitialMagnification'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'fit'&lt;/span&gt;)
hold &lt;span style="color:#a020f0"&gt;on&lt;/span&gt;
plot(x_edges, y_edges, &lt;span style="color:#a020f0"&gt;'og'&lt;/span&gt;)
plot(x_hull, y_hull, &lt;span style="color:#a020f0"&gt;'r'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'LineWidth'&lt;/span&gt;, 4)
hold &lt;span style="color:#a020f0"&gt;off&lt;/span&gt;&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/convex_hull_calculation_06.png"&gt; &lt;pre style="background:#f9f7f3;padding:10px;border:1px solid rgb(200,200,200)"&gt;mask = poly2mask(x_hull, y_hull, 6, 9);
imshow(mask, &lt;span style="color:#a020f0"&gt;'InitialMagnification'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'fit'&lt;/span&gt;)
hold &lt;span style="color:#a020f0"&gt;on&lt;/span&gt;
plot(x_hull, y_hull, &lt;span style="color:#a020f0"&gt;'r'&lt;/span&gt;, &lt;span style="color:#a020f0"&gt;'LineWidth'&lt;/span&gt;, 4)
plot(x_edges, y_edges, &lt;span style="color:#a020f0"&gt;'og'&lt;/span&gt;)
hold &lt;span style="color:#a020f0"&gt;off&lt;/span&gt;&lt;/pre&gt;&lt;img vspace="5" hspace="5" src="http://blogs.mathworks.com/images/steve/2011/convex_hull_calculation_07.png"&gt; &lt;p&gt;Much better!&lt;/p&gt;
   &lt;p&gt;I have been fooled more often than I would like to admit by sometimes nonintuitive digital image geometry. For you image processing
      algorithm people out there, I hope seeing these pictures and techniques will help you avoid similar pitfalls someday.
   &lt;/p&gt;&lt;p style="text-align:right;font-size:xx-small;font-weight:lighter;font-style:italic;color:gray"&gt;&lt;br&gt;&lt;a href="javascript:void(0);"&gt;&lt;span style="font-size:x-small;font-style:italic"&gt;Get 
            the MATLAB code 
            (requires JavaScript)&lt;/span&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
      Published with MATLAB® 7.13&lt;br&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/SteveOnImageProcessing/~4/wba96CJWoxY" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/T5RuUZ4UCfM" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/SteveOnImageProcessing/~3/wba96CJWoxY/</feedburner:origLink></item><item><title>Multi-Platform Apps with HTML5 and IE9</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/bcsviEDuI8Y/multi-platform-apps-with-html5-and-ie9.aspx</link><category>HTML5</category><category>IE9</category><category>Pinned Site</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Susan Ibach</dc:creator><pubDate>Tue, 20 Sep 2011 00:00:00 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/64c5e781f88fb061</guid><description>&lt;p&gt;&lt;em&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/5684.wessty_2D00_whitejacket_5F00_47E7B0AC.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px 0px 10px 10px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="wessty-whitejacket" border="0" alt="wessty-whitejacket" align="right" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/5287.wessty_2D00_whitejacket_5F00_thumb_5F00_1921F80A.jpg" width="150" height="195"&gt;&lt;/a&gt;“We should make an app”&lt;/em&gt;, says your boss while playing with her new smartphone. This statement tends to can get very expensive and scary for developers since there are so many “app” platforms out there. Yet, it is a totally valid request from a product owner. Luckily for us, Microsoft has our back by giving us a solution that can make building multi-platform apps easier with HTML5 and Internet Explorer 9.&lt;/p&gt;  &lt;p&gt;The goal with this article is to demonstrate how you can build multi-platform apps by building up a code base in HTML5 and JavaScript that provides different custom user experiences depending on the platform your user prefers. We won’t be going into the intimate details about each step, rather we will be looking at how we can combine a number of techniques discussed thoroughly on the web (see the links throughout the article) build cool “apps” with HTML5. This article comes to us courtesy of David Wesst&lt;/p&gt;  &lt;p&gt;David Wesst has been working with web and user experience development for the past 5 years and currently works for Imaginet as a User Experience Consultant in Winnipeg, Manitoba. After finishing university, David has continued to follow his passion about the future of web development, experience design, technology, and game development both in and outside of the workplace. David has spoken at a number of conferences across Canada about HTML5 development and recently received his MVP award in the area of Internet Explorer.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Author’s Note: A completed version of the app this article talks about is available at &lt;/em&gt;&lt;a href="http://appswithhtml5.codeplex.com"&gt;&lt;em&gt;http://appswithhtml5.codeplex.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt; for you to download and follow along.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;Iteration 0: Ideation and Design Phase&lt;/h3&gt;  &lt;p&gt;Before starting, think about what multi-platform apps are, such as the Facebook or Twitter app that you use in your browser, your phone, or your desktop. On the technical side, they are very different since each platform uses a different technology (Silverlight, Objective-C, HTML), but to the user they are just different experiences of the same thing. &lt;/p&gt;  &lt;p&gt;This idea that we will be able to build multi-platform apps with a single code base of HTML and JavaScript, making it easier to maintain and cheaper to produce. It will be easier to maintain because we’ll only need to know how to use one technology set (HTML5) and it will be cheaper because as we move forward to our other apps,we won’t need to start from scratch.&lt;/p&gt;  &lt;p&gt;That’s enough talk. Let’s get started.&lt;/p&gt;  &lt;p&gt;The app we are going to build is going to be an Expert Directory app that allows users to browse through contacts for a company, in my case the company is &lt;a href="http://www.imaginet.com"&gt;Imaginet&lt;/a&gt;. There will be a list of contacts displayed on screen, and when one is selected that contact’s details will appears. &lt;/p&gt;  &lt;p&gt;Here is a simple sketch to help visualize what we are going to build. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/1452.browser_2D00_sketch5_5F00_6651F195.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:10px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="browser-sketch" border="0" alt="browser-sketch" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/4276.browser_2D00_sketch5_5F00_thumb_5F00_3C2243AD.png" width="600" height="450"&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Keep in mind that this is only a sketch, which is really meant to demonstrate how things are laid out rather than how they will look in the end. The user will be able to select a name on the left and their details on the right. &lt;/p&gt;  &lt;p&gt;With our idea clear and our design complete, let’s get to the code. &lt;/p&gt;  &lt;h3&gt;Iteration 1: The Web App (HTML)&lt;/h3&gt;  &lt;p&gt;Our first goal will be to build our web app, or web experience. To do this, we are going to use all of the tools in the HTML5 arsenal which consists of HTML5, CSS3, and everybody’s favourite language JavaScript (I’ll talk more about that later). By using HTML5 and starting with the web experience, we get our app out there to the public quickly. HTML5 is also supported a pretty much every modern device you can think of, from phones, to tablets, to your PC. With the multi-platform support of HTML5 and JavaScript we can easily extend that code to support further platforms outside the browser, but more on that later. &lt;/p&gt;  &lt;p&gt;To start, we are going to use HTML mark-up with some CSS and get things laid out properly. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/3187.markup_5F00_4C4E0BA6.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:10px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="markup" border="0" alt="markup" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/8468.markup_5F00_thumb_5F00_40889EA7.png" width="600" height="360"&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Our code is pretty straightforward HTML, except that we are using the new &lt;em&gt;semantic tags&lt;/em&gt; like &lt;font face="Consolas"&gt;section &lt;/font&gt;and &lt;font face="Consolas"&gt;nav &lt;/font&gt;to provide some metadata to how our app is organized. &lt;/p&gt;  &lt;p&gt;The semantic tags make it easier for screen readers to go through our web app and for some web crawlers crawl our site and understand what is what. With that laid out, we apply some CSS floating and positioning, and we are in business. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Author’s Note: This article is not focusing on backwards compatibility, but if you are worried about these new tags working in older browsers like IE7 or IE8, you can include use the &lt;a href="http://www.modernizr.com/"&gt;Modernizr&lt;/a&gt; JavaScript library to make them work properly.&lt;/strong&gt;&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;With our UI laid out, we are ready to move onto the logic side of things. For that, we are going to use JavaScript.&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;Iteration 2: The Web App (JavaScript)&lt;/h3&gt;  &lt;p&gt;This is the part where developers tend to shy away because they don’t think you can build a full application nothing but JavaScript. If you asked me two years ago, I would agree with you, but now I think it can really hold its own if you know what you’re doing.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Author’s Note: If you need some convincing, check out some articles by Julian M. Bucknall about &lt;/strong&gt;&lt;/em&gt;&lt;a href="http://blog.boyet.com/blog/javascriptlessons/javascript-for-c-programmers-object-inheritance-part-1/"&gt;&lt;em&gt;&lt;strong&gt;JavaScript for C# developers&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;strong&gt;, or if you like books on code check out &lt;/strong&gt;&lt;/em&gt;&lt;a href="http://oreilly.com/catalog/9780596517748"&gt;&lt;em&gt;&lt;strong&gt;JavaScript: The Good Parts&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;strong&gt; by Douglas Crockford for a clear understanding of the language in a little over 100 pages.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;We are going to use JavaScript for two things: our application logic and to create a &lt;em&gt;contact&lt;/em&gt; object to encapsulate our contact data. In the &lt;em&gt;src&lt;/em&gt; folder, you will see two files where &lt;em&gt;main.js &lt;/em&gt;is the application logic and &lt;em&gt;contact.js &lt;/em&gt;is the contact object. Let’s start with &lt;em&gt;main.js&lt;/em&gt;.&lt;/p&gt;  &lt;h4&gt;main.js&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/5238.main4_5F00_25039CA4.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:10px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="main" border="0" alt="main" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/6215.main4_5F00_thumb_5F00_0F593E3A.png" width="600" height="360"&gt;&lt;/a&gt;All of the JavaScript for the application is kept under a JavaScript namespace called &lt;em&gt;SampleApp&lt;/em&gt;. By doing this we keep all of our functions and variables out of the &lt;a href="http://yuiblog.com/blog/2006/06/01/global-domination/"&gt;global namespace&lt;/a&gt; and prevent our variable writing over something else, or someone writing over our own.&lt;/p&gt;  &lt;p&gt;You might have also noticed that the images of code are from Visual Studio 2010. I tend to use VS2010 for my web development because: a) I’ve been working with VS since 2005, but not for web and b) the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/872d27ee-38c7-4a97-98dc-0d8a431cc2ed"&gt;JScript Editor Extensions&lt;/a&gt; make the environment feel like my C# environment with code folding and intellisense.&lt;/p&gt;  &lt;p&gt;All of the JavaScript code is kicked off with the &lt;em&gt;SampleApp.initialize&lt;/em&gt; function (which is called on load because of the parentheses at the end of the function). The other function to check out is &lt;em&gt;SampleApp.showContact&lt;/em&gt; which is the majority of our presentation logic, as it display the contact information stored in the second half of our JavaScript code, the contact object.&lt;/p&gt;  &lt;h4&gt;contact.js&lt;/h4&gt;  &lt;p&gt;Many developers believe that JavaScript cannot be an object oriented language. Fortunately for all us mutli-platform developers out there, they are wrong. I won’t get into the details here, but there are some great resources like &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163419.aspx"&gt;this article from the MSDN&lt;/a&gt; or &lt;a href="http://msdn.microsoft.com/en-us/scriptjunkie/gg602402.aspx"&gt;this one from Script Junkie&lt;/a&gt; that walk you through how to JavaScript to get things like public and private variables, or inheritance between objects.&lt;/p&gt;  &lt;p&gt;For us, we only need one object, the contact object. Our object is pretty simple as it really just contains a number of getter functions and a couple of helper functions that fetch the private variables for us, which I do just like I would in any other OO application.&lt;/p&gt;  &lt;p&gt;With our object created, you can see it being used extensively throughout &lt;em&gt;main.js&lt;/em&gt;. We create new ones in &lt;em&gt;SampleApp.setupData&lt;/em&gt;, and use the object’s functions in &lt;em&gt;SampleApp.showContact&lt;/em&gt;. &lt;/p&gt;  &lt;p&gt;With all our JavaScript written, and tied together with event handlers, we officially have an app!&lt;/p&gt;  &lt;p&gt;…Unfortunately, it doesn’t look to hot, but we can fix that with a little CSS3.&lt;/p&gt;  &lt;h3&gt;Iteration 3: The Web App (CSS3)&lt;/h3&gt;  &lt;p&gt;CSS has really been the magic of the web for a long time, but for us it will be the magic for our multi-platform app (in more ways than one). For this bit of magic, we are going to make it look good with our traditional practices, but make some of that painful work easy with some of the new features, like Box Shadow.&lt;/p&gt;  &lt;p&gt;Generally, when it comes to implementing drop shadows or rounded corners developers tend to cringe, including me. With CSS3, the new &lt;font face="Consolas"&gt;box-shadow &lt;/font&gt;and &lt;font face="Consolas"&gt;border-radius &lt;/font&gt;property makes it easy-peezy lemon squeezy. Check out the class with this code:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/4743.csscode_5F00_1865C9BB.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:10px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="csscode" border="0" alt="csscode" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/7041.csscode_5F00_thumb_5F00_37A8708E.png" width="525" height="190"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And with that, take a look at our app:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/6355.webapp_5F00_2ACE1A70.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:10px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="webapp" border="0" alt="webapp" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/1641.webapp_5F00_thumb_5F00_2A51C1AE.png" width="600" height="360"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The JavaScript we are using on the presentation logic is displaying the contact and making the social media icons fade out if we don’t have that data (click on Ryan to see what I mean). The hover over effect is 100% CSS.&lt;/p&gt;  &lt;p&gt;And there you have it! The Web Experience for our Expert Directory App is complete! We can push this out onto the web and get people using it ASAP. But that is only one platform, and one experience. Thanks to IE9, we can take our app experience beyond the web and go further by providing a desktop experience to our users.&lt;/p&gt;  &lt;h3&gt;Iteration 4: The Desktop App&lt;/h3&gt;  &lt;p&gt;Our next stop is the desktop experience, which if you think about desktop and web apps, they really aren’t all that different from the user experience side of things. &lt;/p&gt;  &lt;p&gt;Web apps live inside of a web browser, which in turn, is a desktop app. One of the major differences in the experience is that when you use a web app, the window in which you view your app is part of the web browser experience, rather than your app’s experience. For example, the taskbar shows the web browser icon and provides web browser functions (in the case of Windows 7), and the look of browser window itself is branded for the developers of the web browser.&lt;/p&gt;  &lt;p&gt;If we could change the web browser experience to better reflect our web app when it’s on screen, then we could provide our users with a custom desktop experience, and with Internet Explorer 9 &lt;em&gt;Pinned Sites&lt;/em&gt;, we can do that with our existing code base.&lt;/p&gt;  &lt;p&gt;I won’t go through the details of the implementation because there is a much better resource than this. Follow the first two steps at &lt;a href="http://buildmypinnedsite.com/"&gt;http://buildmypinnedsite.com/&lt;/a&gt; and you’ll be done.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/4774.pinnedsite_5F00_2E7B9973.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:2px auto 5px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="pinnedsite" border="0" alt="pinnedsite" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/0167.pinnedsite_5F00_thumb_5F00_4415D210.png" width="300" height="518"&gt;&lt;/a&gt;In our Expert Directory App, used the Imaginet sphere as my favicon, and added a bit of JavaScript to read query string arguments (see SampleApp.SetupUI to see the code in action). This allowed me to setup custom URLs based on their index in the SampleApp.contact array, and select the appropriate contact to appear when clicked on in the jump list.&lt;/p&gt;  &lt;p&gt;Once the user pins the site to their taskbar, we not only get a branded window, but we also get some custom functionality in the taskbar. And with that, we have taken our existing code  and expanded it to provide a custom desktop experience.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Author’s Note: I strongly recommend that you complete step 5 in the BuildMyPinnedSite tutorial as you’ll want to make sure your users know they can make your app a desktop app with no work at all.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;Future Iterations: Mobile and Windows 8 [Hopefully]&lt;/h3&gt;  &lt;p&gt;With the web and desktop experiences in the bag, we can take our code back to our boss’ smartphone by using Media Queries in CSS3. Media queries allow you to put some logic around your styling rules in CSS. If you check out the &lt;em&gt;future-style.css&lt;/em&gt; you will these examples:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/6837.mediaqueries_5F00_0CEC4417.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:10px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="mediaqueries" border="0" alt="mediaqueries" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/7870.mediaqueries_5F00_thumb_5F00_52FD012A.png" width="600" height="285"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The first query will apply the style wp7 only to devices that have a maximum width of 480px (e.g. Windows Phone 7, iPhones, etc…). If you don’t want to be specific at the device level, you can apply your rules based on the browser width rather than getting device specific.&lt;/p&gt;  &lt;p&gt;Microsoft has even announced the &lt;a href="http://www.microsoft.com/presspass/features/2011/jun11/06-01corporatenews.aspx"&gt;HTML5 and JavaScript apps will be able to run natively in the next version of Windows&lt;/a&gt;, which opens all kinds of new possibilities for the experiences we can provide for other devices.&lt;/p&gt;  &lt;h3&gt;In Conclusion…&lt;/h3&gt;  &lt;p&gt;I really hope that this post demonstrated that HTML5 and JavaScript have really come a long way from the days of Geocities and the infamous blink tag. If you have avoided JavaScript for this long, it just might be the time to start looking into again and see what experiences you can build with HTML5.&lt;/p&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10213720" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/bcsviEDuI8Y" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/cdndevs/archive/2011/09/20/multi-platform-apps-with-html5-and-ie9.aspx</feedburner:origLink></item><item><title>iccv11: 
A Nonparametric Riemannian Framework on Tensor Field with Application to Foreground ...</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/A0y-ar3kgvQ/ICCV2011_RuiCaseiro.pdf</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CVPapers</dc:creator><pubDate>Mon, 19 Sep 2011 15:00:00 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/9df3c23c730b953a</guid><description>Sep 20, 
&lt;dt&gt;A Nonparametric Riemannian Framework on Tensor Field with Application to Foreground Segmentation (&lt;a href="http://www.isr.uc.pt/~pedromartins/Publications/ICCV2011_RuiCaseiro.pdf"&gt;PDF&lt;/a&gt;)&lt;/dt&gt;
&lt;dd&gt;Rui Caseiro (ISR-FCTUC), João  F. Henriques (ISR-FCTUC), &lt;a href="http://www.isr.uc.pt/~pedromartins/"&gt;Pedro Martins&lt;/a&gt; (ISR-FCTUC), Jorge Batista (ISR-FCTUC)&lt;/dd&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/A0y-ar3kgvQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://www.isr.uc.pt/~pedromartins/Publications/ICCV2011_RuiCaseiro.pdf</feedburner:origLink></item><item><title>Interesting Links 20 September 2011</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/ASM89s7pCUQ/interesting-links-20-september-2011.aspx</link><category>education</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alfred Thompson</dc:creator><pubDate>Tue, 20 Sep 2011 02:36:00 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/d6ac95c236d7cd54</guid><description>&lt;p&gt;I really had to post the information about the new Game development course yesterday (&lt;a href="http://blogs.msdn.com/b/alfredth/archive/2011/09/19/game-development-with-xna-curriculum-semester-course.aspx"&gt;Game Development with XNA Curriculum–Semester Course&lt;/a&gt;). I’m pretty excited about that material. Teacher developed and tested and aligned to standards. And it is game development. How cool is that? Closely related to that the opening of the new &lt;a href="http://imaginecup.us"&gt;Imagine Cup US&lt;/a&gt; website (Blogged at &lt;a href="http://blogs.msdn.com/b/alfredth/archive/2011/09/15/imagine-cup-2012-changing-the-world-for-the-better.aspx"&gt;Imagine Cup 2012–Changing The World For The Better&lt;/a&gt; last week). It’s not too soon to think about putting some student teams together for that. Most high school students we’ve seen have competed in the &lt;a href="http://www.imaginecup.us/competitions/GameDesign/index.aspx"&gt;Game Design&lt;/a&gt; or &lt;a href="http://www.imaginecup.us/competitions/ITChallenge/index.aspx"&gt;IT Challenge&lt;/a&gt;.. I’m hoping we see some highly motivated students enter this year though. Of course I ran into more stuff than that last week. This week’ links include a number of opportunities for students and teachers.&lt;/p&gt;  &lt;p&gt;Start with the &lt;a href="http://ow.ly/6vnlr"&gt;NCWIT Award for Aspirations in Computing&lt;/a&gt; for high school girls.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The NCWIT Award for Aspirations in Computing honors young women active and interested in computing and technology. We are looking for next generation of technical talent. Award winners receive cool prizes, gadgets, scholarships and all girls can join a community of fellow technically-inclined young women.. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And don’t forget the &lt;a href="http://blogs.msdn.com/b/alfredth/archive/2011/09/09/nfte-world-series-of-innovation.aspx"&gt;NFTE World Series of Innovation&lt;/a&gt; that I wrote about last week. It’s a really interesting set of challenges for students in a wide range of ages.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://bit.ly/qqjBZt"&gt;Program Call for Participation ISTE 2012 Now&lt;/a&gt; open thru Oct. 5 San Diego here we come. Are you doing interesting things in your computer science courses? We really need more CS related presentations at ISTE. There are always a good bunch of CS teachers there looking for new ways to do things. &lt;/p&gt;  &lt;p&gt;Do you have things planned for Computer Science Education week? &lt;a href="http://t.co/YRK1EKRl"&gt;http://www.csedweek.org/&lt;/a&gt; “&lt;em&gt;December 4-10, 2011 – is a call to action to share information and offer activities that will advocate for computing and elevate computer science education for students at all levels&lt;/em&gt;.”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/#"&gt;&lt;b&gt; &lt;/b&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="margin:0px;padding:0px 0px 0px 0px"&gt;&lt;br&gt;&lt;br&gt;
&lt;/div&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10213243" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/ASM89s7pCUQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/alfredth/archive/2011/09/20/interesting-links-20-september-2011.aspx</feedburner:origLink></item><item><title>Windows Phone wins another Design Award</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/hC8elgOd39o/windows-phone-wins-another-design-award.aspx</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Phil Cross</dc:creator><pubDate>Tue, 20 Sep 2011 04:01:40 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/0d3c73923d867742</guid><description>&lt;p&gt;Design is more important than ever for both devices and applications so its really rewarding to see Windows Phone win another award which &lt;a href="http://blogs.technet.com/b/next/"&gt;Steve Clayton&lt;/a&gt; wrote about on his blog &lt;a href="http://blogs.technet.com/b/next/archive/2011/09/19/windows-phone-wins-another-design-award.aspx"&gt;here&lt;/a&gt;. The &lt;a href="http://www.microsoft.com/design/toolbox/tutorials/windows-phone-7/metro/"&gt;Metro Design Language&lt;/a&gt; is getting noticed. &lt;/p&gt;  &lt;p&gt;If you are writing phone apps or are stuck with a challenge – get in touch via Facebook or hunt down someone at your Uni who is doing a Design course and get the best of both worlds – your dev skills and their design experience.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.idsa.org/content/panel/idea-2011-ipx"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;padding-top:0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-40-55-metablogapi/1122.image_5F00_15C48613.png" width="480" height="250"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can get all the tools from &lt;a href="http://www.DreamSpark.com"&gt;www.DreamSpark.com&lt;/a&gt; and registration on &lt;a href="http://create.msdn.com/en-gb/"&gt;APP HUB&lt;/a&gt; is free if you are a student plus there is a lot of information to get you started! Go on – start developing (with a designer) and publishing that app of an idea you had last week!&lt;/p&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214006" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/hC8elgOd39o" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/microsoftukstudents/archive/2011/09/20/windows-phone-wins-another-design-award.aspx</feedburner:origLink></item><item><title>Re-building infrastructures, skills and lives with Microsoft Certified Trainers- the Haiti story</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/4yYDFoMiHpg/re-building-infrastructures-skills-and-lives-with-microsoft-certified-trainers-the-haiti-story.aspx</link><category>technology</category><category>education</category><category>Windows 7 Firewall</category><category>NetHope</category><category>MCP</category><category>DHCP</category><category>Microsoft Certified Trainers</category><category>DNS</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ellie G Jones</dc:creator><pubDate>Tue, 20 Sep 2011 05:27:00 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/76a11a188cc264f8</guid><description>&lt;h3&gt;Part of the reason I enjoy my role here so much in the Education team at Microsoft is the opportunity I have to see how educators around the UK can use our solutions and technologies to help others find their own potential and build skills to help make for a better and improved way of life.&lt;/h3&gt;  &lt;p&gt;Andrew Bettany, IT Academy Manager at &lt;a href="http://www.york.ac.uk/"&gt;York University&lt;/a&gt; has literally done just that.&lt;/p&gt;  &lt;p&gt;When an earthquake hit Haiti in the Caribbean of January 2010, over 200,000 people lost their lives. Since then, the Haitian people have been trying to rebuild their lives as best possible with very little resources and money. Many of the skilled workers were those who lost their lives meaning aid workers found it difficult to find skilled people to call upon to help rebuild the infrastructure of the island.&lt;/p&gt;  &lt;p&gt;Shortly after the earthquake Microsoft and &lt;a title="http://www.nethope.org/" href="http://www.nethope.org/"&gt;NetHope&lt;/a&gt; established links to the island and conducted a IT Skills boot camp for 39 young people, which then led to a six month internship with relief aid agencies which were quickly mobilized to the country.&lt;/p&gt;  &lt;p&gt;Andrew remembered a presentation by Ken Rosen of Microsoft Learning about NetHope, a non-profit organization partnered with Microsoft who uses IT to assist in relief efforts around the world. At the MCT Summit in Zurich a few years ago, Ken spoke to the audience of 450 IT Trainers about the issues that the aid workers across the world were facing and asked for any volunteers to go out and help rebuild the technology skills infrastructure.&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-52-metablogapi/5657.andrew-bettany-v-2.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px 0px 0px 13px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="andrew bettany v 2" border="0" alt="andrew bettany v 2" align="right" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-52-metablogapi/8306.andrew-bettany-v-2_5F00_thumb.jpg" width="152" height="192"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, after reading about the success of the initial wave of IT Training in Haiti, Andrew, a &lt;a href="http://www.microsoft.com/learning/en/us/certification/mct.aspx"&gt;Microsoft Certified Trainer&lt;/a&gt; (MCT) for 5 years, volunteered to go out to Haiti and train IT Professionals and Developers from local colleges to become Microsoft Certified Trainers.&lt;/p&gt;  &lt;p&gt;He suggested an additional program which would train the Haitians to become MCT’s themselves - ‘’Train the Trainer’’ - a fantastic idea that would mean Haitian residents could once again become self-sufficient and in turn enable them to take control of their own destiny and train others directly; thus providing a local skill base of IT professionals in Haiti.&lt;/p&gt;  &lt;p&gt;Before Andrew travelled out to Haiti, he set up a plan and agenda to implement the training in a week long ‘boot camp’’, which included a packed out week of training, exams and presentations, testing all round skills of the students. &lt;/p&gt;  &lt;p&gt;Together NetHope, Microsoft and Andrew narrowed the 35 online applications to just 13 whom demonstrated the necessary desire, experience, ambition and learner focused mind-set to attend the week’s training in IT and delivery skills hosted and supported in a community college (Ecole Supérieure d’Infotronique d’Haiti (ESIH), based in Port-au-Prince, the Haiti capital. &lt;/p&gt;  &lt;p&gt;Over the course of the week, the student’s boundaries of learning were indeed stretched. Many were shy and didn’t like to initially ask for help when unsure, and could take up to an hour to complete a task that many of us could complete in a couple of minutes. Andrew had the job of teaching everything from technique and how to apply skills learnt as well as the actual MCT program. The days were long and hard in a room with very little air-conditioning and basic amenities, but incredibly rewarding.&lt;/p&gt;  &lt;p&gt;However over the days, more and more shone through and soon were able to stand up in front of the class and deliver a short 15 minute presentation, such as Windows 7 Firewall, overview of DNS or DHCP, giving good examples of using the skills needed to become an MCT.&lt;/p&gt;  &lt;p&gt;All 13 participants succeeded at the &amp;quot;Train the Trainer&amp;quot; part of the boot camp, and of the 13 students taking the Microsoft Certification Professional (MCP) exams, 5 passed first time and could apply for MCT status, more than doubling the number of MCTs already on the island, with those who didn’t pass, being able to retake over the coming months.&lt;/p&gt;  &lt;p&gt;Microsoft and NetHope will be working together again at the NetHope IT Academy Internship Program at the end of September, an event where the newly minted MCT’s will have the opportunity to present modules in front of 30 recent graduates which aims to help them secure IT work experience with aid agencies to rebuild not only the infrastructure using IT but also help those displaced after the earthquake. &lt;/p&gt;  &lt;p&gt;It’s just over 18 months since the earthquake hit Haiti, many people are still without homes, choosing instead to live in communities built up of tents. Maybe this is down to being frightened that if hit again, they would lose what they had. Hopefully with the help given between Microsoft and NetHope as well as individuals like Andrew, Haiti can slowly begin to re-establish itself. This will not be easy and certainly will not happen overnight, however giving people the confidence and more importantly the ability to use IT to grow and rebuild can only mean they are on their way up.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-52-metablogapi/3823.Haiti-124.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;padding-top:0px" title="Haiti 124" border="0" alt="Haiti 124" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-83-52-metablogapi/2352.Haiti-124_5F00_thumb.jpg" width="615" height="187"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Andrew with his class of students &lt;/p&gt;  &lt;p&gt;You can read more about &lt;a href="http://borntolearn.mslearn.net/btl/b/weblog/archive/2011/07/14/mission-completed-let-the-training-begin.aspx"&gt;this ''Boot Camp''&lt;/a&gt; and read all about the NetHope IT Academy Internship Program via &lt;a href="http://borntolearn.mslearn.net/"&gt;Born To Learn&lt;/a&gt; website.&lt;/p&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214042" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/4yYDFoMiHpg" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/ukhe/archive/2011/09/20/re-building-infrastructures-skills-and-lives-with-microsoft-certified-trainers-the-haiti-story.aspx</feedburner:origLink></item><item><title>Upcoming MSDN Webcasts on SharePoint 2010 and Windows Phone ‘Mango’</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/lfoSzVtwpm8/upcoming-msdn-webcasts-on-sharepoint-2010-and-windows-phone-mango.aspx</link><category>events</category><category>MSDN Belux</category><category>Azure</category><category>WP7</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Katrien DG</dc:creator><pubDate>Tue, 20 Sep 2011 05:37:47 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/e091cbd9abe271bb</guid><description>&lt;p&gt;&lt;strong&gt;Register now for the following MSDN Webcasts:      &lt;br&gt;      &lt;br&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="556"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="46"&gt;         &lt;p&gt;&lt;font style="background-color:#4bacc6"&gt;&lt;font size="4"&gt;&lt;/font&gt;&lt;/font&gt;&lt;strong&gt;&lt;font size="4"&gt;27&lt;/font&gt;               &lt;br&gt;&lt;/strong&gt;&lt;strong&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;SEP&lt;/font&gt;                 &lt;br&gt;&lt;/font&gt;&lt;font size="2"&gt;2011&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="508"&gt;         &lt;p align="left"&gt;&lt;font size="4"&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032492883&amp;amp;Culture=en-US"&gt;Overview of SharePoint 2010 as a Business Intelligence platform&lt;/a&gt;&lt;/font&gt;             &lt;br&gt;&lt;font size="1"&gt;&lt;strong&gt;Timing&lt;/strong&gt; 14:00 – 15:30 | &lt;strong&gt;Type&lt;/strong&gt; Live Webcast | &lt;strong&gt;Language&lt;/strong&gt; English&lt;/font&gt; &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;     &lt;br&gt;In this session, Serge Luca (SharePoint MVP, Devoteam) and Isabelle Van Campenhoudt (Data Branch Manager, ICT7) will give you an overview of the Business Intelligence features of SharePoint 2010. The following technologies will be illustrated :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SharePoint Visio Services &lt;/li&gt;    &lt;li&gt;SharePoint PerformancePoint Services &lt;/li&gt;    &lt;li&gt;Reporting Services &lt;/li&gt;    &lt;li&gt;SharePoint Excel Services &lt;/li&gt;    &lt;li&gt;Powerpivot for SharePoint &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Attend this webcast and get a &lt;b&gt;&lt;u&gt;FREE&lt;/u&gt; MSDN &amp;amp; TechNet Coffee Cup!&lt;/b&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Speakers&lt;/strong&gt; Serge Luca &amp;amp; Isabelle Van Campenhoudt     &lt;br&gt;  &lt;br&gt;&lt;img title="Serge Luca" alt="Serge Luca" src="https://blufiles.storage.live.com/y1pTCTKTf9bzJUk_oyLds3XVVBy982NtTK749n6qheTpVQ--qut4_kCs8DiddC9wTEPX0XGKpJPy7w/SergeLuca.jpg?psid=1" width="67" height="101"&gt;    &lt;img title="Isabelle Van Campenhoudt" alt="Isabelle Van Campenhoudt" src="https://blufiles.storage.live.com/y1pJfPamPFtrVQ7bKXuJ_jBlzMZJJCBTX_Dqb7AKNJq3rEMJ_K1sdMdOGOd9-MkJzXNap9mjSrP6Lw/IsabelleVanCampenhoudt.jpg?psid=1" width="76" height="101"&gt;     &lt;br&gt;    &lt;br&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032492883&amp;amp;Culture=en-US"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="Register now" border="0" alt="Register now" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-95-94-metablogapi/7658.registernow_5F00_3.png" width="137" height="41"&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="602"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="48"&gt;         &lt;p align="left"&gt;&lt;font style="background-color:#4bacc6"&gt;&lt;font size="4"&gt;&lt;/font&gt;&lt;/font&gt;&lt;strong&gt;&lt;font size="4"&gt;11&lt;/font&gt;               &lt;br&gt;&lt;/strong&gt;&lt;strong&gt;&lt;font size="3"&gt;&lt;font size="2"&gt;OCT&lt;/font&gt;                 &lt;br&gt;&lt;/font&gt;&lt;font size="2"&gt;2011&lt;/font&gt;&lt;/strong&gt;&lt;font style="background-color:#4bacc6"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="552"&gt;&lt;font size="4"&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032493393&amp;amp;Culture=en-US"&gt;Integrating Bing Maps into your Windows Phone 7.5 Application&lt;/a&gt;&lt;/font&gt;           &lt;br&gt;&lt;font size="1"&gt;&lt;strong&gt;Timing&lt;/strong&gt; 14:00 – 15:30 | &lt;strong&gt;Type&lt;/strong&gt; Live Webcast | &lt;strong&gt;Language&lt;/strong&gt; English&lt;/font&gt;           &lt;br&gt;          &lt;br&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;Abstract      &lt;br&gt;&lt;/strong&gt;Including a Bing Maps control inside your Windows Phone application is a first step. Adding extra functionalities generally comes next. The purpose of this session is to demonstrate how to work with Bing Maps, add push pins, calculate and display a route …     &lt;br&gt;    &lt;br&gt;Attend this webcast and get a &lt;b&gt;&lt;u&gt;FREE&lt;/u&gt; MSDN &amp;amp; TechNet Coffee Cup!&lt;/b&gt;     &lt;br&gt;    &lt;br&gt;&lt;strong&gt;Speaker&lt;/strong&gt; &lt;a href="http://www.neomytic.be/"&gt;Christophe Peerens&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img title="Christophe Peerens" alt="Christophe Peerens" src="http://www.mytic.be/SiteAssets/cpe.jpg" width="71" height="91"&gt;     &lt;br&gt;    &lt;br&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032493393&amp;amp;Culture=en-US"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px" title="Register now" border="0" alt="Register now" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-95-94-metablogapi/8637.registernow_5F00_4.png" width="137" height="41"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br&gt;The &lt;strong&gt;Microsoft Community in Belgium&lt;/strong&gt; is also organizing a number of interesting events in the next few months. Our selection:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://micbru.fikket.com/event/first-mic-thursday"&gt;First MIC Thursday @ MIC Brussels&lt;/a&gt; (15/09/2011) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://events.mic-belgique.be/event/architecture-design-session--20"&gt;Architecture Design Session @ MIC Mons&lt;/a&gt; (19/09/2011) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://micbru.fikket.com/event/architecture-design-session-one-to-one-session-with-an-it-expert"&gt;Architecture Design Session @ MIC Brussels &lt;/a&gt;(22/09/2011) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://micbru.fikket.com/event/discovering-windows-azure-and-the-cloud-technical-opportunity--5"&gt;Discover Windows Azure and the Cloud @ MIC Brussels&lt;/a&gt; (26/09/2011) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.visug.be/Eventdetails/tabid/95/EventId/45/Default.aspx"&gt;VISUG: Behaviour driven development with SpecFlow and WatiN&lt;/a&gt; (27/09/2011) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.azug.be/events/developing-and-deploying-identity-enabled-applications-for-the-cloud"&gt;AZUG: Developing and deploying Identity-enabled applications for the cloud&lt;/a&gt; (29/09/2011) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://events.mic-belgique.be/event/windows-phone-71-multitasking-deep-dive-level-300"&gt;Windows Phone 7.5 : Multitasking Deep Dive (Level 300)&lt;/a&gt; (04/10/2011) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.agileminds.be/event/5/about"&gt;Agile .Net Europe 2011&lt;/a&gt; (10 – 11/10/2011) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.visug.be/Eventdetails/tabid/95/EventId/46/Default.aspx"&gt;VISUG: NuGet for the Enterprise&lt;/a&gt; (11/10/2011) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.azug.be/events/alm-for-windows-azure"&gt;AZUG: ALM for Windows Azure&lt;/a&gt; (20/10/2011) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://micbru.fikket.com/event/mic-boostcamp-3-days-kick-off-session"&gt;MIC Brussels Boostcamp 3 Day Kick Off&lt;/a&gt; (26 – 28/10/2011) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Keep an eye on our&lt;strong&gt; local MSDN events page&lt;/strong&gt; (&lt;a href="http://msdn.microsoft.com/nl-be/aa570302"&gt;Dutch&lt;/a&gt; | &lt;a href="http://msdn.microsoft.com/fr-be/aa570302"&gt;French&lt;/a&gt;) to get an overview of all planned Microsoft – or community run events for developers (bookmark tip!).&lt;/p&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214045" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/lfoSzVtwpm8" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/katriend/archive/2011/09/20/upcoming-msdn-webcasts-on-sharepoint-2010-and-windows-phone-mango.aspx</feedburner:origLink></item><item><title>Silverlight for Windows Phone Toolkit Updated</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/elH24MbMMXA/silverlight-for-windows-phone-toolkit-updated.aspx</link><category>Source Code</category><category>Silverlight</category><category>Windows Phone</category><category>Windows Phone 7</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bruce Kyle</dc:creator><pubDate>Tue, 20 Sep 2011 06:59:00 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/0e9841fa3e76f39b</guid><description>&lt;p&gt;&lt;a href="http://silverlight.codeplex.com/releases/view/52297"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;float:right;padding-top:0px;border-width:0px" title="phone" border="0" alt="phone" align="right" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-67-metablogapi/1462.phone_5F00_176C2173.png" width="72" height="72"&gt;Silverlight for Windows Phone Toolkit&lt;/a&gt; has been updated. The toolkit offers developers additional controls for Windows Phone application development, designed to match the rich user experience of the &lt;a href="http://create.msdn.com"&gt;Windows Phone&lt;/a&gt; 7.&lt;/p&gt;...(&lt;a href="http://blogs.msdn.com/b/usisvde/archive/2011/09/20/silverlight-for-windows-phone-toolkit-updated.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10212951" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/elH24MbMMXA" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/usisvde/archive/2011/09/20/silverlight-for-windows-phone-toolkit-updated.aspx</feedburner:origLink></item><item><title>Microspeak: The bug farm</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/A46R3n8YEW0/10213768.aspx</link><category>Other</category><category>Microspeak</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Raymond Chen - MSFT</dc:creator><pubDate>Tue, 20 Sep 2011 07:00:00 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/54397556cf4f2dc8</guid><description>&lt;p&gt;
In its most general sense,
the term &lt;i&gt;bug farm&lt;/i&gt; refers
to something that is a rich source of bugs.
&lt;/p&gt;
&lt;p&gt;
It is typically applied to code which
is nearly unmaintainable.
Code can arrive in this state through a variety of means.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Poor initial design.
&lt;li&gt;An initial design that has been pushed
    far beyond its original specification
    (resulting in features built on top of other features in weird ways).
&lt;li&gt;Overwhelming compatibility constraints
    such that the tiniest perturbation is
    highly likely to cause some application somewhere to stop working.
&lt;li&gt;Responsibility for the code residing in people whom we shall
    euphemistically describe as
    "failing to meet your personal standards of code quality."
&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;
The term is most often used as a cautionary term,
calling attention to areas where there is high risk that
code you're about to write is going to result in a bug farm.
&lt;/p&gt;
&lt;blockquote&gt;
Aren't we setting ourselves up for a bug farm?
&lt;/blockquote&gt;
&lt;blockquote&gt;
This could easily lead to a bug farm
from different lifetimes for this various state objects.
&lt;/blockquote&gt;
&lt;p&gt;
The term is quite popular at Microsoft
(&lt;b&gt;pre-emptive snarky comment&lt;/b&gt;: because Microsoft software is all
one giant bug farm).
Here are some citations just from &lt;code&gt;blogs.msdn.com&lt;/code&gt;:
&lt;blockquote&gt;
Layout runs under disable processing. The reason we did that is
because, well,
&lt;a href="http://blogs.msdn.com/b/nickkramer/archive/2006/05/06/591252.aspx"&gt;
reentrant layout is a bug farm&lt;/a&gt;.
&lt;/blockquote&gt;
&lt;blockquote&gt;
A lot of testers suddenly realized that case sensitivity is
&lt;a href="http://blogs.msdn.com/b/michkap/archive/2005/05/11/416293.aspx"&gt;
a veritable bug farm&lt;/a&gt;
on a project that thinks it is ready to go, but has not yet tried it.
&lt;/blockquote&gt;
&lt;blockquote&gt;
That type of implicit vs. explicit inference also
&lt;a href="http://blogs.msdn.com/b/ansonh/archive/2004/03/13/89185.aspx"&gt;
turned out to be a bug farm&lt;/a&gt;.
&lt;/blockquote&gt;
&lt;blockquote&gt;
Did you forget to handle an entire set of test cases? 
Is the features implementation overly complex and
&lt;a href="http://blogs.msdn.com/b/larsberg/archive/2005/09/05/461182.aspx"&gt;
going to be a bug farm&lt;/a&gt;?
&lt;/blockquote&gt;
&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10213768" width="1" height="1"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/A46R3n8YEW0" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/oldnewthing/archive/2011/09/20/10213768.aspx</feedburner:origLink></item><item><title>Plug for our Windows Phone Online Conference</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/s66baQTVNGg/plug-for-our-windows-phone-online-conference.aspx</link><category>Musings</category><category>Technology General</category><category>Community</category><category>Event Q+A</category><category>Windows Phone</category><category>wp7</category><category>wp7dev</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">MikeO [MSFT]</dc:creator><pubDate>Tue, 20 Sep 2011 07:40:59 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/06ac69d3745862a8</guid><description>Just a quick plug for our upcoming online conference (Wednesday 5th October) which is themed “Design from a User Perspective”. More details on the UK MSDN blog here ....(&lt;a href="http://blogs.msdn.com/b/mikeormond/archive/2011/09/20/plug-for-our-windows-phone-online-conference.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214093" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/s66baQTVNGg" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/mikeormond/archive/2011/09/20/plug-for-our-windows-phone-online-conference.aspx</feedburner:origLink></item><item><title>Getting Feedback on Working Software with Visual Studio 11</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/Ers3R3kwkGU/feedback-on-working-software.aspx</link><category>Visual Studio ALM</category><category>Feedback</category><category>Agile</category><category>vNext</category><category>Microsoft Feedback Manager</category><category>ALM</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Abhishek Agrawal [MSFT]</dc:creator><pubDate>Tue, 20 Sep 2011 07:53:00 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/ec23224bd811127c</guid><description>&lt;p&gt;How often have you built the software that your users asked for, but not necessarily what they wanted? One of the determining factors between success and failure of software projects is getting the right feedback, at the right time, from the right individuals. In Microsoft Visual Studio 11, we have enabled feedback deeply throughout the product (refer to &lt;a href="http://blogs.msdn.com/b/bharry/archive/2011/06/21/the-importance-of-feedback-in-software-development.aspx"&gt;Brian Harry's blog&lt;/a&gt; to get the full context), such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Feedback on priorities&lt;/li&gt;
&lt;li&gt;Feedback on requirements/design&lt;/li&gt;
&lt;li&gt;Feedback on code&lt;/li&gt;
&lt;li&gt;Feedback on working software&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; In this post, we will focus on the &amp;quot;Feedback on working software&amp;quot; phase.&lt;/p&gt;
&lt;p&gt; As the product team keeps churning out incremental &amp;quot;consumable modules/bits&amp;quot; at end of each sprint, it is critical not just to test these within the product team (Dev/QA etc), but also to involve the business stakeholders to evaluate it from business perspective. The frequency of such stakeholder reviews can vary within teams, but it is often beneficial to get feedback from stakeholders early and often, so that you can fine tune/course correct early on if there are any deviations from the business side of the house. Visual Studio 11 helps you optimize this workflow by enabling both Solicited and Unsolicited feedback workflows using Microsoft Feedback Manager.&lt;/p&gt;
&lt;p&gt; &lt;b&gt;&lt;span style="text-decoration:underline"&gt;Solicited Feedback Workflow&lt;/span&gt;&lt;/b&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="text-decoration:underline"&gt;Product Owner initiates Feedback Request&lt;/span&gt;: As a product owner, when you feel that certain user stories have stabilized and would be a good time to get stakeholder feedback, you can solicit feedback by initiating a Feedback Request. Within the feedback request, you specify the set of user stories on which you want feedback on, the set of stakeholders from whom you want feedback and provide any background context for them to get started. When you submit this request, the system generates a set of "feedback work items" for each user story/stakeholder combination (traceability between user stories and feedback work items is created automatically) and sends an email to the selected stakeholders&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration:underline"&gt;Stakeholder provides feedback on working software&lt;/span&gt;: Within the email, links are provided to install the Microsoft Feedback Manager and then launch the feedback session. The stakeholders can start providing their feedback on individual user stories using the Microsoft Feedback Manager, which allows them to capture rich feedback in a simple and consolidated manner. The stakeholder can capture rich text notes, take screenshots and annotate them, capture all his interactions with the application using desktop video &amp;amp; audio recording, add file attachments etc. Once the stakeholder submits the rich feedback, it is captured in the corresponding &amp;quot;feedback work item&amp;quot; in Team Foundation Server.&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration:underline"&gt;Product owner acting upon the feedback&lt;/span&gt;: As a product owner, you can query for the status of all your requests and see who have/have not responded to your feedback requests. Since all the feedback from the stakeholder for a user story is consolidated and captured in a "feedback work item", you can process/review the feedback and take next set of actions such as filing of new bugs, creating new user stories etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;b&gt;&lt;span style="text-decoration:underline"&gt;Unsolicited Feedback Workflow&lt;/span&gt;&lt;/b&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="text-decoration:underline"&gt;Stakeholder provides feedback on working software&lt;/span&gt;: The stakeholder can use the Microsoft Feedback Manager to provide feedback even when there is no explicit feedback request from the product team. Consider the scenario where the stakeholder is interacting with the application on his own and runs into issues that he wants to pass onto the product team. In this case, he can simply launch the Feedback tool from Start-&amp;gt;Programs, capture his rich feedback (notes, screenshots, annotations, video/audio, attachments etc) and then issue a Submit. By default, the tool automatically connects to the last used Team Foundation Server/Project, which can be overridden at any time. The feedback is again captured within the &amp;quot;feedback work item&amp;quot; - the only difference being that these work items do not have any traceability with a user story, and hence categorized as &amp;quot;general feedback&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration:underline"&gt;Product owner acting upon the feedback&lt;/span&gt;: As a product owner, you can query for general feedback work items and process/review the feedback and take next set of actions, as appropriate.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;b&gt;&lt;span style="text-decoration:underline"&gt;Links&lt;/span&gt;&lt;/b&gt;:&lt;/p&gt;
&lt;p&gt;The following MSDN topics go through the solicited workflow in lot more detail:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/hh301769(VS.110).aspx"&gt;Request &amp;amp; Process Stakeholder feedback&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh362461(VS.110).aspx"&gt;Provide feedback by using Microsoft Feedback Manager&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ravi Shanker, Prinicipal Program Manager, Visual Studio ALM&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214100" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/Ers3R3kwkGU" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/visualstudioalm/archive/2011/09/20/feedback-on-working-software.aspx</feedburner:origLink></item><item><title>Handling ASP .NET session expired message in SharePoint 2010 through javascript</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/m-hYHZPwo_o/handling-asp-.net-session-expired-message-in-sharepoint-2010-through-javascript.aspx</link><category>javascript</category><category>ReportViewer</category><category>timeout</category><category>ASP .NET Session Expired</category><category>SharePoint 2010</category><category>Report Server</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gaurav Badhan</dc:creator><pubDate>Tue, 20 Sep 2011 08:14:00 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/d113b2da189fcd56</guid><description>&lt;p&gt;There are situations when one needs to handle session expiring in SharePoint solution. This error can occur either because of Session time out after some time as specified in Web.Config, or due to some external control that is being used in the SharePoint site.&lt;/p&gt;
&lt;p&gt;An example is using SQL Server 2008 Reporting Services report viewer web part to display SSRS reports. The default timeout of report server is 10 minutes. So if you try to view the report second time after being idle for 10 minutes, it will return you a message “ASP .NET session expired”. This is a more ‘Technical’ message that business users might find unusual.&lt;/p&gt;
&lt;p&gt;In order to handle this we might want to either: Give a more specific message and tell user to refresh the page, or redirect to a login or error page. That can be customized as per your requirement; I will just show an&lt;br&gt;error message with a button to refresh the page.&lt;/p&gt;
&lt;p&gt;To handle this situation I will be using JavaScript and apply it to master page so that it will be applicable to all the pages in the application.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Open your master page in SharePoint designer and start editing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Add the div that will appear as popup. You can add it anywhere in the page, I will add it just before the div containing &amp;lt;SharePoint:SPRibbon&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div id=&amp;quot;SessionTimeMessageDiv&amp;quot; style=&amp;quot;height:0px; display:none;&amp;quot;&amp;gt; &lt;br&gt;     &amp;lt;div id=&amp;quot;SessionTimeOutDiv&amp;quot; style=&amp;quot; position:relative; display:none; top: 0px; height: 100%; &lt;br&gt;         background-color: White; opacity: 0.75; filter: alpha(opacity=75); vertical-align: middle;&lt;br&gt;         left: 0px; z-index: 99998; width: 100%; position: absolute;  text-align:center;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;              &lt;br&gt; &lt;br&gt;     &amp;lt;div style=&amp;quot;width:400px; text-align:center; position:relative;  filter: alpha(opacity=100);&lt;br&gt;          vertical-align:middle; top:200px; left:40%; height:80px; border:thin lightBlue solid;&lt;br&gt;          background-color:white; z-index:99999;&amp;quot;&amp;gt; &lt;br&gt;       &amp;lt;br/&amp;gt; &lt;br&gt;       &amp;lt;asp:Label ID=&amp;quot;lblSessionTimeOut&amp;quot; runat=&amp;quot;server&amp;quot;  &lt;br&gt;                  Text=&amp;quot;You session has expired, please press Refresh button or refresh the page&amp;quot;&amp;gt;&lt;br&gt;       &amp;lt;/asp:Label&amp;gt; &lt;br&gt;       &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt; &lt;br&gt;       &amp;lt;asp:Button ID=&amp;quot;Button1&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Refresh&amp;quot; OnClientClick=&amp;quot;refreshPage();&amp;quot;/&amp;gt; &lt;br&gt;    &amp;lt;/div&amp;gt; &lt;br&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;I have added 3 &amp;lt;div&amp;gt;s to have the effect of grayed out disabled page and Refresh message on top of that. Please note that on click of Refresh button, I am calling another JavaScript function to refresh the page.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Add JavaScript functions to the master page&lt;/p&gt;
&lt;p&gt;       //Global variable to hold the timeout time &lt;br&gt;       var sessionTimeout; &lt;br&gt; &lt;br&gt;      // Reset the timeout to a static value. Will get this from web config later&lt;br&gt;       function resetTimer() &lt;br&gt;       { &lt;br&gt;         sessionTimeout=5; &lt;br&gt;       } &lt;br&gt; &lt;br&gt;      // function to refresh the page &lt;br&gt;      function refreshPage()&lt;br&gt;      {          &lt;br&gt;        location.reload(true); &lt;br&gt;      }&lt;br&gt; &lt;br&gt;      // Counter function. It is a recursive function that will keep calling itself each minute, you can reduce the time to few seconds for debugging&lt;br&gt; &lt;br&gt;      function countTimeout() &lt;br&gt;      {&lt;br&gt;        sessionTimeout = sessionTimeout - 1;&lt;br&gt;        if(sessionTimeout &amp;gt;= 0)&lt;br&gt;        { &lt;br&gt;           //call the function again after 1 minute delay         &lt;br&gt;              &lt;br&gt;          window.setTimeout(&amp;quot;countTimeout()&amp;quot;, 60000); &lt;br&gt;        } &lt;br&gt;        else&lt;br&gt;        {&lt;br&gt;          //show message box&lt;br&gt;           document.getElementById(&amp;quot;SessionTimeOutDiv&amp;quot;).style.display = &amp;quot;block&amp;quot;;                 &lt;br&gt;           document.getElementById(&amp;quot;SessionTimeMessageDiv&amp;quot;).style.display = &amp;quot;block&amp;quot;;             &lt;br&gt;        }&lt;br&gt;      }&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Now we need to initialize the timer on page load and reset it whenever user is doing some activity on the page. We will reset the timer each time user clicks anywhere or presses some key. For this we need to call javascript on body load.&lt;/p&gt;
&lt;p&gt; &lt;strong&gt;Step 4:&lt;/strong&gt; Handle Body onload event: &lt;/p&gt;
&lt;p&gt;Usually body load event of master page is already handled in SharePoint master page, so now we need to call multiple functions on body load. There is a crack for this. Taking example of NightAndDay.master:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;body scroll=&amp;quot;no&amp;quot; onload=&amp;quot;if(typeof(_spBodyOnLoadWrapper) != &amp;#39;undefined&amp;#39;) _spBodyOnLoadWrapper();&amp;quot; class=&amp;quot;nightandday&amp;quot;&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Change this to: &lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;body scroll=&amp;quot;no&amp;quot; onload=”BodyLoad();&amp;quot;class=&amp;quot;nightandday&amp;quot;&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Move old code to bodyLoad() function.&lt;/p&gt;
&lt;p&gt;function bodyLoad() &lt;br&gt;{ &lt;br&gt;     if (typeof(_spBodyOnLoadWrapper)!= &amp;#39;undefined&amp;#39;) _spBodyOnLoadWrapper(); &lt;br&gt;} &lt;/p&gt;
&lt;p&gt;Now we can call our timer from this function. So the final function should look like:&lt;/p&gt;
&lt;p&gt;function bodyLoad()&lt;br&gt;{ &lt;br&gt;    if (typeof(_spBodyOnLoadWrapper)!= &amp;#39;undefined&amp;#39;) _spBodyOnLoadWrapper(); &lt;br&gt;    resetTimer(); &lt;br&gt;    countTimeout(); &lt;br&gt;} &lt;/p&gt;
&lt;p&gt;Reset the timer when a user clicks on the screen or press any key. For this, add 2 more events on &amp;lt;body&amp;gt;: onclick=&amp;quot;resetTimer()&amp;quot; and onkeypress=&amp;quot;resetTimer()&amp;quot; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;: Read the session timeout: &lt;/p&gt;
&lt;p&gt;Now everything is ready except that the timeout is hardcoded. We will get it from Session.Timeout property. session timeout property can be fetched from following web.config entry:&lt;/p&gt;
&lt;p&gt;&amp;lt;&lt;span style="color:#a31515;font-family:Consolas;font-size:x-small" face="Consolas" color="#a31515" size="2"&gt;&lt;span style="color:#a31515;font-family:Consolas;font-size:x-small" face="Consolas" color="#a31515" size="2"&gt;&lt;span style="color:#a31515;font-family:Consolas;font-size:x-small" face="Consolas" color="#a31515" size="2"&gt;sessionState&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-family:Consolas;font-size:x-small" face="Consolas" color="#ff0000" size="2"&gt;&lt;span style="color:#ff0000;font-family:Consolas;font-size:x-small" face="Consolas" color="#ff0000" size="2"&gt;&lt;span style="color:#ff0000;font-family:Consolas;font-size:x-small" face="Consolas" color="#ff0000" size="2"&gt;mode&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small" face="Consolas" size="2"&gt;&lt;span style="font-family:Consolas;font-size:x-small" face="Consolas" size="2"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;InProc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small" face="Consolas" size="2"&gt;&lt;span style="font-family:Consolas;font-size:x-small" face="Consolas" size="2"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-family:Consolas;font-size:x-small" face="Consolas" color="#ff0000" size="2"&gt;&lt;span style="color:#ff0000;font-family:Consolas;font-size:x-small" face="Consolas" color="#ff0000" size="2"&gt;&lt;span style="color:#ff0000;font-family:Consolas;font-size:x-small" face="Consolas" color="#ff0000" size="2"&gt;timeout&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small" face="Consolas" size="2"&gt;&lt;span style="font-family:Consolas;font-size:x-small" face="Consolas" size="2"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small" face="Consolas" size="2"&gt;&lt;span style="font-family:Consolas;font-size:x-small" face="Consolas" size="2"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color:#0000ff;font-family:Consolas;font-size:x-small" face="Consolas" color="#0000ff" size="2"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Try reading sessionTimeout using code block in master page as: &amp;lt;%=Session.Timeout%&amp;gt;. This will throw an exception saying: &lt;strong&gt;“Code blocks are not allowed in this file”&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So I will write a custom control, add it to the master page and read the value in javascript.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; There can be other ways to read this value but I have not explored them. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Add user control:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Create a new SharePoint solution in visual studio.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add SharePoint mapped “ControlTemplates” folder.&lt;/li&gt;
&lt;li&gt;Add a new User control – SessionTimeOut.ascx.&lt;/li&gt;
&lt;li&gt;Add following code to the ascx file: &lt;br&gt;&amp;lt;div id =&amp;quot;timeout&amp;quot;&amp;gt;&amp;lt;%=Session.Timeout%&amp;gt;&amp;lt;/div&amp;gt;&lt;/li&gt;
&lt;li&gt;Deploy the solution. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Include the user control in master page: &lt;/p&gt;
&lt;p&gt;Register the TagPrefix. Add following line before &amp;lt;html&amp;gt; tag:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;useruc&amp;quot; TagName=&amp;quot;SessionTimeOut&amp;quot; src=&amp;quot;~/_CONTROLTEMPLATES/Sharepoint.UI.Webparts/SessionTimeOut.ascx&amp;quot;%&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Add following &amp;lt;div&amp;gt; in the master page body:&lt;/p&gt;
&lt;p&gt;      &amp;lt;div style=&amp;quot;display:none;&amp;quot; id=&amp;quot;SessionDetails&amp;quot;&amp;gt;&lt;br&gt;           &amp;lt;useruc: SessionTimeOut id=&amp;quot;Idsession&amp;quot; runat=&amp;quot;server&amp;quot; EnableViewState=&amp;quot;false&amp;quot;&amp;gt; &amp;lt;/useruc:AdminUser&amp;gt;        &lt;br&gt;      &amp;lt;/div&amp;gt; &lt;/p&gt;
&lt;p&gt;Now we will have the session timeout available on the master page inside a hidden div named "timeout". This is what we added in the user control and can be read as:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;document.getElementById("timeout").innerText;&lt;/em&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Now we have everything in place. The final JavaScript will look like: &lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="798"&gt;
&lt;p&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br&gt;  &lt;br&gt;  var sessionTimeout; &lt;br&gt;  &lt;br&gt;  function bodyLoad() &lt;br&gt;  { &lt;br&gt;     if(typeof(_spBodyOnLoadWrapper) != &amp;#39;undefined&amp;#39;) _spBodyOnLoadWrapper(); &lt;br&gt;     resetTimer(); &lt;br&gt;     countTimeout(); &lt;br&gt;  }&lt;br&gt;  &lt;br&gt;  function resetTimer()&lt;br&gt;  {&lt;br&gt;   //Read timeout from custom control &lt;br&gt;   sessionTimeout=document.getElementById(&amp;quot;timeout&amp;quot;).innerText; &lt;br&gt;  } &lt;br&gt; &lt;br&gt;  function refreshPage()  &lt;br&gt;  {   &lt;br&gt;     location.reload(true);&lt;br&gt;  } &lt;br&gt; &lt;br&gt;  function countTimeout()&lt;br&gt;  {&lt;br&gt;    sessionTimeout = sessionTimeout - 1; &lt;br&gt;    if(sessionTimeout &amp;gt;= 0) &lt;br&gt;    { &lt;br&gt;       //call the function again after 1 minute delay      &lt;br&gt;          &lt;br&gt;       window.setTimeout(&amp;quot;countTimeout()&amp;quot;, 60000); &lt;br&gt;    } &lt;br&gt;    else &lt;br&gt;    {&lt;br&gt;       //show message box&lt;br&gt; &lt;br&gt;       document.getElementById(&amp;quot;SessionTimeOutDiv&amp;quot;).style.display = &amp;quot;block&amp;quot;; &lt;br&gt;       document.getElementById(&amp;quot;SessionTimeMessageDiv&amp;quot;).style.display = &amp;quot;block&amp;quot;;              &lt;br&gt;    } &lt;br&gt;} &lt;br&gt;&amp;lt;/script&amp;gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;The &amp;lt;body&amp;gt; tag of master page should look like:&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="798"&gt;
&lt;p&gt;&amp;lt;body scroll=&amp;quot;no&amp;quot;  onload=&amp;quot;bodyLoad()&amp;quot; onclick=&amp;quot;resetTimer()&amp;quot;  onkeypress=&amp;quot;resetTimer()&amp;quot; class=&amp;quot;nightandday&amp;quot;&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;And the code to add in the &amp;lt;body&amp;gt; of master page: &lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="798"&gt;
&lt;p&gt;    &amp;lt;div style=&amp;quot;display:none;&amp;quot; id=&amp;quot;SessionDetails&amp;quot;&amp;gt; &lt;br&gt;       &amp;lt;useruc: SessionTimeOut id=&amp;quot;Idsession&amp;quot; runat=&amp;quot;server&amp;quot; EnableViewState=&amp;quot;false&amp;quot;&amp;gt; &lt;br&gt;       &amp;lt;/useruc:AdminUser&amp;gt;       &lt;br&gt;   &amp;lt;/div&amp;gt; &lt;br&gt;  &lt;br&gt;  &amp;lt;div id=&amp;quot;SessionTimeMessageDiv&amp;quot; style=&amp;quot;height:0px; display:none;&amp;quot;&amp;gt; &lt;br&gt;      &amp;lt;div id=&amp;quot;SessionTimeOutDiv&amp;quot; style=&amp;quot; position:relative;display:none; top: 0px; height: 100%;background-color: White; opacity: 0.75;&lt;br&gt;             filter: alpha(opacity=75); vertical-align: middle;left: 0px; z-index: 99998; width: 100%; position: absolute;  text-align: center;&amp;quot;&amp;gt;&lt;br&gt;      &amp;lt;/div&amp;gt; &lt;br&gt;               &lt;br&gt;      &amp;lt;div style=&amp;quot;width:400px; text-align:center; position:relative; filter:alpha(opacity=100); vertical-align:middle; top:200px; &lt;br&gt;              left:40%; height:80px; border:thin lightBlue solid; background-color:white; z-index:99999;&amp;quot;&amp;gt; &lt;br&gt;         &amp;lt;br/&amp;gt; &lt;br&gt;         &amp;lt;asp:Label ID=&amp;quot;lblSessionTimeOut&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;You session has expired, please press Refresh button or refresh the page&amp;quot;&amp;gt; &lt;br&gt;         &amp;lt;/asp:Label&amp;gt; &lt;br&gt;         &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt; &lt;br&gt;         &amp;lt;asp:Button ID=&amp;quot;Button1&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Refresh&amp;quot; OnClientClick=&amp;quot;refreshPage();&amp;quot; /&amp;gt; &lt;br&gt;      &amp;lt;/div&amp;gt; &lt;br&gt;  &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p&gt;Thats all the coding. For debugging, try reducing the timeout in web.config and reduce the time from 60000 to 15000 in window.setTimeout(&amp;quot;countTimeout()&amp;quot;, 60000).&lt;/p&gt;
&lt;p&gt;Important note: If you are using some external control in your pages that has its own timeout, then we need to make sure that the timeout mentioned in web.config should be less than or equal to that of enternal.&lt;/p&gt;
&lt;p&gt;For example, you are using SQL Server Reporting Services ReportViewer to show SSRS reports that are hosted on a report server. Now the default time out of report server is 10 minutes, and if you set timeout in web.config as 30 minutes, then this approach will not work as we are reading from web.config.&lt;/p&gt;
&lt;p&gt;In this case, there are 2 options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Decrease the timeout in web.config to match to report server.&lt;/li&gt;
&lt;li&gt;Increase the timeout in report server to have timeout more than or equal to that of web.config.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214111" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/m-hYHZPwo_o" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/gauravbadhan/archive/2011/09/20/handling-asp-.net-session-expired-message-in-sharepoint-2010-through-javascript.aspx</feedburner:origLink></item><item><title>Windows Phone 7 Game Design: Placing the image in a specific point</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/oBQd04tacCY/windows-phone-7-game-design-placing-the-image-in-a-specific-point.aspx</link><category>Windows Phone 7</category><category>Windows Phone 7, WP7 Accelerometer simulator, Windows Phone 7 Accelerometer simulator</category><category>Windows Phone 7, Windws Phone 7, Windows Phone 7 Default template, Windows Phone 7 security, Windows phone 7 FM-HD radio, Windows Phone 7 and Cloud, Windows Phone 7, WP7 Accelerometer simulator, Windows Phone 7 Accelerometer simulator, Windows Phone 7 Acc</category><category>Windows Phone 7 Beginning programming</category><category>Beginning Windows Phone Programming</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surf4Fun</dc:creator><pubDate>Tue, 20 Sep 2011 09:09:56 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/9ca199d841774906</guid><description>Now you have an image with no background or alpha channel, well that’s nice.  What are you going to do with it?  If it sits in your picture folder, not doing much. All right, let’s take a look at placing a specific image in a point certain location.  No software telling the image to move, and so forth.  This is a blog with many images which requires that you scroll down. The code is attached in zip file at the bottom of blog. Super exciting goal: Starting First open your version...(&lt;a href="http://blogs.msdn.com/b/devschool/archive/2011/09/20/windows-phone-7-game-design-placing-the-image-in-a-specific-point.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214139" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/oBQd04tacCY" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/devschool/archive/2011/09/20/windows-phone-7-game-design-placing-the-image-in-a-specific-point.aspx</feedburner:origLink></item><item><title>XAPFest at Microsoft Research, what did the Microsoft Interns come up with?</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/1GHqPcWgQxM/xapfest-at-microsoft-research-what-did-the-microsoft-interns-come-up-with.aspx</link><category>XAPFEST, Interns build Windows Phone Apps, Microsoft research phone apps, good examples of video presentations, what is the deal about Windows Phone 7, what is the deal with WP7, WP7 seriously,</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Surf4Fun</dc:creator><pubDate>Tue, 20 Sep 2011 09:36:42 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/081258da63ba0131</guid><description>&lt;p&gt;Find out via this video, if you are taking one of my classes, or attend one of my XAPFest, this is a good idea generator.  &lt;/p&gt;  &lt;p&gt;&lt;a title="http://research.microsoft.com/apps/video/default.aspx?id=153673" href="http://research.microsoft.com/apps/video/default.aspx?id=153673"&gt;http://research.microsoft.com/apps/video/default.aspx?id=153673&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you are attending a XAPFest where I am the only Microsoft person, then that means I failed you, but I think that this support staff and presenters were remarkable, if you just got me, just not the same.  Good ideas and shows me I have to step up my demos and tutorials.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-37-metablogapi/5857.image_5F00_59FE1449.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-09-37-metablogapi/1145.image_5F00_thumb_5F00_5A3A977E.png" width="603" height="398"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Zoom over to the video at:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://research.microsoft.com/apps/video/default.aspx?id=153673" href="http://research.microsoft.com/apps/video/default.aspx?id=153673"&gt;http://research.microsoft.com/apps/video/default.aspx?id=153673&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214148" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/1GHqPcWgQxM" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/research/archive/2011/09/20/xapfest-at-microsoft-research-what-did-the-microsoft-interns-come-up-with.aspx</feedburner:origLink></item><item><title>Introducing the Google+ Hangouts API</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/72DSPdkZ3KI/introducing-google-hangouts-api.html</link><category>google+</category><category>googlenew</category><category>apis</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Scott Knaster</dc:creator><pubDate>Tue, 20 Sep 2011 11:26:26 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/d8384267e99d1b53</guid><description>&lt;img height="80" src="http://2.bp.blogspot.com/-FABvrERKSvA/TnjYDVgCwwI/AAAAAAAAAyk/nyY8haF-tTI/s1600/rjd-headshot.jpg" style="float:right;margin-left:1em;text-align:right"&gt;&lt;br&gt;
&lt;em&gt;By &lt;a href="https://plus.google.com/116675628399793386012"&gt;Richard Dunn&lt;/a&gt;, Technical Lead, Google+ platform for Hangouts&lt;/em&gt;&lt;br&gt;
&lt;br&gt;
&lt;em&gt;Cross-posted from the &lt;a href="http://googleplusplatform.blogspot.com/2011/09/introducing-google-hangouts-api.html"&gt;Google+ Platform Blog&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;br&gt;
In the three months since we launched face-to-face-to-face communication in Google+ Hangouts, I’ve been impressed by the many ways people use them.  We’ve seen Hangouts for &lt;a href="https://plus.google.com/u/0/113186623583029971455/posts/UrcKKL8GcMY"&gt;game shows&lt;/a&gt;, &lt;a href="http://www.google.com/search?hl=en&amp;amp;safe=active&amp;amp;sa=X&amp;amp;ei=6dl4Ts7IB-OLsQLzhLzDDQ&amp;amp;sqi=2&amp;amp;ved=0CBcQvwUoAQ&amp;amp;q=fantasy+football+google+hangout&amp;amp;spell=1&amp;amp;biw=1437&amp;amp;bih=772&amp;amp;qscrl=1"&gt;fantasy football drafts&lt;/a&gt;, &lt;a href="https://plus.google.com/u/0/113186623583029971455/posts/1UNzP3YAEs2"&gt;guitar lessons&lt;/a&gt; and even &lt;a href="https://plus.google.com/100908975452307762035/posts/Gza114XoS59"&gt;hangouts for writers&lt;/a&gt; to break their solitary confinement.  That’s just the beginning.  Real-time applications are more engaging, fun, and interactive, but were hard for developers to deliver.  Until now.&lt;br&gt;
&lt;br&gt;
Today we’re launching the Developer Preview of the &lt;a href="http://developers.google.com/+/hangouts/"&gt;Hangouts API&lt;/a&gt;, another small piece of the Google+ platform.  It enables you to add your own experiences to Hangouts and instantly build real-time applications, just like our first application, the built-in YouTube player.&lt;br&gt;
&lt;br&gt;
The integration model is simple -- you build a web app, register it with us, and specify who on your team can load it into their Hangout.  Your app behaves like a normal web app, plus it can take part in the real-time conversation with new APIs like synchronization.  Now you can create a "shared state" among all instances of your app so that all of your users can be instantly notified of changes made by anyone else.  (This is how the YouTube player keeps videos in sync.)  And we’ve added our first few multimedia APIs so you can, for example, mute the audio and video feeds of Hangout participants.&lt;br&gt;
&lt;br&gt;
When you’re ready to start hacking, we’re ready for you -- read the &lt;a href="http://developers.google.com/+/hangouts"&gt;documentation&lt;/a&gt;, &lt;a href="https://code.google.com/apis/console"&gt;sign up&lt;/a&gt;, and start coding.   We’re anxious to get your &lt;a href="http://developers.google.com/+/discussions"&gt;feedback&lt;/a&gt;, since this is a very early version of the API.  We’ll be making improvements and moving towards full production based on what we learn together.  And we’ll be releasing new updates on a regular basis, so stay tuned!&lt;br&gt;
&lt;br&gt;
Follow the conversation on &lt;a href="https://plus.google.com/116675628399793386012/posts/CWk286p1bw3"&gt;Google+&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;em&gt;&lt;a href="https://plus.google.com/116675628399793386012"&gt;Richard Dunn&lt;/a&gt; is Technical Lead, Google+ platform for Hangouts&lt;/em&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;em&gt;Posted by &lt;a href="https://profiles.google.com/u/0/105627346610764729807/about"&gt;Scott Knaster&lt;/a&gt;, Editor&lt;/em&gt;&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/11300808-5000779108850877978?l=googlecode.blogspot.com" alt=""&gt;&lt;/div&gt;&lt;div&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=dkDr9eRlT3w:LVP7appwEXw:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=dkDr9eRlT3w:LVP7appwEXw:-BTjWOF_DHI" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=dkDr9eRlT3w:LVP7appwEXw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=dkDr9eRlT3w:LVP7appwEXw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=dkDr9eRlT3w:LVP7appwEXw:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/dkDr9eRlT3w" height="1" width="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/72DSPdkZ3KI" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/blogspot/Dcni/~3/dkDr9eRlT3w/introducing-google-hangouts-api.html</feedburner:origLink></item><item><title>Yet Another Podcast #49–Jon Galloway: What’s New In ASP.NET</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/ae03qdxvBEQ/</link><category>Blend</category><category>Essentials</category><category>HTML5</category><category>Languages</category><category>MVC</category><category>Podcast</category><category>Visual Studio</category><category>YapCast</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jesseliberty@jesseliberty.com (Jesse Liberty)</dc:creator><pubDate>Tue, 20 Sep 2011 11:29:50 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/67b7fa9cfdb0a1e9</guid><description>&lt;p&gt;Talking with Jon Galloway about what’s new in the ASP.NET family, including previews &lt;a href="http://jesseliberty.com/wp-content/uploads/2011/09/E.jpg"&gt;&lt;img style="margin:10px 0px 10px 10px;display:inline;float:right" title="E" alt="E" align="right" src="http://jesseliberty.com/wp-content/uploads/2011/09/E_thumb.jpg" width="121" height="147"&gt;&lt;/a&gt; of MVC 4, Visual Studio 11, Web Forms 4.5 and WCF Web API.
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://weblogs.asp.net/jgalloway/"&gt;Jon’s Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.asp.net/vnext"&gt;ASP.NET VNext site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.asp.net/mvc/mvc4"&gt;MVC 4 Site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://asp.net.codeplex.com/"&gt;Road Map&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://pre-prod.amazon.com/gp/product/1118076583/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=libertyassocia00&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399373&amp;amp;creativeASIN=1118076583"&gt;Jon’s Book&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://jesseliberty.com/wp-content/media/Show49.mp3"&gt;Listen&lt;/a&gt; | &lt;a href="http://jesseliberty.com/podcast"&gt;Yet Another Podcast&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Call in comments: &lt;strong&gt;1-347-YAP-CAST&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/JesseLibertyYapcast"&gt;&lt;img title="rss" border="0" alt="rss" align="left" src="http://jesseliberty.com/wp-content/uploads/2010/10/rss_thumb.jpg" width="29" height="26"&gt;&lt;/a&gt;&lt;a href="http://itunes.apple.com/us/podcast/id393751871"&gt;&lt;img title="iTunes" border="0" alt="iTunes" align="left" src="http://jesseliberty.com/wp-content/uploads/2010/10/iTunes_thumb.jpg" width="94" height="31"&gt;&lt;/a&gt;&lt;a href="http://social.zune.net/redirect?type=podcastseries&amp;amp;id=00c3fa7b-0fdf-4936-a1cf-92caacb08775"&gt;&lt;img title="zune" alt="alt" align="left" src="http://jesseliberty.com/wp-content/uploads/2010/11/zune.jpg" width="87" height="38"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/JesseLibertyYapcast/~4/jiThGpTlUX8" height="1" width="1"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/ae03qdxvBEQ" height="1" width="1"/&gt;</description><enclosure url="http://feedproxy.google.com/~r/JesseLibertyYapcast/~5/bl8FkhxY4-8/Show49.mp3" length="42829277" type="audio/mpeg" /><feedburner:origLink>http://feedproxy.google.com/~r/JesseLibertyYapcast/~3/jiThGpTlUX8/</feedburner:origLink></item><item><title>Visual Studio 11 Developer Preview: Visual Basic (VB) Call Hierarchy</title><link>http://feedproxy.google.com/~r/ShivamsSharedItems/~3/3ppPRHWbAlw/visual-studio-11-developer-preview-visual-basic-vb-call-hierarchy.aspx</link><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">VBTeam</dc:creator><pubDate>Tue, 20 Sep 2011 11:00:00 PDT</pubDate><guid isPermaLink="false">tag:google.com,2005:reader/item/7572bc60ef0b9852</guid><description>&lt;p&gt;By Zain Naboulsi (&lt;a href="http://blogs.msdn.com/b/zainnab/"&gt;Blog&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Default:&lt;/strong&gt; CTRL + ALT + K&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Menu: &lt;/strong&gt;View | Call Hierarchy&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt; View.CallHierarchy; EditorContextMenus.CodeWindow.ViewCallHierarchy&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Versions:&lt;/strong&gt; Visual Studio 11 Developer Preview&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Languages:&lt;/strong&gt; VB&lt;/p&gt;
&lt;p&gt;With the announcement of the Visual Studio 11 Developer Preview it’s time to take a look at some of the features you can start using with our latest version of the IDE right away.  If you are already familiar with the C++/C# Call Hierarchy feature from my &lt;a href="http://blogs.msdn.com/b/zainnab/archive/2010/01/19/using-the-call-hierarchy-c-only-vstiptool0005.aspx"&gt;previous blog post&lt;/a&gt; then you are already familiar with the features and may just want to start playing with this on your own. For those not familiar, I’ll repeat the content here. And now on with the tip…&lt;/p&gt;
&lt;p&gt;(queue choir music)&lt;/p&gt;
&lt;p&gt;Visual Basic developers everywhere rejoice!&lt;/p&gt;
&lt;p&gt;The Call Hierarchy is now available for VB!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This feature allows you to visually inspect the calls to and from any selected method, property, or constructor. Simply right-click any method, property, or constructor name and select View Call Hierarchy:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/2117.image_5F00_58CDF9A8.png"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/3568.image_5F00_thumb_5F00_1178A3B6.png" width="314" height="199"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This will bring up the Call Hierarchy window:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/2514.image_5F00_182BAD39.png"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/1031.image_5F00_thumb_5F00_70F16403.png" width="551" height="273"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Note the Calls To and Calls From areas? You can expand them to see a list under each node if applicable:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/8053.image_5F00_49B71ACE.png"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/0844.image_5F00_thumb_5F00_10340AD7.png" width="551" height="273"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If you select an item under one of these areas then you will get a list of Call Sites that show where the calls are happening:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/7776.image_5F00_2FE2E49F.png"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/2502.image_5F00_thumb_5F00_4F91BE67.png" width="554" height="277"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;You can double-click any call site to go to the line of calling code:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/0028.image_5F00_1D2DEAE8.png"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/2260.image_5F00_thumb_5F00_61021F3F.png" width="338" height="177"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Instead of doing a double-click you can also right-click the call site and choose Go To Reference or you can copy the name and location of the call site as you see it listed:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/6283.image_5F00_7CA6AB35.png"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/4152.image_5F00_thumb_5F00_277F0F48.png" width="338" height="154"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;You can also right-click any items in the tree-view to get a list of possible actions:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/3250.image_5F00_0044C613.png"&gt;&lt;img style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-35-13-metablogapi/1680.image_5F00_thumb_5F00_7BCE454B.png" width="557" height="276"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Here is a table of the actions you may come across and what they can do for you:&lt;/p&gt;
&lt;table border="1" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;&lt;b&gt;Context Menu Item&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Add As New Root&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Adds the selected node to the tree view pane as a new root node.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Remove Root&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Removes the selected root node from the tree view pane. This option is available only from a root node.&lt;/p&gt;
&lt;p&gt;You can also use the Remove Root toolbar button to remove the selected root node.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Go To Definition&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Runs the Go To Definition command on the selected node. This navigates to the original definition for a method call or variable definition.&lt;/p&gt;
&lt;p&gt;You can also press F12 to run the Go To Definition command on the selected node.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Find All References&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Runs the Find All References command on the selected node. This finds all the lines of code in your project that reference a class or member.&lt;/p&gt;
&lt;p&gt;You can also use SHIFT+F12 to run the Find All References command on the selected node.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Copy&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Copies the contents of the selected node (but not its subnodes).&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="142"&gt;
&lt;p&gt;Refresh&lt;/p&gt;
&lt;/td&gt;
&lt;td width="250"&gt;
&lt;p&gt;Collapses the selected node so that re-expanding it displays current information.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;So, just as with C++ and C#, we now have the Call Hierarchy feature available for VB developers.  This is all part of our master plan to get all languages on parity with each other so that most features are available regardless of the language used.  Enjoy!&lt;/p&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10213759" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/ShivamsSharedItems/~4/3ppPRHWbAlw" height="1" width="1"/&gt;</description><feedburner:origLink>http://blogs.msdn.com/b/vbteam/archive/2011/09/20/visual-studio-11-developer-preview-visual-basic-vb-call-hierarchy.aspx</feedburner:origLink></item></channel></rss>

