<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Geekswithblogs.net</title><link>http://geekswithblogs.net/mainfeed.aspx</link><description>Geekswithblogs.net</description><generator>Subtext Version 0.0.0.0</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/geekswithblogs" /><feedburner:info uri="geekswithblogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Is it Hard to Write a Blog?</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/QH1qx6WttWc/is-it-hard-to-write-a-blog.aspx</link><pubDate>Fri, 12 Mar 2010 21:17:40 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/WinAZ/archive/2010/03/12/is-it-hard-to-write-a-blog.aspx</guid><wfw:comment>http://geekswithblogs.net/WinAZ/comments/138491.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/WinAZ/comments/commentRss/138491.aspx</wfw:commentRss><comments>http://geekswithblogs.net/WinAZ/archive/2010/03/12/is-it-hard-to-write-a-blog.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://geekswithblogs.net/WinAZ/services/trackbacks/138491.aspx</trackback:ping><source url="http://geekswithblogs.net/WinAZ/rss.aspx">Is it Hard to Write a Blog?</source><description>&lt;p&gt;Responding to a tweet I received, asking if I found it hard to write a blog and keep it interesting. This is one of the situations where a 140 character response doesn’t do a question justice. There’s a lot to think about between the subjects of writing, subject matter, and entertainment.  Here’s my take on each of these three topics:&lt;/p&gt;  &lt;p&gt;There’s all types of writing you can do with various degrees of difficulty. If you’re writing a book and you have a gazillion editors bleeding over your every utterance, then the task becomes harder because you’re second-guessing yourself, not knowing whose opinion will be violated. However, if you’re communicating in a public forum, not too many people care about the grammar as much as whether what you have to say is correct.  For a blog, I would say it’s somewhere in-between.  Right now, I’m using &lt;a href="http://download.live.com/writer" target="_blank"&gt;Windows Live Writer&lt;/a&gt;, which gives me a few advantages to just typing into the blog editor, such as spelling correction and the ability to save my work and resume later.  Overall, writing is one of those things that you just need to get used to.  It’s an essential skill for developers because you need to document your work, depending on what your definition of proper documentation is, and communicate with other developers via various communications mediums. Not begin good (or not thinking that you’re good) shouldn’t hold you back.  Like most things in life, practice will improve your skill.  So, push away that inner voice that keeps you from moving forward and just do it.&lt;/p&gt;  &lt;p&gt;A good grasp on the subject matter you’re writing about helps.  However, don’t let a lack of knowledge stop you from writing about something. I recall reading something a while back by a developer who didn’t know a technology but wrote about their experience in learning it. They ended up learning more by expressing their thoughts in writing. If you look around out many blogs today, there are many items written by developers learning what they’re writing about.  So, whether you are sure or unsure, you can still write – just be honest with yourself and your readers about what you’re writing. Also, don’t be afraid to have a different opinion or worry if someone will disagree.  I’ll freely admit that it took a while for me to become accustomed to being criticized. Take the good with the bad and use the bad to make yourself better. Guaranteed, someone will disagree with one or more parts of what I’ve written here or think they have a better approach. No problem, more power to them, and whatever constructive comments they have will be a benefit to me in the future; Otherwise, to h*ll with them. :)  Every time you get knocked down, get right back up, dust the dirt off your backside, and keep moving forward.  You’ll learn in time how to align a subject with your own presentation of the material.&lt;/p&gt;  &lt;p&gt;Entertainment could be hard or could be natural, depending on the personality of yourself and your target audience. It’s even more challenging because you can say something you think is funny and someone will be offended. In fact, there are a lot of things that you shouldn’t say in the name of a joke, but I won’t mention any of them here for want of not offending anyone. Of course, I probably offended someone by saying that and there is probably an organization somewhere in the world out to get me now. I’m probably not the best person to be giving you advice on entertaining an audience.  I mean, every time I try to tell a joke on Twitter 10 people unfriend me. Okay, maybe 15, but you get my point. One thing you might be interested in knowing is that it’s not too hard for one technical person to entertain other technical people, especially when the subject is of interest.  It’s the excitement in each sentence and passion in each paragraph that will keep another developer entertained and interested in what you have to say. Not everyone will like what you’ve written, but the important part is to find your own voice and it’s likely that there is one person in some corner of the world that likes what you have to say, even if it’s your mom and she doesn’t understand a single word you write. :)&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;If I could leave you with one final thought; Just do it and don’t let anyone or anything hold you back.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Joe&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138491"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138491" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WinAZ/aggbug/138491.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/QH1qx6WttWc" height="1" width="1"/&gt;</description><dc:creator>Joe Mayo</dc:creator><feedburner:origLink>http://geekswithblogs.net/WinAZ/archive/2010/03/12/is-it-hard-to-write-a-blog.aspx</feedburner:origLink></item><item><title>BizTalk: Dynamic SMTP Port: Unknown Error Description </title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/pZqaJw7h_tg/biztalk-dynamic-smtp-port-unknown-error.aspx</link><pubDate>Fri, 12 Mar 2010 20:50:22 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/LeonidGaneline/archive/2010/03/12/biztalk-dynamic-smtp-port-unknown-error.aspx</guid><wfw:comment>http://geekswithblogs.net/LeonidGaneline/comments/138490.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/LeonidGaneline/comments/commentRss/138490.aspx</wfw:commentRss><comments>http://geekswithblogs.net/LeonidGaneline/archive/2010/03/12/biztalk-dynamic-smtp-port-unknown-error.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/LeonidGaneline/services/trackbacks/138490.aspx</trackback:ping><source url="http://geekswithblogs.net/LeonidGaneline/rss.aspx">BizTalk: Dynamic SMTP Port: Unknown Error Description </source><description>&lt;div&gt;Today I investigated one strange error working with Dynamic SMTP Port.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div style="margin-left: 72pt"&gt;&lt;span style="font-size: 10pt"&gt;Event Type: Error&lt;br /&gt;
Event Source: BizTalk Server 2006&lt;br /&gt;
Event Category: BizTalk Server 2006 &lt;br /&gt;
Event ID: 5754&lt;br /&gt;
Date: ********&lt;br /&gt;
Time: ********AM&lt;br /&gt;
User: N/A&lt;br /&gt;
Computer: ********&lt;br /&gt;
Description:&lt;br /&gt;
A message sent to adapter "SMTP" on send port "*********" with URI "mailto:********.com" is suspended. &lt;br /&gt;
Error details: Unknown Error Description  &lt;br /&gt;
MessageId:  {********}&lt;br /&gt;
InstanceID: {********}&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-left: 72pt"&gt; &lt;/div&gt;
&lt;div&gt;My code was pretty simple and the source of the error was hidden somewhere inside it.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div style="margin-left: 36pt"&gt;msg_MyMessage(SMTP.CC) = var_CC;&lt;br /&gt;
msg_MyMessage(SMTP.From) = var_From;&lt;br /&gt;
msg_MyMessage(SMTP.Subject) = var_Subject;&lt;br /&gt;
msg_MyMessage(SMTP.EmailBodyText) = var_Message;    // #1    &lt;br /&gt;
msg_MyMessage(SMTP.SMTPHost) = " localhost "; &lt;br /&gt;
msg_MyMessage(SMTP.SMTPAuthenticate) = 0;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
When I added line #2, this frustrating error disappeared.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div style="margin-left: 36pt"&gt; msg_MyMessage(SMTP.EmailBodyTextCharset) = "UTF-8"; // #2&lt;/div&gt;
&lt;div style="margin-left: 36pt"&gt;&lt;br /&gt;
&lt;b&gt;Conclusion:&lt;/b&gt; &lt;br /&gt;
If we use the SMTP.EmailBodyText property, we must set up the &lt;br /&gt;
SMTP.EmailBodyTextCharset property.&lt;br /&gt;
&lt;br /&gt;
To me it looks like a bug in BizTalk. [Maybe it is "by design", but in this case give us a useful error text!!!]&lt;/div&gt;
&lt;div&gt;And don't ask me how much time I've spent with this investigation.&lt;/div&gt;
&lt;div style="margin: 0cm 0cm 10pt"&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138490"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138490" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/LeonidGaneline/aggbug/138490.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/pZqaJw7h_tg" height="1" width="1"/&gt;</description><dc:creator>Leonid Ganeline</dc:creator><feedburner:origLink>http://geekswithblogs.net/LeonidGaneline/archive/2010/03/12/biztalk-dynamic-smtp-port-unknown-error.aspx</feedburner:origLink></item><item><title>Unreal Tournament 3 vs UDK: What Should I Choose?</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/GzqV-Ha-8UE/unreal-tournament-3-vs-udk-what-should-i-choose.aspx</link><pubDate>Fri, 12 Mar 2010 20:23:19 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/CodeBlog/archive/2010/03/12/unreal-tournament-3-vs-udk-what-should-i-choose.aspx</guid><wfw:comment>http://geekswithblogs.net/CodeBlog/comments/138489.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/CodeBlog/comments/commentRss/138489.aspx</wfw:commentRss><comments>http://geekswithblogs.net/CodeBlog/archive/2010/03/12/unreal-tournament-3-vs-udk-what-should-i-choose.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/CodeBlog/services/trackbacks/138489.aspx</trackback:ping><source url="http://geekswithblogs.net/CodeBlog/rss.aspx">Unreal Tournament 3 vs UDK: What Should I Choose?</source><description>&lt;p&gt;Many people in the mod community were very excited to see the release of the Unreal Developer Kit (UDK) a few months ago.  Along with generating excitement into a very dedicated community, it also introduced many new modders into a flourishing area of indie-development.  However, since UDK is free, most beginners jump right into UDK, which is OK though you might just benefit more from purchasing a shelf-copy of Unreal Tournament 3.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium"&gt;UDK&lt;/span&gt;&lt;br /&gt;
UDK is a free full version of UnrealEd (the editor environment used to create games like Gears of War 1/2, Bioshock 1/2, and of course Unreal Tournament 3).  The editor gives you all the features of the editor from the shelf-copy of the game plus some refinements in many of the tools.  (One of the first things you'll find about UnrealEd is that it's a collection of tools grouped into the same editor so it really isn't a single 'tool')&lt;/p&gt;
&lt;p&gt;Interestingly enough, Epic is allowing you to sell any game made in UDK with a few catches.  First off, you must purchase a liscense for your game (which, I &lt;em&gt;THINK&lt;/em&gt; is aproximately $99 starting).  Secondly, you must pay 25% of all profits for the first $5,000 of your game revenue to them (about $1250).  Finally, you cannot use any of the 'media' provided in UDK for your game.  UDK provides sample meshes, textures, materials, sounds, and other sample pieces of media pulled (mostly) from Unreal Tournament 3.&lt;/p&gt;
&lt;p&gt;The final point here will really determine whether you should use UDK.  There is a very small amount of media provided in UDK for someone to go in and begin creating levels without first developing your own meshes, textures, and other media.  Sure, you can slap together a few unique levels, though you will end up finding yourself restriced to the same items over and over and over.  This is absolutely how professional game development is; you are 'given' (typically liscensed or built in-house) an engine/editor and you begin creating all the content for the game and placing it.  UDK is aimed toward those who really want to build their game content from scratch with a currently existing engine.  It is &lt;strong&gt;not&lt;/strong&gt; suited for someone who would like to simply build levels and quick mods without learning external 3D programs and image editing software.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium"&gt;Unreal Tournament 3&lt;/span&gt;&lt;br /&gt;
Unless you have a serious grudge against FPS's, Epic, or your computer sucks, there really is no reason not to own this game for PC.  You can pick it up on Steam or Amazon for around $20 brand new.  Not only are you provided with a full single-player and multiplayer game, but you are given the entire UnrealEd 3.0 including all of the content used to build UT3.  If you want to start building levels and mods quickly for UT3, you should absolutely pick up a shelf-copy.&lt;/p&gt;
&lt;p&gt;However, as off-the-shelf UT3 is a few years old now, the tools have not been updated for quite a while.  Compared to UDK, the menus are more difficult to navigate through and take more time getting used to.  Since UDK is updated almost every month, there are new inclusions to the editor that may not be in UT3 (including the future addition of 3D!).  I haven't worked enough with shelf UT3 to see if there are more features in UDK or if they both feature the same stuff in different forms, however you should remember that the Unreal Engine 3.0 has undergone numerous upgrades between it's launch and Gears of War 2 (in fact, Epic had a conference to show off what changed just between the Gears of Wars games).&lt;/p&gt;
&lt;p&gt;Since UT3 has much more core content, someone who wants to focus on level editing or modding the core UT3 game may find their needs better suited with an off-the-shelf copy of UT3.  If that level designer has a team that is generating custom assets, they may be better off with UDK.&lt;/p&gt;
&lt;p&gt;The choice is now yours...&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138489"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138489" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/CodeBlog/aggbug/138489.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/GzqV-Ha-8UE" height="1" width="1"/&gt;</description><dc:creator>Matt Christian</dc:creator><feedburner:origLink>http://geekswithblogs.net/CodeBlog/archive/2010/03/12/unreal-tournament-3-vs-udk-what-should-i-choose.aspx</feedburner:origLink></item><item><title>w00t! First post!</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/hiZ52RR0BcY/w00t-first-post.aspx</link><pubDate>Fri, 12 Mar 2010 20:17:42 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/blaird/archive/2010/03/12/w00t-first-post.aspx</guid><wfw:comment>http://geekswithblogs.net/blaird/comments/138488.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/blaird/comments/commentRss/138488.aspx</wfw:commentRss><comments>http://geekswithblogs.net/blaird/archive/2010/03/12/w00t-first-post.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/blaird/services/trackbacks/138488.aspx</trackback:ping><source url="http://geekswithblogs.net/blaird/rss.aspx">w00t! First post!</source><description>&lt;p&gt;So, I busted my old blog and hadn't been keeping up with it. Decided it would be easier on me to use software that I didn't maintain, so several months ago I signed up for a GWB account. You are a witness to procrastination at its finest! &lt;/p&gt;
&lt;p&gt;I was remarking to my friend Abby that I hadn't written anything in ages, that I've typed a bunch in the last 5 years or so, but that the typing belonged to someone else as work product, was boring technical mumbo jumbo, or was only good before it spoiled, that project/job/technology/tweet based freshness window that us geeks have to deal with. In short, I just didn't feel like it. So forgive the rambling sentences and my grammatical failures, you have Abby to thank ;)&lt;/p&gt;
&lt;p&gt;On the technology front I've been working with WPF, WCF and a whole lot of other alphabet soup in terms of patterns. I'm starting to get spoiled on Visual Studio 2010, and may have made a mistake by evaluating the ultimate version. &lt;/p&gt;
&lt;p&gt;Because I'm a .NET geek and an outdoor geek, expect a hodgepodge. It's nearly Easter, which for the garden means a whole lot of things. I've already started getting seed out, and started working soil. It feels good to get real dirt on your hands.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138488"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138488" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/blaird/aggbug/138488.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/hiZ52RR0BcY" height="1" width="1"/&gt;</description><dc:creator>blaird</dc:creator><feedburner:origLink>http://geekswithblogs.net/blaird/archive/2010/03/12/w00t-first-post.aspx</feedburner:origLink></item><item><title>200th Post</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/raFLCGQgEq0/200th-post.aspx</link><pubDate>Fri, 12 Mar 2010 19:37:25 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/tmurphy/archive/2010/03/12/200th-post.aspx</guid><wfw:comment>http://geekswithblogs.net/tmurphy/comments/138487.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/tmurphy/comments/commentRss/138487.aspx</wfw:commentRss><comments>http://geekswithblogs.net/tmurphy/archive/2010/03/12/200th-post.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://geekswithblogs.net/tmurphy/services/trackbacks/138487.aspx</trackback:ping><source url="http://geekswithblogs.net/tmurphy/rss.aspx">200th Post</source><description>&lt;p&gt;I didn’t break any speed records getting getting to 200 posts, but I am here.  So what is the prize for getting here?  You have to put out the obligatory post announcing the achievement.  It also means that it is time to put “Yes, I’m a geek” on your business card.  Well, there it is.  Now go about your business.  Nothing to see here.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2b638994-098b-44ce-aca8-74f6c9d66623" class="wlWriterEditableSmartContent"&gt;del.icio.us Tags: &lt;a href="http://del.icio.us/popular/200th+post" rel="tag"&gt;200th post&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138487"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138487" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/tmurphy/aggbug/138487.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/raFLCGQgEq0" height="1" width="1"/&gt;</description><dc:creator>Tim Murphy</dc:creator><feedburner:origLink>http://geekswithblogs.net/tmurphy/archive/2010/03/12/200th-post.aspx</feedburner:origLink></item><item><title>2010 Chicago Code Coming In May</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/DpvVDS2umkQ/2010-chicago-code-coming-in-may.aspx</link><pubDate>Fri, 12 Mar 2010 19:29:57 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/tmurphy/archive/2010/03/12/2010-chicago-code-coming-in-may.aspx</guid><wfw:comment>http://geekswithblogs.net/tmurphy/comments/138486.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/tmurphy/comments/commentRss/138486.aspx</wfw:commentRss><comments>http://geekswithblogs.net/tmurphy/archive/2010/03/12/2010-chicago-code-coming-in-may.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/tmurphy/services/trackbacks/138486.aspx</trackback:ping><source url="http://geekswithblogs.net/tmurphy/rss.aspx">2010 Chicago Code Coming In May</source><description>&lt;p&gt;The &lt;a href="http://lcnug.org/Home.aspx" target="_blank"&gt;Lake Count .NET User Group&lt;/a&gt; is putting on it’s second Chicago Code Camp on May 1st.  I would encourage everyone to come out and participate in the Chicago area .NET community.  You can register &lt;a href="http://www.chicagocodecamp.com/" target="_blank"&gt;here&lt;/a&gt;.  Better yet come of with a presentation of your own.  I have submitted an abstract for a presentation on Office Open XML.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f9f011de-7134-446a-937e-fba206f2d2b5" class="wlWriterEditableSmartContent"&gt;del.icio.us Tags: &lt;a href="http://del.icio.us/popular/Chicago+Code+Camp" rel="tag"&gt;Chicago Code Camp&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/presentations" rel="tag"&gt;presentations&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/Office+Open+XML" rel="tag"&gt;Office Open XML&lt;/a&gt;,&lt;a href="http://del.icio.us/popular/LCNUG" rel="tag"&gt;LCNUG&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138486"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138486" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/tmurphy/aggbug/138486.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/DpvVDS2umkQ" height="1" width="1"/&gt;</description><dc:creator>Tim Murphy</dc:creator><feedburner:origLink>http://geekswithblogs.net/tmurphy/archive/2010/03/12/2010-chicago-code-coming-in-may.aspx</feedburner:origLink></item><item><title>Fixing my SQL Directory NTFS ACLS</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/EEG1tVlij5o/fixing-my-sql-directory-ntfs-acls.aspx</link><pubDate>Fri, 12 Mar 2010 18:26:01 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/cicorias/archive/2010/03/12/fixing-my-sql-directory-ntfs-acls.aspx</guid><wfw:comment>http://geekswithblogs.net/cicorias/comments/138485.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/cicorias/comments/commentRss/138485.aspx</wfw:commentRss><comments>http://geekswithblogs.net/cicorias/archive/2010/03/12/fixing-my-sql-directory-ntfs-acls.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/cicorias/services/trackbacks/138485.aspx</trackback:ping><source url="http://geekswithblogs.net/cicorias/rss.aspx">Fixing my SQL Directory NTFS ACLS</source><description>&lt;p&gt;I run my development server by boot to VHD (Windows Server 2008 R2 x64).  In that instance, I also have an attached VHD (I attach via script at boot up time using Task Scheduler).  That VHD I have my SQL instances installed.&lt;/p&gt;  &lt;p&gt;So, the other day, acting hasty, I chmod my ACLS – wow, what a day after that.&lt;/p&gt;  &lt;p&gt;So, in order to fix it I created this set of BAT commands that resets it back to operational state – not 100% of all what you get, I also didn’t want to run a “repair” – but, all operational again.&lt;/p&gt;  &lt;pre class="brush: plain;"&gt;setlocal 

SET Inst100Path=H:\Program Files\Microsoft SQL Server\100

REM GOTO SQLE

SET InstanceName=MSSQLSERVER
SET InstIdPath=H:\Program Files\Microsoft SQL Server\MSSQL10.%InstanceName%
SET Group=SQLServerMSSQLUser$SCICORIA-HV1$%InstanceName%
SET AgentGroup=SQLServerSQLAgentUser$SCICORIA-HV1$%InstanceName%

ICACLS "%InstIdPath%\MSSQL"  /T /Q /grant "%Group%":(OI)(CI)FX
ICACLS "%InstIdPath%\MSSQL\backup"  /T /Q /grant "%Group%":(OI)(CI)F
ICACLS "%InstIdPath%\MSSQL\data"  /T /Q /grant "%Group%":(OI)(CI)F
ICACLS "%InstIdPath%\MSSQL\FTdata" /T /Q /grant "%Group%":(OI)(CI)F
ICACLS "%InstIdPath%\MSSQL\Jobs" /T /Q /grant "%Group%":(OI)(CI)F
ICACLS "%InstIdPath%\MSSQL\binn"  /T /Q /grant "%Group%":(OI)(CI)RX
ICACLS "%InstIdPath%\MSSQL\Log"  /T /Q /grant "%Group%":(OI)(CI)F

ICACLS "%Inst100Path%"  /T /Q /grant "%Group%":(OI)(CI)RX
ICACLS "%Inst100Path%\shared\Errordumps"  /T /Q /grant "%Group%":(OI)(CI)RXW



ICACLS "%InstIdPath%\MSSQL"  /T /Q /grant "%AgentGroup%":(OI)(CI)RX
ICACLS "%InstIdPath%\MSSQL\binn"  /T /Q /grant "%AgentGroup%":(OI)(CI)F
ICACLS "%InstIdPath%\MSSQL\Log"  /T /Q /grant "%AgentGroup%":(OI)(CI)F

ICACLS "%Inst100Path%"  /T /Q /grant "%AgentGroup%":(OI)(CI)RX

REM THIS IS THE SQL EXPRESS INSTANCE

:SQLE

SET InstanceName=SQLEXPRESS
SET InstIdPath=H:\Program Files\Microsoft SQL Server\MSSQL10.%InstanceName%
SET Group=SQLServerMSSQLUser$SCICORIA-HV1$%InstanceName%
SET AgentGroup=SQLServerSQLAgentUser$SCICORIA-HV1$%InstanceName%



ICACLS "%InstIdPath%\MSSQL"  /T /Q /grant "%Group%":(OI)(CI)FX
ICACLS "%InstIdPath%\MSSQL\backup"  /T /Q /grant "%Group%":(OI)(CI)F
ICACLS "%InstIdPath%\MSSQL\data"  /T /Q /grant "%Group%":(OI)(CI)F
ICACLS "%InstIdPath%\MSSQL\FTdata" /T /Q /grant "%Group%":(OI)(CI)F
ICACLS "%InstIdPath%\MSSQL\Jobs" /T /Q /grant "%Group%":(OI)(CI)F
ICACLS "%InstIdPath%\MSSQL\binn"  /T /Q /grant "%Group%":(OI)(CI)RX
ICACLS "%InstIdPath%\MSSQL\Log"  /T /Q /grant "%Group%":(OI)(CI)F

ICACLS "%Inst100Path%"  /T /Q /grant "%Group%":(OI)(CI)RX
ICACLS "%Inst100Path%\shared\Errordumps"  /T /Q /grant "%Group%":(OI)(CI)RXW



ICACLS "%InstIdPath%\MSSQL"  /T /Q /grant "%AgentGroup%":(OI)(CI)RX
ICACLS "%InstIdPath%\MSSQL\binn"  /T /Q /grant "%AgentGroup%":(OI)(CI)F
ICACLS "%InstIdPath%\MSSQL\Log"  /T /Q /grant "%AgentGroup%":(OI)(CI)F

ICACLS "%Inst100Path%"  /T /Q /grant "%AgentGroup%":(OI)(CI)RX


endlocal&lt;/pre&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138485"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138485" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cicorias/aggbug/138485.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/EEG1tVlij5o" height="1" width="1"/&gt;</description><dc:creator>Shawn Cicoria</dc:creator><feedburner:origLink>http://geekswithblogs.net/cicorias/archive/2010/03/12/fixing-my-sql-directory-ntfs-acls.aspx</feedburner:origLink></item><item><title>Recent resources on Entity Framework 4</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/GDRCVphTtJA/recent-resources-on-entity-framework-4.aspx</link><pubDate>Fri, 12 Mar 2010 16:15:19 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/iupdateable/archive/2010/03/12/recent-resources-on-entity-framework-4.aspx</guid><wfw:comment>http://geekswithblogs.net/iupdateable/comments/138484.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/iupdateable/comments/commentRss/138484.aspx</wfw:commentRss><comments>http://geekswithblogs.net/iupdateable/archive/2010/03/12/recent-resources-on-entity-framework-4.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/iupdateable/services/trackbacks/138484.aspx</trackback:ping><source url="http://geekswithblogs.net/iupdateable/rss.aspx">Recent resources on Entity Framework 4</source><description>&lt;p&gt;I just &lt;a href="http://geekswithblogs.net/iupdateable/archive/2010/03/12/installing-all-the-bits-to-demo-entity-framework-4-on.aspx"&gt;posted on the bits you need to install&lt;/a&gt; to explore all the features of Entity Framework 4 with the Visual Studio 2010 RC. I’ve also had a quick look (March 12th 2010) to see what new resources are out there on EF4. They appear a little thin on the ground – but there are some gems.&lt;/p&gt;  &lt;p&gt;The following all caught my attention:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Julie Lerman has published &lt;a href="http://www.pluralsight-training.net/microsoft/olt/browselibrary.aspx?author=julie-lerman"&gt;2 How-to-videos on EF4&lt;/a&gt; on pluralsight.com. You need to create a &lt;strong&gt;free&lt;/strong&gt; guest pass to watch them.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://mosesofegypt.net/post/GettingStartedWithEF4SessionAtCairoCodeCamp2010.aspx"&gt;Getting Started with Entity Framework 4.0 – Session given at Cairo CodeCamp 2010 &lt;/a&gt;. This includes &lt;a href="http://mosesofegypt.net/file.axd?file=CCC-GettingStartedWithEF4.zip"&gt;ppt and demos&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://thedatafarm.com/blog/data-access/where-are-the-ef4-providers/"&gt;Entity Framework 4 providers&lt;/a&gt; – read through the comments&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/adonet/archive/2010/02/12/what-s-new-with-entity-framework-in-visual-studio-2010-rc.aspx"&gt;What’s new with Entity Framework in Visual Studio 2010 RC&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Extending the design surface of EF4 using the &lt;a href="http://code.msdn.microsoft.com/DesignerExtStartKit"&gt;Extension Starter Kit&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/shows/geekSpeak/geekSpeak-Recording-Persistence-Ignorance-and-Entity-Framework-4-with-Dane-Morgridge/"&gt;Persistence Ignorance and EF4&lt;/a&gt; on geekSpeak on channel 9 (poor audio IMHO – I gave up)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.simple-talk.com/dotnet/.net-framework/hands-on-entity-framework/"&gt;First of a series of posts on EF4&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://sqlblogcasts.com/blogs/simons/archive/2010/01/30/Entity-Framework-how-to-stop-your-DBA-having-a-heart-attack.aspx"&gt;How to stop your dba having a heart attack with EF4&lt;/a&gt; from Simon Sabin in the UK. This includes &lt;a href="http://www.sqlknowhow.com/presentations/ddd_8/Entity_Framework.pptx"&gt;ppt&lt;/a&gt; and &lt;a href="http://www.sqlknowhow.com/presentations/ddd_8/DDD_8-Entity_Framework.zip"&gt;demos&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And the biggy. You no longer have to depend on SQL Profiler to keep an eye on the generated SQL. There is now a &lt;a href="http://efprof.com/"&gt;commercial profiler for Entity Framework&lt;/a&gt;.  I am yet to try it – but I listened to a .NET rocks podcast which made it sound great. It is “hidden” in a session on DSLs in Boo –&amp;gt; &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=529"&gt;Oren Eini on creating DSLs in Boo&lt;/a&gt;. This is a much richer experience than you would get from SQL Profiler – matching the SQL to the .NET code.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/RecentresourcesonEntityFramework4_E091/image_2.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/RecentresourcesonEntityFramework4_E091/image_thumb.png" width="644" height="469" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And finally a momentous #fail to … drum roll… the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en"&gt;Visual Studio 2010 and .NET Framework 4 Training Kit Feb release&lt;/a&gt;. This just contains one ppt on EF4 – and it is not even a good one. Real shame.&lt;/p&gt;  &lt;p&gt;P.S. I will update the &lt;a href="http://bit.ly/ef4resources"&gt;101 EF4 Resources&lt;/a&gt; with the above … but post devweek in case I find some more goodies.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Related Links&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://bit.ly/ef4resources"&gt;101 EF4 Resources&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138484"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138484" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/iupdateable/aggbug/138484.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/GDRCVphTtJA" height="1" width="1"/&gt;</description><dc:creator>Eric Nelson</dc:creator><feedburner:origLink>http://geekswithblogs.net/iupdateable/archive/2010/03/12/recent-resources-on-entity-framework-4.aspx</feedburner:origLink></item><item><title>Community Megaphone Podcast #5 with Steve Michelotti</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/nbFB6plhsg0/community-megaphone-podcast-5-with-steve-michelotti.aspx</link><pubDate>Fri, 12 Mar 2010 15:46:16 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/danemorgridge/archive/2010/03/12/community-megaphone-podcast-5-with-steve-michelotti.aspx</guid><wfw:comment>http://geekswithblogs.net/danemorgridge/comments/138483.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/danemorgridge/comments/commentRss/138483.aspx</wfw:commentRss><comments>http://geekswithblogs.net/danemorgridge/archive/2010/03/12/community-megaphone-podcast-5-with-steve-michelotti.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/danemorgridge/services/trackbacks/138483.aspx</trackback:ping><source url="http://geekswithblogs.net/danemorgridge/rss.aspx">Community Megaphone Podcast #5 with Steve Michelotti</source><description>&lt;p&gt;Show 5 is finally up with special guest Steve Michelotti.  We talked about ASP.Net MVC, how to get started in the community and more!&lt;/p&gt;  &lt;p&gt;Steve Michelotti is a Microsoft ASP.NET MVP and an Architect/Developer for Applied Information Sciences (AIS). He has consulted at Advertising.com/AOL where he was the Tech Lead for one of the highest volume .NET applications in the world. He previously was the Chief Technologist at e.magination. Steve is a frequent presenter at developer user groups and Code Camps along the East Coast and holds the MCSD, MCPD, and MCT certifications. Steve has been on Microsoft Channel9 and his published articles include Visual Studio Magazine and his blog: &lt;a href="http://www.geekswithblogs.net/michelotti"&gt;www.geekswithblogs.net/michelotti&lt;/a&gt;.    &lt;br /&gt;    &lt;br /&gt;Audio: &lt;a title="http://www.communitymegaphonepodcast.com/Content/Audio/Show-5-Steve-Michelotti.mp3" href="http://www.communitymegaphonepodcast.com/Content/Audio/Show-5-Steve-Michelotti.mp3"&gt;http://www.communitymegaphonepodcast.com/Content/Audio/Show-5-Steve-Michelotti.mp3&lt;/a&gt;    &lt;br /&gt;Show Url: &lt;a title="http://www.communitymegaphonepodcast.com/Show/5/Steve-Michelotti" href="http://www.communitymegaphonepodcast.com/Show/5/Steve-Michelotti"&gt;http://www.communitymegaphonepodcast.com/Show/5/Steve-Michelotti&lt;/a&gt;    &lt;br /&gt;Rss: &lt;a href="http://feed.communitymegaphonepodcast.com/cm-podcast"&gt;http://feed.communitymegaphonepodcast.com/cm-podcast&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138483"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138483" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/danemorgridge/aggbug/138483.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/nbFB6plhsg0" height="1" width="1"/&gt;</description><dc:creator>Dane Morgridge</dc:creator><feedburner:origLink>http://geekswithblogs.net/danemorgridge/archive/2010/03/12/community-megaphone-podcast-5-with-steve-michelotti.aspx</feedburner:origLink></item><item><title>Installing all the bits to demo Entity Framework 4 on the Visual Studio 2010 Release Candidate</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/JaqS-5T4y8E/installing-all-the-bits-to-demo-entity-framework-4-on.aspx</link><pubDate>Fri, 12 Mar 2010 15:14:21 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/iupdateable/archive/2010/03/12/installing-all-the-bits-to-demo-entity-framework-4-on.aspx</guid><wfw:comment>http://geekswithblogs.net/iupdateable/comments/138481.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/iupdateable/comments/commentRss/138481.aspx</wfw:commentRss><comments>http://geekswithblogs.net/iupdateable/archive/2010/03/12/installing-all-the-bits-to-demo-entity-framework-4-on.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/iupdateable/services/trackbacks/138481.aspx</trackback:ping><source url="http://geekswithblogs.net/iupdateable/rss.aspx">Installing all the bits to demo Entity Framework 4 on the Visual Studio 2010 Release Candidate</source><description>&lt;p&gt;Next week (17th March 2010) I am presenting on EF4 at &lt;a href="http://www.devweek.com"&gt;www.devweek.com&lt;/a&gt; in London (and Azure on the 18th). Today I wanted to get all the latest bits on my demo machine and also check if there are any cool new resources I can point people at. Whilst most of the new improvements in Entity Framework come with the Visual Studio 2010 RC (and the RTM), there are a couple of separate items you need to install if you want to explore all the features.&lt;/p&gt;  &lt;p&gt;To demo EF4 you need:&lt;/p&gt;  &lt;h3&gt;Visual Studio 2010 RC&lt;/h3&gt;  &lt;p&gt;Download and install the &lt;a href="http://bit.ly/vs2010rc"&gt;Visual Studio 2010 Release Candidate&lt;/a&gt;. In my case I went from the Ultimate Edition but it will work fine on Premium and Professional.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/InstallingallthebitstodemoEntityFramewor_D621/image_2.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/InstallingallthebitstodemoEntityFramewor_D621/image_thumb.png" width="315" height="163" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;POCO Templates&lt;/h3&gt;  &lt;p&gt;See the &lt;a href="http://blogs.msdn.com/adonet/archive/2010/02/18/entity-framework-poco-template-updated-for-visual-studio-2010-release-candidate.aspx"&gt;team blog post&lt;/a&gt; for a detailed explanation. Use the Extension Manager inside Visual Studio 2010: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/InstallingallthebitstodemoEntityFramewor_D621/image_4.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/InstallingallthebitstodemoEntityFramewor_D621/image_thumb_1.png" width="211" height="249" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And install the updated POCO templates for either C# or VB (or both if you are so inclined!):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/InstallingallthebitstodemoEntityFramewor_D621/image_8.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/InstallingallthebitstodemoEntityFramewor_D621/image_thumb_3.png" width="644" height="446" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Code First &lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Next you will also need to install Code First (formally called Code Only). This is part of the Entity Framework Feature CTP 3. See the &lt;a href="http://blogs.msdn.com/adonet/archive/2010/02/18/entity-framework-feature-ctp-3-now-available.aspx"&gt;team blog post&lt;/a&gt; for a detailed explanation.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=af18e652-9ea7-478b-8b41-8424b94e3f58&amp;amp;displayLang=en"&gt;Download the CTP&lt;/a&gt; from Microsoft downloads and run the setup. This will give you a new dll for Code First&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/InstallingallthebitstodemoEntityFramewor_D621/image_10.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/InstallingallthebitstodemoEntityFramewor_D621/image_thumb_4.png" width="644" height="208" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Optionally (but I recommend it) install LINQPad for the RC&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://linqpad.net/Beta.aspx"&gt;Download LINQPad Beta for .NET 4.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/InstallingallthebitstodemoEntityFramewor_D621/image_12.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/InstallingallthebitstodemoEntityFramewor_D621/image_thumb_5.png" width="644" height="347" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Related Links&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://bit.ly/ef4resources"&gt;101 EF4 Resources&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138481"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138481" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/iupdateable/aggbug/138481.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/JaqS-5T4y8E" height="1" width="1"/&gt;</description><dc:creator>Eric Nelson</dc:creator><feedburner:origLink>http://geekswithblogs.net/iupdateable/archive/2010/03/12/installing-all-the-bits-to-demo-entity-framework-4-on.aspx</feedburner:origLink></item><item><title>Blog has arrived</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/hI6is-srjpg/blog-has-arrived.aspx</link><pubDate>Fri, 12 Mar 2010 14:29:43 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/davedotnet/archive/2010/03/12/blog-has-arrived.aspx</guid><wfw:comment>http://geekswithblogs.net/davedotnet/comments/138479.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/davedotnet/comments/commentRss/138479.aspx</wfw:commentRss><comments>http://geekswithblogs.net/davedotnet/archive/2010/03/12/blog-has-arrived.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/davedotnet/services/trackbacks/138479.aspx</trackback:ping><source url="http://geekswithblogs.net/davedotnet/rss.aspx">Blog has arrived</source><description>&lt;p&gt;Hello Everyone!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This is Me, Dave.&lt;/p&gt;
&lt;p&gt;From Now on I'm going to share my experiences with .net mainly with ASP.net 3.5&lt;/p&gt;
&lt;p&gt;Dave&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138479"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138479" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/davedotnet/aggbug/138479.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/hI6is-srjpg" height="1" width="1"/&gt;</description><dc:creator>davedotnet</dc:creator><feedburner:origLink>http://geekswithblogs.net/davedotnet/archive/2010/03/12/blog-has-arrived.aspx</feedburner:origLink></item><item><title>Prism Slides and Demo</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/_MkRB-mD-Zs/prism-slides-and-demo.aspx</link><pubDate>Fri, 12 Mar 2010 11:50:37 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/HouseOfBilz/archive/2010/03/11/prism-slides-and-demo.aspx</guid><wfw:comment>http://geekswithblogs.net/HouseOfBilz/comments/138478.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/HouseOfBilz/comments/commentRss/138478.aspx</wfw:commentRss><comments>http://geekswithblogs.net/HouseOfBilz/archive/2010/03/11/prism-slides-and-demo.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/HouseOfBilz/services/trackbacks/138478.aspx</trackback:ping><source url="http://geekswithblogs.net/HouseOfBilz/rss.aspx">Prism Slides and Demo</source><description>&lt;p&gt;I recently gave a presentation on Prism at the &lt;a href="http://aadnd.org/"&gt;Ann Arbor .Net Users Group&lt;/a&gt;.  I have made my slides and demo available for download:&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://houseofbilz.net/Prism/Prism.pptx"&gt;Slides&lt;/a&gt;   &lt;a href="http://houseofbilz.net/Prism/PrismExample.zip"&gt;Demo&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Some interesting links associated with prism:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://tinyurl.com/Prism2"&gt;Composite Application Guidance&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://tinyurl.com/Prism2-CAL "&gt;Composite Application Library&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/CompositeWPF/"&gt;Codeplex Site&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://tinyurl.com/Prism2-Videos"&gt;Great 4-part video series&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/10/27/prism-and-silverlight-screencasts-on-channel-9.aspx"&gt;Another video series&lt;/a&gt; that &lt;a href="http://www.davidgiard.com/"&gt;David Giard&lt;/a&gt; pointed me towards&lt;/li&gt; &lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138478"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138478" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/HouseOfBilz/aggbug/138478.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/_MkRB-mD-Zs" height="1" width="1"/&gt;</description><dc:creator>Brian Genisio's House Of Bilz</dc:creator><feedburner:origLink>http://geekswithblogs.net/HouseOfBilz/archive/2010/03/11/prism-slides-and-demo.aspx</feedburner:origLink></item><item><title>Windows CE training in Italy</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/YNqgsrBRig0/windows-ce-training-in-italy.aspx</link><pubDate>Fri, 12 Mar 2010 10:53:19 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/03/11/windows-ce-training-in-italy.aspx</guid><wfw:comment>http://geekswithblogs.net/WindowsEmbeddedCookbook/comments/138477.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/WindowsEmbeddedCookbook/comments/commentRss/138477.aspx</wfw:commentRss><comments>http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/03/11/windows-ce-training-in-italy.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/WindowsEmbeddedCookbook/services/trackbacks/138477.aspx</trackback:ping><source url="http://geekswithblogs.net/WindowsEmbeddedCookbook/rss.aspx">Windows CE training in Italy</source><description>&lt;p&gt;Se volete approfondire le vostre conoscenze su Windows CE (anche relativamente alle novità introdotte con la versione R3), o desiderate acquisire le basi per cominciare a lavorare con questo sistema operativo, questa è un'occasione da non perdere.&lt;/p&gt;
&lt;p&gt;Dal 12 al 16 Aprile si terrà presso gli uffici di Fortech Embedded Labs di Saronno (VA) il corso "Building Solutions with Windows Embedded CE 6.0", tenuto dal sottoscritto.&lt;/p&gt;
&lt;p&gt;Per maggiori informazioni sui contenuti e i costi: &lt;a href="http://www.fortechembeddedlabs.it/node/27"&gt;http://www.fortechembeddedlabs.it/node/27&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138477"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138477" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WindowsEmbeddedCookbook/aggbug/138477.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/YNqgsrBRig0" height="1" width="1"/&gt;</description><dc:creator>Valter Minute</dc:creator><feedburner:origLink>http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/03/11/windows-ce-training-in-italy.aspx</feedburner:origLink></item><item><title>Validating the SharePoint InputFormTextBox / RichText Editor using JavaScript</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/FvpUGN0IF98/validating-the-sharepoint-inputformtextbox--richtext-editor-using-javascript.aspx</link><pubDate>Fri, 12 Mar 2010 10:06:30 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/jigneshg/archive/2010/03/12/validating-the-sharepoint-inputformtextbox--richtext-editor-using-javascript.aspx</guid><wfw:comment>http://geekswithblogs.net/jigneshg/comments/138473.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/jigneshg/comments/commentRss/138473.aspx</wfw:commentRss><comments>http://geekswithblogs.net/jigneshg/archive/2010/03/12/validating-the-sharepoint-inputformtextbox--richtext-editor-using-javascript.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/jigneshg/services/trackbacks/138473.aspx</trackback:ping><source url="http://geekswithblogs.net/jigneshg/rss.aspx">Validating the SharePoint InputFormTextBox / RichText Editor using JavaScript</source><description>&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial;"&gt;In the&lt;/span&gt;&lt;/span&gt; &lt;a href="http://geekswithblogs.net/jigneshg/archive/2010/03/11/using-sharepoint-peoplepicker-control-in-custom-asp.net-pages.aspx"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial;"&gt;previous post&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial;"&gt;I mentioned about manipulating SharePoint PeoplePicker control using JavaScript, in this post I will show how to validate the&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: Courier New;"&gt;InputFormTextBox&lt;/span&gt; &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial;"&gt;contol using custom JavaScript function. Here is the &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial;"&gt;&lt;a href="http://www.mosslover.com/archive/2009/03/20/requiredfieldvalidator-and-inputformtextbox-not-friendshellip.aspx"&gt;nice post&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-size: small;"&gt; by Becky Isserman on why not to use&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: Courier New;"&gt;RequiredFieldValdator&lt;/span&gt; or &lt;span style="font-family: Courier New;"&gt;InputFormRequiredFieldValidator&lt;/span&gt; &lt;span style="font-family: Arial;"&gt;&lt;span style="font-size: small;"&gt;with&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family: Courier New;"&gt;InputFormTextbox&lt;/span&gt;.&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-family: Courier New;"&gt;function&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt; ValidateComments()&lt;br /&gt;
{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;//retrieve the text from rich text editor.&lt;/span&gt;&lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;var &lt;/span&gt;text = RTE_GetRichEditTextOnly(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;span style="font-family: Courier New;"&gt;"&amp;lt;%= &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;rteComments&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;.ClientID %&amp;gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;);&lt;br /&gt;
&lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;if &lt;/span&gt;(text != &lt;span style="color: rgb(128, 0, 0);"&gt;""&lt;/span&gt;)&lt;br /&gt;
    {&lt;br /&gt;
        &lt;span style="color: rgb(0, 0, 255);"&gt;return true&lt;/span&gt;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;
    {&lt;br /&gt;
        alert(&lt;span style="color: rgb(128, 0, 0);"&gt;'Please enter your comments.'&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New;"&gt;        &lt;span style="color: rgb(0, 153, 0);"&gt;//set focus back to the rich text editor.&lt;/span&gt;&lt;br /&gt;
        RTE_GiveEditorFocus(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;span style="font-family: Courier New;"&gt;"&amp;lt;%= &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;rteComments&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;.ClientID %&amp;gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;);&lt;br /&gt;
        &lt;span style="color: rgb(0, 0, 255);"&gt;return false&lt;/span&gt;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;return true&lt;/span&gt;;&lt;br /&gt;
}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-family: Courier New;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;span style="font-family: Courier New;"&gt;SharePoint&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;InputFormTextBox &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="rteComments"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="server"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;RichText&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="true"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;RichTextMode&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Compatible"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Rows&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="10"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;TextMode&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="MultiLine"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;CausesValidation&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="true"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;SharePoint&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;span style="font-family: Courier New;"&gt;InputFormTextBox&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-family: Courier New;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-family: Courier New;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;span style="font-family: Courier New;"&gt;asp&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;Button &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="btnSubmit"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;runat&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="server"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Submit"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;OnClick&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="btnSubmit_Click"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;OnClientClick&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="return ValidateComments()"&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;CausesValidation&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="true"&lt;/span&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-family: Courier New;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-family: Courier New;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-size: small;"&gt;- Jignesh&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138473"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138473" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jigneshg/aggbug/138473.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/FvpUGN0IF98" height="1" width="1"/&gt;</description><dc:creator>Jignesh Gangajaliya</dc:creator><feedburner:origLink>http://geekswithblogs.net/jigneshg/archive/2010/03/12/validating-the-sharepoint-inputformtextbox--richtext-editor-using-javascript.aspx</feedburner:origLink></item><item><title>RSS blues</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/_4tlEe01Lmk/rss-blues.aspx</link><pubDate>Fri, 12 Mar 2010 08:22:35 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/03/11/rss-blues.aspx</guid><wfw:comment>http://geekswithblogs.net/WindowsEmbeddedCookbook/comments/138472.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/WindowsEmbeddedCookbook/comments/commentRss/138472.aspx</wfw:commentRss><comments>http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/03/11/rss-blues.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/WindowsEmbeddedCookbook/services/trackbacks/138472.aspx</trackback:ping><source url="http://geekswithblogs.net/WindowsEmbeddedCookbook/rss.aspx">RSS blues</source><description>&lt;p&gt;It seems that the RSS feed is not updating.&lt;br /&gt;
If you missed the last post, here's a list:&lt;br /&gt;
Silverlight for Windows Embedded tutorial (step 4):&lt;br /&gt;
&lt;a href="http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/03/09/silverlight-for-windows-embedded-tutorial-step-3-again.aspx"&gt;http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/03/09/silverlight-for-windows-embedded-tutorial-step-3-again.aspx&lt;/a&gt;&lt;br /&gt;
XAML2CPP 1.0.1.0:&lt;br /&gt;
&lt;a href="http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/03/09/silverlight-for-windows-embedded-tutorial-step-3-again.aspx"&gt;http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/03/08/xaml2cpp-1.0.1.0.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138472"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138472" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WindowsEmbeddedCookbook/aggbug/138472.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/_4tlEe01Lmk" height="1" width="1"/&gt;</description><dc:creator>Valter Minute</dc:creator><feedburner:origLink>http://geekswithblogs.net/WindowsEmbeddedCookbook/archive/2010/03/11/rss-blues.aspx</feedburner:origLink></item><item><title>How to deal with Warning : "Uncommittable transaction is detected at the end of the batch. The transaction is rolled back"</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/WIU1WjiYHmo/how-to-deal-with-warning--uncommittable-transaction-is-detected.aspx</link><pubDate>Fri, 12 Mar 2010 08:00:20 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/VishnuTiwariBlog/archive/2010/03/11/how-to-deal-with-warning--uncommittable-transaction-is-detected.aspx</guid><wfw:comment>http://geekswithblogs.net/VishnuTiwariBlog/comments/138471.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/VishnuTiwariBlog/comments/commentRss/138471.aspx</wfw:commentRss><comments>http://geekswithblogs.net/VishnuTiwariBlog/archive/2010/03/11/how-to-deal-with-warning--uncommittable-transaction-is-detected.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/VishnuTiwariBlog/services/trackbacks/138471.aspx</trackback:ping><source url="http://geekswithblogs.net/VishnuTiwariBlog/rss.aspx">How to deal with Warning : "Uncommittable transaction is detected at the end of the batch. The transaction is rolled back"</source><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;If you are integrating with SQL Server and dealing with batch messages, you may encounter this problem. And this is evitable. The reason is the contention of resources. If your batch contains four messages and all the four messages have to be updated to SQL Server and then at the same time four process will contend for SQL server table and resources and the obvious result will be, few of your transaction will be left uncomitted and if you are not handling dehydration [not modifying the default property of the Dehydration] then your orchestration will dehydrate and will go for retry. If retry is set for every five minutes then after five minutes Port will send the message to the database.&lt;/p&gt;
&lt;p&gt;Reason for writing this post was as I did not want to see so many DEHYDRATED messages. And this was happening as Host Throttling was not set. Thus as soon as the BizTalk Process finds that SQL resources are unavailable it will go and dehydrate that process and process will go for retry.&lt;/p&gt;
&lt;p&gt;The contension of resources is unavoidable though we can fine tune the Dehydration setting. If you increase the time that an orchestration can be blocked at a subscription before being dehydrated, possibly you will give more time BizTalk Engine to handle to SQL resource availability. At least I solve the problem by fine tuning the Dehydration properties. Below is the section of config info which you need to add to the BTSNTsvc.exe.config.&lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: smaller"&gt;&lt;span style="background-color: #ffff99"&gt;&lt;span style="font-family: Arial"&gt;&amp;lt;?xml version="1.0" ?&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
       &amp;lt;configSections&amp;gt;&lt;br /&gt;
              &amp;lt;section name="xlangs" type="Microsoft.XLANGs.BizTalk.CrossProcess.XmlSerializationConfigurationSectionHandler, Microsoft.XLANGs.BizTalk.CrossProcess" /&amp;gt;&lt;br /&gt;
       &amp;lt;/configSections&amp;gt;&lt;br /&gt;
       &amp;lt;runtime&amp;gt;&lt;br /&gt;
              &amp;lt;assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"&amp;gt;&lt;br /&gt;
                     &amp;lt;probing privatePath="BizTalk Assemblies;Developer Tools;Tracking" /&amp;gt;&lt;br /&gt;
              &amp;lt;/assemblyBinding&amp;gt;&lt;br /&gt;
       &amp;lt;/runtime&amp;gt;&lt;br /&gt;
       &amp;lt;xlangs&amp;gt;&lt;br /&gt;
              &amp;lt;Configuration&amp;gt;&lt;br /&gt;
                     &amp;lt;Dehydration MaxThreshold="1800" MinThreshold="1" ConstantThreshold="-1"&amp;gt;&lt;br /&gt;
                            &amp;lt;VirtualMemoryThrottlingCriteria OptimalUsage="900" MaximalUsage="1300" IsActive="true" /&amp;gt;&lt;br /&gt;
                            &amp;lt;PrivateMemoryThrottlingCriteria OptimalUsage="50" MaximalUsage="350" IsActive="true" /&amp;gt;&lt;br /&gt;
                            &amp;lt;PhysicalMemoryThrottlingCriteria OptimalUsage="50" MaximalUsage="350" IsActive="false" /&amp;gt;&lt;br /&gt;
                     &amp;lt;/Dehydration&amp;gt;&lt;br /&gt;
              &amp;lt;/Configuration&amp;gt;&lt;br /&gt;
       &amp;lt;/xlangs&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138471"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138471" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/VishnuTiwariBlog/aggbug/138471.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/WIU1WjiYHmo" height="1" width="1"/&gt;</description><dc:creator>VishnuTiwariBlog</dc:creator><feedburner:origLink>http://geekswithblogs.net/VishnuTiwariBlog/archive/2010/03/11/how-to-deal-with-warning--uncommittable-transaction-is-detected.aspx</feedburner:origLink></item><item><title>Silverlight Cream for March 11, 2010 -- #812</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/aIZ8bPRtUEg/138470.aspx</link><pubDate>Fri, 12 Mar 2010 06:05:32 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/WynApseTechnicalMusings/archive/2010/03/11/138470.aspx</guid><wfw:comment>http://geekswithblogs.net/WynApseTechnicalMusings/comments/138470.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/138470.aspx</wfw:commentRss><comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2010/03/11/138470.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/138470.aspx</trackback:ping><source url="http://geekswithblogs.net/WynApseTechnicalMusings/rss.aspx">Silverlight Cream for March 11, 2010 -- #812</source><description>&lt;p&gt;&lt;font face="tahoma"&gt;In this Issue: &lt;a href="#20100311Walter Ferrari"&gt;&lt;u&gt;Walter Ferrari&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100311Viktor Larsson"&gt;&lt;u&gt;Viktor Larsson&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100311Bill Reiss"&gt;&lt;u&gt;Bill Reiss&lt;/u&gt;&lt;/a&gt;(&lt;a href="#20100311Bill Reiss2"&gt;&lt;u&gt;-2-&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100311Bill Reiss3"&gt;&lt;u&gt;-3-&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100311Bill Reiss4"&gt;&lt;u&gt;-4-&lt;/u&gt;&lt;/a&gt;), &lt;a href="#20100311Jonathan van de Veen"&gt;&lt;u&gt;Jonathan van de Veen&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100311Walt Ritscher"&gt;&lt;u&gt;Walt Ritscher&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100311Jobi Joy"&gt;&lt;u&gt;Jobi Joy&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100311Pete Brown"&gt;&lt;u&gt;Pete Brown&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100311Mike Taulty"&gt;&lt;u&gt;Mike Taulty&lt;/u&gt;&lt;/a&gt;, and &lt;a href="#20100311Mark Miller"&gt;&lt;u&gt;Mark Miller&lt;/u&gt;&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
Shoutouts: &lt;br /&gt;
&lt;br /&gt;
Going to MIX10? &lt;b&gt;John Papa&lt;/b&gt; announced &lt;a href="http://johnpapa.net/silverlight/got-questions-ask-the-experts-at-mix10/"&gt;&lt;u&gt;Got Questions? Ask the Experts at MIX10 &lt;/u&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Pete Brown&lt;/b&gt; listed &lt;a href="http://10rem.net/articles/the-essential-wpf-silverlight-xna-developer-and-designer-toolbox"&gt;&lt;u&gt;The Essential WPF/Silverlight/XNA Developer and Designer Toolbox&lt;/u&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;hr width="50%" /&gt;
&lt;/center&gt;&lt;b&gt;From &lt;a href="http://www.silverlightcream.com"&gt;&lt;u&gt;SilverlightCream.com&lt;/u&gt;&lt;/a&gt;: &lt;/b&gt;
&lt;dl&gt;
    &lt;dt&gt;&lt;a name="20100311Walter Ferrari"&gt;&lt;/a&gt;&lt;a title="http://www.silverlightshow.net/items/How-to-extend-Bing-Maps-Silverlight-with-an-elevation-profile-graph-ndash-second-part.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5258"&gt;&lt;u&gt;How to extend Bing Maps Silverlight with an elevation profile graph - Part 2&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;In this second and final tutorial, &lt;b&gt;Walter Ferrari&lt;/b&gt; adds elevation to his previous BingMaps post. I'm glad someone else worked this out for me :) &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Viktor Larsson"&gt;&lt;/a&gt;&lt;a title="http://fragiledevelopment.wordpress.com/2010/03/11/navigating-away-from-your-silverlight-page/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5257"&gt;&lt;u&gt;Navigating AWAY from your Silverlight page&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Viktor Larsson&lt;/b&gt; has a post up on how to navigate to something other than your Silverlight page like maybe a mailto ... &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Bill Reiss"&gt;&lt;/a&gt;&lt;a title="http://blogs.silverarcade.com/silverlight-games-101/08/silverlight-silversprite-not-just-for-xna-games-any-more/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5253"&gt;&lt;u&gt;SilverSprite: Not just for XNA games any more&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Bill Reiss&lt;/b&gt; has a new version of SilverSprite up on CodePlex and if you're planning on doing any game development, you should check this out for sure &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Bill Reiss2"&gt;&lt;/a&gt;&lt;a title="http://blogs.silverarcade.com/silverlight-games-101/08/silverlight-space-rocks-game-step-1-the-game-loop/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5254"&gt;&lt;u&gt;Space Rocks game step 1: The game loop&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Bill Reiss&lt;/b&gt; has a tutorial series on Game development that he's beginning ... looks like a good thing to jump in on and play along. This first one is all about the game loop. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Bill Reiss3"&gt;&lt;/a&gt;&lt;a title="http://blogs.silverarcade.com/silverlight-games-101/09/silverlight-space-rocks-game-step-2-sprites-part-1/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5255"&gt;&lt;u&gt;Space Rocks game step 2: Sprites (part 1)&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;In Part 2, &lt;b&gt;Bill Reiss&lt;/b&gt; begins a series on Sprites in game development and positioning it. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Bill Reiss4"&gt;&lt;/a&gt;&lt;a title="http://blogs.silverarcade.com/silverlight-games-101/09/silverlight-space-rocks-game-step-3-sprites-part-2/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5256"&gt;&lt;u&gt;Space Rocks game step 3: Sprites (part 2)&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Bill Reiss&lt;/b&gt;'s Part 3 is a follow-on tutorial on Sprites and moving according to velocity... fun stuff :) &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Jonathan van de Veen"&gt;&lt;/a&gt;&lt;a title="http://jvdveen.blogspot.com/2010/03/adventures-while-building-silverlight.html" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5252"&gt;&lt;u&gt;Adventures while building a Silverlight Enterprise application part No. 32&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Jonathan van de Veen&lt;/b&gt; is discussing debugging and the evil you can get yourself wrapped up in... his scenario is definitely one to remember. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Walt Ritscher"&gt;&lt;/a&gt;&lt;a title="http://blog.wpfwonderland.com/2010/03/08/streaming-silverlight-media-from-a-dropboxcom-account/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5251"&gt;&lt;u&gt;Streaming Silverlight media from a Dropbox.com account&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;Read the comments and the agreements, but I think &lt;b&gt;Walt Ritscher&lt;/b&gt;'s idea of using DropBox to serve up Streaming media is pretty cool! &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Jobi Joy"&gt;&lt;/a&gt;&lt;a title="http://jobijoy.blogspot.com/2010/03/uniformgrid-for-silverlight-ported-from.html" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5250"&gt;&lt;u&gt;UniformGrid for Silverlight &lt;/u&gt;&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Jobi Joy&lt;/b&gt; wanted a UniformGrid like he's familiar with in WPF. Not finding one in the SDK or Toolkit, he converted the WPF one to Silverlight .. all good for you and me :) &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Pete Brown"&gt;&lt;/a&gt;&lt;a title="http://10rem.net/articles/how-to-get-started-in-wpf-or-silverlight-a-learning-path-for-new-developers" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5249"&gt;&lt;u&gt;How to Get Started in WPF or Silverlight: A Learning Path for New Developers&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Pete Brown&lt;/b&gt; has a nice post up describing resources, tutorials, blogs, and books for devs just getting into Silveright or WPF, and thanks for the shoutout, Pete! &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Mike Taulty"&gt;&lt;/a&gt;&lt;a title="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2010/03/09/mef-and-the-deploymentcatalog.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5248"&gt;&lt;u&gt;Silverlight 4, MEF and the DeploymentCatalog ( again :-) ) &lt;/u&gt;&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Mike Taulty&lt;/b&gt; is revisiting the DeploymentCatalog to wrap it up in a class like he did the PackageCatalog previously &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100311Mark Miller"&gt;&lt;/a&gt;&lt;a title="http://www.developmentalmadness.com/archive/2010/03/08/mvvm-with-prism-101-ndash-part-6b-wrapping-iclientchannel.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5247"&gt;&lt;u&gt;MVVM with Prism 101 – Part 6b: Wrapping IClientChannel&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Mark Miller&lt;/b&gt; is back with a Part 6b on MVVM with Prism, and is answering some questions from the previous post and states his case against the client service proxy. &lt;/dd&gt;
&lt;/dl&gt;
&lt;br /&gt;
&lt;font color="#0000ff"&gt;&lt;strong&gt;Stay in the 'Light!&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;
&lt;center&gt;&lt;hr width="50%" /&gt;
&lt;a href="http://twitter.com/SilverlightNews"&gt;&lt;u&gt;Twitter SilverlightNews&lt;/u&gt;&lt;/a&gt; | &lt;a href="http://twitter.com/WynApse"&gt;&lt;u&gt;Twitter WynApse&lt;/u&gt;&lt;/a&gt; | &lt;a href="http://www.wynapse.com"&gt;&lt;u&gt;WynApse.com&lt;/u&gt;&lt;/a&gt; | &lt;a href="http://www.wynapse.com/TaggedPosts.aspx"&gt;&lt;u&gt;Tagged Posts&lt;/u&gt;&lt;/a&gt; | &lt;a href="http://www.silverlightcream.com"&gt;&lt;u&gt;SilverlightCream&lt;/u&gt;&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://tech.groups.yahoo.com/group/SilverlightCream/join"&gt;&lt;u&gt;Join me @ SilverlightCream&lt;/u&gt;&lt;/a&gt; | &lt;a href="http://www.phoenixsilverlight.net"&gt;&lt;u&gt;Phoenix Silverlight User Group&lt;/u&gt;&lt;/a&gt; &lt;br /&gt;
&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tag/Silverlight"&gt;&lt;img alt=" " style="border-bottom: 0pt; border-left: 0pt; margin-left: 0.4em; vertical-align: middle; border-top: 0pt; border-right: 0pt" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=Silverlight" /&gt;Silverlight&lt;/a&gt;    &lt;a rel="tag" href="http://technorati.com/tag/silverlight-3"&gt;&lt;img alt=" " style="border-bottom: 0pt; border-left: 0pt; margin-left: 0.4em; vertical-align: middle; border-top: 0pt; border-right: 0pt" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=silverlight-3" /&gt;Silverlight 3&lt;/a&gt;    &lt;a rel="tag" href="http://technorati.com/tag/silverlight-4"&gt;&lt;img alt=" " style="border-bottom: 0pt; border-left: 0pt; margin-left: 0.4em; vertical-align: middle; border-top: 0pt; border-right: 0pt" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=silverlight-4" /&gt;Silverlight 4&lt;/a&gt;    &lt;a rel="tag" href="http://technorati.com/tag/MIX10"&gt;&lt;img alt=" " style="border-bottom: 0pt; border-left: 0pt; margin-left: 0.4em; vertical-align: middle; border-top: 0pt; border-right: 0pt" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=MIX10" /&gt;MIX10&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138470"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138470" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/138470.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/aIZ8bPRtUEg" height="1" width="1"/&gt;</description><dc:creator>Dave Campbell</dc:creator><feedburner:origLink>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2010/03/11/138470.aspx</feedburner:origLink></item><item><title>ASP.NET MVC 2 RTM Available</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/BV0DejI6CUk/asp.net-mvc-2-rtm-available.aspx</link><pubDate>Fri, 12 Mar 2010 05:31:06 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/shaunxu/archive/2010/03/12/asp.net-mvc-2-rtm-available.aspx</guid><wfw:comment>http://geekswithblogs.net/shaunxu/comments/138469.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/shaunxu/comments/commentRss/138469.aspx</wfw:commentRss><comments>http://geekswithblogs.net/shaunxu/archive/2010/03/12/asp.net-mvc-2-rtm-available.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/shaunxu/services/trackbacks/138469.aspx</trackback:ping><source url="http://geekswithblogs.net/shaunxu/rss.aspx">ASP.NET MVC 2 RTM Available</source><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/shijuvarghese/" target="_blank"&gt;Shiju Varghese&lt;/a&gt; posted &lt;a href="http://weblogs.asp.net/shijuvarghese/archive/2010/03/11/asp-net-mvc-2-rtm-released.aspx" target="_blank"&gt;an article&lt;/a&gt; on his(her) blog and said that the RTM of the ASP.NET MVC 2 had been released and available to download. You can get the installation packeage and the release note &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=c9ba1fe1-3ba8-439a-9e21-def90a8615a9%20" target="_blank"&gt;here&lt;/a&gt;. And based on the release note there’s no breaking changes from RC2 to RTM.&lt;/p&gt;  &lt;p&gt;Let’s play with the new ASP.NET MVC and look forward the Visual Studio 2010 RTM.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138469"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138469" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shaunxu/aggbug/138469.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/BV0DejI6CUk" height="1" width="1"/&gt;</description><dc:creator>Shaun</dc:creator><feedburner:origLink>http://geekswithblogs.net/shaunxu/archive/2010/03/12/asp.net-mvc-2-rtm-available.aspx</feedburner:origLink></item><item><title>NYC Code Camp Demo Code &amp;amp; Presentation</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/0ebqdViyVMs/nyc-code-camp-demo-code-amp-presentation.aspx</link><pubDate>Fri, 12 Mar 2010 03:45:36 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/danemorgridge/archive/2010/03/11/nyc-code-camp-demo-code-amp-presentation.aspx</guid><wfw:comment>http://geekswithblogs.net/danemorgridge/comments/138468.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/danemorgridge/comments/commentRss/138468.aspx</wfw:commentRss><comments>http://geekswithblogs.net/danemorgridge/archive/2010/03/11/nyc-code-camp-demo-code-amp-presentation.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/danemorgridge/services/trackbacks/138468.aspx</trackback:ping><source url="http://geekswithblogs.net/danemorgridge/rss.aspx">NYC Code Camp Demo Code &amp;amp; Presentation</source><description>&lt;p&gt;I had an awesome time at the NYC Code Camp last weekend and as promised here is the demo code and presentation that I used:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://s3.amazonaws.com/devstuff/EF4DemoNYC.zip"&gt;http://s3.amazonaws.com/devstuff/EF4DemoNYC.zip&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A special thanks to the organizers, you guys did an awesome job!  I can't wait for the next one.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138468"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138468" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/danemorgridge/aggbug/138468.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/0ebqdViyVMs" height="1" width="1"/&gt;</description><dc:creator>Dane Morgridge</dc:creator><feedburner:origLink>http://geekswithblogs.net/danemorgridge/archive/2010/03/11/nyc-code-camp-demo-code-amp-presentation.aspx</feedburner:origLink></item><item><title>Get Current QuarterEnd for a given FYE Date</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/OMeie_Sor1c/get-current-quarterend-for-a-given-fye-date.aspx</link><pubDate>Fri, 12 Mar 2010 02:06:12 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/rgupta/archive/2010/03/11/get-current-quarterend-for-a-given-fye-date.aspx</guid><wfw:comment>http://geekswithblogs.net/rgupta/comments/138467.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/rgupta/comments/commentRss/138467.aspx</wfw:commentRss><comments>http://geekswithblogs.net/rgupta/archive/2010/03/11/get-current-quarterend-for-a-given-fye-date.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/rgupta/services/trackbacks/138467.aspx</trackback:ping><source url="http://geekswithblogs.net/rgupta/rss.aspx">Get Current QuarterEnd for a given FYE Date</source><description>&lt;p&gt;Here is the code to get the Current Quarter End for a Given FYE Date:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; DateTime ThisQuarterEnd(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt; DateTime date, DateTime fyeDate)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;  {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;      IEnumerable&amp;lt;DateTime&amp;gt; candidates =&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;          QuartersInYear(date.Year, fyeDate.Month).Union(QuartersInYear(date.Year + 1, fyeDate.Month));&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;      &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; candidates.Where(d =&amp;gt; d.Subtract(date).Days &amp;gt;= 0).First();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;  }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; IEnumerable&amp;lt;DateTime&amp;gt; QuartersInYear(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; year, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; q4Month)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;  {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;      &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; q1Month = 3, q2Month = 6, q3Month = 9;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;      &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; q1year = year, q2year = year, q3year = year;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;      &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; q1Day = 31, q2Day = 31, q3Day = 31, q4Day = 31;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;      &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;      q3Month = q4Month - 3;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (q3Month &amp;lt;= 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;      {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;          q3Month = q3Month + 12;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;          q3year = year - 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;      }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;      q2Month = q4Month - 6;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (q2Month &amp;lt;= 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;      {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;          q2Month = q2Month + 12;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;          q2year = year - 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;      }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt;      q1Month = q4Month - 9;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (q1Month &amp;lt;= 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt;      {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt;          q1Month = q1Month + 12;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt;          q1year = year - 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt;      }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt;      q1Day = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(q1year, q1Month, 1).AddMonths(1).AddDays(-1).Day;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt;      q2Day = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(q2year, q2Month, 1).AddMonths(1).AddDays(-1).Day;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum36"&gt;  36:&lt;/span&gt;      q3Day = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(q3year, q3Month, 1).AddMonths(1).AddDays(-1).Day;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum37"&gt;  37:&lt;/span&gt;      q4Day = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(year, q4Month, 1).AddMonths(1).AddDays(-1).Day;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum38"&gt;  38:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum39"&gt;  39:&lt;/span&gt;      &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; List&amp;lt;DateTime&amp;gt;() {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum40"&gt;  40:&lt;/span&gt;              &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(q1year, q1Month, q1Day),&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum41"&gt;  41:&lt;/span&gt;              &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(q2year, q2Month, q2Day),&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum42"&gt;  42:&lt;/span&gt;              &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(q3year, q3Month, q3Day),&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum43"&gt;  43:&lt;/span&gt;              &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DateTime(year, q4Month, q4Day),&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum44"&gt;  44:&lt;/span&gt;              };&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum45"&gt;  45:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum46"&gt;  46:&lt;/span&gt;  }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The code to get the NextQuarterEnd is simple, just Change the Where clause to read d.Subtract(date).Days &amp;gt; 0 instead of d.Subtract(date).Days &amp;gt;= 0&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; DateTime NextQuarterEnd(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt; DateTime date, DateTime fyeDate)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     IEnumerable&amp;lt;DateTime&amp;gt; candidates =&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;         QuartersInYear(date.Year, fyeDate.Month).Union(QuartersInYear(date.Year + 1, fyeDate.Month));&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; candidates.Where(d =&amp;gt; d.Subtract(date).Days &amp;gt; 0).First();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Also if you need to get the Quarter Label for a given Date, given a particular FYE date then following is the code to use:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; GetQuarterLabel(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt; DateTime date, DateTime fyeDate)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; q1Month = fyeDate.Month - 9, q2Month = fyeDate.Month - 6, q3Month = fyeDate.Month - 3;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; year = date.Year, q1Year = date.Year, q2Year = date.Year, q3Year = date.Year;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;            &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (q1Month &amp;lt;= 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;                q1Month += 12;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;                q1Year = year + 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (q2Month &amp;lt;= 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;                q2Month += 12;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;                q2Year = year + 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (q3Month &amp;lt;= 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;                q3Month += 12;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;                q3Year = year + 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; qtr = &lt;span style="color: #006080"&gt;""&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (date.Month == q1Month)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;                qtr = &lt;span style="color: #006080"&gt;"Qtr1"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt;                year = q1Year;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (date.Month == q2Month)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt;                qtr = &lt;span style="color: #006080"&gt;"Qtr2"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt;                year = q2Year;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (date.Month == q3Month)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum36"&gt;  36:&lt;/span&gt;                qtr = &lt;span style="color: #006080"&gt;"Qtr3"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum37"&gt;  37:&lt;/span&gt;                year = q3Year;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum38"&gt;  38:&lt;/span&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum39"&gt;  39:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (date.Month == fyeDate.Month)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum40"&gt;  40:&lt;/span&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum41"&gt;  41:&lt;/span&gt;                qtr = &lt;span style="color: #006080"&gt;"Qtr4"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum42"&gt;  42:&lt;/span&gt;                year = date.Year;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum43"&gt;  43:&lt;/span&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum44"&gt;  44:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum45"&gt;  45:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #006080"&gt;"{0} - {1}"&lt;/span&gt;, qtr, year.ToString());&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum46"&gt;  46:&lt;/span&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138467"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138467" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/rgupta/aggbug/138467.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/OMeie_Sor1c" height="1" width="1"/&gt;</description><dc:creator>Rohit Gupta</dc:creator><feedburner:origLink>http://geekswithblogs.net/rgupta/archive/2010/03/11/get-current-quarterend-for-a-given-fye-date.aspx</feedburner:origLink></item><item><title>Devfish Joe Healy in Fort Lauderdale - Cloud Computing and Azure - 03/11/2010 MSDN Tiki Hut</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/Jvd0brvT4Xc/devfish-joe-healy-in-fort-lauderdale---cloud-computing-and.aspx</link><pubDate>Fri, 12 Mar 2010 00:38:59 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/Rainer/archive/2010/03/11/devfish-joe-healy-in-fort-lauderdale---cloud-computing-and.aspx</guid><wfw:comment>http://geekswithblogs.net/Rainer/comments/138466.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/Rainer/comments/commentRss/138466.aspx</wfw:commentRss><comments>http://geekswithblogs.net/Rainer/archive/2010/03/11/devfish-joe-healy-in-fort-lauderdale---cloud-computing-and.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/Rainer/services/trackbacks/138466.aspx</trackback:ping><source url="http://geekswithblogs.net/Rainer/rss.aspx">Devfish Joe Healy in Fort Lauderdale - Cloud Computing and Azure - 03/11/2010 MSDN Tiki Hut</source><description>&lt;p&gt;&lt;span style="font-size: medium"&gt;Devfish Joe Healy, Brian Hitney, and Herve Rogero presented excellent sessions on today's MSDN Tiki Hut Event about  Cloud Computing and Azure. This was an developer focused event, starting out with an overview about structure and platform, followed by working code samples running on the platform, and all needed information to get developers started on development for cloud applications. Participants had Q&amp;amp;A opportunities after each session and made good use of it. &lt;br /&gt;
&lt;br /&gt;
I am sure that a lot of developers will jump on the Azure train. Azure is on top of my dev project list after that great event! This platform offers endless opportunities for development and businesses. The cloud environment in general is safer, scales better, and is far more cost effective compared to run and maintain your own data center.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small"&gt;Posted: Rainer Habermann&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138466"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138466" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Rainer/aggbug/138466.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/Jvd0brvT4Xc" height="1" width="1"/&gt;</description><dc:creator>Rainer</dc:creator><feedburner:origLink>http://geekswithblogs.net/Rainer/archive/2010/03/11/devfish-joe-healy-in-fort-lauderdale---cloud-computing-and.aspx</feedburner:origLink></item><item><title>Little PM side post...</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/SpswWMmfnKw/little-pm-side-post.aspx</link><pubDate>Thu, 11 Mar 2010 21:57:57 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/edgaralgernon/archive/2010/03/11/little-pm-side-post.aspx</guid><wfw:comment>http://geekswithblogs.net/edgaralgernon/comments/138465.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/edgaralgernon/comments/commentRss/138465.aspx</wfw:commentRss><comments>http://geekswithblogs.net/edgaralgernon/archive/2010/03/11/little-pm-side-post.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/edgaralgernon/services/trackbacks/138465.aspx</trackback:ping><source url="http://geekswithblogs.net/edgaralgernon/rss.aspx">Little PM side post...</source><description>&lt;p&gt;When adding new team memebers... off set the ramp up time by&lt;/p&gt;
&lt;p&gt;1) having pre built machines ready and and easy method of getting the lastest tools, code base etc. &lt;br /&gt;
I'm fortunate enough to be at a client that has a machine ready built and loaded when the dev arrives, all they have to do is grab the code.&lt;/p&gt;
&lt;p&gt;2) have tasks broken down so that dependencies are as minimal as possible. In other words, to over come the mythical man month issue (as recently mentioned on slashdot) make sure the tasks you hand out have few dependencies on each other. That way the new dev is able to be productive fairly quickly.&lt;/p&gt;
&lt;p&gt;Here's our historical lead time... the bump in Jan is due to added work, by 2/18 we had added 4 new people over the last two weeks. And amazing the time starts coming down:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/edgaralgernon/11390/o_LeadTime0311.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;Here's our averag work time:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/edgaralgernon/11390/o_worktime0308.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;again time ramps up as we are adding more tasks, but then starts inching back down through out Feb and March.&lt;/p&gt;
&lt;p&gt;It's not that we beat the Mythical Man Month, and in fact I still believe the book and idea are highly relevant. But if you can break the tasks down and reduce the dependencies between the task then you can mitigate the effect.&lt;/p&gt;
&lt;p&gt;The tool used in this case is from AgileZen.com and some of the wild swings are due to inexperience with the system initially... but our average times as measured by the tool are matching real life. Also the tool appearst to measure in 24 hour days and 7 day weeks. so it isn't as bad as it looks. :-)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138465"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138465" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/edgaralgernon/aggbug/138465.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/SpswWMmfnKw" height="1" width="1"/&gt;</description><dc:creator>edgaralgernon</dc:creator><feedburner:origLink>http://geekswithblogs.net/edgaralgernon/archive/2010/03/11/little-pm-side-post.aspx</feedburner:origLink></item><item><title>Handy Javascript array Extensions &amp;ndash; distinct()</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/jy6OEb83MHs/138464.aspx</link><pubDate>Thu, 11 Mar 2010 15:35:52 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/liammclennan/archive/2010/03/11/138464.aspx</guid><wfw:comment>http://geekswithblogs.net/liammclennan/comments/138464.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/liammclennan/comments/commentRss/138464.aspx</wfw:commentRss><comments>http://geekswithblogs.net/liammclennan/archive/2010/03/11/138464.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/liammclennan/services/trackbacks/138464.aspx</trackback:ping><source url="http://geekswithblogs.net/liammclennan/rss.aspx">Handy Javascript array Extensions &amp;ndash; distinct()</source><description>&lt;p&gt;The following code adds a method to javascript arrays that returns a distinct list of values.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:457e6c65-bd18-413a-99d2-465b781ca14e" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 2;  toolbar: true; "&gt;Array.prototype.distinct = function() {
    var derivedArray = [];
    for (var i = 0; i &amp;lt; this.length; i += 1) {
        if (!derivedArray.contains(this[i])) {
            derivedArray.push(this[i])
        }
    }
    return derivedArray;
};&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;and to demonstrate:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:b3c9bc11-9461-4b80-a098-a2c415867254" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 2;  toolbar: true; "&gt;alert([1,1,1,2,2,22,3,4,5,6,7,5,4].distinct().join(','));&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;This produces 1,2,22,3,4,5,6,7&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138464"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138464" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/liammclennan/aggbug/138464.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/jy6OEb83MHs" height="1" width="1"/&gt;</description><dc:creator>Liam McLennan</dc:creator><feedburner:origLink>http://geekswithblogs.net/liammclennan/archive/2010/03/11/138464.aspx</feedburner:origLink></item><item><title>Where did my form go in SharePoint 2010!?</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/FSrQX4HA6x0/where-did-my-form-go-in-sharepoint-2010.aspx</link><pubDate>Thu, 11 Mar 2010 20:27:56 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/MOSSLover/archive/2010/03/11/where-did-my-form-go-in-sharepoint-2010.aspx</guid><wfw:comment>http://geekswithblogs.net/MOSSLover/comments/138463.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/MOSSLover/comments/commentRss/138463.aspx</wfw:commentRss><comments>http://geekswithblogs.net/MOSSLover/archive/2010/03/11/where-did-my-form-go-in-sharepoint-2010.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/MOSSLover/services/trackbacks/138463.aspx</trackback:ping><source url="http://geekswithblogs.net/MOSSLover/rss.aspx">Where did my form go in SharePoint 2010!?</source><description>&lt;p&gt;So I was working on an intro to development demo for the Central NJ .Net User Group and I found a few kinks.  I opened up a form to custom in InfoPath and Quick Published it wouldn’t work.  I imed my InfoPath guru friend, Lori Gowin, she said try to run a regular publish.  The form was still not showing up in SharePoint.  I could open it and it knew my changes, but it would just not render in a browser.  So I decided to create a form from scratch without using the button customize form in the list.  That did not work, so it was google time.  Finally I found this blog post: &lt;a title="http://qwertconsulting.wordpress.com/2009/12/22/list-form-from-infopath-2010-is-blank/" href="http://qwertconsulting.wordpress.com/2009/12/22/list-form-from-infopath-2010-is-blank/"&gt;http://qwertconsulting.wordpress.com/2009/12/22/list-form-from-infopath-2010-is-blank/&lt;/a&gt;.  Once I went into the configuration wizard and turned on the State Service everything worked perfectly fine.  It was great.  See I normally don’t run through the wizard and check the box to turn all the services on in SharePoint.  I usually like a leaner environment plus I want to learn how everything works.  So I guess most people had no idea what was going on in the background.  To get InfoPath to work you need the session state.  It’s doing some type of caching in the browser.  Very neat stuff.  I hope this helps one of you out there some day.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c5f23da8-784f-4f7c-87b8-3dd3a3b82e75" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/InfoPath+2010" rel="tag"&gt;InfoPath 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint+2010" rel="tag"&gt;SharePoint 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/State+Service" rel="tag"&gt;State Service&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138463"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138463" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MOSSLover/aggbug/138463.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/FSrQX4HA6x0" height="1" width="1"/&gt;</description><dc:creator>MOSSLover</dc:creator><feedburner:origLink>http://geekswithblogs.net/MOSSLover/archive/2010/03/11/where-did-my-form-go-in-sharepoint-2010.aspx</feedburner:origLink></item><item><title>C# Image Download</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/RYlWWJpBDqg/c-image-download.aspx</link><pubDate>Thu, 11 Mar 2010 20:27:40 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/whiletrue/archive/2010/03/11/c-image-download.aspx</guid><wfw:comment>http://geekswithblogs.net/whiletrue/comments/138462.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/whiletrue/comments/commentRss/138462.aspx</wfw:commentRss><comments>http://geekswithblogs.net/whiletrue/archive/2010/03/11/c-image-download.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/whiletrue/services/trackbacks/138462.aspx</trackback:ping><source url="http://geekswithblogs.net/whiletrue/rss.aspx">C# Image Download</source><description>&lt;p&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-size: large;"&gt;A C# class that makes it easier to download images from the web. &lt;br /&gt;
Use the following code in your program to download image files &lt;br /&gt;
such as JPG, GIF, PNG, etc from the internet using WebClient class.&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color: rgb(192, 192, 192);"&gt;&lt;span style="font-family: Courier New;"&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="background-color: rgb(192, 192, 192);"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Drawing.Imaging;&lt;br /&gt;
using System.IO;&lt;br /&gt;
using System.Net;&lt;br /&gt;
&lt;br /&gt;
public class DownloadImage&lt;br /&gt;
{&lt;br /&gt;
    private string imageUrl;&lt;br /&gt;
    private Bitmap bitmap;&lt;br /&gt;
    public DownloadImage(string imageUrl)&lt;br /&gt;
    {&lt;br /&gt;
        this.imageUrl = imageUrl;&lt;br /&gt;
    }&lt;br /&gt;
    public void Download()&lt;br /&gt;
    {&lt;br /&gt;
        try&lt;br /&gt;
        {&lt;br /&gt;
            WebClient client = new WebClient();&lt;br /&gt;
            Stream stream = client.OpenRead(imageUrl);&lt;br /&gt;
            bitmap = new Bitmap(stream);&lt;br /&gt;
            stream.Flush();&lt;br /&gt;
            stream.Close();&lt;br /&gt;
        }&lt;br /&gt;
        catch (Exception e)&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(e.Message);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public Bitmap GetImage()&lt;br /&gt;
    {&lt;br /&gt;
        return bitmap;&lt;br /&gt;
    }&lt;br /&gt;
    public void SaveImage(string filename, ImageFormat format)&lt;br /&gt;
    {&lt;br /&gt;
        if (bitmap != null)&lt;br /&gt;
        {&lt;br /&gt;
            bitmap.Save(filename, format);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Courier New;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138462"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138462" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/whiletrue/aggbug/138462.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/RYlWWJpBDqg" height="1" width="1"/&gt;</description><dc:creator>Nouman Zakir</dc:creator><feedburner:origLink>http://geekswithblogs.net/whiletrue/archive/2010/03/11/c-image-download.aspx</feedburner:origLink></item><item><title>User prompts (MessageBox) with MVVM</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/GSV98fTV1oQ/user-prompts-messagebox-with-mvvm.aspx</link><pubDate>Thu, 11 Mar 2010 20:05:11 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/mukapu/archive/2010/03/12/user-prompts-messagebox-with-mvvm.aspx</guid><wfw:comment>http://geekswithblogs.net/mukapu/comments/138461.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/mukapu/comments/commentRss/138461.aspx</wfw:commentRss><comments>http://geekswithblogs.net/mukapu/archive/2010/03/12/user-prompts-messagebox-with-mvvm.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/mukapu/services/trackbacks/138461.aspx</trackback:ping><source url="http://geekswithblogs.net/mukapu/rss.aspx">User prompts (MessageBox) with MVVM</source><description>&lt;p&gt;&lt;u&gt;&lt;strong&gt;The problem statement:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;I am tired of thinking how to show a simple message box or user prompt and act based on the response in Model-View-View-Model (MVVM).&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;strong&gt;Common approaches:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;- It's ok, let's just do this one thing from ViewModel and mock this out for unit testing &lt;img src="http://geekswithblogs.net/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/wink_smile.gif" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;- Design my own dialog, then what to do from there &lt;img src="http://geekswithblogs.net/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/devil_smile.gif" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;- Can I write something in view code behind, ah yes, that seems to be the only way out, as anyway MVVM is still not matured...  &lt;img src="http://geekswithblogs.net/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;- and what not?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I am pretty much one among the few frustrated out in this world looking for some convincing answers. I think we can do it a little neater without having the feeling of violating any of our self defined rules!&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;The Control&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;- Implement a simple control with no designer visibility.&lt;/p&gt;
&lt;p&gt;&lt;img height="175" width="707" alt="" src="/images/geekswithblogs_net/mukapu/UserPrompt1.png" /&gt;&lt;/p&gt;
&lt;p&gt;- Allow a property to be bound to tell when to show the MessageBox&lt;/p&gt;
&lt;p&gt;&lt;img height="301" width="597" alt="" src="/images/geekswithblogs_net/mukapu/UserPrompt2.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="176" width="710" alt="" src="/images/geekswithblogs_net/mukapu/UserPrompt3.png" /&gt;&lt;/p&gt;
&lt;p&gt;- Provide command binding for possible user actions, Yes, No, Cancel...&lt;/p&gt;
&lt;p&gt;&lt;img height="262" width="855" alt="" src="/images/geekswithblogs_net/mukapu/UserPrompt4.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;How do I Use&lt;/u&gt;&lt;u&gt;?&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;- Just place the necessary XAML tag in the view&lt;/p&gt;
&lt;p&gt;&lt;img height="134" width="643" alt="" src="/images/geekswithblogs_net/mukapu/UserPrompt5.png" /&gt;&lt;/p&gt;
&lt;p&gt;- Implement the command for all user actions in the View Model&lt;/p&gt;
&lt;p&gt;&lt;img height="191" width="503" alt="" src="/images/geekswithblogs_net/mukapu/UserPrompt6.png" /&gt;&lt;/p&gt;
&lt;p&gt;- Run unit tests on the commands&lt;/p&gt;
&lt;p&gt;&lt;img height="82" width="302" alt="" src="/images/geekswithblogs_net/mukapu/UserPrompt7.png" /&gt;&lt;/p&gt;
&lt;p&gt;I am also attaching the code for the MessageBox control and a demo application.&lt;a href="/images/geekswithblogs_net/mukapu/Code/UserPrompt.zip"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.2shared.com/file/12036643/91ec5ec2/UserPrompt.html" target="_blank"&gt;UserPrompt.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hope this is useful to somebody out there... Comments are welcome....&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="file:///C:/DOCUME~1/706015/LOCALS~1/Temp/moz-screenshot-1.png" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138461"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138461" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/mukapu/aggbug/138461.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/GSV98fTV1oQ" height="1" width="1"/&gt;</description><dc:creator>mukapu</dc:creator><feedburner:origLink>http://geekswithblogs.net/mukapu/archive/2010/03/12/user-prompts-messagebox-with-mvvm.aspx</feedburner:origLink></item><item><title>INETA Community Leadership Summit</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/mZsRvftYD4E/ineta-community-leadership-summit.aspx</link><pubDate>Thu, 11 Mar 2010 18:52:27 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/SSpradlin/archive/2010/03/11/ineta-community-leadership-summit.aspx</guid><wfw:comment>http://geekswithblogs.net/SSpradlin/comments/138460.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/SSpradlin/comments/commentRss/138460.aspx</wfw:commentRss><comments>http://geekswithblogs.net/SSpradlin/archive/2010/03/11/ineta-community-leadership-summit.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/SSpradlin/services/trackbacks/138460.aspx</trackback:ping><source url="http://geekswithblogs.net/SSpradlin/rss.aspx">INETA Community Leadership Summit</source><description>&lt;p&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" title="Leadership Summit" alt="Leadership Summit" align="right" src="http://www.ineta.org/newsletters/images/SummitLogo_150.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;INETA Community Leadership Summit will be taking place on Sunday June 6th at 1PM at Tech·Ed North America in New Orleans.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;INETA is hosting a free Community Leadership Summit in New Orleans at the Ernest N. Morial Convention Center on Sunday June 6th at 1:00 PM prior to the start of Tech·Ed 2010. The summit is open to Community Leaders from the area, as well as those attending Tech·Ed from across the country and around the world. It is an excellent opportunity for exchanging information and ideas.&lt;/p&gt;  &lt;p&gt;If you are a user group leader, or are involved in the leadership, planning, promotion, or day-to-day operations of a user group community, this event is for YOU! The summit is an open forum to share ideas, discuss common challenges, and gain from the experience of other leaders. INETA Community Leadership summits are part of an ongoing effort by INETA to create, improve and share resources designed to strengthen individual user groups and the community. This meeting will be the perfect opportunity to meet leaders from other groups, benefit from their success stories, and expand your network of contacts. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Quick FAQs&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Who can attend?     &lt;br /&gt;&lt;i&gt;Any leader or volunteer of any INETA User Group.&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;Do I need to be attending Tech·Ed?     &lt;br /&gt;&lt;i&gt;No, you do NOT need to purchase a pass for Tech·Ed to attend the Leadership Summit.&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;What does it cost to attend?     &lt;br /&gt;&lt;i&gt;There is NO cost to attend summit, but the knowledge that will be available about User Groups will be priceless.&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;I want to help out, who do I contact?     &lt;br /&gt;&lt;i&gt;Send an email to &lt;a href="mailto:julie.yack@ineta.org"&gt;julie.yack@ineta.org&lt;/a&gt; if you are interested.&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;I want to attend, where do I register?     &lt;br /&gt;&lt;i&gt;We are putting together a registration link now, it will be published in a future newsletter and on the website.&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;What will the format of the summit be?     &lt;br /&gt;&lt;i&gt;The summit will be like our Birds of a Feather Sessions but focused on User Group topics. Moderators will be armed with some broad topics to kick off the conversation, however the real value of these sessions is getting the chance to learn from each other.&lt;/i&gt;&lt;/li&gt;    &lt;li&gt;What topics will be covered?     &lt;br /&gt;&lt;i&gt;We are thinking of focusing on 4 areas: Running a User Group, Effective Content and Presenters, User Group Promotion and Developing Partnerships. However the agenda is yours! If there is a topic you want to see covered, or a topic that you would like to lead then email  &lt;a href="mailto:julie.yack@ineta.org"&gt;julie.yack@ineta.org&lt;/a&gt;.&lt;/i&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9dd34180-8d89-4fa1-9ac9-910d3bb73351" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/conference" rel="tag"&gt;conference&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138460"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138460" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/SSpradlin/aggbug/138460.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/mZsRvftYD4E" height="1" width="1"/&gt;</description><dc:creator>Scott Spradlin</dc:creator><feedburner:origLink>http://geekswithblogs.net/SSpradlin/archive/2010/03/11/ineta-community-leadership-summit.aspx</feedburner:origLink></item><item><title>What is the SharePoint Action Framework and why would I need it ?</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/LmWIol-_JsY/what-is-the-sharepoint-action-framework-and-why-do-i.aspx</link><pubDate>Thu, 11 Mar 2010 18:09:20 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/SAF/archive/2010/03/11/what-is-the-sharepoint-action-framework-and-why-do-i.aspx</guid><wfw:comment>http://geekswithblogs.net/SAF/comments/138459.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/SAF/comments/commentRss/138459.aspx</wfw:commentRss><comments>http://geekswithblogs.net/SAF/archive/2010/03/11/what-is-the-sharepoint-action-framework-and-why-do-i.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/SAF/services/trackbacks/138459.aspx</trackback:ping><source url="http://geekswithblogs.net/SAF/rss.aspx">What is the SharePoint Action Framework and why would I need it ?</source><description>&lt;p&gt; For those out there that are a little curious as to whether SAF is any use to your organisation, please read this FAQ.&lt;/p&gt;
&lt;h4&gt; What is SAF ?&lt;/h4&gt;
&lt;ul&gt;
    &lt;li&gt;
    &lt;div&gt;SAF is free to use.&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;SAF is the "SharePoint Action Framework", it was built by myself and Hugo (plus a few others along the way).&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;SAF is written entirely in C# code, available from : &lt;a href="http://saf.codeplex.com/"&gt;http://saf.codeplex.com&lt;/a&gt;.  &lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;SAF is a way to automate SharePoint configuration changes.&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;An Action is a command/class/task/script written in C# that performs a unit of execution against SharePoint such as "CreateWeb"  or "AddLookupColumn".&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;A SAF Macro is collection of one or more Actions.&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;A SAF Macro can be run from Msbuild, a Feature, StsAdm or plain old .Net code.&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;Parameters can be passed to a Macro at run-time from a variety of sources such as "Environment Variable", "*.config", "Msbuild Properties", Feature Properties, command line args, .net code.&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;SAF emits lots of trace statements at run-time, these can be viewed using "DebugView".&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;One Action can pass parameters to another Action.&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;Parameters can be set using Spring expression syntax such as "DateTime.Now - 10".&lt;/div&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt; You should consider SAF if you suffer from one of the following symptoms...&lt;/h4&gt;
&lt;ul&gt;
    &lt;li&gt;
    &lt;div&gt;"Our developers write lots of code to deploy changes at release time - it's always rushed"&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"I don't want my developers shelling out to Powershell or Stsadm from a Feature".&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"We have loads of Console applications now, I have lost track of where they are, or what they do"&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"We seem to be writing similar scripts against SharePoint in lots of ways, testing is hard".&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"My scripts often have lots of errors - they are done at the last minute".&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"When something goes wrong - I have no idea what went wrong or how to solve it".&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"Our Features get stuck and bomb out half way through - there no way to roll them back".&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"We have tons of Features now - I can't keep track".&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"We deploy Features to run one-off tasks"&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"We have a library of reusable scripts, but, we can only run them in one way, sometimes we want to run them from MSbuild and a Feature".&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"I want to automate the deployment of changes to our development environment".&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;"I would like to run a housekeeping task on a scheduled basis"&lt;/div&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt; &lt;/h4&gt;
&lt;h4&gt;
&lt;p&gt;So I like the sound of SAF - what's the problems ?&lt;/p&gt;
&lt;/h4&gt;
&lt;p&gt; Realistically (and honestly), there are few things that need to be considered:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
    &lt;div&gt;&lt;strong&gt;Someone on your team will need to spend a day or 2 learning + understanding SAF &lt;/strong&gt;and deciding exactly how you want to use it. I would suggest a Tech Lead, System Admin or SP Architect will need to download it, try out the examples, look through the unit tests. Ask us questions. Although SAF can be downloaded and set to go in a few minutes, you will still need to address issues such as - "Do you want to execute your Macros in MsBuild or from a Feature ?" and "How can I integrate SAF into my current build and deployment process?"&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;&lt;strong&gt;You will need to decide who is going to do your deployments &lt;/strong&gt;- is it each developer to themself, or do you require a dedicated Build Manager ?&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;As most environments (Dev, QA, Live etc) require different settings (e.g. Urls, Database names, accounts etc), you will more than likely want to define these and &lt;strong&gt;set a properties file &lt;/strong&gt;up for each environment. (These can then be injected into Saf at run-time).&lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;div&gt;&lt;strong&gt;There may be no Actions to solve your particular problem&lt;/strong&gt;. If this is the case, suggest it to us - we can try and write it, or write it yourself. It's very easy to write a new Action - we have an approach to easily unit test it, document it and author it. For example, I wrote one to deploy  a WSP in 2 hours the other day. Alternatively, Saf can also call Stsadm commands and Powershell scripts. Once the Action is written you can register it with SAF then all your devs can run it using the most appropriate client.&lt;/div&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anyway, I do hope this helps! If you still need help, or a quick start, we can also offer consultancy around SAF. If you want to know more give us a call or drop an email to &lt;a href="mailto:support@collaboris.co.uk"&gt;support@collaboris.co.uk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138459"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138459" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/SAF/aggbug/138459.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/LmWIol-_JsY" height="1" width="1"/&gt;</description><dc:creator>SAF</dc:creator><feedburner:origLink>http://geekswithblogs.net/SAF/archive/2010/03/11/what-is-the-sharepoint-action-framework-and-why-do-i.aspx</feedburner:origLink></item><item><title>Make sure you take advantage of Visual Studio 2010 license offers before April 12th</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/vUnxF68haBU/138458.aspx</link><pubDate>Thu, 11 Mar 2010 17:37:29 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/aaronsblog/archive/2010/03/11/138458.aspx</guid><wfw:comment>http://geekswithblogs.net/aaronsblog/comments/138458.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/aaronsblog/comments/commentRss/138458.aspx</wfw:commentRss><comments>http://geekswithblogs.net/aaronsblog/archive/2010/03/11/138458.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/aaronsblog/services/trackbacks/138458.aspx</trackback:ping><source url="http://geekswithblogs.net/aaronsblog/rss.aspx">Make sure you take advantage of Visual Studio 2010 license offers before April 12th</source><description>&lt;p&gt;For Visual Studio 2010 Professional&lt;/p&gt;  &lt;p&gt;Microsoft Visual Studio 2010 Professional will launch on April 12 but you can beat the rush and secure your copy today by pre-ordering at the affordable estimated retail price of $549, a saving of $250. &lt;/p&gt;  &lt;p&gt;If you use a previous version of Visual Studio or any other development tool then &lt;/p&gt;  &lt;p&gt;you are eligible for this upgrade. Along with all the great new features in Visual Studio 2010 (see &lt;a href="http://www.microsoft.com/visualstudio"&gt;www.microsoft.com/visualstudio&lt;/a&gt;) Visual Studio 2010 Professional includes a 12-month &lt;a title="MSDN" href="http://msdn.microsoft.com"&gt;MSDN&lt;/a&gt; Essentials subscription which gives you access to core Microsoft platforms: Windows 7 Ultimate, Windows Server 2008 R2 Enterprise, and Microsoft SQL Server 2008 R2 Datacenter. &lt;/p&gt;  &lt;p&gt;So visit &lt;a href="http://www.microsoft.com/visualstudio/en-us/pre-order-visual-studio-2010%20"&gt;http://www.microsoft.com/visualstudio/en-us/pre-order-visual-studio-2010&lt;/a&gt; to check out all the new features and sign up for this great offer.&lt;/p&gt;  &lt;p&gt;Ultimate Offer for &lt;a title="MSDN" href="http://msdn.microsoft.com"&gt;MSDN&lt;/a&gt; Subscribers&lt;/p&gt;  &lt;p&gt;Also, don’t forget about the &lt;a href="http://www.microsoft.com/visualstudio/en-ca/products/2010/default.mspx#2010-msdn-deal"&gt;Ultimate Offer&lt;/a&gt; which basically gives you the opportunity to use a higher end Visual Studio SKU for the duration of your &lt;a title="MSDN" href="http://msdn.microsoft.com"&gt;MSDN&lt;/a&gt; agreement.  Make sure you review your &lt;a title="MSDN" href="http://msdn.microsoft.com"&gt;MSDN&lt;/a&gt; license BEFORE APRIL 12th to make sure you are in the right spot to maximize this benefit.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c326bb12-d67e-4ee9-8f59-c80c826a7c92" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/VS+2010" rel="tag"&gt;VS 2010&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138458"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138458" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aaronsblog/aggbug/138458.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/vUnxF68haBU" height="1" width="1"/&gt;</description><dc:creator>Aaron Kowall</dc:creator><feedburner:origLink>http://geekswithblogs.net/aaronsblog/archive/2010/03/11/138458.aspx</feedburner:origLink></item><item><title>Camtasia Studio</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/JBmYM9nPgZs/138457.aspx</link><pubDate>Thu, 11 Mar 2010 17:16:16 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/andym/archive/2010/03/11/138457.aspx</guid><wfw:comment>http://geekswithblogs.net/andym/comments/138457.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/andym/comments/commentRss/138457.aspx</wfw:commentRss><comments>http://geekswithblogs.net/andym/archive/2010/03/11/138457.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/andym/services/trackbacks/138457.aspx</trackback:ping><source url="http://geekswithblogs.net/andym/rss.aspx">Camtasia Studio</source><description>&lt;p&gt;Have you heard about this tool?&lt;/p&gt;
&lt;p&gt;This is a capture tool that records your actions as you perform them on your workstation, remote desktop, etc.  It's made by the same company that makes SnagIt, etc.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.techsmith.com/camtasia.asp"&gt;http://www.techsmith.com/camtasia.asp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have used this at several customers to record our install and configurations of BizTalk and more - this can come in very handy to help reduce differences in environments (because you can go back and review exactly what you did in the previous environment) as well as to supplement your installation docs.   The product also includes an editing studio and various media types for export.&lt;/p&gt;
&lt;p&gt;I haven't been paid to write this - I just think the tool is very nice.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138457"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138457" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/andym/aggbug/138457.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/JBmYM9nPgZs" height="1" width="1"/&gt;</description><dc:creator>Andy Morrison</dc:creator><feedburner:origLink>http://geekswithblogs.net/andym/archive/2010/03/11/138457.aspx</feedburner:origLink></item><item><title>Copying Properties between 2 Different Types&amp;hellip;</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/ueHs6uALwkg/copying-properties-between-2-different-typeshellip.aspx</link><pubDate>Thu, 11 Mar 2010 17:11:39 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/cicorias/archive/2010/03/11/copying-properties-between-2-different-typeshellip.aspx</guid><wfw:comment>http://geekswithblogs.net/cicorias/comments/138455.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/cicorias/comments/commentRss/138455.aspx</wfw:commentRss><comments>http://geekswithblogs.net/cicorias/archive/2010/03/11/copying-properties-between-2-different-typeshellip.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://geekswithblogs.net/cicorias/services/trackbacks/138455.aspx</trackback:ping><source url="http://geekswithblogs.net/cicorias/rss.aspx">Copying Properties between 2 Different Types&amp;hellip;</source><description>&lt;p&gt;I’m not sure where I had seen some of this base code, but this comes up time &amp;amp; time again on projects.&lt;/p&gt;  &lt;p&gt;Here’s a little method that copies all the R/W properties (public) between 2 distinct class definitions:&lt;/p&gt;  &lt;p&gt;It’s called as follows:&lt;/p&gt;  &lt;pre class="brush: csharp; ruler: true;"&gt;private static void Test1()
{
MyClass obj1 = new MyClass()
{
    Prop1 = "one",
    Prop2 = "two",
    Prop3 = 100
};

MyOtherClass obj2 = null;

obj2 = CopyClass&lt;myclass myotherclass=""&gt;(obj1);


Console.WriteLine(obj1);
Console.WriteLine(obj2);
}

namespace Space1
{
public class MyClass
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public int Prop3 { get; set; }

public override string ToString()
{
var rv = string.Format("MyClass: {0} Prop2: {1} Prop3 {2}", Prop1, Prop2, Prop3);
return rv;
}
}
}

namespace Space2
{
public class MyOtherClass
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public int Prop3 { get; set; }

public override string ToString()
{
var rv = string.Format("MyOtherClass: {0} Prop2: {1} Prop3 {2}", Prop1, Prop2, Prop3);
return rv;
}
}&lt;/myclass&gt;&lt;/pre&gt;

&lt;p&gt;Source of the method:&lt;/p&gt;

&lt;pre class="brush: csharp; ruler: true;"&gt;/// &lt;summary&gt;
/// Provides a Copy of Public fields between 2 distinct classes
/// &lt;/summary&gt;
/// &lt;typeparam name="S"&gt;Source class name&lt;/typeparam&gt;
/// &lt;typeparam name="T"&gt;Target class name&lt;/typeparam&gt;
/// &lt;param name="source" /&gt;Instance of type Source
/// &lt;returns&gt;An instance of type Target copying all public properties matching name from the Source.&lt;/returns&gt;
public static T CopyClass&amp;lt;s  , t&amp;gt;(S source) where T : new()
{

    T target = default(T);
    BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;

    if (source == null)
    {
        return (T)target;
    }

    if (target == null) target = new T();

    PropertyInfo[] objProperties = target.GetType().GetProperties(flags);

    foreach (PropertyInfo pi in objProperties)
    {
        string name = pi.Name;
        PropertyInfo sourceProp = source.GetType().GetProperty(name, flags);

        if (sourceProp == null)
        {
            throw new ApplicationException(string.Format("CopyClass - object type {0} &amp;amp; {1} mismatch in property:{2}", source.GetType(), target.GetType(), name));
        }
        if (pi.CanWrite &amp;amp;&amp;amp; sourceProp.CanRead)
        {
            object sourceValue = sourceProp.GetValue(source, null);
            pi.SetValue(target, sourceValue, null);
        }
        else
        {
            throw new ApplicationException(string.Format("CopyClass - can't read/write a property object types {0} &amp;amp; {1}  property:{2}", source.GetType(), target.GetType(), name));
        }
    }

    return target;
}&lt;/pre&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138455"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138455" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/cicorias/aggbug/138455.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/ueHs6uALwkg" height="1" width="1"/&gt;</description><dc:creator>Shawn Cicoria</dc:creator><feedburner:origLink>http://geekswithblogs.net/cicorias/archive/2010/03/11/copying-properties-between-2-different-typeshellip.aspx</feedburner:origLink></item><item><title>ESB Toolkit 2.0 EndPointConfig (HTTPS with WCF-BasicHttp and the ESB Toolkit 2.0)</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/kr_aZJ4JeiE/138452.aspx</link><pubDate>Thu, 11 Mar 2010 15:36:36 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/andym/archive/2010/03/11/138452.aspx</guid><wfw:comment>http://geekswithblogs.net/andym/comments/138452.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/andym/comments/commentRss/138452.aspx</wfw:commentRss><comments>http://geekswithblogs.net/andym/archive/2010/03/11/138452.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/andym/services/trackbacks/138452.aspx</trackback:ping><source url="http://geekswithblogs.net/andym/rss.aspx">ESB Toolkit 2.0 EndPointConfig (HTTPS with WCF-BasicHttp and the ESB Toolkit 2.0)</source><description>&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;Earlier this week I had an ESB endpoint (Off-Ramp in ESB parlance) that I was sending to over http using WCF-BasicHttp.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;I needed to switch the protocol to https: which I did by changing my UDDI Binding over to https:&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;No problem from a management perspective; however, when I tried to run the process I saw this exception:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;Event Type:&lt;span style="mso-tab-count: 1"&gt;                     &lt;/span&gt;Error&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;Event Source:&lt;span style="mso-tab-count: 1"&gt;                &lt;/span&gt;BizTalk Server 2009&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;Event Category:&lt;span style="mso-tab-count: 1"&gt;            &lt;/span&gt;BizTalk Server 2009 &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;Event ID:&lt;span style="mso-tab-count: 1"&gt;   &lt;/span&gt;5754&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;Date:&lt;span style="mso-tab-count: 2"&gt;                                    &lt;/span&gt;3/10/2010&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;Time:&lt;span style="mso-tab-count: 2"&gt;                                   &lt;/span&gt;2:58:23 PM&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;User:&lt;span style="mso-tab-count: 2"&gt;                                    &lt;/span&gt;N/A&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;Computer:&lt;span style="mso-tab-count: 1"&gt;                       &lt;/span&gt;XXXXXXXXX&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;Description:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;A message sent to adapter "WCF-BasicHttp" on send port "SPDynamic.XXX.SR" with URI "https://XXXXXXXXX.com/XXXXXXX/whatever.asmx" is suspended. &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Error details: System.ArgumentException: The provided URI scheme 'https' is invalid; expected 'http'.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;Parameter name: via&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at System.ServiceModel.Channels.TransportChannelFactory`1.ValidateScheme(Uri via)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at System.ServiceModel.Channels.HttpChannelFactory.ValidateCreateChannelParameters(EndpointAddress remoteAddress, Uri via)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at System.ServiceModel.Channels.HttpChannelFactory.OnCreateChannel(EndpointAddress remoteAddress, Uri via)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at System.ServiceModel.Channels.ChannelFactoryBase`1.InternalCreateChannel(EndpointAddress address, Uri via)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at System.ServiceModel.Channels.ChannelFactoryBase`1.CreateChannel(EndpointAddress address, Uri via)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at System.ServiceModel.Channels.ServiceChannelFactory.ServiceChannelFactoryOverRequest.CreateInnerChannelBinder(EndpointAddress to, Uri via)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at System.ServiceModel.Channels.ServiceChannelFactory.CreateServiceChannel(EndpointAddress address, Uri via)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at System.ServiceModel.Channels.ServiceChannelFactory.CreateChannel(Type channelType, EndpointAddress address, Uri via)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at System.ServiceModel.ChannelFactory`1.CreateChannel(EndpointAddress address, Uri via)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at System.ServiceModel.ChannelFactory`1.CreateChannel()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.GetChannel[TChannel](IBaseMessage bizTalkMessage, ChannelFactory`1&amp;amp; cachedFactory)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.SendMessage(IBaseMessage bizTalkMessage) &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;MessageId:&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;{1170F4ED-550F-4F7E-B0E0-1EE92A25AB10}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-size: 8pt; line-height: 115%"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;InstanceID: {1640C6C6-CA9C-4746-AEB0-584FDF7BB61E}&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;I knew from a previous experience that I likely needed to set the SecurityMode setting for my Send Port.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;But how do you do this for a Dynamic port (which I was using since this is an ESB solution)?&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;Within the UDDI portal you have to add an additional Instance Info to your Binding named:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;EndPointConfig&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Then you have to set its value to:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;SecurityMode=Transport&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;Like this:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt; &lt;img height="453" width="1124" alt="" src="/images/geekswithblogs_net/andym/UDDI%20EndPointConfig.PNG" /&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The EndPointConfig is how the ESB Toolkit 2.0 provides extensibility for the various transports.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;To see what the key-value pair options are for a given transport, open up an itinerary and change one of your resolvers to a “static” resolver by setting the “Resolver Implementation” to Static.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Then select a “Transport Name” ”, for instance to WCF-BasicHttp.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;At this point you can then click on the “EndPoint Configuration” property for to see an adapter/ramp specific properties dialog (key-value pairs.)&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt; &lt;img height="403" width="421" alt="" src="/images/geekswithblogs_net/andym/EndPointConfiguration%20in%20Properties.png" /&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;Here’s the dialog that popped up for WCF-BasicHttp:&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt; &lt;img height="815" width="659" alt="" src="/images/geekswithblogs_net/andym/EndPointConfiguration%20for%20WCF-BasicHttp.png" /&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;I simply set the SecurityMode to Transport.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Please note that you will get different properties within the window depending on the Transport Name you select for the resolver.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;When you are done with your settings, export the itinerary to disk and find that xml; then find that resolver’s xml within that file.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;It will look like endpointConfig=SecurityMode=Transport in this case.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Note that if you set additional properties you will have additional key-value pairs after endpointConfig=&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;font face="Calibri" size="3"&gt;Copy that string and paste it into the UDDI portal for you Binding’s EndPointConfig Instance Info value.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138452"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138452" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/andym/aggbug/138452.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/kr_aZJ4JeiE" height="1" width="1"/&gt;</description><dc:creator>Andy Morrison</dc:creator><feedburner:origLink>http://geekswithblogs.net/andym/archive/2010/03/11/138452.aspx</feedburner:origLink></item><item><title>Does Test Driven Development (TDD) improve Quality and Correctness? (Part 1)</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/F9zQdBSq60U/does-test-driven-development-tdd-improve-quality-and-correctness.aspx</link><pubDate>Thu, 11 Mar 2010 14:16:43 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/TheCPUWizard/archive/2010/03/11/does-test-driven-development-tdd-improve-quality-and-correctness.aspx</guid><wfw:comment>http://geekswithblogs.net/TheCPUWizard/comments/138451.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/TheCPUWizard/comments/commentRss/138451.aspx</wfw:commentRss><comments>http://geekswithblogs.net/TheCPUWizard/archive/2010/03/11/does-test-driven-development-tdd-improve-quality-and-correctness.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/TheCPUWizard/services/trackbacks/138451.aspx</trackback:ping><source url="http://geekswithblogs.net/TheCPUWizard/rss.aspx">Does Test Driven Development (TDD) improve Quality and Correctness? (Part 1)</source><description>&lt;p&gt;Since the dawn of the computer age, various methodologies have been introduced to improve quality and reduce cost. In this posting, I will by sharing my experiences with Test Driven Development; both its benefits and limitations.&lt;/p&gt;
&lt;p&gt;To start this topic, we need to agree on what TDD is. The first is to define each of the three words as used in this context.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Test&lt;/strong&gt; - An item or action which measures something in some quantifiable form.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Driven&lt;/strong&gt; - The primary motivation or focus of a series of activities (process)&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Development &lt;/strong&gt;- All phases of a software project/product from concept through delivery.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The above are very simple definitions that result in the following:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;em&gt;&lt;strong&gt;"TDD is a process where the primary focus is on measuring and quantifying &lt;br /&gt;
all aspects of the creation of a (software) product."&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There are many places where TDD is used outside of software development, even though it is not known by this name. Consider the (conventional) education process that most of us grew up on. The focus was to get the best grades as measured by different tests. Many of these tests measured rote memorization and not understanding of the subject matter. The result of this that many people graduated with high scores but without "quality and correctness" in their ability to utilize the subject matter (of course, the flip side is true where certain people DID understand the material but were not very good at taking this type of test).&lt;/p&gt;
&lt;p&gt;Returning to software development, let us look at some common scenarios. While these items are generally applicable regardless of platform, language and tools; the remainder of this post will utilize Microsoft Visual Studio and Team Foundation Server (TFS) for examples.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;It should be realized that everyone does at least some aspect of TDD. At the most rudimentary level, getting a program to compile involves a "pass/fail" measurement (is the syntax valid) that drives their ability to proceed further (run the program).&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;Other developers may create "Unit Tests" in the belief that having a test for every method/property of a class and good code coverage is the goal of TDD. These items may be helpful and even important, but really only address a small aspect of the overall effort.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To see TDD in a bigger view, lets identify the various activities that are part of the Software Development LifeCycle. These are going to be presented in a Waterfall style for simplicity, but each item also occurs within Iterative methodologies such as Agile/Scrum. the key ones here are:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Requirements Gathering&lt;/li&gt;
    &lt;li&gt;Architecture&lt;/li&gt;
    &lt;li&gt;Design&lt;/li&gt;
    &lt;li&gt;Implementation&lt;/li&gt;
    &lt;li&gt;Quality Assurance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Can each of these items be subjected to a process which establishes metrics (quantified metrics) that reflect both the quality and correctness of each item?&lt;/strong&gt; It should be clear that conventional Unit Tests do not apply to all of these items; at best they can verify that a local aspect (e.g. a Class/Method) of implementation matches the (test writers perspective of) the appropriate design document. So what can we do?&lt;/p&gt;
&lt;p&gt;For each of area, the goal is to create tests that are quantifiable and durable. The ability to quantify the measurements (beyond a simple pass/fail) is critical to tracking progress(eventually measuring the level of success that has been achieved) and for providing clear information on what items need to be addressed (along with the appropriate time to address them - in varying levels of detail) . Durability is important so that the test can be reapplied (ideally in an automated fashion) over the entire cycle.&lt;/p&gt;
&lt;p&gt;Returning for a moment back to our "education example", one must also be careful of how the tests are organized and how the measurements are taken. If a test is in a multiple choice format, there is a significant statistical probability that a correct answer might be the result of a random guess. Also, in many situations, having the student simply provide a final answer can obscure many important elements. For example, on a math test, having the student simply provide a numeric answer (rather than showing the methodology) may result in a complete mismatch between the process and the result. It is hard to determine which is worse: The student who makes a simple arithmetric error at one step of a long process (resulting in a wrong answer) or The student who (without providing the "workflow") uses a completely invalid approach, yet still comes up with the right number.&lt;/p&gt;
&lt;p&gt;The "Wrong Process"/"Right Answer" is probably the single biggest problem in software development. Even very simple items can suffer from this. As an example consider the following code for a "straight line" calculation....Is it correct? (for Integral Points)&lt;/p&gt;
&lt;p&gt;        int Solve(int m, int b, int x) { return m * x + b; }&lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;Most people would respond "Yes". But let's take the question one step further... Is it correct &lt;strong&gt;&lt;em&gt;for all &lt;/em&gt;&lt;/strong&gt;&lt;em&gt;&lt;strong&gt;possible values of m,b,x&lt;/strong&gt;&lt;/em&gt;??? &lt;em&gt;(no fair if you cheated by being focused on the bolded text!) &lt;/em&gt; Without additional information regarding constrains on "the possible values of m,b,x" the answer must be NO, there is the risk of overflow/wraparound that will produce an incorrect result!&lt;/p&gt;
&lt;p&gt;To properly answer this question (i.e. Test the Code), one MUST be able to backtrack from the implementation through the design, and architecture all the way back to the requirements. And the requirement itself must be tested against the stakeholder(s). It is only when the bounding conditions are defined that it is possible to determine if the code is "Correct" and has "Quality".&lt;/p&gt;
&lt;p&gt;Yet, how many of us (myself included) have written such code without even thinking about it. In many canses we (think we) "know" what the bounds are, and that the code will be correct. As we all know, requirements change, "code reuse" causes implementations to be applied to different scenarios, etc. This leads directly to the types of system failures that plague so many projects.&lt;/p&gt;
&lt;p&gt;This approach to TDD is much more holistic than ones which start by focusing on the details. The fundamental concepts still apply:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Each item should be tested.&lt;/li&gt;
    &lt;li&gt;The test should be defined/implemented before (or concurrent with) the definition/implementation of the actual item.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also add concepts that expand the scope and alter the style by recognizing:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;There are many things beside "lines of code" that benefit from testing (measuring/evaluating in a formal way)&lt;/li&gt;
    &lt;li&gt;Correctness and Quality can not be solely measured by "correct results"&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the future parts, we will examine in greater detail some of the techniques that can be applied to each of these areas....&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138451"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138451" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/TheCPUWizard/aggbug/138451.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/F9zQdBSq60U" height="1" width="1"/&gt;</description><dc:creator>David V. Corbin</dc:creator><feedburner:origLink>http://geekswithblogs.net/TheCPUWizard/archive/2010/03/11/does-test-driven-development-tdd-improve-quality-and-correctness.aspx</feedburner:origLink></item><item><title>Using SharePoint PeoplePicker control in custom ASP.NET pages</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/IlFF0LsFTn0/using-sharepoint-peoplepicker-control-in-custom-asp.net-pages.aspx</link><pubDate>Thu, 11 Mar 2010 12:36:22 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/jigneshg/archive/2010/03/11/using-sharepoint-peoplepicker-control-in-custom-asp.net-pages.aspx</guid><wfw:comment>http://geekswithblogs.net/jigneshg/comments/138450.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/jigneshg/comments/commentRss/138450.aspx</wfw:commentRss><comments>http://geekswithblogs.net/jigneshg/archive/2010/03/11/using-sharepoint-peoplepicker-control-in-custom-asp.net-pages.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://geekswithblogs.net/jigneshg/services/trackbacks/138450.aspx</trackback:ping><source url="http://geekswithblogs.net/jigneshg/rss.aspx">Using SharePoint PeoplePicker control in custom ASP.NET pages</source><description>&lt;p&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-size: small;"&gt;
&lt;p&gt;I was developing custom ASP.NET page for a SharePoint project, and the page uses SharePoint PeoplePicker control. I needed to manipulate the control on the client side based on the user inputs. &lt;br /&gt;
&lt;br /&gt;
PeoplePicker Picker is a complex control and the difficult bit is that it contains many controls on the page (use the page source viewer to see the HTML tags generated).&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial;"&gt;So getting into the right bit is tricky and also the default JavaScript functions like, &lt;span style="font-family: Courier New;"&gt;control.disabled; control.focus();&lt;/span&gt; will not work with PeoplePicker control. After some trial and error I came up with the solution to manipulate the control using JavaScript.  Here I am posting the JavaScript code snippet to enable/disable the PeoplePicker Control:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; function &lt;/span&gt;ToggleDisabledPeoplePicker(element, isDisabled)&lt;br /&gt;
{&lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;try&lt;/span&gt;&lt;br /&gt;
    {&lt;br /&gt;
        element.disabled = isDisabled;&lt;br /&gt;
    }&lt;br /&gt;
       &lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;catch&lt;/span&gt;(exception)&lt;br /&gt;
    {}&lt;br /&gt;
       &lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;if &lt;/span&gt;((element.childNodes) &amp;amp;&amp;amp; (element.childNodes.length &amp;gt; 0))&lt;br /&gt;
    {&lt;br /&gt;
        &lt;span style="color: rgb(0, 0, 255);"&gt;for &lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;var &lt;/span&gt;index = 0; index &amp;lt; element.childNodes.length; index++)&lt;br /&gt;
        {&lt;br /&gt;
            ToggleDisabledPeoplePicker(element.childNodes[index], isDisabled);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;span style="color: rgb(51, 153, 102);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;//to disable the control&lt;/span&gt;&lt;br /&gt;
ToggleDisabledPeoplePicker(document.getElementById(&lt;span style="color: rgb(128, 0, 0);"&gt;"&amp;lt;%=txtMRA.ClientID%&amp;gt;"&lt;/span&gt;), &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-size: small;"&gt;The script shown below can be used to set focus back to the PeoplePicker control from custom JavaScript validation function:&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Courier New;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var &lt;/span&gt;found = &lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;;&lt;br /&gt;
        &lt;br /&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;function &lt;/span&gt;SetFocusToPeoplePicker(element)&lt;br /&gt;
{&lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;try&lt;/span&gt;&lt;br /&gt;
    {&lt;br /&gt;
        &lt;span style="color: rgb(0, 0, 255);"&gt;if &lt;/span&gt;(element.id.lastIndexOf(&lt;span style="color: rgb(128, 0, 0);"&gt;"upLevelDiv"&lt;/span&gt;) !=-1)&lt;br /&gt;
        {&lt;br /&gt;
            element.focus();&lt;br /&gt;
            found = &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;;&lt;br /&gt;
            &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;catch&lt;/span&gt;(exception)&lt;br /&gt;
    {}&lt;br /&gt;
        &lt;br /&gt;
    &lt;span style="color: rgb(0, 0, 255);"&gt;if &lt;/span&gt;((element.childNodes) &amp;amp;&amp;amp; (element.childNodes.length &amp;gt; 0))&lt;br /&gt;
    {&lt;br /&gt;
        &lt;span style="color: rgb(0, 0, 255);"&gt;for &lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;var &lt;/span&gt;index = 0; index &amp;lt; element.childNodes.length; index++)&lt;br /&gt;
        {&lt;br /&gt;
            &lt;span style="color: rgb(0, 0, 255);"&gt;if &lt;/span&gt;(found)&lt;br /&gt;
            {&lt;br /&gt;
                found = &lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;;&lt;br /&gt;
                &lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;
            }&lt;br /&gt;
         &lt;br /&gt;
            SetFocusToPeoplePicker(element.childNodes[index]);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Arial;"&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-size: small;"&gt; - Jignesh&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138450"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138450" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jigneshg/aggbug/138450.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/IlFF0LsFTn0" height="1" width="1"/&gt;</description><dc:creator>Jignesh Gangajaliya</dc:creator><feedburner:origLink>http://geekswithblogs.net/jigneshg/archive/2010/03/11/using-sharepoint-peoplepicker-control-in-custom-asp.net-pages.aspx</feedburner:origLink></item><item><title>Nails vs Screws (C# List vs Dictionary)</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/2TkHDZofn3s/nails-vs-screws-c-list-vs-dictionary.aspx</link><pubDate>Thu, 11 Mar 2010 09:00:54 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/MarkPearl/archive/2010/03/11/nails-vs-screws-c-list-vs-dictionary.aspx</guid><wfw:comment>http://geekswithblogs.net/MarkPearl/comments/138444.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/MarkPearl/comments/commentRss/138444.aspx</wfw:commentRss><comments>http://geekswithblogs.net/MarkPearl/archive/2010/03/11/nails-vs-screws-c-list-vs-dictionary.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://geekswithblogs.net/MarkPearl/services/trackbacks/138444.aspx</trackback:ping><source url="http://geekswithblogs.net/MarkPearl/rss.aspx">Nails vs Screws (C# List vs Dictionary)</source><description>&lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;General&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This may sound like a typical noob statement, but I’m finding out in a very real way that just because you have a solution to a problem, doesn’t necessarily mean it is the best solution. This was reiterated to me when a friend of mine suggested I look at using Dictionaries instead of Lists for a particular problem – he was right, I have always just assumed that because lists solved my problem I did not need to look elsewhere. So my new manifesto to counter this ageless problem is as follows…&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Look for a solution that will logically work&lt;/li&gt;    &lt;li&gt;Once you have a solution look for possible alternatives&lt;/li&gt;    &lt;li&gt;Decide why your current solution is the best approach compared to the alternatives&lt;/li&gt;    &lt;li&gt;If it is.. use it till something better comes along, if it isnt…. change&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;What’s the difference between Lists &amp;amp; Dictionaries&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Both lists and dictionaries are used to store collections of data. Assume we had the following declarations…&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;dic = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;long&lt;/span&gt;&amp;gt;();
&lt;span style="color: blue"&gt;var &lt;/span&gt;lst = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;long&lt;/span&gt;&amp;gt;();
&lt;span style="color: blue"&gt;long &lt;/span&gt;data;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;With a list, you simply add the item to the list and it will add the item to the end of the list.&lt;/p&gt;

&lt;pre class="code"&gt;lst.Add(data);&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With a dictionary, you need to specify some sort of key and the data you want to add so that it can be uniquely identified.&lt;/p&gt;

&lt;pre class="code"&gt;dic.Add(uniquekey, data);&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Because with a dictionary you now have unique identifier, in the background they provide all sort’s of optimized algorithms to find your associated data. What this means is that if you are wanting to access your data it is a lot faster than a List.&lt;/p&gt;

&lt;p&gt;So when is it appropriate to use either class?&lt;/p&gt;

&lt;p&gt;For me, if I can guarantee that each item in my collection will have a unique identifier, then I will use Dictionaries instead of Lists as there is a considerable performance benefit when accessing each data item. If I cannot make this sort of guarantee, then by default I will use a list.&lt;/p&gt;

&lt;p&gt;I know this is all really basic, and I hope I haven’t missed some fundamental principle… If anyone would like to add their 2 cents, please feel free to do so…&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138444"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138444" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/MarkPearl/aggbug/138444.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/2TkHDZofn3s" height="1" width="1"/&gt;</description><dc:creator>MarkPearl</dc:creator><feedburner:origLink>http://geekswithblogs.net/MarkPearl/archive/2010/03/11/nails-vs-screws-c-list-vs-dictionary.aspx</feedburner:origLink></item><item><title>Generate Strongly Typed Observable Events for the Reactive Extensions for .NET (Rx)</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/4PVVRLwEvIc/generate-strongly-typed-observable-events-for-the-reactive-extensions-for.aspx</link><pubDate>Thu, 11 Mar 2010 08:13:30 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/bdiaz/archive/2010/03/11/generate-strongly-typed-observable-events-for-the-reactive-extensions-for.aspx</guid><wfw:comment>http://geekswithblogs.net/bdiaz/comments/138443.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/bdiaz/comments/commentRss/138443.aspx</wfw:commentRss><comments>http://geekswithblogs.net/bdiaz/archive/2010/03/11/generate-strongly-typed-observable-events-for-the-reactive-extensions-for.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/bdiaz/services/trackbacks/138443.aspx</trackback:ping><source url="http://geekswithblogs.net/bdiaz/rss.aspx">Generate Strongly Typed Observable Events for the Reactive Extensions for .NET (Rx)</source><description>&lt;p&gt;I must have tried reading through the various explanations and introductions to the new Reactive Extensions for .NET before the concepts finally started sinking in.  The article that gave me the ah-ha moment was over on &lt;a href="http://www.silverlightshow.net/"&gt;SilverlightShow.net&lt;/a&gt; and titled &lt;a href="http://www.silverlightshow.net/items/Using-Reactive-Extensions-in-Silverlight.aspx"&gt;Using Reactive Extensions in Silverlight&lt;/a&gt;.  The author did a good job comparing the "normal" way of handling events vs. the new "reactive" methods.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Admittedly, I still have more to learn about the Rx Framework, but I wanted to put together a sample project so I could start playing with the new Observable and IObservable&amp;lt;T&amp;gt; constructs.  I decided to throw together a whiteboard application in Silverlight based on the &lt;em&gt;&lt;strong&gt;Drawing with Rx&lt;/strong&gt;&lt;/em&gt; example on the aforementioned article.  At the very least, I figured I would learn a thing or two about a new technology, but my real goal is to create a fun application that I can share with the kids since they love drawing and coloring so much!&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Here is the code sample that I borrowed from the article:&lt;/p&gt;
&lt;div style="font-size: 8pt; background: #171717; color: yellow; font-family: Consolas"&gt;
&lt;div style="font-size: 8pt; background: #171717; color: yellow; font-family: Consolas"&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mouseMoveEvent&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Observable&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;FromEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;MouseEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;, &lt;span style="color: #60ff60"&gt;"MouseMove"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mouseLeftButtonDown&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Observable&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;FromEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;MouseButtonEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;, &lt;span style="color: #60ff60"&gt;"MouseLeftButtonDown"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mouseLeftButtonUp&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Observable&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;FromEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;MouseButtonEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;, &lt;span style="color: #60ff60"&gt;"MouseLeftButtonUp"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt; &lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;draggingEvents&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;from&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;pos&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;in&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mouseMoveEvent&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                             &lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;SkipUntil&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;mouseLeftButtonDown&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                             &lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;TakeUntil&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;mouseLeftButtonUp&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                             &lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Let&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;mm&lt;/span&gt; &lt;span style="color: silver"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mm&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Zip&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;mm&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Skip&lt;/span&gt;(&lt;span style="color: #60ff60"&gt;1&lt;/span&gt;), (&lt;span style="color: #eee8aa"&gt;prev&lt;/span&gt;, &lt;span style="color: #eee8aa"&gt;cur&lt;/span&gt;) &lt;span style="color: silver"&gt;=&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                 &lt;span style="color: #40c4ff"&gt;new&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                 {&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                     &lt;span style="color: #eee8aa"&gt;X2&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;cur&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;EventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;GetPosition&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;)&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;X&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                     &lt;span style="color: #eee8aa"&gt;X1&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;prev&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;EventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;GetPosition&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;)&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;X&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                     &lt;span style="color: #eee8aa"&gt;Y2&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;cur&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;EventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;GetPosition&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;)&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Y&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                     &lt;span style="color: #eee8aa"&gt;Y1&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;prev&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;EventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;GetPosition&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;)&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Y&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                 }))&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Repeat&lt;/span&gt;()&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                         &lt;span style="color: #40c4ff"&gt;select&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;pos&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt; &lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #eee8aa"&gt;draggingEvents&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Subscribe&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;p&lt;/span&gt; &lt;span style="color: silver"&gt;=&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    {&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #2b91af"&gt;Line&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;line&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Line&lt;/span&gt;();&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #eee8aa"&gt;line&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Stroke&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;SolidColorBrush&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Colors&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Black&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #eee8aa"&gt;line&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;StrokeEndLineCap&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PenLineCap&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Round&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #eee8aa"&gt;line&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;StrokeLineJoin&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PenLineJoin&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Round&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #eee8aa"&gt;line&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;StrokeThickness&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #60ff60"&gt;5&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #eee8aa"&gt;line&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;X1&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;p&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;X1&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #eee8aa"&gt;line&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Y1&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;p&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Y1&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #eee8aa"&gt;line&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;X2&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;p&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;X2&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #eee8aa"&gt;line&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Y2&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;p&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Y2&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;LayoutRoot&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Children&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Add&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;line&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    });&lt;/p&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;&lt;!--EndFragment--&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
One thing that was nagging at the back of my mind was having to deal with the event names as strings, as well as the verbose syntax for the Observable.FromEvent&amp;lt;TEventArgs&amp;gt;() method.  I came up with a couple of static/helper classes to resolve both issues and also created a T4 template to auto-generate these helpers for any .NET type.  Take the following code from the above example:&lt;/p&gt;
&lt;div style="font-size: 8pt; background: #171717; color: yellow; font-family: Consolas"&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mouseMoveEvent&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Observable&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;FromEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;MouseEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;, &lt;span style="color: #60ff60"&gt;"MouseMove"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mouseLeftButtonDown&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Observable&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;FromEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;MouseButtonEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;, &lt;span style="color: #60ff60"&gt;"MouseLeftButtonDown"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mouseLeftButtonUp&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Observable&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;FromEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;MouseButtonEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;, &lt;span style="color: #60ff60"&gt;"MouseLeftButtonUp"&lt;/span&gt;);&lt;/p&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;&lt;br /&gt;
Turns into this with the new static Events class:&lt;/p&gt;
&lt;div style="font-size: 8pt; background: #171717; color: yellow; font-family: Consolas"&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mouseMoveEvent&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Events&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Mouse&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Move&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;On&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mouseLeftButtonDown&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Events&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Mouse&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;LeftButtonDown&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;On&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mouseLeftButtonUp&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Events&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Mouse&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;LeftButtonUp&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;On&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;);&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
Or better yet, just remove the variable declarations altogether:&lt;!--EndFragment--&gt;&lt;/p&gt;
&lt;div style="font-size: 8pt; background: #171717; color: yellow; font-family: Consolas"&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #40c4ff"&gt;var&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;draggingEvents&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;from&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;pos&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;in&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Events&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Mouse&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Move&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;On&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                             &lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;SkipUntil&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Events&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Mouse&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;LeftButtonDown&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;On&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;))&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                             &lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;TakeUntil&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Events&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Mouse&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;LeftButtonUp&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;On&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;))&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                             &lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Let&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;mm&lt;/span&gt; &lt;span style="color: silver"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;mm&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Zip&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;mm&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Skip&lt;/span&gt;(&lt;span style="color: #60ff60"&gt;1&lt;/span&gt;), (&lt;span style="color: #eee8aa"&gt;prev&lt;/span&gt;, &lt;span style="color: #eee8aa"&gt;cur&lt;/span&gt;) &lt;span style="color: silver"&gt;=&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                 &lt;span style="color: #40c4ff"&gt;new&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                 {&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                     &lt;span style="color: #eee8aa"&gt;X2&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;cur&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;EventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;GetPosition&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;)&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;X&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                     &lt;span style="color: #eee8aa"&gt;X1&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;prev&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;EventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;GetPosition&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;)&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;X&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                     &lt;span style="color: #eee8aa"&gt;Y2&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;cur&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;EventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;GetPosition&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;)&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Y&lt;/span&gt;,&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                     &lt;span style="color: #eee8aa"&gt;Y1&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;prev&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;EventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;GetPosition&lt;/span&gt;(&lt;span style="color: #40c4ff"&gt;this&lt;/span&gt;)&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Y&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                                 }))&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Repeat&lt;/span&gt;()&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                         &lt;span style="color: #40c4ff"&gt;select&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;pos&lt;/span&gt;;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
The Move, LeftButtonDown and LeftButtonUp members of the Events.Mouse class are readonly instances of the ObservableEvent&amp;lt;TTarget, TEventArgs&amp;gt; class that provide type-safe access to the events via the On() method.  Here is the code for the class:&lt;/p&gt;
&lt;div style="font-size: 8pt; background: #171717; color: yellow; font-family: Consolas"&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;using&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;System&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;using&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;System&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Collections&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Generic&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;using&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;System&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Linq&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt; &lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;span style="color: #40c4ff"&gt;namespace&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;System&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Linq&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;{&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; Represents an event that can be managed via the &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;see cref="Observable"/&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; API.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;typeparam name="TTarget"&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt;The type of the target.&lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/typeparam&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;typeparam name="TEventArgs"&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt;The type of the event args.&lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/typeparam&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #40c4ff"&gt;public&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ObservableEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;TTarget&lt;/span&gt;, &lt;span style="color: #eee8aa"&gt;TEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;where&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;TEventArgs&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    {&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; Initializes a new instance of the &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;see cref="ObservableEvent"/&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; class.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;param name="eventName"&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt;Name of the event.&lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #40c4ff"&gt;protected&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;ObservableEvent&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;String&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;eventName&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        {&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;            &lt;span style="color: #eee8aa"&gt;EventName&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;eventName&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        }&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt; &lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; Registers the specified event name.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;param name="eventName"&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt;Name of the event.&lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #40c4ff"&gt;public&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ObservableEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;TTarget&lt;/span&gt;, &lt;span style="color: #eee8aa"&gt;TEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;Register&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;String&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;eventName&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        {&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;            &lt;span style="color: #40c4ff"&gt;return&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ObservableEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;TTarget&lt;/span&gt;, &lt;span style="color: #eee8aa"&gt;TEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;eventName&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        }&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt; &lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; Creates an enumerable sequence of event values for the specified target.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;param name="target"&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt;The target.&lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #40c4ff"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IObservable&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;TEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;On&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;TTarget&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;target&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        {&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;            &lt;span style="color: #40c4ff"&gt;return&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Observable&lt;/span&gt;&lt;span style="color: silver"&gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;FromEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;TEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: #eee8aa"&gt;target&lt;/span&gt;, &lt;span style="color: #eee8aa"&gt;EventName&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        }&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt; &lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; Gets or sets the name of the event.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt;The name of the event.&lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #40c4ff"&gt;public&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;string&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;EventName&lt;/span&gt; { &lt;span style="color: #40c4ff"&gt;get&lt;/span&gt;; &lt;span style="color: #40c4ff"&gt;private&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    }&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;&lt;br /&gt;
And this is how it's used:&lt;/p&gt;
&lt;div style="font-size: 8pt; background: #171717; color: yellow; font-family: Consolas"&gt;
&lt;div style="font-size: 8pt; background: #171717; color: yellow; font-family: Consolas"&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; Categorizes &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;see cref="ObservableEvents"/&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; by class and/or functionality.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #40c4ff"&gt;public&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;static&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;partial&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Events&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    {&lt;/p&gt;
&lt;/div&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;&lt;!--EndFragment--&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; Implements a set of predefined &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;see cref="ObservableEvent"/&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt;s&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; for the &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;see cref="System.Windows.System.Windows.UIElement"/&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; class&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; that represent mouse related events.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #40c4ff"&gt;public&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;static&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;partial&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Mouse&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        {&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;            &lt;span style="color: #adadad"&gt;///&lt;/span&gt;&lt;span style="color: #ff80c0"&gt; &lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #ff80c0"&gt;Represents the MouseMove event.&lt;/span&gt;&lt;span style="color: #adadad"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;            &lt;span style="color: #40c4ff"&gt;public&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;static&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ObservableEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;UIElement&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;MouseEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #eee8aa"&gt;Move&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;                &lt;span style="color: #2b91af"&gt;ObservableEvent&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;UIElement&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;MouseEventArgs&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;.&lt;/span&gt;&lt;span style="color: #eee8aa"&gt;Register&lt;/span&gt;(&lt;span style="color: #60ff60"&gt;"MouseMove"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt; &lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;            &lt;span style="color: #ff80c0"&gt;// additional members omitted...&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        }&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    }&lt;/p&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;&lt;br /&gt;
The source code contains a static Events class with prefedined members for various categories (Key, Mouse, etc.).  There is also an Events.tt template that you can customize to generate additional event categories for any .NET type.  All you should have to do is add the name of your class to the types collection near the top of the template:&lt;/p&gt;
&lt;div style="font-size: 8pt; background: #171717; color: yellow; font-family: Consolas"&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    &lt;span style="color: #eee8aa"&gt;types&lt;/span&gt; &lt;span style="color: silver"&gt;=&lt;/span&gt; &lt;span style="color: #40c4ff"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;&lt;span style="color: silver"&gt;&amp;gt;&lt;/span&gt;()&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    {&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        &lt;span style="color: #ff80c0"&gt;//{ "Microsoft.Maps.MapControl.Map, Microsoft.Maps.MapControl", null }&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        { &lt;span style="color: #60ff60"&gt;"System.Windows.FrameworkElement, System.Windows"&lt;/span&gt;, &lt;span style="color: #40c4ff"&gt;null&lt;/span&gt; },&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;        { &lt;span style="color: #60ff60"&gt;"Whiteboard.MainPage, Whiteboard"&lt;/span&gt;, &lt;span style="color: #40c4ff"&gt;null&lt;/span&gt; }&lt;/p&gt;
&lt;p style="margin: 0px; line-height: 14px"&gt;    };&lt;/p&gt;
&lt;/div&gt;
&lt;!--EndFragment--&gt;
&lt;p&gt;&lt;br /&gt;
The template is also a bit rough at this point, but at least it generates code that *should* compile.  Please let me know if you run into any issues with it.  Some people have reported errors when trying to use T4 templates within a Silverlight project, but I was able to get it to work with a little black magic... &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
You can &lt;a href="http://www.bmdiaz.com/Files/Whiteboard.zip"&gt;download the source code&lt;/a&gt; for this project or &lt;a href="http://www.bmdiaz.com/Whiteboard/"&gt;play around with the live demo&lt;/a&gt;.  Just be warned that it is at a very early stage so don't expect to find much today.  I plan on adding alot more options like pen colors and sizes, saving, printing, etc. as time permits.  &lt;strong&gt;HINT: &lt;/strong&gt;hold down the ESC key to erase!&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Additional Resources&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/Using-Reactive-Extensions-in-Silverlight.aspx"&gt;Using Reactive Extensions in Silverlight&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx"&gt;DevLabs: Reactive Extensions for .NET (Rx)&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://amazedsaint.blogspot.com/2009/11/linq-to-events-generating-wrapper.html"&gt;Rx Framework Part III - LINQ to Events - Generating GetEventName() Wrapper Methods using T4&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138443"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138443" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/bdiaz/aggbug/138443.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/4PVVRLwEvIc" height="1" width="1"/&gt;</description><dc:creator>Bobby Diaz</dc:creator><feedburner:origLink>http://geekswithblogs.net/bdiaz/archive/2010/03/11/generate-strongly-typed-observable-events-for-the-reactive-extensions-for.aspx</feedburner:origLink></item><item><title>Silverlight Cream for March 10, 2010 - 2 -- #811</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/TT3UQUQMbD4/138440.aspx</link><pubDate>Thu, 11 Mar 2010 06:06:43 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/WynApseTechnicalMusings/archive/2010/03/10/138440.aspx</guid><wfw:comment>http://geekswithblogs.net/WynApseTechnicalMusings/comments/138440.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/138440.aspx</wfw:commentRss><comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2010/03/10/138440.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/138440.aspx</trackback:ping><source url="http://geekswithblogs.net/WynApseTechnicalMusings/rss.aspx">Silverlight Cream for March 10, 2010 - 2 -- #811</source><description>&lt;p&gt;&lt;font face="tahoma"&gt;In this Issue: &lt;a href="#20100310AfricanGeek"&gt;&lt;u&gt;AfricanGeek&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100310Phil Middlemiss"&gt;&lt;u&gt;Phil Middlemiss&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100310Damon Payne"&gt;&lt;u&gt;Damon Payne&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100310David Anson"&gt;&lt;u&gt;David Anson&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100310Jesse Liberty"&gt;&lt;u&gt;Jesse Liberty&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100310Jeremy Likness"&gt;&lt;u&gt;Jeremy Likness&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100310Jobi Joy"&gt;&lt;u&gt;Jobi Joy&lt;/u&gt;&lt;/a&gt;(&lt;a href="#20100310Jobi Joy2"&gt;&lt;u&gt;-2-&lt;/u&gt;&lt;/a&gt;), &lt;a href="#20100310Fredrik Normén"&gt;&lt;u&gt;Fredrik Normén&lt;/u&gt;&lt;/a&gt;, &lt;a href="#20100310Bobby Diaz"&gt;&lt;u&gt;Bobby Diaz&lt;/u&gt;&lt;/a&gt;, and &lt;a href="#20100310Mike Taulty"&gt;&lt;u&gt;Mike Taulty&lt;/u&gt;&lt;/a&gt;(&lt;a href="#20100310Mike Taulty2"&gt;&lt;u&gt;-2-&lt;/u&gt;&lt;/a&gt;). &lt;br /&gt;
&lt;br /&gt;
Shoutouts: &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Shawn Wildermuth&lt;/b&gt; blogged that they posted &lt;a href="http://wildermuth.com/2010/03/07/My_What_s_New_in_Silvelright_3_Video_from_0reDev_Last_Fall"&gt;&lt;u&gt;My "What's New in Silverlight 3" Video from 0reDev Last Fall &lt;/u&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Shawn Wildermuth&lt;/b&gt; also has a post up for his loyal followers: &lt;a href="http://wildermuth.com/2010/03/10/Where_to_See_Me_At_MIX10"&gt;&lt;u&gt;Where to See Me At MIX10&lt;/u&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Jonas Follesø&lt;/b&gt; has presentation materials up as well: &lt;a href="http://jonas.follesoe.no/MVVMPresentationFromNDC2009OnVimeo.aspx"&gt;&lt;u&gt;MVVM presentation from NDC2009 on Vimeo&lt;/u&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Adam Kinney&lt;/b&gt; updated his &lt;a href="http://adamkinney.wordpress.com/2010/03/04/favorite-tool-and-library-downloads-for-silverlight/"&gt;&lt;u&gt;Favorite Tool and Library Downloads for Silverlight&lt;/u&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;hr width="50%" /&gt;
&lt;/center&gt;&lt;b&gt;From &lt;a href="http://www.silverlightcream.com"&gt;&lt;u&gt;SilverlightCream.com&lt;/u&gt;&lt;/a&gt;: &lt;/b&gt;
&lt;dl&gt;
    &lt;dt&gt;&lt;a name="20100310AfricanGeek"&gt;&lt;/a&gt;&lt;a title="http://www.africangeek.com/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5246"&gt;&lt;u&gt;Styling Silverlight ListBox with Blend 3&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;In his latest Video Tutorial, &lt;b&gt;AfricanGeek&lt;/b&gt; is animating the ListBox control by way of Expression Blend 3. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Phil Middlemiss"&gt;&lt;/a&gt;&lt;a title="http://silverscratch.blogspot.com/2010/03/animating-silverlight-opacity-mask.html" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5245"&gt;&lt;u&gt;Animating the Silverlight Opacity Mask&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Phil Middlemiss&lt;/b&gt; has written a Behavior that lets you turn a FrameworkElement into an opacity mask for it's parent container... check out his tutorial and grab the code. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Damon Payne"&gt;&lt;/a&gt;&lt;a title="http://www.damonpayne.com/2010/03/04/AddRangeForObservableCollectionInSilverlight3.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5244"&gt;&lt;u&gt;AddRange for ObservableCollection in Silverlight 3&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Damon Payne&lt;/b&gt; has a post up discussing the problem with large amounts of data in an ObservableCollection&lt;t&gt;&lt;/t&gt;, and how using AddRange is a performance booster. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310David Anson"&gt;&lt;/a&gt;&lt;a title="http://blogs.msdn.com/delay/archive/2010/03/06/turn-your-head-and-check-out-this-post-how-to-easily-rotate-the-axis-labels-of-a-silverlight-wpf-toolkit-chart.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5243"&gt;&lt;u&gt;Easily rotate the axis labels of a Silverlight/WPF Toolkit chart&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;David Anson&lt;/b&gt; blogged a solution to rotating the axis labels of a Silverlight and WPF chart. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Jesse Liberty"&gt;&lt;/a&gt;&lt;a title="http://blogs.silverlight.net/blogs/jesseliberty/archive/2010/03/05/persisting-the-configuration-updated.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5242"&gt;&lt;u&gt;Persisting the Configuration (Updated)&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Jesse Liberty&lt;/b&gt; has a good discussion on the continuation of his HyperVideo Platform talking about what all he is needing from the database in the form of configuration information... including the relationships. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Jeremy Likness"&gt;&lt;/a&gt;&lt;a title="http://csharperimage.jeremylikness.com/2010/03/animations-and-view-models.html" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5241"&gt;&lt;u&gt;Animations and View Models: IAnimationDelegate&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;Check out &lt;b&gt;Jeremy Likness&lt;/b&gt;' IAnimationDelegate that lets your ViewModel fire and respond to animations without having to know all about them. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Jobi Joy"&gt;&lt;/a&gt;&lt;a title="http://jobijoy.blogspot.com/2010/03/button-style-silverlight.html" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5239"&gt;&lt;u&gt;Button Style - Silverlight&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Jobi Joy&lt;/b&gt; converted a WPF control template into Silverlight... and you'll want to download the XAML he's got for this :) &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Jobi Joy2"&gt;&lt;/a&gt;&lt;a title="http://jobijoy.blogspot.com/2010/03/simple-accordion-banner-using-listbox.html" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5240"&gt;&lt;u&gt;A Simple Accordion banner using ListBox&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Jobi Joy&lt;/b&gt; also has an Image Accordian created in Expression Blend... and it's a 'drop this XAML in your User Control' kinda thing... again, go grab the XAML :) &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Fredrik Normén"&gt;&lt;/a&gt;&lt;a title="http://weblogs.asp.net/fredriknormen/archive/2010/03/02/wcf-ria-services-silverlight-business-application-using-asp-net-sitemap-for-navigation.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5238"&gt;&lt;u&gt;WCF RIA Services Silverlight Business Application – Using ASP.NET SiteMap for Navigation &lt;/u&gt;&lt;/a&gt;&lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Fredrik Normén&lt;/b&gt; has a code-laden post up on RIA Services and the ASP.NET SiteMap. He is using the Silverlight Business app template that comes with WCF RIA Services. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Bobby Diaz"&gt;&lt;/a&gt;&lt;a title="http://geekswithblogs.net/bdiaz/archive/2010/03/01/a-simple-selectable-silverlight-textblock-sort-of.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5237"&gt;&lt;u&gt;A Simple, Selectable Silverlight TextBlock (sort of)...&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Bobby Diaz&lt;/b&gt; shares with us his solution for a Text control that can be copied from in the same manner 'normal' web controls can be. He also includes a link to another post on the same topic. &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Mike Taulty"&gt;&lt;/a&gt;&lt;a title="http://channel9.msdn.com/posts/mtaulty/Silverlight-4-Beta-Networking-Part-11-WCF-and-TCP/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5235"&gt;&lt;u&gt;Silverlight 4 Beta Networking. Part 11 - WCF and TCP&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Mike Taulty&lt;/b&gt; has another pair of video tutorials up in his Networking series. This one is on WCF over TCP &lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Mike Taulty2"&gt;&lt;/a&gt;&lt;a title="http://channel9.msdn.com/posts/mtaulty/Silverlight-4-Beta-Networking-Part-12-WCF-and-Polling-HTTP/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5236"&gt;&lt;u&gt;Silverlight 4 Beta Networking. Part 12 - WCF and Polling HTTP&lt;/u&gt;&lt;/a&gt; &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Mike Taulty&lt;/b&gt;'s 12th networking video tutorial is on WCF with HTTP polling duplex. &lt;/dd&gt;
&lt;/dl&gt;
&lt;br /&gt;
&lt;font color="#0000ff"&gt;&lt;strong&gt;Stay in the 'Light!&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;
&lt;center&gt;&lt;hr width="50%" /&gt;
&lt;a href="http://twitter.com/SilverlightNews"&gt;&lt;u&gt;Twitter SilverlightNews&lt;/u&gt;&lt;/a&gt; | &lt;a href="http://twitter.com/WynApse"&gt;&lt;u&gt;Twitter WynApse&lt;/u&gt;&lt;/a&gt; | &lt;a href="http://www.wynapse.com"&gt;&lt;u&gt;WynApse.com&lt;/u&gt;&lt;/a&gt; | &lt;a href="http://www.wynapse.com/TaggedPosts.aspx"&gt;&lt;u&gt;Tagged Posts&lt;/u&gt;&lt;/a&gt; | &lt;a href="http://www.silverlightcream.com"&gt;&lt;u&gt;SilverlightCream&lt;/u&gt;&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://tech.groups.yahoo.com/group/SilverlightCream/join"&gt;&lt;u&gt;Join me @ SilverlightCream&lt;/u&gt;&lt;/a&gt; | &lt;a href="http://www.phoenixsilverlight.net"&gt;&lt;u&gt;Phoenix Silverlight User Group&lt;/u&gt;&lt;/a&gt; &lt;br /&gt;
&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tag/Silverlight"&gt;&lt;img alt=" " style="border-bottom: 0pt; border-left: 0pt; margin-left: 0.4em; vertical-align: middle; border-top: 0pt; border-right: 0pt" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=Silverlight" /&gt;Silverlight&lt;/a&gt;    &lt;a rel="tag" href="http://technorati.com/tag/silverlight-3"&gt;&lt;img alt=" " style="border-bottom: 0pt; border-left: 0pt; margin-left: 0.4em; vertical-align: middle; border-top: 0pt; border-right: 0pt" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=silverlight-3" /&gt;Silverlight 3&lt;/a&gt;    &lt;a rel="tag" href="http://technorati.com/tag/silverlight-4"&gt;&lt;img alt=" " style="border-bottom: 0pt; border-left: 0pt; margin-left: 0.4em; vertical-align: middle; border-top: 0pt; border-right: 0pt" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=silverlight-4" /&gt;Silverlight 4&lt;/a&gt;    &lt;a rel="tag" href="http://technorati.com/tag/MIX10"&gt;&lt;img alt=" " style="border-bottom: 0pt; border-left: 0pt; margin-left: 0.4em; vertical-align: middle; border-top: 0pt; border-right: 0pt" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=MIX10" /&gt;MIX10&lt;/a&gt; &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138440"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138440" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/138440.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/TT3UQUQMbD4" height="1" width="1"/&gt;</description><dc:creator>Dave Campbell</dc:creator><feedburner:origLink>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2010/03/10/138440.aspx</feedburner:origLink></item><item><title>Handy Javascript array Extensions &amp;ndash; contains(&amp;hellip;)</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/Jgpj_W98qIQ/138439.aspx</link><pubDate>Wed, 10 Mar 2010 22:33:09 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/liammclennan/archive/2010/03/10/138439.aspx</guid><wfw:comment>http://geekswithblogs.net/liammclennan/comments/138439.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/liammclennan/comments/commentRss/138439.aspx</wfw:commentRss><comments>http://geekswithblogs.net/liammclennan/archive/2010/03/10/138439.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/liammclennan/services/trackbacks/138439.aspx</trackback:ping><source url="http://geekswithblogs.net/liammclennan/rss.aspx">Handy Javascript array Extensions &amp;ndash; contains(&amp;hellip;)</source><description>&lt;p&gt;This javascript adds a method to javascript arrays that returns a boolean indicating if the supplied object is an element of the array&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:04b30e54-6f70-4127-8823-c71751915026" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 2;  toolbar: true; "&gt;Array.prototype.contains = function(item) {
    for (var i = 0; i &amp;lt; this.length; i += 1) {
        if (this[i] === item) {
            return true;
        }
    }
    return false;
};&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;To test&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:d530d9ea-5c96-40b8-9201-fd21cc6b15da" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 2;  toolbar: true; "&gt;alert([1,1,1,2,2,22,3,4,5,6,7,5,4].contains(2)); // true
alert([1,1,1,2,2,22,3,4,5,6,7,5,4].contains(99)); // false&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138439"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138439" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/liammclennan/aggbug/138439.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/Jgpj_W98qIQ" height="1" width="1"/&gt;</description><dc:creator>Liam McLennan</dc:creator><feedburner:origLink>http://geekswithblogs.net/liammclennan/archive/2010/03/10/138439.aspx</feedburner:origLink></item><item><title>Naming PowerPoint Components With A VSTO Add-In</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/VB7B3SD_G6c/naming-powerpoint-components-with-a-vsto-add-in.aspx</link><pubDate>Thu, 11 Mar 2010 04:27:45 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/tmurphy/archive/2010/03/10/naming-powerpoint-components-with-a-vsto-add-in.aspx</guid><wfw:comment>http://geekswithblogs.net/tmurphy/comments/138438.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/tmurphy/comments/commentRss/138438.aspx</wfw:commentRss><comments>http://geekswithblogs.net/tmurphy/archive/2010/03/10/naming-powerpoint-components-with-a-vsto-add-in.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/tmurphy/services/trackbacks/138438.aspx</trackback:ping><source url="http://geekswithblogs.net/tmurphy/rss.aspx">Naming PowerPoint Components With A VSTO Add-In</source><description>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Cross posted from &lt;a href="http://codingthedocument.wordpress.com/"&gt;Coding The Document&lt;/a&gt;. &lt;br /&gt;
&lt;a href="http://codingthedocument.wordpress.com/2010/03/11/naming-powerpoint-components-with-a-vsto-add-in/"&gt;Permalink&lt;/a&gt; &lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;Sometimes in order to work with Open XML we need a little help from other tools.  In this post I am going to describe  a fairly simple solution for marking up PowerPoint presentations so that they can be used as templates and processed using the Open XML SDK.&lt;/p&gt;
&lt;p&gt;Add-ins are tools which it can be hard to find information on.  I am going to up the obscurity by adding a Ribbon button.  For my example I am using Visual Studio 2008 and creating a PowerPoint 2007 Add-in project.  To that add a Ribbon Visual Designer.  The new ribbon by default will show up on the Add-in tab.&lt;/p&gt;
&lt;p&gt;Add a button to the ribbon.  Also add a WinForm to collect a new name for the object selected.  Make sure to set the OK button’s DialogResult to OK. In the ribbon button click event add the following code.&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px"&gt;
&lt;div id="codeSnippet" style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
ObjectNameForm dialog = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ObjectNameForm();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
Selection selection = Globals.ThisAddIn.Application.ActiveWindow.Selection;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
 &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
dialog.objectName = selection.ShapeRange.Name;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
 &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (dialog.ShowDialog() == DialogResult.OK)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
    selection.ShapeRange.Name = dialog.objectName;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This code will first read the current Name attribute of the Shape object.  If the user clicks OK on the dialog it save the string value back to the same place.&lt;/p&gt;
&lt;p&gt;Once it is done you can retrieve identify the control through Open XML via the NonVisualDisplayProperties objects.  The only problem is that this object is a child of several different classes.  This means that there isn’t just one way to retrieve the value.  Below are a couple of pieces of code to identify the container that you have named.&lt;/p&gt;
&lt;p&gt;The first example is if you are naming placeholders in a layout slide.&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px"&gt;
&lt;div id="codeSnippet" style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;(var slideMasterPart &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; slideMasterParts)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
    var layoutParts =  slideMasterPart.SlideLayoutParts;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
    &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;(SlideLayoutPart slideLayoutPart &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; layoutParts)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
        &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (assmPresentation.Shape shape &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; slideLayoutPart.SlideLayout.CommonSlideData.ShapeTree.Descendants&amp;lt;assmPresentation.Shape&amp;gt;())&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
        {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
            var slideMasterProperties =&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
                from p &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; shape.Descendants&amp;lt;assmPresentation.NonVisualDrawingProperties&amp;gt;()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
                &lt;span style="color: #0000ff"&gt;where&lt;/span&gt; p.Name == TokenText.Text&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
                select p;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
 &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (slideMasterProperties.Count() &amp;gt; 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
                tokenFound = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
        }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
    }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The second example allows you to find charts that you have named with the add-in.&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px"&gt;
&lt;div id="codeSnippet" style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;(var slidePart &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; slideParts)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
    &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;(assmPresentation.Shape slideShape &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; slidePart.Slide.CommonSlideData.ShapeTree.Descendants&amp;lt;assmPresentation.Shape&amp;gt;())&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
        var slideProperties = from g &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; slidePart.Slide.Descendants&amp;lt;GraphicFrame&amp;gt;()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
            &lt;span style="color: #0000ff"&gt;where&lt;/span&gt; g.NonVisualGraphicFrameProperties.NonVisualDrawingProperties.Name == TokenText.Text&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
            select g;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
 &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(slideProperties.Count() &amp;gt; 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
        {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
            tokenFound = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
        }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
    }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"&gt;
}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Together the combination of Open XML and VSTO add-ins make a powerful combination in creating a process for maintaining a template and generating documents from the template.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138438"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138438" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/tmurphy/aggbug/138438.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/VB7B3SD_G6c" height="1" width="1"/&gt;</description><dc:creator>Tim Murphy</dc:creator><feedburner:origLink>http://geekswithblogs.net/tmurphy/archive/2010/03/10/naming-powerpoint-components-with-a-vsto-add-in.aspx</feedburner:origLink></item><item><title>Agile Manifesto, Revisited</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/2MlHqSEZL0g/agile-manifesto-revisited.aspx</link><pubDate>Thu, 11 Mar 2010 07:26:00 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/GeekAgilistMercenary/archive/2010/03/10/agile-manifesto-revisited.aspx</guid><wfw:comment>http://geekswithblogs.net/GeekAgilistMercenary/comments/138437.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/GeekAgilistMercenary/comments/commentRss/138437.aspx</wfw:commentRss><comments>http://geekswithblogs.net/GeekAgilistMercenary/archive/2010/03/10/agile-manifesto-revisited.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/GeekAgilistMercenary/services/trackbacks/138437.aspx</trackback:ping><source url="http://geekswithblogs.net/GeekAgilistMercenary/rss.aspx">Agile Manifesto, Revisited</source><description>&lt;p&gt;Again, conversations give me a zillion things to write about.  The recent conversation that has cropped up again is my various viewpoints of the Agile Manifesto.  Not all the processes that came after the manifesto was written, but just the core manifesto itself.  Just for context, here is the manifesto in all the glory.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="center"&gt;We are uncovering better ways of developing      &lt;br /&gt;software by doing it and helping others do it.       &lt;br /&gt;Through this work we have come to value:&lt;/p&gt;    &lt;p align="center"&gt;&lt;strong&gt;&lt;em&gt;Individuals and interactions over processes and tools&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p align="center"&gt;&lt;strong&gt;&lt;em&gt;Working software over comprehensive documentation&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p align="center"&gt;&lt;strong&gt;&lt;em&gt;Customer collaboration over contract negotiation&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p align="center"&gt;&lt;strong&gt;&lt;em&gt;Responding to change over following a plan&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p align="center"&gt;That is, while there is value in the items on      &lt;br /&gt;the right, we value the items on the left more.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Several of the key signatories at the time went on to write some of the core books that really gave Agile Software Development traction.  If you check out the Agile Manifesto Site and do a search for any of those people, you will find a treasure trove of software development information.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;My 2 Cents&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First off, I agree with a few people out there.  &lt;a href="http://elegantcode.com/2009/11/25/agile-is-not-scrum/" target="_blank"&gt;Agile is not Scrum&lt;/a&gt; for instance.  Do NOT get these things confused when checking out Agile, or pushing forward with Scrum.  As &lt;a href="http://www.linkedin.com/in/davidstarr" target="_blank"&gt;David Starr&lt;/a&gt; points out in his blog entry, &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;"About 35 minutes into this discussion, I realized I hadn?t heard a question or comment that wasn?t related to Scrum. I asked the room, ?How many people are on an agile team that is NOT using Scrum??&lt;/p&gt;    &lt;p&gt;5 hands. Seriously, out of about 150 people of so. 5 hands."&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So know, as this is one of my biggest pet peves these days, that Scrum is not Agile.  Another quote &lt;a href="http://www.linkedin.com/in/davidstarr" target="_blank"&gt;David&lt;/a&gt; writes,&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;"I assure you, dear reader, 2 week time boxes does not an agile team make."&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is the exact problem.  Take a look at the actual manifesto above.  First ideal, &lt;em&gt;"Individuals and interactions over processes and tools"&lt;/em&gt;.  There are a couple of meanings in this ideal, just as there are in the other written ideals.  But this one has a lot of contention with a set practice such as Scrum.  There are other formulas, namely XP (eXtreme) and Kanban are two that come to mind often.  But none of these are Agile, but instead a process based on the ideals of Agile.&lt;/p&gt;  &lt;p&gt;Some of you may be thinking, "that?s the same thing".  Well, no, it is not.  This type of differentiation is vitally important.  Agile is a set of ideals.  Processes are nice, but they can change, they may work for some and not others.  The Agile Manifesto covers the ideals behind what is intended, that intention being to learn and find new ways to build better software.&lt;/p&gt;  &lt;p&gt;Ideals, not processes.  Definition versus implementation.  Class versus object.  The ideals are of utmost importance, the processes are secondary, the first ideal is what really lays this out for me "Individuals and interactions over processes and tools".  Yes, we need tools but we need the individuals and their interactions more.&lt;/p&gt;  &lt;p&gt;For those coming into a development team, I hope you take this to mind.  It is of utmost importance that this differentiation is known and fought for.  The second the process becomes more important than the individuals and interactions, the team will effectively lose the advantages of Agile Ideals.&lt;/p&gt;  &lt;p&gt;This is just one of my first thoughts on the topic of Agile.  I will be writing more in the near future about each of the ideals.  I will make a point to outline more of my thoughts, my opinions, and experience with the ideals of Agile and the various processes that are out there.  Maybe, I may stumble upon something new with the help of my readers?  It would be a grand overture to the ideals I hold.&lt;/p&gt;  &lt;p&gt;  For the original entry, check out my personal blog with other juicy tech tidbits, rants, raves, and the like. &lt;a href="http://bit.ly/9vzN5B"&gt;Agilist Mercenary&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138437"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138437" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/GeekAgilistMercenary/aggbug/138437.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/2MlHqSEZL0g" height="1" width="1"/&gt;</description><dc:creator>GeekAgilistMercenary</dc:creator><feedburner:origLink>http://geekswithblogs.net/GeekAgilistMercenary/archive/2010/03/10/agile-manifesto-revisited.aspx</feedburner:origLink></item><item><title>Annoying security "feature" in Windows 2008 R2 burns me, but not DVD's</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/uX4Y9GFIEWE/annoying-security-feature-in-windows-2008-r2-burns-me-but.aspx</link><pubDate>Wed, 10 Mar 2010 21:24:01 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/sspotts/archive/2010/03/10/annoying-security-feature-in-windows-2008-r2-burns-me-but.aspx</guid><wfw:comment>http://geekswithblogs.net/sspotts/comments/138436.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/sspotts/comments/commentRss/138436.aspx</wfw:commentRss><comments>http://geekswithblogs.net/sspotts/archive/2010/03/10/annoying-security-feature-in-windows-2008-r2-burns-me-but.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/sspotts/services/trackbacks/138436.aspx</trackback:ping><source url="http://geekswithblogs.net/sspotts/rss.aspx">Annoying security "feature" in Windows 2008 R2 burns me, but not DVD's</source><description>&lt;p&gt;This stuff drives me nuts. I'm all for hardening servers, and reducing security footprints, but I always want the option to allow me to get work done versus securing my system.&lt;/p&gt;
&lt;p&gt;I use Windows Server 2008 R2 as my laptop OS for a number of reasons I don't need to review here. It's pimped out to work like Windows 7 for most things. But my DVD writer is crippled, and evidently it's on purpose:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/askcore/archive/2010/02/19/windows-server-2008-r2-no-recording-tab-for-cd-dvd-burner.aspx"&gt;http://blogs.technet.com/askcore/archive/2010/02/19/windows-server-2008-r2-no-recording-tab-for-cd-dvd-burner.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I don't WANT to log in as the local administrator to burn a damned DVD.  WTF isn't this configurable through the registry, or better yet, group policy?&lt;/p&gt;
&lt;p&gt;There are no security settings that I should not have the option to enable or disable.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138436"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138436" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/sspotts/aggbug/138436.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/uX4Y9GFIEWE" height="1" width="1"/&gt;</description><dc:creator>Stan Spotts</dc:creator><feedburner:origLink>http://geekswithblogs.net/sspotts/archive/2010/03/10/annoying-security-feature-in-windows-2008-r2-burns-me-but.aspx</feedburner:origLink></item><item><title>Converting Openfire IM datetime values in SQL Server to / from VARCHAR(15) and DATETIME data types</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/1kvOuQ939iE/138435.aspx</link><pubDate>Wed, 10 Mar 2010 20:41:04 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/bbiales/archive/2010/03/10/138435.aspx</guid><wfw:comment>http://geekswithblogs.net/bbiales/comments/138435.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/bbiales/comments/commentRss/138435.aspx</wfw:commentRss><comments>http://geekswithblogs.net/bbiales/archive/2010/03/10/138435.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/bbiales/services/trackbacks/138435.aspx</trackback:ping><source url="http://geekswithblogs.net/bbiales/rss.aspx">Converting Openfire IM datetime values in SQL Server to / from VARCHAR(15) and DATETIME data types</source><description>&lt;p&gt;A client is using Openfire IM for their users, and would like some custom queries to audit user conversations (which are stored by Openfire in tables in the SQL Server database).&lt;/p&gt;
&lt;p&gt;Because Openfire supports multiple database servers and multiple platforms, the designers chose to store all date/time stamps in the database as 15 character strings, which get converted to Java Date objects in their code (Openfire is written in Java). &lt;/p&gt;
&lt;p&gt;I did some digging around, and, so I don't forget and in case someone else will find this useful, I will put the simple algorithms here for converting back and forth between SQL DATETIME and the Java string representation.&lt;/p&gt;
&lt;p&gt;The Java string representation is the number of milliseconds since 1/1/1970. &lt;/p&gt;
&lt;p&gt;SQL Server's DATETIME is actually represented as a float, the value being the number of days since 1/1/1900, the portion after the decimal point representing the hours/minutes/seconds/milliseconds... as a fractional part of a day. &lt;br /&gt;
Try this and you will see this is true:&lt;br /&gt;
    SELECT CAST(0 AS DATETIME) &lt;br /&gt;
and you will see it returns the date 1/1/1900.&lt;/p&gt;
&lt;p&gt;The difference in days between SQL Server's 0 date of 1/1/1900 and the Java representation's 0 date of 1/1/1970 is found easily using the following SQL: &lt;br /&gt;
  SELECT DATEDIFF(D, '1900-01-01', '1970-01-01') &lt;br /&gt;
which returns 25567.  There are 25567 days between these dates.&lt;/p&gt;
&lt;p&gt;So to convert from the Java string to SQL Server's date time, we need to convert the number of milliseconds to a floating point representation of the number of days since 1/1/1970, then add the 25567 to change this to the number of days since 1/1/1900.  To convert to days, you need to divide the number by 1000 ms/s, then by  60 seconds/minute, then by 60 minutes/hour, then by 24 hours/day.  Or simply divide by 1000*60*60*24, or 86400000.   So, to summarize, we need to cast this string as a float, divide by 86400000 milliseconds/day, then add 25567 days, and cast the resulting value to a DateTime.  Here is an example:&lt;/p&gt;
&lt;p&gt;  DECLARE @tmp as VARCHAR(15)&lt;br /&gt;
  SET @tmp = '1268231722123'&lt;br /&gt;
  SELECT @tmp as JavaTime, CAST((CAST(@tmp AS FLOAT) / 86400000) + 25567 AS DATETIME) as SQLTime&lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;To convert from SQL datetime back to the Java time format is not quite as simple, I found, because floats of that size do not convert nicely to strings, they end up in scientific notation using the CONVERT function or CAST function.  But I found a couple ways around that problem. You can convert a date to the number of  seconds since 1/1/1970 very easily using the DATEDIFF function, as this value fits in an Int.  If you don't need to worry about the milliseconds, simply cast this integer as a string, and then concatenate '000' at the end, essentially multiplying this number by 1000, and making it milliseconds since 1/1/1970.  If, however, you do care about the milliseconds, you will need to use DATEPART to get the milliseconds part of the date, cast this integer to a string, and then pad zeros on the left to make sure this is three digits, and concatenate these three digits to the number of seconds string above.  And finally, I discovered by casting to DECIMAL(15,0) then to VARCHAR(15), I avoid the scientific notation issue.  So here are all my examples, pick the one you like best...&lt;/p&gt;
&lt;p&gt;First, here is the simple approach if you don't care about the milliseconds:&lt;br /&gt;
  DECLARE @tmp as VARCHAR(15)&lt;br /&gt;
  DECLARE @dt as DATETIME&lt;br /&gt;
  SET @dt = '2010-03-10 14:35:22.123'&lt;br /&gt;
  SET @tmp = CAST(DATEDIFF(s, '1970-01-01 00:00:00' , @dt) AS VARCHAR(15)) + '000'&lt;br /&gt;
  SELECT @tmp as JavaTime, @dt as SQLTime&lt;/p&gt;
&lt;p&gt;If you want to keep the milliseconds:&lt;br /&gt;
  DECLARE @tmp as VARCHAR(15)&lt;br /&gt;
  DECLARE @dt as DATETIME&lt;br /&gt;
  DECLARE @ms as int&lt;br /&gt;
  SET @dt = '2010-03-10 14:35:22.123'&lt;br /&gt;
  SET @ms as DATEPART(ms, @dt)&lt;br /&gt;
  SET @tmp = CAST(DATEDIFF(s, '1970-01-01 00:00:00' , @dt) AS VARCHAR(15))&lt;br /&gt;
          + RIGHT('000' + CAST(@ms AS VARCHAR(3)), 3)&lt;br /&gt;
  SELECT @tmp as JavaTime, @dt as SQLTime&lt;/p&gt;
&lt;p&gt;Or, in one fell swoop:&lt;br /&gt;
  DECLARE @dt as DATETIME&lt;br /&gt;
  SET @dt = '2010-03-10 14:35:22.123'&lt;br /&gt;
  SELECT @dt as SQLTime&lt;br /&gt;
    , CAST(DATEDIFF(s, '1970-01-01 00:00:00' , @dt) AS VARCHAR(15))&lt;br /&gt;
          + RIGHT('000' + CAST( DATEPART(ms, @dt) AS VARCHAR(3)), 3) as JavaTime&lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;And finally, a way to simply reverse the math used converting from Java date to SQL date.&lt;br /&gt;
Note the parenthesis - watch out for operator precedence, you want to subtract, then multiply:&lt;br /&gt;
  DECLARE @dt as DATETIME&lt;br /&gt;
  SET @dt = '2010-03-10 14:35:22.123'&lt;br /&gt;
  SELECT @dt as SQLTime&lt;br /&gt;
    , CAST(CAST((CAST(@dt as Float) - 25567.0) * 86400000.0 as DECIMAL(15,0)) as VARCHAR(15)) as JavaTime&lt;/p&gt;
&lt;p&gt;Interestingly, I found that converting to SQL Date time can lose some accuracy, when I converted the time above to Java time then converted  that back to DateTime, the number of milliseconds is 120, not 123.  As I am not interested in the milliseconds, this is ok for me.  But you may want to look into using DateTime2 in SQL Server 2008 for more accuracy.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138435"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138435" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/bbiales/aggbug/138435.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/1kvOuQ939iE" height="1" width="1"/&gt;</description><dc:creator>Brian Biales</dc:creator><feedburner:origLink>http://geekswithblogs.net/bbiales/archive/2010/03/10/138435.aspx</feedburner:origLink></item><item><title>Silverlight Cream for March 10, 2010 -- #810</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/FG4rnsla0cc/138434.aspx</link><pubDate>Wed, 10 Mar 2010 19:47:01 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/WynApseTechnicalMusings/archive/2010/03/10/138434.aspx</guid><wfw:comment>http://geekswithblogs.net/WynApseTechnicalMusings/comments/138434.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/138434.aspx</wfw:commentRss><comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2010/03/10/138434.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/138434.aspx</trackback:ping><source url="http://geekswithblogs.net/WynApseTechnicalMusings/rss.aspx">Silverlight Cream for March 10, 2010 -- #810</source><description>&lt;p&gt;&lt;font face="tahoma"&gt;In this Issue:       &lt;a href="#20100310Andrea Boschin"&gt;&lt;u&gt; Andrea Boschin&lt;/u&gt;&lt;/a&gt;,            &lt;a href="#20100310Jeremy Likness"&gt;&lt;u&gt;Jeremy Likness&lt;/u&gt;&lt;/a&gt;(&lt;a href="#20100310Jeremy Likness2"&gt;&lt;u&gt;-2-&lt;/u&gt;&lt;/a&gt;),            &lt;a href="#20100310Andrew Veresov"&gt;&lt;u&gt;Andrew Veresov&lt;/u&gt;&lt;/a&gt;,            &lt;a href="#20100310Nokola"&gt;&lt;u&gt;Nokola&lt;/u&gt;&lt;/a&gt;,            &lt;a href="#20100310SilverLaw"&gt;&lt;u&gt;SilverLaw&lt;/u&gt;&lt;/a&gt;,            &lt;a href="#20100310Gill Cleeren"&gt;&lt;u&gt;Gill Cleeren&lt;/u&gt;&lt;/a&gt;,            &lt;a href="#20100310Jim Wightman and Jeremy Likness"&gt;&lt;u&gt;Jim Wightman and Jeremy Likness&lt;/u&gt;&lt;/a&gt;,            &lt;a href="#20100310Viktor Larsson"&gt;&lt;u&gt;Viktor Larsson&lt;/u&gt;&lt;/a&gt;(&lt;a href="#20100310Viktor Larsson2"&gt;&lt;u&gt;-2-&lt;/u&gt;&lt;/a&gt;), and           &lt;a href="#20100310Walter Ferrari"&gt;&lt;u&gt;Walter Ferrari&lt;/u&gt;&lt;/a&gt;.  &lt;br /&gt;
&lt;br /&gt;
Shoutouts: &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Viktor Larsson&lt;/b&gt; has a post up about &lt;a href="http://fragiledevelopment.wordpress.com/2010/03/08/silverlight-market-penetration-2/ "&gt;&lt;u&gt;Silverlight Market Penetration&lt;/u&gt;&lt;/a&gt; ... hope to meet you at MIX10, Viktor! &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gergely Orosz&lt;/b&gt; has posted the &lt;a href="http://gregdoesit.com/2010/03/slides-and-code-for-the-presentation-an-introduction-to-silverlight/"&gt;&lt;u&gt;Slides and code for the presentation “An Introduction to Silverlight”&lt;/u&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;center&gt;&lt;hr width="50%" /&gt;
&lt;/center&gt;
&lt;p&gt;&lt;font face="tahoma"&gt;It appears that if I miss a day, I can pretty much do an all-submittal post :) &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt; From &lt;a href="http://www.silverlightcream.com"&gt;&lt;u&gt;SilverlightCream.com&lt;/u&gt;&lt;/a&gt;:  &lt;/b&gt; &lt;/font&gt;&lt;/p&gt;
&lt;dl&gt;  &lt;font face="tahoma"&gt;
    &lt;dt&gt;&lt;a name="20100310Andrea Boschin"&gt;                &lt;/a&gt;&lt;a title="http://www.silverlightshow.net/items/Writing-an-AsyncLoader-to-enqueue-long-running-operations.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5234"&gt;&lt;u&gt;Writing an AsyncLoader to enqueue long running operations&lt;/u&gt;&lt;/a&gt;            &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Andrea Boschin&lt;/b&gt; has a tutorial on SilverlightShow where he's building up an asynch service to deal with a long-running app on the server.&lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Jeremy Likness"&gt;                &lt;/a&gt;&lt;a title="http://csharperimage.jeremylikness.com/2010/03/mvvm-with-mef-in-silverlight-video.html " href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5225"&gt;&lt;u&gt;MVVM with MEF in Silverlight: Video Tutorial &lt;/u&gt;&lt;/a&gt;            &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Jeremy Likness&lt;/b&gt; has a video tutorial up for helping beginners wire up MVVM and MEF to Silverlight. Source code for the app in the video is downloadable.&lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Jeremy Likness2"&gt;                &lt;/a&gt;&lt;a title="http://csharperimage.jeremylikness.com/2010/03/mvvm-with-mef-in-silverlight-video_09.html" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5233"&gt;&lt;u&gt;MVVM with MEF in Silverlight Video Tutorial Part 2: Plugins and Metadata&lt;/u&gt;&lt;/a&gt;             &lt;/dt&gt;
    &lt;dd&gt;In part 2, &lt;b&gt;Jeremy Likness&lt;/b&gt; redesigns the app using metadata to turn the shapes into objects, and then show how easy it is to add a new plugin... and the source for the app is downloadable.&lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Andrew Veresov"&gt;                &lt;/a&gt;&lt;a title="http://blog.andrew-veresov.com/post/Binding-a-Converter-Parameter.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5232"&gt;&lt;u&gt;Binding a Converter Parameter &lt;/u&gt;&lt;/a&gt;            &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Andrew Veresov&lt;/b&gt; has a nice code-filled solution up for those times that you need to bind a ConverterParameter value.&lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Nokola"&gt;                 &lt;/a&gt;&lt;a title="http://nokola.com/blog/post/2010/03/05/EasyPainter-Lion-Hair-styling.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5231"&gt;&lt;u&gt;EasyPainter: Lion Hair styling&lt;/u&gt;&lt;/a&gt;            &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Nokola&lt;/b&gt; has not been idle with Easy Painter... now he's added "Lion Hair" to the list of stylings you can apply... guess if you want to change someone's 'mane' ... sorry!&lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310SilverLaw"&gt;                &lt;/a&gt;&lt;a title="http://blogs.windowsclient.net/silverlaw/archive/2010/03/03/twisting-navigation-silverlight-3.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5230"&gt;&lt;u&gt;Twisting Navigation - Silverlight 3&lt;/u&gt;&lt;/a&gt;            &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;SilverLaw&lt;/b&gt; has another control up - a "Twisting Navigation" control... very cool :) ... and since I'm behind the curve, he already has an update in the Expression Gallery as noted in his post, and a &lt;a href="http://blogs.windowsclient.net/silverlaw/archive/2010/03/08/new-video-implementing-twisting-navigation-in-a-silverlight-3-application.aspx"&gt;&lt;u&gt;video tutorial&lt;/u&gt;&lt;/a&gt; on implementing it in an application... and if you understand German, turn up the sound :)&lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Gill Cleeren"&gt;                &lt;/a&gt;&lt;a title="http://www.silverlightshow.net/items/Uploading-and-downloading-images-from-WCF-in-Silverlight.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5229"&gt;&lt;u&gt;Uploading and downloading images using a WCF service with Silverlight&lt;/u&gt;&lt;/a&gt;            &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Gill Cleeren&lt;/b&gt; has a tutorial up at SilverlightShow on uploading and downloading images using WCF Services in Silverlight&lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Jim Wightman and Jeremy Likness"&gt;                &lt;/a&gt;&lt;a title="http://www.wp7devcentral.com/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5228"&gt;&lt;u&gt;New Windows Phone 7 Community Developer Hub&lt;/u&gt;&lt;/a&gt;            &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Jim Wightman and Jeremy Likness&lt;/b&gt; have a very cool Silverlight page up where you can paste the URL of your XAP in and have it display in a "Windows 7 Series Phone" ... and that's all I'm saying about that.&lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Viktor Larsson"&gt;                &lt;/a&gt;&lt;a title="http://fragiledevelopment.wordpress.com/2010/03/03/silverlight-transform-xaml-transformation-101/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5226"&gt;&lt;u&gt;XAML Transformation 101&lt;/u&gt;&lt;/a&gt;             &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Viktor Larsson&lt;/b&gt; is discussing Transforms in XAML and has a nice tutorial up that is easily the beginning of a carousel... you may also want to check out his other posts... I'm adding him to my list.&lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Viktor Larsson2"&gt;                &lt;/a&gt;&lt;a title="http://fragiledevelopment.wordpress.com/2010/02/22/silverlight-4-webcam-demo/" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5227"&gt;&lt;u&gt;Silverlight 4 Webcam Demo&lt;/u&gt;&lt;/a&gt;            &lt;/dt&gt;
    &lt;dd&gt;In this post, &lt;b&gt;Viktor Larsson&lt;/b&gt; has a tutorial up for using the WebCam. This is from a beginner perspective, so if you haven't jumped in, now's a good time.&lt;/dd&gt;
    &lt;dt&gt;&lt;a name="20100310Walter Ferrari"&gt;                 &lt;/a&gt;&lt;a title="http://www.silverlightshow.net/items/How-to-extend-Bing-Maps-Silverlight-with-an-elevation-profile-graph-ndash-Part-1.aspx" href="http://www.silverlightcream.com/SilverlightCreamRedirect.aspx?LinkID=5224"&gt;&lt;u&gt;How to extend Bing Maps Silverlight with an elevation profile graph - Part 1&lt;/u&gt;&lt;/a&gt;            &lt;/dt&gt;
    &lt;dd&gt;&lt;b&gt;Walter Ferrari&lt;/b&gt; has a post up at SilverlightShow discussing extensions to BingMaps such as creating routes using GeoCoding and Route Services plus drawing lines on the maps and getting coordinates of the points.&lt;/dd&gt;
    &lt;/font&gt;&lt;/dl&gt;
    &lt;p&gt;&lt;font face="tahoma"&gt;&lt;br /&gt;
    &lt;font color="#0000ff"&gt;&lt;strong&gt;Stay in the 'Light!&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;
    &lt;/font&gt;&lt;/p&gt;
    &lt;center&gt; &lt;font face="tahoma"&gt;  &lt;/font&gt;&lt;hr width="50%" /&gt;
    &lt;font face="tahoma"&gt;  &lt;a href="http://twitter.com/SilverlightNews"&gt;&lt;u&gt;Twitter SilverlightNews&lt;/u&gt;&lt;/a&gt; |    &lt;a href="http://twitter.com/WynApse"&gt;&lt;u&gt;Twitter WynApse&lt;/u&gt;&lt;/a&gt; |    &lt;a href="http://www.wynapse.com"&gt;&lt;u&gt;WynApse.com&lt;/u&gt;&lt;/a&gt; |    &lt;a href="http://www.wynapse.com/TaggedPosts.aspx"&gt;&lt;u&gt;Tagged Posts&lt;/u&gt;&lt;/a&gt; |    &lt;a href="http://www.silverlightcream.com"&gt;&lt;u&gt;SilverlightCream&lt;/u&gt;&lt;/a&gt; &lt;br /&gt;
    &lt;a href="http://tech.groups.yahoo.com/group/SilverlightCream/join"&gt;&lt;u&gt;Join me @ SilverlightCream&lt;/u&gt;&lt;/a&gt; |    &lt;a href="http://www.phoenixsilverlight.net"&gt;&lt;u&gt;Phoenix Silverlight User Group&lt;/u&gt;&lt;/a&gt;   &lt;br /&gt;
    &lt;/font&gt;&lt;/center&gt;
    &lt;p&gt;&lt;font face="tahoma"&gt;  &lt;br /&gt;
    &lt;br /&gt;
    Technorati Tags:     &lt;a rel="tag" href="http://technorati.com/tag/Silverlight"&gt;&lt;img alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=Silverlight" style="border: 0pt none ; vertical-align: middle; margin-left: 0.4em;" /&gt;Silverlight&lt;/a&gt;        &lt;a rel="tag" href="http://technorati.com/tag/silverlight-3"&gt;&lt;img alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=silverlight-3" style="border: 0pt none ; vertical-align: middle; margin-left: 0.4em;" /&gt;Silverlight 3&lt;/a&gt;        &lt;a rel="tag" href="http://technorati.com/tag/silverlight-4"&gt;&lt;img alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=silverlight-4" style="border: 0pt none ; vertical-align: middle; margin-left: 0.4em;" /&gt;Silverlight 4&lt;/a&gt;        &lt;a rel="tag" href="http://technorati.com/tag/MIX10"&gt;&lt;img alt=" " style="border: 0pt none ; margin-left: 0.4em; vertical-align: middle;" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=MIX10" /&gt;MIX10&lt;/a&gt;  &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138434"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138434" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/138434.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/FG4rnsla0cc" height="1" width="1"/&gt;</description><dc:creator>Dave Campbell</dc:creator><feedburner:origLink>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2010/03/10/138434.aspx</feedburner:origLink></item><item><title>My program at #MIX10</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/EgU43ttzI_g/my-program-at-mix10.aspx</link><pubDate>Wed, 10 Mar 2010 18:01:28 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/lbugnion/archive/2010/03/10/my-program-at-mix10.aspx</guid><wfw:comment>http://geekswithblogs.net/lbugnion/comments/138433.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/138433.aspx</wfw:commentRss><comments>http://geekswithblogs.net/lbugnion/archive/2010/03/10/my-program-at-mix10.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/138433.aspx</trackback:ping><source url="http://geekswithblogs.net/lbugnion/rss.aspx">My program at #MIX10</source><description>&lt;p&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX14"&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline" alt="MIX10Speaker" align="left" src="http://farm5.static.flickr.com/4031/4422274969_f62ba098fe_o.jpg" width="154" height="151" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Getting ready to fly to Vegas and MIX10 is really an exciting time! It is also a very busy time, because we are working on a few projects that will be shown on stage, I have my presentation to prepare, and of course as always the book… though these days it has been a bit on the back burner to be honest ;)&lt;/p&gt;  &lt;p&gt;I arrive in Vegas on Sunday evening around 10PM, so I won’t be able to make it to the traditional IdentityMine dinner this year. I am sure it will be fun nonetheless!&lt;/p&gt;  &lt;h1&gt;My session: Understanding the MVVM pattern&lt;/h1&gt;  &lt;p&gt;&lt;a title="http://live.visitmix.com/MIX10/Sessions/EX14" href="http://live.visitmix.com/MIX10/Sessions/EX14"&gt;http://live.visitmix.com/MIX10/Sessions/EX14&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My session is scheduled on the first day, which is awesome, so I am crossing my fingers and hoping that the MIX team doesn’t change it at the last minute… The session will take place on&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Monday, the 15th of March, 2PM, Room Lagoon F&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Important: &lt;/strong&gt;remember that the USA are moving to Summer time on Sunday, so don’t forget to adjust your watches!!&lt;/p&gt;  &lt;h1&gt;Ask the Experts&lt;/h1&gt;  &lt;p&gt;On Monday evening, I will attend the Ask the Experts event, which is taking place between 5Pm and 6:30PM in the main meal hall. This will be a great occasion to grab a beer and talk about code.&lt;/p&gt;  &lt;h1&gt;The Commons&lt;/h1&gt;  &lt;p&gt;MIX has a great place called the Commons, a great location to chill between sessions, and meet tons of interesting people. I love the Commons and plan to spend a lot of time there to meet as many people as I can.&lt;/p&gt;  &lt;h1&gt;Parties&lt;/h1&gt;  &lt;p&gt;I was invited to a few parties, and will do my best to avoid conflicts :) I plan to be at the following events:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight Mixers on Monday evening &lt;/li&gt;    &lt;li&gt;Insiders MIX party on Tuesday &lt;/li&gt;    &lt;li&gt;Silverlight partner happy hour on Tuesday too &lt;/li&gt; &lt;/ul&gt; This is a lot of fun, but at the same time we all know that the best value of a conference is to meet people face to face. This is just the right occasion.  &lt;h1&gt;And on Thursday…&lt;/h1&gt;  &lt;p&gt;On Thursday I will be attending a Silverlight event at the Luxor. It will be a very busy day, perfect way to end the conference. I fly back home on Friday morning, but due to a long stop in Washington DC (where I intend to go downtown and take pictures… except if the weather is bad, in which case I will probably go to the museum of flight), I will reach home only on Sunday.&lt;/p&gt;  &lt;h1&gt;Getting hold of me&lt;/h1&gt;  &lt;p&gt;The best way to reach me during MIX is to &lt;a href="http://www.twitter.com/lbugnion"&gt;send me a message on Twitter&lt;/a&gt;. I will regularly tweet my location at the conference, so make sure to come and meet me. I am eager to make new friends, to talk about the fantastic jobs we did in WPF and Silverlight over the past year and hear your war stories!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.twitter.com/lbugnion"&gt;http://www.twitter.com/lbugnion&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138433"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138433" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/138433.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/EgU43ttzI_g" height="1" width="1"/&gt;</description><dc:creator>Laurent Bugnion</dc:creator><feedburner:origLink>http://geekswithblogs.net/lbugnion/archive/2010/03/10/my-program-at-mix10.aspx</feedburner:origLink></item><item><title>Mini Book Review of IronRuby Unleashed by Shay Friedman</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/yxB7EnAPv8w/mini-book-review-of-ironruby-unleashed-by-shay-friedman.aspx</link><pubDate>Wed, 10 Mar 2010 12:58:11 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/iupdateable/archive/2010/03/10/mini-book-review-of-ironruby-unleashed-by-shay-friedman.aspx</guid><wfw:comment>http://geekswithblogs.net/iupdateable/comments/138432.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/iupdateable/comments/commentRss/138432.aspx</wfw:commentRss><comments>http://geekswithblogs.net/iupdateable/archive/2010/03/10/mini-book-review-of-ironruby-unleashed-by-shay-friedman.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/iupdateable/services/trackbacks/138432.aspx</trackback:ping><source url="http://geekswithblogs.net/iupdateable/rss.aspx">Mini Book Review of IronRuby Unleashed by Shay Friedman</source><description>&lt;p&gt;When I get some time (and hell starts to look a little chilly) I would love to do a more detailed review. But I wanted to get something “out there” as I really like this book and reviews of it seem a little thin on the ground. &lt;/p&gt;  &lt;h4&gt;In brief:&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Is it a good book? &lt;strong&gt;Yes&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Would I recommend this book to a .NET developer who was new to Ruby? &lt;strong&gt;Yes (This is me by the way)&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Would I recommend this book to a Ruby developer who was new to .NET ? &lt;strong&gt;Yes &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Would I recommend this book to a developer who sometimes does Ruby and sometimes does .NET? &lt;strong&gt;Yes&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Would I recommend this book to a developer new to .NET &lt;strong&gt;and&lt;/strong&gt; new to Ruby? &lt;strong&gt;Yes&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The above demonstrates how well balanced this book is (IMHO).&lt;/p&gt;  &lt;h4&gt;What I like about it:&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Its assumes pretty much no knowledge of IronRuby or .NET. All it asks is that you are a developer interested in IronRuby. Yet it manages to cover off the topics in a good degree of detail.      &lt;ul&gt;       &lt;li&gt;If you are a Ruby developer you skip Part 2, if you are a .NET developer you skip some of Part 1 and whizz through the short intros to the individual technologies such as WPF. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;It is definitely not a “lets makes the manual look pretty” book – this is original content thoughtfully written and presented. &lt;/li&gt;    &lt;li&gt;It is pretty comprehensive – in 500 pages it packs in  &lt;ul&gt;       &lt;li&gt;Intro to IronRuby &lt;/li&gt;        &lt;li&gt;Intro to .NET&lt;/li&gt;        &lt;li&gt;Intro to Ruby &lt;/li&gt;        &lt;li&gt;Using IronRuby with Windows Forms, ASP.NET, WPF, Silverlight etc &lt;/li&gt;        &lt;li&gt;Getting Rails working with IronRuby &lt;/li&gt;        &lt;li&gt;Unit testing with IronRuby – which I think is an excellent way for a .NET developer to start using IronRuby &lt;/li&gt;        &lt;li&gt;Embedding IronRuby in a .NET app  - another interesting “first step” for a .NET developer&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;What I didn’t like:&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Err… nothing yet. Ok, If I am being picky then the start of chapter 2 irked me a little as it went through the history of .NET. “The first version [of the .NET Framework] wasn’t that great”.  Felt pretty good to me compared to Java and C++ development at the time :-) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/MiniBookReviewofIronRubyUnleashedbyShayF_A72E/image_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/MiniBookReviewofIronRubyUnleashedbyShayF_A72E/image_thumb.png" width="202" height="265" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://bit.ly/ironrubyunleashed"&gt;Buy on Amazon UK&lt;/a&gt; | &lt;a href="http://bit.ly/ironrubyunleashedusa"&gt;Buy on Amazon USA&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Related Links:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.ironshay.com/category/IronRuby.aspx"&gt;Posts from the author&lt;/a&gt; Shay Friedman on IronRuby&lt;/li&gt;    &lt;li&gt;&lt;a href="http://geekswithblogs.net/iupdateable/archive/2010/03/02/guest-post-whats-ironruby-and-how-do-i-put-it.aspx"&gt;Guest Post: What's IronRuby, and how do I put it on Rails?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://geekswithblogs.net/iupdateable/archive/2010/03/10/guest-post-using-ironruby-and-.net-to-produce-the-lsquohello.aspx"&gt;Guest Post: Using IronRuby and .NET to produce the ‘Hello World of WPF’&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://geekswithblogs.net/iupdateable/archive/2010/03/02/getting-php-and-ruby-working-on-windows-azure-and-sql.aspx"&gt;Getting PhP and Ruby working on Windows Azure and SQL Azure&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138432"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138432" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/iupdateable/aggbug/138432.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/yxB7EnAPv8w" height="1" width="1"/&gt;</description><dc:creator>Eric Nelson</dc:creator><feedburner:origLink>http://geekswithblogs.net/iupdateable/archive/2010/03/10/mini-book-review-of-ironruby-unleashed-by-shay-friedman.aspx</feedburner:origLink></item><item><title>Guest Post: Using IronRuby and .NET to produce the &amp;lsquo;Hello World of WPF&amp;rsquo;</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/KH4ExjJ4dB0/guest-post-using-ironruby-and-.net-to-produce-the-lsquohello.aspx</link><pubDate>Wed, 10 Mar 2010 11:28:28 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/iupdateable/archive/2010/03/10/guest-post-using-ironruby-and-.net-to-produce-the-lsquohello.aspx</guid><wfw:comment>http://geekswithblogs.net/iupdateable/comments/138431.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/iupdateable/comments/commentRss/138431.aspx</wfw:commentRss><comments>http://geekswithblogs.net/iupdateable/archive/2010/03/10/guest-post-using-ironruby-and-.net-to-produce-the-lsquohello.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/iupdateable/services/trackbacks/138431.aspx</trackback:ping><source url="http://geekswithblogs.net/iupdateable/rss.aspx">Guest Post: Using IronRuby and .NET to produce the &amp;lsquo;Hello World of WPF&amp;rsquo;</source><description>&lt;p&gt;[You might want to also read other &lt;a href="http://geekswithblogs.net/iupdateable/category/11253.aspx"&gt;GuestPosts on my blog&lt;/a&gt; – or &lt;a href="http://geekswithblogs.net/iupdateable/contact.aspx"&gt;contribute one&lt;/a&gt;?]&lt;/p&gt;  &lt;p&gt;On the 26th and 27th of March (2010) myself and Edd Morgan of Microsoft will be popping along to the &lt;a href="http://scottishrubyconference.com/posts"&gt;Scottish Ruby Conference&lt;/a&gt;. I &lt;a href="http://geekswithblogs.net/iupdateable/category/10076.aspx"&gt;dabble&lt;/a&gt; with Ruby and I am a &lt;a href="http://geekswithblogs.net/iupdateable/archive/2009/03/30/my-thoughts-post-devweek-2009.-or-rather-my-one-thought.aspx"&gt;huge fan&lt;/a&gt; whilst Edd is a “proper Ruby developer”. Hence I asked Edd if he was interested in creating a guest post or two for my blog on &lt;a href="http://ironruby.net/"&gt;IronRuby&lt;/a&gt;. This is the second of those posts.&lt;/p&gt;  &lt;p&gt;If you should stumble across this post &lt;strong&gt;and&lt;/strong&gt; happen to be attending the Scottish Ruby Conference, then please do keep a look out for myself and Edd. We would both love to chat about all things Ruby and IronRuby. &lt;/p&gt;  &lt;p&gt;And… we should have (if Amazon is kind) a few books on IronRuby with us at the conference which will need to find a good home.&lt;/p&gt;  &lt;p&gt;This is me and Edd and … the book:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostWhatsIronRubyandhowdoIputitonRa_9CA4/eric09_2.jpg"&gt;&lt;img title="eric09" border="0" alt="eric09" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostWhatsIronRubyandhowdoIputitonRa_9CA4/eric09_thumb.jpg" width="144" height="154" /&gt;&lt;/a&gt; &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostWhatsIronRubyandhowdoIputitonRa_9CA4/image_4.png"&gt;&lt;img title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostWhatsIronRubyandhowdoIputitonRa_9CA4/image_thumb_1.png" width="140" height="155" /&gt;&lt;/a&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostIronRubyand.NET_9D01/image_9.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostIronRubyand.NET_9D01/image_thumb_3.png" width="122" height="155" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Order on Amazon: &lt;a title="http://bit.ly/ironrubyunleashed" href="http://bit.ly/ironrubyunleashed"&gt;http://bit.ly/ironrubyunleashed&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Using IronRuby and .NET to produce the ‘Hello World of WPF’&lt;/h3&gt;  &lt;p&gt;In my &lt;a href="http://geekswithblogs.net/iupdateable/archive/2010/03/02/guest-post-whats-ironruby-and-how-do-i-put-it.aspx"&gt;previous post&lt;/a&gt; I introduced, to a minor extent, &lt;strong&gt;IronRuby&lt;/strong&gt;. I expanded a little on the basics of by getting a Rails app up-and-running on this .NET implementation of the Ruby language — but there wasn't much to it! So now I would like to go from simply running a pre-existing project under IronRuby to developing a whole new application demonstrating the seamless interoperability between IronRuby and .NET. In particular, we'll be using &lt;strong&gt;WPF&lt;/strong&gt; (&lt;em&gt;Windows Presentation Foundation&lt;/em&gt;) — the component of the .NET Framework stack used to create rich media and graphical interfaces.&lt;/p&gt;  &lt;h4&gt;Foundations of WPF&lt;/h4&gt;  &lt;p&gt;To reiterate, WPF is the engine in the .NET Framework responsible for rendering rich user interfaces and other media. It's not the only collection of libraries in the framework with the power to do this — Windows Forms does the trick, too — but it is the most powerful and flexible. Put simply, WPF really excels when you need to employ eye candy. It's all about creating impact. Whether you're presenting a document, video, a data entry form, some kind of data visualisation (which I am most hopeful for, especially in terms of IronRuby - more on that later) or chaining all of the above with some flashy animations, you're likely to find that WPF gives you the most power when developing any of these for a Windows target.&lt;/p&gt;  &lt;p&gt;Let's demonstrate this with an example. I give you what I like to consider the 'hello, world' of WPF applications: &lt;strong&gt;the analogue clock&lt;/strong&gt;.&lt;/p&gt;  &lt;blockquote&gt;Today, over my lunch break, I created a WPF-based analogue clock using IronRuby... Any normal person would have just looked at their watch.    &lt;br /&gt;- &lt;a href="http://twitter.com/eddm/status/9924975853"&gt;Twitter&lt;/a&gt;&lt;/blockquote&gt;  &lt;h4&gt;The Sample Application: &lt;/h4&gt;  &lt;p&gt;&lt;a href="http://gist.github.com/322701"&gt;Click here&lt;/a&gt; to see this sample in &lt;strong&gt;full&lt;/strong&gt; on GitHub.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Using Windows Presentation Foundation from IronRuby to create a Clock class&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostIronRubyand.NET_9D01/image_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostIronRubyand.NET_9D01/image_thumb.png" width="640" height="326" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Invoking the Clock class&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostIronRubyand.NET_9D01/image_5.png" width="640" height="144" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Gives you&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostIronRubyand.NET_9D01/image_7.png" rel="lightbox"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/iupdateable/WindowsLiveWriter/GuestPostIronRubyand.NET_9D01/image_thumb_2.png" width="240" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The above is by no means perfect (it was a lunch break), but I think it does the job of illustrating IronRuby's interoperability with WPF using a familiar data visualisation. I'm sure you'll want to dissect the code yourself, but allow me to step through the important bits. (By the way, feel free to run this through &lt;code&gt;ir&lt;/code&gt; first to see what actually happens).&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Now&lt;/em&gt; we're using IronRuby - unlike my previous post where we took pure Ruby code and ran it through &lt;code&gt;ir&lt;/code&gt;, the IronRuby interpreter, to demonstrate compatibility. The main thing of note is the very distinct parallels between .NET namespaces and Ruby modules, .NET classes and Ruby classes. I guess there's not much to say about it other than at this point, you may as well be working &lt;/p&gt;  &lt;p&gt;with a purely Ruby graphics-drawing library.&lt;/p&gt;  &lt;p&gt;You're instantiating .NET objects, but you're doing it with the standard Ruby &lt;code&gt;.new&lt;/code&gt; method you know from Ruby as &lt;code&gt;Object#new&lt;/code&gt; — although, the root object of all your IronRuby objects isn't actually &lt;code&gt;Object&lt;/code&gt;, it's &lt;code&gt;System.Object&lt;/code&gt;. You're calling methods on these objects (and classes, for example in the call to &lt;code&gt;System.Windows.Controls.Canvas.SetZIndex()&lt;/code&gt;) using the underscored, lowercase convention established for the Ruby language. The integration is so seamless. The fact that you're using a dynamic language on top of .NET's CLR is completely abstracted from you, allowing you to &lt;strong&gt;just build your software&lt;/strong&gt;. &lt;/p&gt;  &lt;h4&gt;A Brief Note on Events&lt;/h4&gt;  &lt;p&gt;Events are a big part of developing client applications in .NET as well as under every other environment I can think of. In case you aren't aware, event-driven programming is essentially the practice of telling your code to call a particular method, or other chunk of code (a &lt;em&gt;delegate&lt;/em&gt;) when something happens at an unpredictable time. You can never predict when a user is going to click a button, move their mouse or perform any other kind of input, so the advent of the GUI is what necessitated event-driven programming.&lt;/p&gt;  &lt;p&gt;This is where one of my favourite aspects of the Ruby language, &lt;strong&gt;blocks&lt;/strong&gt;, can really help us. In traditional C#, for instance, you may &lt;em&gt;subscribe&lt;/em&gt; to an event (assign a block of code to execute when an event occurs) in one of two ways: by passing a reference to a named method, or by providing an anonymous code block. You'd be right for seeing the parallel here with Ruby's concept of &lt;code&gt;block&lt;/code&gt;s, &lt;code&gt;Proc&lt;/code&gt;s and &lt;code&gt;lambda&lt;/code&gt;s. As demonstrated at the very end of this rather basic script, we are using .NET's &lt;code&gt;System.Timers.Timer&lt;/code&gt; to (attempt to) update the clock every second (I know it's probably not the best way of doing this, but for example's sake).&lt;/p&gt;  &lt;p&gt;&lt;small&gt;&lt;strong&gt;Note:&lt;/strong&gt; Diverting a little from what I said above, the ticking of a clock is very predictable, yet we still use the event our &lt;code&gt;Timer&lt;/code&gt; throws to do this updating as one of many ways to perform that task outside of the main thread.&lt;/small&gt;&lt;/p&gt;  &lt;p&gt;You'll see that all that's needed to assign a block of code to be triggered on an event is to provide that block to the method of the name of the event as it is known to the CLR. This drawback to this is that it only allows the delegation of one code block to each event. You may use the &lt;code&gt;add&lt;/code&gt; method to subscribe multiple handlers to that event - pushing that to the end of a queue. Like so:&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;def tick
    puts "tick tock"
end

timer.elapsed.add method(:tick)
timer.elapsed.add proc { puts "tick tock" }
tick_handler = lambda { puts "tick tock" }
timer.elapsed.add(tick_handler)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;The ability to just provide a block of code as an event handler helps IronRuby towards that very important term I keep throwing around; &lt;strong&gt;low ceremony&lt;/strong&gt;. Anonymous methods are, of course, available in other more conventional .NET languages such as C# and VB but, as usual, feel ever so much more elegant and natural in IronRuby.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;strong&gt;Note:&lt;/strong&gt; Whether it's a named method or an anonymous chunk o' code, the block you delegate to the handling of an event can take arguments - commonly, a &lt;code&gt;sender&lt;/code&gt; object and some &lt;code&gt;args&lt;/code&gt;.&lt;/small&gt;&lt;/p&gt;

&lt;h4&gt;Another Brief Note on Verbosity&lt;/h4&gt;

&lt;p&gt;Personally, I don't mind verbose chaining of references in my code as long as it doesn't interfere with performance - as evidenced in the example above. While I love clean code, there's a certain feeling of safety that comes with the terse explicitness of long-winded addressing and the describing of objects as opposed to ambiguity (not unlike this sentence). However, when working with IronRuby, even I grow tired of typing &lt;code&gt;System::Whatever::Something&lt;/code&gt;. Some people enjoy simply assuming namespaces and forgetting about them, regardless of the language they're using. Don't worry, IronRuby has you covered.&lt;/p&gt;

&lt;p&gt;It is completely possible to, with a call to &lt;code&gt;include&lt;/code&gt;, bring the contents of a .NET-converted module into context of your IronRuby code - just as you would if you wanted to bring in an '&lt;em&gt;organic&lt;/em&gt;' Ruby module. To refactor the style of the above example, I could place the following at the top of my &lt;code&gt;Clock&lt;/code&gt; class: &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;class Clock
    include System::Windows::Shape
    include System::Windows::Media
    include System::Windows::Threading
    # and so on...&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;And by doing so, reduce calls to &lt;code&gt;System::Windows::Shapes::Ellipse.new&lt;/code&gt; to simply &lt;code&gt;Ellipse.new&lt;/code&gt; or references to &lt;code&gt;System::Windows::Threading::DispatcherPriority.Render&lt;/code&gt; to a friendlier &lt;code&gt;DispatcherPriority.Render&lt;/code&gt;. &lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;I hope by now you can understand better how IronRuby interoperates with .NET and how you can harness the power of the .NET framework with the dynamic nature and elegant idioms of the Ruby language. &lt;/p&gt;

&lt;p&gt;The manner and parlance of Ruby that makes it a joy to work with sets of data is, of course, present in IronRuby — couple that with WPF's capability to produce great graphics quickly and easily, and I hope you can visualise the possibilities of data visualisation using these two things. Using IronRuby and WPF together to create visual representations of data and infographics is very exciting to me. Although today, with this project, we're only presenting one simple piece of information - the time - the potential is much grander.&lt;/p&gt;

&lt;p&gt;My day-to-day job is centred around software development and UI design, specifically in the realm of healthcare, and if you were to pay a visit to our office you would behold, directly above my desk, a large plasma TV with a constantly rotating, animated slideshow of charts and infographics to help members of our team do their jobs. It's an app powered by WPF which never fails to spark some conversation with visitors whose gaze has been hooked. If only it was written in IronRuby, the pleasantly low ceremony and reduced pre-processing time for my brain would have helped greatly.&lt;/p&gt;

&lt;p&gt;Edd Morgan &lt;a href="http://www.trquadrant.com/"&gt;blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related Links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://geekswithblogs.net/iupdateable/archive/2010/03/02/getting-php-and-ruby-working-on-windows-azure-and-sql.aspx"&gt;Getting PhP and Ruby working on Windows Azure and SQL Azure&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138431"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138431" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/iupdateable/aggbug/138431.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/KH4ExjJ4dB0" height="1" width="1"/&gt;</description><dc:creator>Eric Nelson</dc:creator><feedburner:origLink>http://geekswithblogs.net/iupdateable/archive/2010/03/10/guest-post-using-ironruby-and-.net-to-produce-the-lsquohello.aspx</feedburner:origLink></item><item><title>there is no attribute "border"</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/l1NLtvg7GqA/there-is-no-attribute-border.aspx</link><pubDate>Wed, 10 Mar 2010 09:12:48 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/ptahiliani/archive/2010/03/10/there-is-no-attribute-border.aspx</guid><wfw:comment>http://geekswithblogs.net/ptahiliani/comments/138430.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/ptahiliani/comments/commentRss/138430.aspx</wfw:commentRss><comments>http://geekswithblogs.net/ptahiliani/archive/2010/03/10/there-is-no-attribute-border.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/ptahiliani/services/trackbacks/138430.aspx</trackback:ping><source url="http://geekswithblogs.net/ptahiliani/rss.aspx">there is no attribute "border"</source><description>&lt;p&gt;Sometimes we got this error message when we try to validate our asp.net website on w3c. To solve this error you need to write the PreRender event. Here is the complete event:&lt;/p&gt;
&lt;p&gt;Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender&lt;br /&gt;
        imgBtnGo.Style.Remove(HtmlTextWriterStyle.BorderWidth)&lt;br /&gt;
        imgBtnGo.Attributes.Remove("border")&lt;br /&gt;
End Sub&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138430"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138430" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/ptahiliani/aggbug/138430.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/l1NLtvg7GqA" height="1" width="1"/&gt;</description><dc:creator>ptahiliani</dc:creator><feedburner:origLink>http://geekswithblogs.net/ptahiliani/archive/2010/03/10/there-is-no-attribute-border.aspx</feedburner:origLink></item><item><title>LinqPad with Azure Table Storage</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/bfPdh8oPm50/linqpad-with-azure-table-storage.aspx</link><pubDate>Wed, 10 Mar 2010 07:42:54 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/IUnknown/archive/2010/03/10/linqpad-with-azure-table-storage.aspx</guid><wfw:comment>http://geekswithblogs.net/IUnknown/comments/138429.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/IUnknown/comments/commentRss/138429.aspx</wfw:commentRss><comments>http://geekswithblogs.net/IUnknown/archive/2010/03/10/linqpad-with-azure-table-storage.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/IUnknown/services/trackbacks/138429.aspx</trackback:ping><source url="http://geekswithblogs.net/IUnknown/rss.aspx">LinqPad with Azure Table Storage</source><description>&lt;p&gt;LinqPad as we all know has been a wonderful tool for running ad-hoc queries. With &lt;a title="Windows Azure" href="http://www.microsoft.com/windowsazure/windowsazure/" rel=""&gt;Windows Azure&lt;/a&gt; Table storage in picture LinqPad was no longer in picture and we shifted focus to Cloud Storage Studio only to realize the limited and strange querying capabilities of CSS. With some tweaking to Linqpad we can get the comfortable old shoe of ad-hoc queries with LinqPad in the &lt;a title="Windows Azure" href="http://www.microsoft.com/windowsazure/windowsazure/" rel=""&gt;Windows Azure&lt;/a&gt; Table storage.&lt;/p&gt;  &lt;p&gt;Steps:&lt;/p&gt;  &lt;p&gt;1. Start LinqPad&lt;/p&gt;  &lt;p&gt;2. Right Click in the query window and select “Query Properties”&lt;/p&gt;  &lt;p&gt;3. In The Additional References add reference to &lt;b&gt;Microsoft.WindowsAzure.StorageClient&lt;/b&gt;, &lt;b&gt;System.Data.Services.Client.dll&lt;/b&gt; and the assembly containing the implementation of the &lt;b&gt;DataServiceContext&lt;/b&gt; class tied to the &lt;a title="Windows Azure" href="http://www.microsoft.com/windowsazure/windowsazure/" rel=""&gt;Windows Azure&lt;/a&gt; table storage.&lt;/p&gt;  &lt;p&gt;4. In the additional namespace imports import the same three namespaces mentioned above.&lt;/p&gt;  &lt;p&gt;5. Then we need to provide following details.&lt;/p&gt;  &lt;p&gt;a. Table storage account name and shared key.&lt;/p&gt;  &lt;p&gt;b. DataServiceContext implementing class in your code.&lt;/p&gt;  &lt;p&gt;c. A LINQ query.&lt;/p&gt;  &lt;p&gt;e.x.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;"&gt;        &lt;span style="color: blue"&gt;var&lt;/span&gt; storageAccountName = &lt;span style="color: #a31515"&gt;"myStorageAccount"&lt;/span&gt;;  &lt;span style="color: green"&gt;// Enter valid storage account name       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;"&gt;        &lt;span style="color: blue"&gt;var&lt;/span&gt; storageSharedKey = &lt;span style="color: #a31515"&gt;"mysharedKey"&lt;/span&gt;; &lt;span style="color: green"&gt;// Enter valid storage account shared key       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;"&gt;        &lt;span style="color: blue"&gt;var&lt;/span&gt; uri = &lt;span style="color: blue"&gt;new&lt;/span&gt; System.&lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"&lt;a href="http://table.core.windows.net/"&gt;http://table.core.windows.net/&lt;/a&gt;"&lt;/span&gt;);      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;"&gt;        &lt;span style="color: blue"&gt;var&lt;/span&gt; storageAccountInfo = &lt;span style="color: blue"&gt;new&lt;/span&gt; CloudStorageAccount(&lt;span style="color: blue"&gt;new&lt;/span&gt; StorageCredentialsAccountKey(storageAccountName, storageSharedKey), &lt;span style="color: blue"&gt;false&lt;/span&gt;);      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;"&gt;        &lt;span style="color: blue"&gt;var&lt;/span&gt; serviceContext = &lt;span style="color: blue"&gt;new&lt;/span&gt; TweetPollDataServiceContext(storageAccountInfo); &lt;span style="color: green"&gt;// Specify the DataServiceContext implementation       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;"&gt;        &lt;span style="color: green"&gt;// The query       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;"&gt;        &lt;span style="color: blue"&gt;var&lt;/span&gt; query = &lt;span style="color: blue"&gt;from&lt;/span&gt; row &lt;span style="color: blue"&gt;in&lt;/span&gt; serviceContext.Table      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;"&gt;                    &lt;span style="color: blue"&gt;select&lt;/span&gt; row;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;"&gt;        query.Dump();&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Thanks LinqPad!&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e3a636db-5f80-4efe-bcef-165e13dd095e" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/LinqPad" rel="tag"&gt;LinqPad&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Azure+Table+Storage" rel="tag"&gt;Azure Table Storage&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Linq" rel="tag"&gt;Linq&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138429"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138429" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/IUnknown/aggbug/138429.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/bfPdh8oPm50" height="1" width="1"/&gt;</description><dc:creator>Sarang</dc:creator><feedburner:origLink>http://geekswithblogs.net/IUnknown/archive/2010/03/10/linqpad-with-azure-table-storage.aspx</feedburner:origLink></item><item><title>How to Get Along With a Colleague You Hate</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/6Jx8NF4dSzI/how-to-get-along-with-a-colleague-you-hate.aspx</link><pubDate>Wed, 10 Mar 2010 04:03:41 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/CatherineRussell/archive/2010/03/09/how-to-get-along-with-a-colleague-you-hate.aspx</guid><wfw:comment>http://geekswithblogs.net/CatherineRussell/comments/138428.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/CatherineRussell/comments/commentRss/138428.aspx</wfw:commentRss><comments>http://geekswithblogs.net/CatherineRussell/archive/2010/03/09/how-to-get-along-with-a-colleague-you-hate.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/CatherineRussell/services/trackbacks/138428.aspx</trackback:ping><source url="http://geekswithblogs.net/CatherineRussell/rss.aspx">How to Get Along With a Colleague You Hate</source><description>&lt;p&gt;1. Resist sending back scathing looks or words.   &lt;br /&gt;There is no good to be gained by lowering yourself to their position. &lt;/p&gt;  &lt;p&gt;2. Never, ever respond negatively in writing. &lt;/p&gt;  &lt;p&gt;3. Should or should we not approch HR with these type of problems? &lt;/p&gt;  &lt;p&gt;4. This is my favorite tip - Kill 'em with kindness&lt;/p&gt;  &lt;p&gt;To read more, go to:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ehow.com/how_4729640_along-colleague-hate.html"&gt;http://www.ehow.com/how_4729640_along-colleague-hate.html&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7470edc7-a232-43f6-a513-7b2c90d9b47d" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/tutorials" rel="tag"&gt;tutorials&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138428"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138428" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/CatherineRussell/aggbug/138428.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/6Jx8NF4dSzI" height="1" width="1"/&gt;</description><dc:creator>CatherineRussell</dc:creator><feedburner:origLink>http://geekswithblogs.net/CatherineRussell/archive/2010/03/09/how-to-get-along-with-a-colleague-you-hate.aspx</feedburner:origLink></item><item><title>Sneaky Javascript For Loop Bug</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/3gyBQGmj7C8/138427.aspx</link><pubDate>Tue, 09 Mar 2010 20:56:54 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/liammclennan/archive/2010/03/09/138427.aspx</guid><wfw:comment>http://geekswithblogs.net/liammclennan/comments/138427.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/liammclennan/comments/commentRss/138427.aspx</wfw:commentRss><comments>http://geekswithblogs.net/liammclennan/archive/2010/03/09/138427.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/liammclennan/services/trackbacks/138427.aspx</trackback:ping><source url="http://geekswithblogs.net/liammclennan/rss.aspx">Sneaky Javascript For Loop Bug</source><description>&lt;p&gt;Javascript allows you to declare variables simply by assigning a value to an identify, in the same style as ruby:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:4a05554b-5f92-43d9-a146-73b39bbe7bd3" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 2;  toolbar: true; "&gt;myVar = "some text";&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;Good javascript developers know that this is a bad idea because undeclared variables are assigned to the global object, usually window, making myVar globally visible. So the above code is equivalent to:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:5f6ec084-948a-4924-b278-2ac696865866" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 2;  toolbar: true; "&gt;window.myVar = "some text";&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;What I did not realise is that this applies to for loop initialisation as well. &lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:c0a507b4-a3c3-40fd-bb38-6ea7ebfbdf2c" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 2;  toolbar: true; "&gt;for (i = 0; i &amp;lt; myArray.length; i += 1) {

}

// is equivalent to


for (window.i = 0; window.i &amp;lt; myArray.length; window.i += 1) {

}&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;Combine this with function calls nested inside of the for loops and you get some very strange behaviour, as the value of i is modified simultaneously by code in different scopes. The moral of the story is to ALWAYS declare javascript variables with the var keyword, even when intialising a for loop.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:DFDE9937-D816-47f4-A306-7B60D5CE5AC0:04d13013-7768-49f1-a9b0-7c0bc2b021b8" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: jscript; gutter: false; first-line: 1; tab-size: 2;  toolbar: true; "&gt;for (var i = 0; i &amp;lt; myArray.length; i += 1) {

}&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138427"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138427" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/liammclennan/aggbug/138427.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/3gyBQGmj7C8" height="1" width="1"/&gt;</description><dc:creator>Liam McLennan</dc:creator><feedburner:origLink>http://geekswithblogs.net/liammclennan/archive/2010/03/09/138427.aspx</feedburner:origLink></item></channel></rss>
