<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
 <channel>
  <title>.NET Developers Blog</title>
  <link>http://www.enderminh.com/netdev/</link>
  <description>An aggregated blog of .NET developers.</description>
  <language>en-us</language>
  <item>
   <title><![CDATA[SUS or WSUS 70-291? Can anyone tell me if ... (3579 views)]]></title>
   <link>http://www.ms-faqs.com/content/18/7/en/sus-or-wsus-70_291-can-anyone-tell-me-if-the-291-exam-questions-relate-to-the-old-redundant-sus-or-the-new-wsus-or-will-i-have-to-cover-both-to-be-safe.html</link>
   <description><![CDATA[[1.] SUS or WSUS 70-291?
Can anyone tell me if the 291 exam questions relate to the old redundant SUS or the new WSUS or will I have to cover both to be safe? (3579 views)]]></description>
   <dc:creator>Amanda</dc:creator>
   <dc:date>7/29/2010 8:40:27 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Poshnet DNS CMDLet and DNS lookup script]]></title>
   <link>http://weblogs.asp.net/steveschofield/archive/2010/07/29/poshnet-cmd-and-dns-lookup-script.aspx</link>
   <description><![CDATA[<P mce_keep="true">I was recently tasked with writing a script to resolve a few domains.&nbsp;&nbsp;I hit the internet and found the perfect <A href="http://huddledmasses.org/powershell-dig-nslookup-cmdlet/" target=_blank mce_href="http://huddledmasses.org/powershell-dig-nslookup-cmdlet/">cmdlet</A> posted by Joel Bennett.&nbsp;&nbsp; The original <A href="http://www.codeproject.com/KB/IP/DNS_NET_Resolver.aspx" target=_blank mce_href="http://www.codeproject.com/KB/IP/DNS_NET_Resolver.aspx">code</A> was posted on <A href="http://www.codeproject.com/">www.codeproject.com</A>&nbsp; which Joel converted to a cmdlet.&nbsp; Thanks for having smart people willing to share stuff like this.&nbsp;&nbsp;My script is&nbsp;an attempt to give back&nbsp;and how I used it.&nbsp; </P>
<P mce_keep="true">My script accepts a domain, resolves the IP(s) used in DNS, runs an HTTP Get on the host name and / or hostname with WWW.&nbsp; It returns a status code, the AbsoluteURI.&nbsp; This is handy when you are processing 100's of domains&nbsp;trying to&nbsp;determine if they are valid.&nbsp; PS -&nbsp;One of my favorite features is the <FONT color=#660033><STRONG>EmulateDig</STRONG> option<STRONG>.&nbsp;&nbsp; <A href="http://www.google.com/#hl=en&amp;q=download+dig+dns+tool&amp;aq=f&amp;aqi=g1&amp;aql=&amp;oq=&amp;gs_rfai=&amp;fp=b64c696103e1e1d0" target=_blank mce_href="http://www.google.com/#hl=en&amp;q=download+dig+dns+tool&amp;aq=f&amp;aqi=g1&amp;aql=&amp;oq=&amp;gs_rfai=&amp;fp=b64c696103e1e1d0">DIG</A> is my favorite tool for DNS stuff. </STRONG></FONT>Thanks Joel!</P>
<P mce_keep="true"><STRONG>#Here is the script<BR></STRONG><BR>param<BR>(<BR><STRONG>#&nbsp;[String] $DNSConfigFileList = $(throw "Please specify the external text file of domain names to lookup"),<BR>#Sample&nbsp;Syntax</STRONG><BR>&nbsp;#.\Get-DNSLookup.ps1 <A href="http://www.iislogs.com/">www.iislogs.com</A> C:\Temp\Log.txt 192.168.1.40<BR>&nbsp;[String] $Domain = $(throw "Please specify the domain to lookup"),<BR>&nbsp;[String] $DNSLogFileAndPath = $(throw "Please specify the path where you want results logged"),<BR>&nbsp;[String] $DNSServer = $(throw "Please specify the DNS Server used for performing external queries. i.e It has to be an ip address, not server name")<BR>)</P>
<P mce_keep="true">#Example of using a text file of domain names<BR>#$DomainList = Get-Content C:\Temp\CompleteList.txt</P>
<P mce_keep="true"><STRONG>function Log-Information<BR></STRONG>{</P>
<P mce_keep="true">&nbsp;param<BR>&nbsp;(<BR>&nbsp;&nbsp;$Information<BR>&nbsp;)</P>
<P mce_keep="true">&nbsp;Add-Content $DNSLogFileAndPath $Information<BR>}</P>
<P mce_keep="true"><STRONG>function Get-DNSRecords<BR></STRONG>{<BR>&nbsp;param<BR>&nbsp;(<BR>&nbsp;&nbsp;$Domain,<BR>&nbsp;&nbsp;$DNSQueryResult<BR>&nbsp;)<BR>&nbsp;if($DNSQueryResult.Error.Length -ne 0)<BR>&nbsp;{<BR>&nbsp;&nbsp;Log-Information&nbsp;"There was an error with $($Domain)"<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;$DNSPublicationCount = $DNSQueryResult.Answers.Count<BR>&nbsp;if($DNSPublicationCount -eq 0)<BR>&nbsp;{<BR>&nbsp;&nbsp;$IsProblem = $true<BR>&nbsp;&nbsp;Log-Information "$($Domain):DNSPublicationCount is zero"<BR>&nbsp;}<BR>&nbsp;else<BR>&nbsp;{<BR>&nbsp;&nbsp;$arrIPs = "$($Domain)"<BR>&nbsp;&nbsp;for($i=0; $i -lt $DNSPublicationCount; $i++)<BR>&nbsp;&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;$DNSIPA = $DNSQueryResult.Answers[$i].Record<BR>&nbsp;&nbsp;&nbsp;$DNSIPB = $DNSIPA.Address.IPAddressToString<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if($DNSIPA.Address.IPAddressToString -ne $null)<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;$arrIPs += ",$($DNSIPB)"<BR>&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;$WebResult = Get-WebResponse $Domain<BR>&nbsp;&nbsp;Log-Information "$($arrIPs),$($WebResult)"<BR>&nbsp;}&nbsp;<BR>}</P>
<P mce_keep="true"><STRONG>function Get-WebResponse<BR></STRONG>{<BR>&nbsp;param<BR>&nbsp;(<BR>&nbsp;&nbsp;[string]$URL<BR>&nbsp;)</P>
<P mce_keep="true">&nbsp;#Try the host name first<BR>&nbsp;try<BR>&nbsp;{<BR>&nbsp;&nbsp;$Request = [System.Net.WebRequest]::Create("<A href="http://$url/">http://$URL</A>")<BR>&nbsp;&nbsp;$Response = $request.GetResponse()<BR>&nbsp;&nbsp;$RequestStream = $response.GetResponseStream()<BR>&nbsp;&nbsp;$ReadStream = new-object System.IO.StreamReader $requestStream<BR>&nbsp;&nbsp;$Results = $readStream.ReadToEnd()<BR>&nbsp;&nbsp;$ReadStream.Close()<BR>&nbsp;&nbsp;$Response.Close()</P>
<P mce_keep="true">&nbsp;&nbsp;$AbsoluteUri = $Response.ResponseUri.AbsoluteUri<BR>&nbsp;&nbsp;$StatusCode = $Response.StatusCode.value__<BR>&nbsp;&nbsp;return "$($StatusCode),$($AbsoluteUri)"<BR>&nbsp;}<BR>&nbsp;catch<BR>&nbsp;{<BR>&nbsp;&nbsp;#Try with the WWW domain<BR>&nbsp;&nbsp;try<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;$Request = [System.Net.WebRequest]::Create("<A href="http://www.$url/">http://www.$URL</A>")<BR>&nbsp;&nbsp;&nbsp;$Response = $request.GetResponse()<BR>&nbsp;&nbsp;&nbsp;$RequestStream = $response.GetResponseStream()<BR>&nbsp;&nbsp;&nbsp;$ReadStream = new-object System.IO.StreamReader $requestStream<BR>&nbsp;&nbsp;&nbsp;$Results = $readStream.ReadToEnd()<BR>&nbsp;&nbsp;&nbsp;$ReadStream.Close()<BR>&nbsp;&nbsp;&nbsp;$Response.Close()</P>
<P mce_keep="true">&nbsp;&nbsp;&nbsp;$AbsoluteUri = $Response.ResponseUri.AbsoluteUri<BR>&nbsp;&nbsp;&nbsp;$StatusCode = $Response.StatusCode.value__<BR>&nbsp;&nbsp;&nbsp;return "$($StatusCode),$($AbsoluteUri)"<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;catch<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;return "$($StatusCode),$($AbsoluteUri)"<BR>&nbsp;&nbsp;}&nbsp;&nbsp;<BR>&nbsp;}<BR>}</P>
<P mce_keep="true"><STRONG>function Clear-DNSCache<BR></STRONG>{<BR>&nbsp;$command = "c:\Windows\System32\dnscmd.exe /clearcache"<BR>&nbsp;Log-Information "running command:$command"<BR>&nbsp;Invoke-Expression $command<BR>}</P>
<P mce_keep="true"><STRONG>#Load the PoshNet Get-DNS snapin<BR>#Make sure to download Poshnet CMD from <BR># </STRONG><A href="http://huddledmasses.org/powershell-dig-nslookup-cmdlet/"><STRONG>http://huddledmasses.org/powershell-dig-nslookup-cmdlet/</STRONG></A><STRONG>&nbsp;<BR>#You need to install before running this script</STRONG></P>
<P mce_keep="true">Add-PSSnapIn PoshNet</P>
<P mce_keep="true"><STRONG>#Clear DNS Cache on the server, assuming it's local to the machine running the script<BR>#The DNS service is assumed to be run local</STRONG></P>
<P mce_keep="true">Clear-DNSCache</P>
<P mce_keep="true">#Loop through the domains on the <BR>#foreach($Domain in $DomainList)<BR>#{<BR>#&nbsp;$DNSQueryResult = Get-Dns -Name $Domain -DnsServers $DNSServer<BR>#&nbsp;Get-DNSRecords $Domain $DNSQueryResult<BR>#}</P>
<P mce_keep="true"><BR><STRONG>#Run a single query against one domain</STRONG></P>
<P mce_keep="true">$DNSQueryResult = Get-Dns -Name $Domain -DnsServers $DNSServer<BR>Get-DNSRecords $Domain $DNSQueryResult</P>
<P mce_keep="true"><STRONG>Write-Host "Done"</STRONG></P><img src="http://weblogs.asp.net/aggbug.aspx?PostID=7575869" width="1" height="1">]]></description>
   <dc:creator>Steve Schofield</dc:creator>
   <dc:date>7/29/2010 8:28:29 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[A quick and dirty implementation of Excel NORMINV function in C#]]></title>
   <link>http://weblogs.asp.net/esanchez/archive/2010/07/29/a-quick-and-dirty-implementation-of-excel-norminv-function-in-c.aspx</link>
   <description><![CDATA[<p>We are piloting the implementation of some financial risk models in F#, it so happens that the models are already implemented in Excel, so I was slowly digging out the formulas in the cells and translating them to F#. Everything was going fine until I found out that some formulas used the NORMINV function which doesn't exist in the .NET libraries. I started to look for F#, and then C#, implementations without luck (as we are just in the lets-see-if-this-have-any-chance-of-flying stage, we can’t afford any of the excellent but paid numerical libraries for .NET). The closest thing I found was a <a href="http://www.wilmott.com/messageview.cfm?catid=10&amp;threadid=38771" target="_blank">C++ implementation</a>. The code looked really weird to me (my fault, not the coder's), so I decided to do the translation in two steps: first from C++ to C#, then on to F#. The C# translation seems to be working now, and you can download it from SkyDrive:</p>  <p><iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-f4d1944fce82ab04.office.live.com/embedicon.aspx/.Public/Statistics^_NormInv.zip" frameborder="0" marginwidth="0" scrolling="no"></iframe></p>  <p>Please be aware that:</p>  <ol>   <li>I am not an expert in statistics by any stretch of imagination</li>    <li>Ditto for numerical methods</li>    <li>I have made only a handful of very basic tests</li> </ol>  <p>Having said that, the function *seems* to be working so I hope it will help somebody <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Sonrisa" src="http://weblogs.asp.net/blogs/esanchez/wlEmoticonsmile_3A8DFD26.png" />.</p><img src="http://weblogs.asp.net/aggbug.aspx?PostID=7575761" width="1" height="1">]]></description>
   <dc:creator>Edgar S&#225;nchez</dc:creator>
   <dc:date>7/29/2010 3:27:46 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[MonoTouch Book is out]]></title>
   <link>http://weblogs.asp.net/wallym/archive/2010/07/08/monotouch-book-is-out.aspx</link>
   <description><![CDATA[<p><a href="http://www.amazon.com/Professional-iPhone-Programming-MonoTouch-NET/dp/047063782X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1278438426&amp;sr=8-1" mce_href="http://www.amazon.com/Professional-iPhone-Programming-MonoTouch-NET/dp/047063782X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1278438426&amp;sr=8-1"><img src="http://media.wiley.com/product_data/coverImage/2X/04706378/047063782X.jpg" title="MonoTouch" alt="MonoTouch" mce_src="http://media.wiley.com/product_data/coverImage/2X/04706378/047063782X.jpg" align="left"></a><a href="http://www.amazon.com/Professional-iPhone-Programming-MonoTouch-NET/dp/047063782X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1278438426&amp;sr=8-1" mce_href="http://www.amazon.com/Professional-iPhone-Programming-MonoTouch-NET/dp/047063782X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1278438426&amp;sr=8-1">Our MonoTouch Book is out.&nbsp; It was great working with 
Chris Hardy, Craig Dunn, Martin Bowling, and Rory Blyth on this book.&nbsp; 
With this book, you'll be able to use your existing knowledge of .NET<img src="file:///C:/Users/wallym/AppData/Local/Temp/moz-screenshot.png" alt=""></a> to target the Apple iPhone.</p><br><div class="productDetail-richDataText"><b>What .NET C# developers need 
to enter the hot field of iPhone apps</b>

<p>
iPhone applications offer a hot opportunity for developers. Until the 
open source MonoTouch project, this field was limited to those familiar 
with Apple’s programming languages. Now .NET and C# developers can join 
the party. <i>Professional iPhone Programming with MonoTouch and .NET/C#</i>is

 the first book to cover MonoTouch, preparing developers to take 
advantage of this lucrative opportunity.</p>

<p>
This book is for .NET developers that are interested in creating native 
iPhone applications written in .NET/C#. These developers want to use 
their existing knowledge. While .NET developers are always interested in
 learning, they also recognize that learning Objective-C and the 
specifics of the iPhone can be overwhelming. Those developers interested
 in MonoTouch will recognize that the cost of MonoTouch is easily made 
up by the ability to quickly target the iPhone using a language that 
they are already familiar with.</p>

<p>
This book is designed for .NET developers that want to target the 
iPhone. It is designed to help you get up to speed with the iPhone, not 
to really teach you about the .NET Framework or C# language, which we 
assume you already know.</p>

<p>
This book is designed with introductory material in Chapters 1 thru 4. 
You should read Chapters 1 thru 4 sequentially. These chapters introduce
 the MonoTouch product, the basics of developing with MonoTouch and 
MonoDevelop, and finally, the basics of presenting data to a user with 
screen and data controls and how to develop a user interface for the 
iPhone. Once you are comfortable with these concepts, you can typically 
move from one chapter to another and not necessarily have to read the 
chapters sequentially.</p>
<ul><li><b>Chapter 1 "Introduction to iPhone Development with MonoTouch 
for 
C# Developers"</b>This chapter looks at how the largest segment of 
developers can target the smartphone with the highest mindshare, and 
that the smartphone is growing faster in marketshare than any other 
device.</li><li><b>Chapter 2 "Introduction to MonoTouch"</b>gives you a 
firm 
foundation in MonoTouch, MonoDevelop, Interface Builder, debugging, and 
deploying.</li><li><b>Chapter 3 "Planning Your App's UI: Exploring the 
Screen Controls"</b>teaches
 you about creating your application's UI and specifically how the UI on
 the iPhone can differ from UIs that you might have created before. You 
also explore the Input &amp; Value objects from the Interface Builder 
Objects Library.</li><li><b>Chapter&nbsp;4 "Data Controls"</b> shows the 
Interface Builder Objects
 Library Cocoa Touch classes for Controllers, Data Views, and Windows, 
Views, &amp; Bars.</li><li><b>Chapter 5 "Working with Data on the 
iPhone"</b>looks at the 
SQLite database engine as well as strategies to store data off the 
device on a central server through SOAP and REST (using XML and JSON) 
without tying up the user interface.</li><li><b>Chapter 6 "Displaying 
Data Using Tables"</b>looks at displaying 
information in a table, using tables for navigation, taking advantage of
 UITableView's built-in editing features, and adding a search bar to a 
table.</li><li><b>Chapter 7 "Mapping"</b>covers CoreLocation and MapKit,
 using 
Location Services, and adding maps and geocoding to your application.</li><li><b>Chapter
 8 "Application Settings"</b>focuses on application 
settings, and looks at two aspects of settings for your MonoTouch app: 
the Info.plist and your settings bundle. It covers what settings you 
might want to set in your Info.plist and why, and then looks at what 
code it takes to read and use the settings that you save in the settings
 bundle. And it also takes you through the building of the settings that
 you might have in a social media-type application. Going through each 
step, you will examine the Root.plist inside the Property List Editor 
and see the settings dialog that will result from it.</li><li><b>Chapter
 9 "Programming with Device Hardware"</b> covers 
accelerometer device orientation, and proximity detection support, 
networking, and developing with battery life in mind.</li><li><b>Chapter
 10 "Programming with Multimedia"</b> discussing 
integrating images and the image picker, watching and recording videos, 
playing and recording audio, and using animation</li><li><b>Chapter 11 
"Talking to Other Applications"</b>discusses the ways 
you can use MonoTouch to talk to other applications on the iPhone, both 
Apple-built applications and those downloaded from the App Store. It 
also provides helpful ways of accessing the iPhone's Address Book and 
the iPod music library.</li><li><b>Chapter 12 "Localizing for an 
International Audience"</b> first 
defines internationalization and localization, then shows displaying 
translated text and images, formatting dates, times, and numbers, then 
extracting text for translation.</li><li><b>Chapter 13 "Programming the 
iPad</b>" the capabilities of the 
iPad are, what new APIs and controls have been introduced that you can 
use in iPad-specific applications, and how to build applications that 
can work on both iPad and iPhone devices.</li><li><b>Chapter 14 "Just 
Enough Objective-C"</b> provides you with a 
reference and introduction to Objective-C that will help you acquire an 
ability to comprehend Objective-C which is something that will come in 
very handy.</li><li><b>Chapter 15 "The App Store: Submitting and 
Marketing Your App"</b>discusses
 all things App Store. First, it talks about the process that you need 
to go through before you are ready to submit - this includes final 
testing with Ad-Hoc builds and a presubmission checklist. Next it 
addresses actually submitting to the App Store, and then finally what to
 do with your app after it's in the App Store. This chapter also touches
 on alternative monetization strategies such as ads or in app purchases.</li></ul></div><p><b><u>A
 Word About Apple SDK License #3.3.1</u></b></p>There has been a lot 
of discussion about Apple's SDK licensing restrictions and how they 
effect MonoTouch.&nbsp; As of the time of this writing, Apple has not 
rejected any apps that are written in MonoTouch for inclusion in the 
Apple App Store.<img src="http://weblogs.asp.net/aggbug.aspx?PostID=7555794" width="1" height="1">]]></description>
   <dc:creator>Wallace B. McClure</dc:creator>
   <dc:date>7/29/2010 10:11:56 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[Blue Moon Burgers >> Nerd Lunch]]></title>
   <link>http://feedproxy.google.com/~r/LooselyCoupledHumanCodeFactory/~3/wzt52Fm125Y/</link>
   <description><![CDATA[Tomorrow (Thursday) at Blue Moon Burgers in Fremont will be a nerd lunch.  If you're interested you should definitely head over that way and introduce yourself.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=compositecode.com&blog=14138691&post=839&subd=compositecode&ref=&feed=1" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=wzt52Fm125Y:q-u_AhD9q2U:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=wzt52Fm125Y:q-u_AhD9q2U:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=wzt52Fm125Y:q-u_AhD9q2U:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=wzt52Fm125Y:q-u_AhD9q2U:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?i=wzt52Fm125Y:q-u_AhD9q2U:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?a=wzt52Fm125Y:q-u_AhD9q2U:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/LooselyCoupledHumanCodeFactory?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/LooselyCoupledHumanCodeFactory/~4/wzt52Fm125Y" height="1" width="1"/>]]></description>
   <dc:creator>Adron Hall</dc:creator>
   <dc:date>7/28/2010 11:16:12 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Compiling LaTeX without a local LaTeX compiler]]></title>
   <link>http://feedproxy.google.com/~r/bugsquash/~3/vNLKrgtqVko/compiling-latex-without-local-latex.html</link>
   <description><![CDATA[<p>&#160;</p>  <p>I recently started working on my (long long overdue) master's thesis, and naturally I came to <a href="http://www.latex-project.org/">LaTeX</a> for typesetting. As a LaTeX newbie*, I was pleased to find out that compiling LaTeX is just like compiling any program: there's a bunch of source code files (.tex) and resources (.bib, .sty, images) which you feed to preprocessors and compilers to yield a dvi/ps/pdf document. TeX <em>is</em> actually a turing-complete language, and LaTeX is a macro collection and a preprocessor for TeX.</p>  <p>There's even an <a href="http://www.ctan.org/">online package repository</a>!</p>  <p>And since writing LaTeX has so many similarities with writing code, even if you're just writing text and using existing LaTeX macros and not developing your own, some of the development practices can be applied here as well, like a <a href="http://www.phys.psu.edu/~collins/software/latexmk-jcc/">build system</a>, <a href="http://web.science.mq.edu.au/~rdale/resources/writingnotes/latexstruct.html">refactoring</a> to keep the document manageable, version control, and continuous integration.</p>  <p>Continuous integration is nice not only because it asserts that the document is valid (yes, you can screw up TeX documents), but also you automatically get the resulting PDF as a build artifact. You could even hook a <a href="http://www.jpaisley.com/software/ruby/rb-latex-diff/">diff</a> step in the process, to make reviews easier.</p>  <p>But finding a public continuous integration server is hard, not to mention one with a LaTeX distribution installed. Luckily, LaTeX compilation can be delegated to a remote server, thanks to <a href="http://code.google.com/p/common-latex-service-interface/">CLSI</a> (Common LaTeX Service Interface). So all the integration server has to do is forward a compilation request to the CLSI server when it detects changes in the VCS.</p>  <p><a href="http://lh4.ggpht.com/_O0JK8vpXCXY/TFCvPtwNezI/AAAAAAAACXM/hzUx4rE9MTU/s1600-h/clsi14.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clsi (1)" border="0" alt="clsi (1)" src="http://lh4.ggpht.com/_O0JK8vpXCXY/TFCvQaFC69I/AAAAAAAACXQ/0nBRJv6PFow/clsi1_thumb2.png?imgmax=800" width="640" height="339" /></a> </p>  <p>The arrow directions in the graphic indicate information flow, and the numbers order the actions.</p>  <p>How you implement this depends on what the integration server supports. For example, if it's Windows you can send a <a href="http://github.com/mausch/Figment/blob/master/propuesta-tesis.clsi.xml">manually assembled compilation request</a> (it's a simple XML) with a <a href="http://github.com/mausch/Figment/blob/master/build-remote.js">JScript script</a>.</p>  <p>You can also use a CLSI server as a replacement for a local LaTeX installation. In that case you have to send the actual .tex file contents instead of just an URL, wrapped in a CLSI XML compilation request. I wrote a simple <a href="http://github.com/mausch/CLSI.fs">CLSI client in F#</a> to do this, so a compilation script looks like this:</p> <script src="http://gist.github.com/496183.js?file=gistfile1.txt"></script>  <p>I'm using <a href="http://git-scm.com/">git</a> and <a href="http://www.github.com/">github</a> for version control and <a href="http://clsi.scribtex.com/">ScribTeX's CLSI server</a>, which is the only public CLSI server I have found so far. Kudos to ScribTeX for that! It's <em>very</em> fast (even faster than compiling locally!) and <a href="http://github.com/jpallen/clsi">open source</a>.</p>  <p>If you just want an online editor with integrated revision control and preview, check out <a href="http://www.scribtex.com">ScribTeX's editor</a>.</p>  <p>Also worth checking out is <a href="http://docs.latexlab.org/">LaTeX Lab</a>, a very cool open source, online LaTeX editor for Google Docs, by the same guy that developed CLSI (<a href="http://www.bloo.us/">Bobby Soares</a>).&#160; It's currently on a preview release but it's very usable.</p>  <p>* Actually, I did use LaTeX several years ago, but I did so through <a href="http://www.lyx.org/">LyX</a>, which combines LaTeX with <a href="http://en.wikipedia.org/wiki/WYSIWYG">WYSIWYG</a>, so I didn't really learn LaTeX.</p>  <div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643857899806162280-4462354004615090299?l=bugsquash.blogspot.com' alt='' /></div>
<p><a href="http://feedads.g.doubleclick.net/~a/AMWN_D4kicwtQ2NWty2cGBk-YuM/0/da"><img src="http://feedads.g.doubleclick.net/~a/AMWN_D4kicwtQ2NWty2cGBk-YuM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AMWN_D4kicwtQ2NWty2cGBk-YuM/1/da"><img src="http://feedads.g.doubleclick.net/~a/AMWN_D4kicwtQ2NWty2cGBk-YuM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/bugsquash/~4/vNLKrgtqVko" height="1" width="1"/>]]></description>
   <dc:creator>Mauricio Scheffer</dc:creator>
   <dc:date>7/28/2010 4:42:17 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Erstellung einer StartRemoteProcess-Build-Activity]]></title>
   <link>http://devtechblog.blogspot.com/2010/07/erstellung-einerstartremoteprocess.html</link>
   <description><![CDATA[<div xmlns='http://www.w3.org/1999/xhtml'>Die neuen Build-Workflows für den Team Foundation Server sind ein cooles Feature. Und wenn man Standard-Projekttypen verwendet funktioniert das auch alles super, da in den meisten Fällen Copy&amp;Paste-Deployment ausreichend ist.<br/>In meinem Anwendungsfall war es notwendig, am Ende des Builds eine Activity auszuführen, die auf einem Remote-Server (z.B. Integrationssystem) einen Prozess startet. Eine solche Activity habe ich im Standard nicht gefunden. Daher hab ich selbst eine geschrieben.<br/>Eine eigene Activity zu erstellen ist gar nicht so schwer. Einen guten Einstieg geben die Posts von <a href='http://blogs.msdn.com/b/jimlamb/archive/2009/11/18/how-to-create-a-custom-workflow-activity-for-tfs-build-2010.aspx' target='_blank'>Jim Lamb</a> und <a href='http://www.ewaldhofman.nl/post/2010/04/29/Customize-Team-Build-2010-e28093-Part-4-Create-your-own-activity.aspx' target='_blank'>Ewald Hofman</a>. Bei der Entwicklung der Activity hat sich die Projektaufteilung von Ewald als sehr praktisch erwiesen. Nur so war es mir möglich, die selbst erstellte Activity dem Workflow dann auch hinzuzufügen.<br/>Um einen Prozess zu starten, sind folgende Informationen notwendig:<br/><ul><li>Name oder IP-Adresse des Remote-Servers</li><li>auszuführendes Command</li><li>Credentials (abweichend vom TFS-Service-Account)</li></ul>Daher erhält die Activity in Summe fünf Input-Argumente: Command, RemoteMachine, Domain, UserName und Password. Damit sieht der Rumpf der Actitvity wie folgt aus:<br /><div  style='border: 1px solid black; overflow: auto; width: 99%; font-family: courier; background-color: rgb(230, 232, 250);'><pre>[BuildActivity(HostEnvironmentOption.All)]<br />public sealed class StartProcessOnRemoteMachine : CodeActivity<br />{<br />    [RequiredArgument]<br />    public InArgument&lt;string&gt; Command<br />    {<br />        get;<br />        set;<br />    }<br /><br />    [RequiredArgument]<br />    public InArgument&lt;string&gt; RemoteMachine<br />    {<br />        get;<br />        set;<br />    }<br /><br />    [RequiredArgument]<br />    public InArgument&lt;string&gt; Username<br />    {<br />        get;<br />        set;<br />    }<br /><br />    [RequiredArgument]<br />    public InArgument&lt;string&gt; Password<br />    {<br />        get;<br />        set;<br />    }<br /><br />    [RequiredArgument]<br />    public InArgument&lt;string&gt; Domain<br />    {<br />        get;<br />        set;<br />    }<br />}</pre></div>Bei der Implementierung sollte man sich überlegen, so sensible Daten wie Credentials ggf. anders abzubilden als per Input-Parameter - für dieses Beispiel soll diese Lösung aber ausreichend sein, damit es nicht zu komplex wird. Die eigentliche Arbeit übernimmt dann die im folgenden dargestellte Methode <i>ExecuteProcessOnRemoteMachine</i>, die per WMI einen Prozess auf einem anderen Rechner startet. Dazu ist es notwendig, die Assembly System.Management zu referenzieren.<div  style='border: 1px solid black; overflow: auto; width: 99%; font-family: courier; background-color: rgb(230, 232, 250);'><pre>private static void ExecuteProcessOnRemoteMachine(string remoteMachine, string username, string password, string domain, string commandLine)<br />{<br />    ConnectionOptions connectionOptions = new ConnectionOptions();<br />    connectionOptions.Authority = "ntlmdomain:" + domain;<br />    connectionOptions.Username = username;<br />    connectionOptions.Password = password;<br />    connectionOptions.Authentication = AuthenticationLevel.Default;<br />    connectionOptions.Impersonation = ImpersonationLevel.Impersonate;<br />    connectionOptions.EnablePrivileges = true;<br /><br />    ManagementScope managementScope = new ManagementScope(string.Format(@"\\{0}\ROOT\CIMV2", remoteMachine), connectionOptions);<br />    managementScope.Connect();<br /><br />    ManagementPath managementPath = new ManagementPath("Win32_Process");<br />    ManagementClass processClass = new ManagementClass(managementScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());<br />    ManagementBaseObject inParams = processClass.GetMethodParameters("Create");<br />    inParams["CommandLine"] = commandLine;<br /><br />    ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);<br />}</pre></div>Der Rest ist trivial: In der Methode <i>Execute</i> werden die Input-Parameter entgegengenommen und an die Methode <i>ExecuteProcessOnRemoteMachine</i> übergeben.<div  style='border: 1px solid black; overflow: auto; width: 99%; font-family: courier; background-color: rgb(230, 232, 250);'><pre>protected override void Execute(CodeActivityContext context)<br />{<br />    string startProcessCommand = context.GetValue(this.Command);<br />    string remoteMachine = context.GetValue(this.RemoteMachine);<br />    string username = context.GetValue(this.Username);<br />    string password = context.GetValue(this.Password);<br />    string domain = context.GetValue(this.Domain);<br /><br /><br />    ExecuteProcessOnRemoteMachine(remoteMachine, username, password, domain, startProcessCommand);<br />}</pre></div>Die Activity wird nun in den Workflow eingebunden und die notwendigen Daten bereitgestellt.<img src='http://lh5.ggpht.com/_ZvDdpC35hsY/TFA54KB8sBI/AAAAAAAAAn0/_gpu7mqaFgo/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/><br/>Am Ende des Builds werden nun die Dateien aus dem DropFolder genommen und mittels der Standard-Activity <i>CopyDirectory </i>auf den Integrationsserver kopiert. Die neu erstellte Activity führt dann die Installation durch.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8163282460106371512-1791009580464044982?l=devtechblog.blogspot.com' alt='' /></div><img src="http://feeds.feedburner.com/~r/discoveringmicrosofttechnologies/~4/C-j0lWsJ48M" height="1" width="1"/>]]></description>
   <dc:creator>Martin Hey</dc:creator>
   <dc:date>7/28/2010 7:51:46 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[SharePoint 2010 Site Templates – A Detailed Journey (Part 1)]]></title>
   <link>http://feedproxy.google.com/~r/bsimser/~3/imU0vVK7S0M/sharepoint-2010-site-templates-a-detailed-journey-part-1.aspx</link>
   <description><![CDATA[<p>A tweet came up tonight that I thought I would get my lazy butt doing something about:</p>  <p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_19BD28D7.png" width="301" height="90" /></p>  <p>I pointed <a href="http://twitter.com/tareqsartawi">@tareqsartawi</a> to <a href="http://twitter.com/toddbaginski">@toddbaginski</a>’s post <a href="http://www.toddbaginski.com/blog/archive/2009/11/20/which-sharepoint-2010-site-template-is-right-for-me.aspx">Which SharePoint 2010 Site Template Is Right For Me?</a> and while Todd does go over the templates and gives a brief rundown of them, there’s not a lot of meat to what you get with each template.</p>  <p>So for Tareq (and anyone else who’s out there) here’s a more detailed breakdown of the site templates in SharePoint 2010. </p>  <p>This is part 1 of a four-part post as I got past the 2 hour mark and decided I would call it quits with the initial templates. I’ll follow it up with additional posts to complete all of the template descriptions and notes (and link everything together to make it a happy-happy-joy-joy world we live in).</p>  <p>Note, this is a list of the templates you get with SharePoint Server 2010. For SharePoint Foundation 2010, you’ll only find a subset of what you see here (but there’s nothing Foundation has that Server doesn’t). Also there are some templates that will only appear after activating certain site or site collection features. I’ll cover some of those in a bonus post later. Clear as mud?</p>  <p><strong>Creating Sites</strong></p>  <p>When you create a new site you’ll see the new create dialog like the one below (there’s a regular HTML version but you really want to install Silverlight on your client to get the rich UI experience).</p>  <p><a href="http://weblogs.asp.net/blogs/bsimser/image_6AA89B28.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_2136466D.png" width="504" height="316" /></a></p>  <p>Each category along the site lets you filter down the template selections and selecting any template gives a brief description to give you an idea of what the template is about.</p>  <p>Here’s the rundown on what’s available out of the box (and what is covered in what blog post):</p>  <ul>   <li>Blank &amp; Custom</li>    <ul>     <li>Blank Site (This Post)</li>      <li>Personalization Site (Part II)</li>   </ul>    <li>Collaboration</li>    <ul>     <li>Team Site (This Post)</li>      <li>Document Workspace (This Post)</li>      <li>Group Work Site (This Post)</li>      <li>Enterprise Wiki (This Post)</li>   </ul>    <li>Content</li>    <ul>     <li>Document Workspace (This Post)</li>      <li>Blog (This Post)</li>      <li>Document Center (Part II)</li>      <li>Publishing Site (Part II)</li>      <li>Publishing Site with Workflow (Part II)</li>      <li>Enterprise Wiki (This Post)</li>      <li>Visio Process Repository (Part II)</li>   </ul>    <li>Data</li>    <ul>     <li>Records Center (Part II)</li>   </ul>    <li>Meetings</li>    <ul>     <li>Basic Meeting Workspace (Part IV)</li>      <li>Blank Meeting Workspace (Part IV)</li>      <li>Decision Workspace (Part IV)</li>      <li>Social Meeting Workspace (Part IV)</li>      <li>Multipage Meeting Workspace (Part IV)</li>   </ul>    <li>Search</li>    <ul>     <li>Basic Search Center (Part II)</li>   </ul>    <li>Web Databases</li>    <ul>     <li>Assets Web Database (Part III)</li>      <li>Charitable Contributions Web (Part III)</li>      <li>Contacts Web Database (Part III)</li>      <li>Issues Web Database (Part III)</li>      <li>Projects Web Database (Part III)</li>   </ul> </ul>  <p>There’s some duplication above in the categories but out-of-the-box you get 23 templates (3 new site templates, 5 new site templates based on Access databases). For more details about what’s been added, removed, and updated as far as templates go please see Todd’s original post.</p>  <p>Select a template, enter a title and a url, and click Create and you’re off to the races. If that’s all you need you can be creating sites in no time. Each template has it’s share of not only a look and feel, but also what content is pre-loaded on the site and in some cases, what features are activated as a result of creating that site which light up the site and offer the user some options. For the most part any feature on the system can be applied to any site so it almost doesn’t matter what template you start with, but there are some exceptions and we’ll note them as we go along.</p>  <p>If you want a little more control when you create your site, clicking on More Options brings up a second dialog that lets you enter, well, more options:</p>  <p><a href="http://weblogs.asp.net/blogs/bsimser/image_0689AA54.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_19CA60F3.png" width="504" height="316" /></a> </p>  <p>The options are the same no matter what template you choose and I couldn’t find any way to build something that would you let amend options here. Would be nice in the future. The only real advantage here is that you can break permissions on the site before it gets created and use the top link bar from the parent site (which is turned off by default for new sites). Any of these can be done after the site is created anyways.</p>  <p>Note that these dialogs appear in a popup when you select <strong>Create Site</strong> from the <strong>Site Actions</strong> menu. If you go the route of <strong>Site Settings</strong> &gt; <strong>Site Administration</strong> &gt; <strong>Sites and Workspaces</strong> then click <strong>Create</strong> you’ll see this screen in the browser (not a popup):</p>  <p><a href="http://weblogs.asp.net/blogs/bsimser/image_3834A1DC.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_21FE868A.png" width="504" height="312" /></a></p>  <p>This is the more traditional screen you might be used to from 2007. The templates and choices are all the same and this screen offers changing all options, much like the <strong>More Options</strong> dialog from above. How you create your sites is up to you, typical SharePoint there are just several routes to get to the same path.</p>  <p>Alright, let’s get down and dirty with each template.</p>  <p><strong>Blank Site</strong></p>  <p><em>“A blank site for you to customize based on your requirements.”</em></p>  <p><a href="http://weblogs.asp.net/blogs/bsimser/image_276CF72E.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_588C31CE.png" width="504" height="306" /></a> </p>  <p>The core of any SharePoint site, the blank site. So simple and elegant yet devoid of any content. Basically a site you can turn into anything by lighting it up with features. Personally when we build “applications” in SharePoint this is the template we start with. The big difference from the “Blank” site template you got in 2007 is that this one <em>really is blank</em> and doesn’t come pre-loaded with a SharePoint logo dropped on your “blank” site like 2007 did.</p>  <p><strong>Team Site</strong></p>  <p><em>“A site for teams to quickly organize, author, and share information. It provides a document library, and lists for managing announcements, calendar items, tasks, and discussions.”</em></p>  <p><a href="http://weblogs.asp.net/blogs/bsimser/image_53A97E12.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_275CD161.png" width="504" height="312" /></a></p>  <p>This template is perhaps one of the most used since SharePoint started using templates. Most everyone uses SharePoint for collaboration so this is one of the original collaboration tools out there. In 2010 many things are the same as they were in the 2007 Team Site template. You still have a Shared Documents library, a Calendar has been created, a Task list and a Team Discussion discussion board is here. With 2010 there are some major changes though that make it arguably a better collaborative environment it ever was.</p>  <p>First off everything is a wiki. Keep remembering that. Everything is editable. Remember when you created that first Team Site in 2007 and you wanted to start editing the page but found out you had to drop a content editor web part on the page, open up the right text editor, type something in, then click a few buttons to see what it all looked like? That’s not collaboration. That’s just plain painful.</p>  <p>The Team Site template, along with others, treats any page as a content page. Just click edit and start typing content. Want a picture on your site? Drop a media web part on it and upload it to the automatically created Site Assets library while you edit. Collaboration has never been as simple as this.</p>  <p>Getting back to the template itself, you’ll notice a few new libraries created. There’s a new Site Assets library which allows you to upload media (pictures, video, audio) to the site and use it on pages via the Media Web Part. There’s a Site Pages library that contains all your pages (including the home page) so as you create new content, just drop it in here. The Announcements, Calendar, Links, Tasks, and Discussions you got in 2007 are still created, they’re just not visible on any page so you’ll have to either add them yourself or use the Quick Launch to access them.</p>  <p>Note that the Getting Started section that’s added to the site is just content. It’s not a list behind it, it’s just HTML content that you can edit, delete, or use.</p>  <p><strong>Document Workspace</strong></p>  <p><em>“A site for colleagues to work together on a document. It provides a document library for storing the primary document and supporting files, a tasks list for assigning to-do items, and a links list for resources related to the document.”</em></p>  <p><a href="http://weblogs.asp.net/blogs/bsimser/image_0BD7CF5E.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_238F06C4.png" width="504" height="308" /></a> </p>  <p>The document workspace is pretty cheesy and basically a carry-over from 2007. It was always intended to be a site where you would collaborate around a single document (aggressively) and I always thought it would well in a publishing environment. Create the document, everyone works on it, there are discussions around it and tasks assigned to take care of parts of it. </p>  <p>There were even facilities in Word to attach the document to a workspace (or create the workspace) when you saved the document. However say in the last 5 years I have yet to create a site with this template, other than demos (and this blog post). Perhaps it could still work for say a manuscript with multiple authors or a manual or training guide but I think 2010 has more to offer with Document Sets than to use this aging template.</p>  <p>At least they got the Announcements web part on the home page.</p>  <p><strong>Group Work Site</strong></p>  <p><em>“This template provides a groupware solution that enables teams to create, organize, and share information quickly and easily. It includes Group Calendar, Circulation, Phone-Call Memo, the Document Library and the other basic lists.”</em></p>  <p><a href="http://weblogs.asp.net/blogs/bsimser/image_28FD7768.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_0BA81F9E.png" width="504" height="312" /></a>&#160;</p>  <p>If you remember 2007, there was an after-market release called <a href="http://technet.microsoft.com/en-us/windowsserver/sharepoint/bb848080.aspx">Group Workspace Board</a>. It was a Microsoft template and offered the ability to essentially create an in/out board site. Trouble is that it didn’t work very well, service packs sometimes broke it (or the server) and it was never upgraded. Well, it’s back (although I’m sure they rebuilt it from scratch so pay no attention to the comments above). Basically the Group Work Site is a uber-enhanced blank site with some content added (after all, isn’t that what *all* sites are?).</p>  <p>The Group Board is a pretty slick template and centers around a group calendar, which is really just a normal calendar but the regular Event content type has been removed and replaced with two new content types for 2010, Schedule and Reservations and Reservations. Basically if you’re looking to use SharePoint for a reservation system (reserving fleet vehicles, meeting rooms, books, or anything you want to track) then this template might work for you. At the very least, create one to see how the Group Calendar is setup and you can rebuild your own in your own site. It’s a nice Content Type that probably deserves its own post as there are a lot of great features you can get out of it.</p>  <p>Note that because the Group Calendar is really just a Calendar, you can connect it to Outlook but if you’re looking to use SharePoint as a meeting reservation system tied into the resources available in Outlook (like you might today) you’ll be out of luck. The two are not connected but they use the same terms so you might get confused over using them for the same purpose. </p>  <p><strong>Enterprise Wiki</strong></p>  <p><em>“A site for publishing knowledge that you capture and want to share across the enterprise. It provides an easy content editing experience in a single location for co-authoring content, discussions, and project management”</em></p>  <p><a href="http://weblogs.asp.net/blogs/bsimser/image_11169042.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_1DA43D5E.png" width="504" height="312" /></a> </p>  <p>Remember everything is a wiki? Good. You’re still reading. Well, everything is a wiki but there’s still a template with the name Enterprise Wiki. I guess sticking “Enterprise” in front of something makes it that much more important?</p>  <p>The Enterprise Wiki is pretty much what you got in 2007 when you created a Wiki site. The old Wiki site template is gone and this stands in it’s place. Even though you can edit any page on a site, this template is specifically setup for building a wiki. While it can’t compete with Wikipedia, Confluence, or any of the *real* enterprise wiki’s out there it’s a nice place for putting together group notes about a subject. You could put together a blank site and just keep creating pages but then there’s the navigation element and having to deal with inserting hyperlinks onto pages, etc. The Wiki template stays true to the (albeit weird non-standard) Wiki mark-up SharePoint established in 2007 and lets you cheerfully link pages together with a simple [[My New Page]] mark-up.</p>  <p>In addition to what we already had in 2007, there are some new features that light up the Enterprise Wiki template. Namely ratings and categories. The rating system is the same that’s built into 2010 but it’s embedded on each page template along with a category picker. This allows you, after adding content to a larger site, be able to navigate content by popularity or categories (configured through the managed metadata services).</p>  <p>While the mark-up hasn’t changed much, a wiki page is just like any other page in SharePoint so you can embed pictures, video, tables, web parts, and SharePoint lists right onto the page. This makes the experience of building out a knowledge base using the Enterprise Wiki a more palatable experience and lets you be a little more creative without being overly constrained.</p>  <p><strong>Blog</strong></p>  <p><em>“A site for a person or team to post ideas, observations, and expertise that site visitors can comment on.”</em></p>  <p><a href="http://weblogs.asp.net/blogs/bsimser/image_34EF41CF.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_612BC8B3.png" width="504" height="312" /></a> </p>  <p>Blogs are like wikis in SharePoint. They’re just OK and better than editing content editor web parts, but still fall short of a full blown blogging engine like <a href="http://www.dasblog.info/">dasBlog</a> or <a href="http://www.wordpress.org">WordPress</a>. However in 2010 things have got a little better (don’t get too excited, I said a “little” better).</p>  <p>Overall the presentation is cleaner, looking more like a blog like we traditionally know it. Permalinks are native now and overall the blog template sucks a little less than 2007. Instead of editing the blog page right on the site, you’re forced to edit in a popup window with a diminished rich text editor. You can still insert images and video but it’s a little less seamless when you edit blog posts this way. Still the basics are there, categories and comments, RSS feeds and the ability to edit your blog from a blogging tool like Windows Live Writer or even Microsoft Word (and publishing from Word while giving an uneasy odd feeling, sucks a little less than it did).</p>  <p>While things are better than their 2007 counterparts you might still want to look at the Community Kit for SharePoint – Enhanced Blog Edition or customize the existing blog template if you want to focus on blogs in your organization. There are a lot of features in SharePoint 2010 that are native that really should be stock with the blog template. Why can’t I rate blog entries? Where are the tagging features? These things can all be done relatively easy even from the browser with no coding required. Just remember to save the template and make it available to your users (time for an Enterprise Blog template anyone?).</p>  <p><strong>Wrap-up</strong></p>  <p>Well, that’s it for now to get the ball rolling. Let me know your thoughts. Hope that gets things going and helps out. More templates to come later! Enjoy.</p><img src="http://weblogs.asp.net/aggbug.aspx?PostID=7574654" width="1" height="1"><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/bsimser?a=imU0vVK7S0M:V1Odf7Oh3wg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/bsimser?a=imU0vVK7S0M:V1Odf7Oh3wg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/bsimser?a=imU0vVK7S0M:V1Odf7Oh3wg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/bsimser?i=imU0vVK7S0M:V1Odf7Oh3wg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/bsimser?a=imU0vVK7S0M:V1Odf7Oh3wg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"></img></a>
</div>]]></description>
   <dc:creator>Bil Simser</dc:creator>
   <dc:date>7/27/2010 11:37:18 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Running Code Coverage from the Console with dotCover]]></title>
   <link>http://blogs.jetbrains.com/dotnet/2010/07/running-code-coverage-from-the-console-with-dotcover/</link>
   <description><![CDATA[As of the beta* of dotCover, we included a Console runner to run coverage using the command line, allowing for instance, setup of dotCover in a Continuous Integration environment. Let’s see how it works.
*To get all these features in this post, you need to download the latest nightly build
&#160;
Console Runner
The Console runner is located under [...]]]></description>
   <dc:creator>JetBrains, Inc.</dc:creator>
   <dc:date>7/27/2010 9:09:00 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[MySQL Connector/Net 6.3.3 (beta 2) has been released]]></title>
   <link>http://feedproxy.google.com/~r/ReggiesRamblings-net/~3/O5hIJh5Rd8s/mysql-connectornet-6-3-3-beta-2-has-been-released</link>
   <description><![CDATA[MySQL Connector/Net 6.3.3, a new version of the all-managed .NET driver  for MySQL has been released. This is a beta release and is intended to  introduce you to the new features and enhancements we are planning. This  release should not be used in a production environment.  It is now  available in <a href="http://www.reggieburnett.com/mysql-connectornet-6-3-3-beta-2-has-been-released" class="more-link">More &#62;</a>]]></description>
   <dc:creator>Reggie Burnett</dc:creator>
   <dc:date>7/27/2010 3:31:00 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Disabling multitasking on iOS 4 apps]]></title>
   <link>http://www.alexandre-gomes.com/?p=545</link>
   <description><![CDATA[If you&#8217;re using the iOS 4 SDK then by default your app will be assumed to support multitasking even though you actually need to add support for it and you might not have done that (e.g. updating an old application). While multitasking seems nice it isn&#8217;t always the best scenario for your app, specially when [...]]]></description>
   <dc:creator>Alexandre Gomes</dc:creator>
   <dc:date>7/27/2010 11:50:33 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[VG.net 6.2 Released]]></title>
   <link>http://weblogs.asp.net/frank_hileman/archive/2010/07/27/vg-net-6-2-released.aspx</link>
   <description><![CDATA[<P><IMG alt="VG.net designer in Visual Studio 2010" src="http://www.vgdotnet.com/blog/ufo_vs2010.png" width=863 height=549 mce_src="http://www.vgdotnet.com/blog/ufo_vs2010.png"> </P>
<P>Today we released Version 6.2 of the <A href="http://www.vgdotnet.com/" mce_href="http://www.vgdotnet.com">VG.net vector graphics</A> system. Changes include:</P>
<UL>
<LI>Visual Studio 2010 support.</LI>
<LI>The new Center Selection button, in the Drawing Toobar, pans the designer surface to center the selected Elements.</LI>
<LI>Double-clicking on a Group makes it the Active Group. When a Group is active, double clicking on the background deactivates the Active Group.</LI>
<LI>You can now make a nested Group the Active Group. The Group can be nested to any depth. Formerly, you could only make a top-level Group the Active Group.</LI>
<LI>Keyboard shortcuts for zooming and panning.</LI>
<LI>Use the new PixelSnapMode property, in the RenderAppearance class, to increase the clarity of thin lines, or the edges of rectangles, by snapping points to pixel coordinates. PixelSnapMode values: 
<UL>
<LI>None</LI>
<LI>Absolute: points are snapped to pixels by rounding absolute coordinates. </LI>
<LI>VectorCenter: a new, unique type of snapping. The Element's Center is snapped to a pixel point. Vectors from the Center to each point are then snapped to a pixel boundary. By snapping vectors rather than points, a small Shape improves its clarity and symmetry.</LI>
<LI>BoundsAbsolute: the upper left and lower right corner of the Element's Bounds are snapped by rounding their absolute coordinates. Interior points in a Polyline or Path are not snapped.</LI></UL></LI>
<LI>Visual Basic versions of some samples.</LI>
<LI>The ThemedRobot and ThemedRobotVB samples, in the Extras package, demonstrate how to use Groups, Rotation transformations, and TransformationReference settings to create a segmented robot arm.</LI>
<LI>Bug fixes.</LI></UL>
<P>Below are screenshots illustrating PixelSnapMode for small Shapes. First we created Shapes, all the same dimensions, then we zoomed out so the Shapes were no longer naturally aligned on pixel coordinates. From the left to the right, the following PixelSnapMode values were used: None, Absolute, Vector Center. Blown-up versions of the same images are on the second row.</P>
<P><IMG alt="PixelSnapMode None" src="http://www.vgdotnet.com/blog/pixel_snap_mode_none.png" width=96 height=96 mce_src="http://www.vgdotnet.com/blog/pixel_snap_mode_none.png"> <IMG alt="PixelSnapMode Absolute" src="http://www.vgdotnet.com/blog/pixel_snap_mode_absolute.png" width=96 height=96 mce_src="http://www.vgdotnet.com/blog/pixel_snap_mode_absolute.png"> <IMG alt="PixelSnapMode VectorCenter" src="http://www.vgdotnet.com/blog/pixel_snap_mode_vector_center.png" width=96 height=96 mce_src="http://www.vgdotnet.com/blog/pixel_snap_mode_vector_center.png"> </P>
<P><IMG alt="PixelSnapMode None Zoomed" src="http://www.vgdotnet.com/blog/pixel_snap_mode_none_zoomed.png" width=254 height=248 mce_src="http://www.vgdotnet.com/blog/pixel_snap_mode_none_zoomed.png"> <IMG alt="PixelSnapMode Absolute Zoomed" src="http://www.vgdotnet.com/blog/pixel_snap_mode_absolute_zoomed.png" width=254 height=248 mce_src="http://www.vgdotnet.com/blog/pixel_snap_mode_absolute_zoomed.png"> <IMG alt="PixelSnapMode VectorCenter Zoomed" src="http://www.vgdotnet.com/blog/pixel_snap_mode_vector_center_zoomed.png" width=254 height=248 mce_src="http://www.vgdotnet.com/blog/pixel_snap_mode_vector_center_zoomed.png"> </P>
<P>Notice how the VectorCenter PixelSnapMode keeps all small shapes at a consistent size, even though they are positioned at fractional pixel distances from one another. PixelSnapMode has no real benefit for Ellipses or Arcs; it is best for Shapes containing some straight lines. It is useful for larger Shapes as well. Below we show the effect of PixelSnapMode on larger Shapes. On the left is None, on the right is VectorCenter:</P>
<P><IMG alt="PixelSnapMode None" src="http://www.vgdotnet.com/blog/pixel_snap_mode_none_large.png" width=247 height=222 mce_src="http://www.vgdotnet.com/blog/pixel_snap_mode_none_large.png"> <IMG alt="PixelSnapMode VectorCenter" src="http://www.vgdotnet.com/blog/pixel_snap_mode_vector_center_large.png" width=247 height=222 mce_src="http://www.vgdotnet.com/blog/pixel_snap_mode_vector_center_large.png"> </P><img src="http://weblogs.asp.net/aggbug.aspx?PostID=7574332" width="1" height="1">]]></description>
   <dc:creator>Frank Hileman</dc:creator>
   <dc:date>7/27/2010 8:47:41 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[Event-Based Components – For Easier Software Design Say Goodbye to the Usual Object Orientation]]></title>
   <link>http://weblogs.asp.net/ralfw/archive/2010/07/27/event-based-components-for-easier-software-design-say-goodbye-to-the-usual-object-orientation.aspx</link>
   <description><![CDATA[Have come to feel very uneasy with the usual object orientation. It simply does not deliver on its promises. That´s of course not the fault of object oriented languages like C# or Java or C++. It´s the fault of those who use them in a way that leads their...(<a href="http://weblogs.asp.net/ralfw/archive/2010/07/27/event-based-components-for-easier-software-design-say-goodbye-to-the-usual-object-orientation.aspx">read more</a>)<img src="http://weblogs.asp.net/aggbug.aspx?PostID=7574228" width="1" height="1">]]></description>
   <dc:creator>Ralfs Sudelb&#252;cher</dc:creator>
   <dc:date>7/27/2010 1:32:32 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[Yahoo Open Hack India 2010 Winners]]></title>
   <link>http://www.ginktage.com/2010/07/yahoo-open-hack-india-2010-winners/</link>
   <description><![CDATA[<!-- Easy AdSense V2.92 -->
<!-- Post[count: 1] -->
<div class="ezAdsense adsense adsense-leadin" style="float:left;margin:0px;"><script type="text/javascript">
<!-- 
lqm_channel=1;
lqm_publisher=517;
lqm_zone=1;
lqm_format=8;
//-->
</script>
<script type="text/javascript" src="http://a.lakequincy.com/s.js"></script>
<script type="text/javascript">
<!-- 
lqm_channel=1;
lqm_publisher=517;
lqm_zone=1;
lqm_format=2;
//-->
</script>
<script type="text/javascript" src="http://a.lakequincy.com/s.js"></script>
</br></div>
<!-- Easy AdSense V2.92 -->

Here's the List of Hacks that won the awards in the 2010 edition of the Yahoo Open Hack India .
1. Best in show award
Hack Name : FlickSubz
Team Name : NaturalBornCoders
Team Members : BabuSrithar , Sudeep Nayak,Parashuram
Description : A Hack with the Flickr and Language translation API and Twitter..............<!-- Easy AdSense V2.92 -->
<!-- Post[count: 2] -->
<div class="ezAdsense adsense adsense-leadout" style="float:left;margin:0px;"><br/>
<script type="text/javascript">
<!-- 
lqm_channel=1;
lqm_publisher=517;
lqm_zone=1;
lqm_format=2;
//-->
</script>
<script type="text/javascript" src="http://a.lakequincy.com/s.js"></script>
</br>
<script type="text/javascript">
<!-- 
lqm_channel=1;
lqm_publisher=517;
lqm_zone=1;
lqm_format=8;
//-->
</script>
<script type="text/javascript" src="http://a.lakequincy.com/s.js"></script>
<meta name="google-site-verification" content="yt_aocfJofpP-dVgxymNLDLA5bKa04rStWMpggjWKWA" /></div>
<!-- Easy AdSense V2.92 -->

]]></description>
   <dc:creator>Senthil Kumar B</dc:creator>
   <dc:date>7/26/2010 9:35:43 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[PowerShell Script Provider]]></title>
   <link>http://www.nivot.org/2010/07/26/PowerShellScriptProvider.aspx</link>
   <description><![CDATA[<p>
Write your own PowerShell provider using only script, no C# required. Module definition
is provided by a Windows PowerShell 2.0 Module, which may be pure script, binary or
a mix of both.
</p>
<p>
Debugging is as easy as any ordinary ps1 script file:
</p>
<p>
<a href="http://www.nivot.org/content/binary/WindowsLiveWriter/869ac7ef36f5_F659/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://www.nivot.org/content/binary/WindowsLiveWriter/869ac7ef36f5_F659/image_thumb_1.png" width="846" height="654"></a>
</p>
<p>
All functions in backing module reflect the same signature as those found on MSDN.
This means that you go to MSDN documentation on providers to learn about how to write
the corresponding script. 
</p>
<h4>Current Release <a href="http://psprovider.codeplex.com/releases/view/49025">PSProvider
0.4</a>
</h4>
<h4>Samples and Templates
</h4>
<ul>
<li>
See <a href="http://psprovider.codeplex.com/documentation?referringTitle=Home">Documentation</a>
</li>
</ul>
<h4>Roadmap
</h4>
<h5>0.1
</h5>
<ul>
<li>
ContainerCmdletProvider support through "ModuleBoundProvider" provider 
<li>
Demo provider included navigating a Hashtable 
<li>
Can be debugged in the debugger of your choice: console, ISE, PowerGUI.</li>
</ul>
<h5>0.2
</h5>
<ul>
<li>
NavigationCmdletProvider support 
<li>
Providers rename to ContainerScriptProvider and TreeScriptProvider 
<li>
Container Sample &amp; Tree Template modules 
<li>
Supports: <b>Clear-Item, Copy-Item, Get-Item, Invoke-Item, Move-Item, New-Item, Remove-Item,
Rename-Item, Set-Item</b>
</li>
</ul>
<h5>0.3
</h5>
<ul>
<li>
IContentCmdletProvider support 
<li>
New Commands: <b>New-ContentReader, New-ContentWriter</b> implement IContentReader,
IContentWriter 
<li>
Adds support for: <b>Add-Content, Clear-Content, Get-Content, Set-Content</b>
</li>
</ul>
<h5>0.4 (Current Release)
</h5>
<ul>
<li>
IPropertyCmdletProvider support 
<li>
Adds support for: <b>Clear-ItemProperty, Copy-ItemProperty, Get-ItemProperty, Move-ItemProperty,
New-ItemProperty, Remove-ItemProperty, Rename-ItemProperty, Set-ItemProperty</b>
</li>
</ul>
<h5>0.5
</h5>
<ul>
<li>
Dynamic Parameter support</li>
</ul>
<h5>0.6
</h5>
<ul>
<li>
Security Interfaces 
<li>
Adds support for: <b>Get-ACL, Set-ACL</b>
</li>
</ul>
<p>
<a href="http://psprovider.codeplex.com/">http://psprovider.codeplex.com/</a>
</p>
<img width="0" height="0" src="http://www.nivot.org/aggbug.ashx?id=0b623743-f07e-4fd4-891e-35a05c656c4a" />]]></description>
   <dc:creator>Oisin Grehan</dc:creator>
   <dc:date>7/26/2010 3:11:34 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Clean Acceptance Tests, August 3rd, central London]]></title>
   <link>http://gojko.net/2010/07/26/clean-acceptance-tests-august-3rd-central-london/</link>
   <description><![CDATA[The next meeting of the UK agile testing user group is on the 3rd of August in central London. Here are the details of the talk: Dan Leong on Clean Acceptance Tests This presentation discusses how our agile team renewed our focus and understanding of our acceptance tests when the team members changed. Our group [...]]]></description>
   <dc:creator>gojko</dc:creator>
   <dc:date>7/26/2010 12:52:42 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Introducing WindowHerder: Take Control of Your Windows]]></title>
   <link>http://feedproxy.google.com/~r/gshackles/~3/-KdJkMstYcM/</link>
   <description><![CDATA[Recently I&#8217;ve been working on a small utility to help scratch a particular itch I had with managing the placement of windows on my screens.  More specifically, I found that I would arrange everything how I wanted it in order to be the most productive, and would then have to keep redoing that every [...]
<p><a href="http://feedads.g.doubleclick.net/~a/dKJJStkH9MLiSFlEyssUof9FNzA/0/da"><img src="http://feedads.g.doubleclick.net/~a/dKJJStkH9MLiSFlEyssUof9FNzA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dKJJStkH9MLiSFlEyssUof9FNzA/1/da"><img src="http://feedads.g.doubleclick.net/~a/dKJJStkH9MLiSFlEyssUof9FNzA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/gshackles/~4/-KdJkMstYcM" height="1" width="1"/>]]></description>
   <dc:creator>Greg Shackles</dc:creator>
   <dc:date>7/26/2010 9:56:28 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[July preview of POP Forums v9 posted to CodePlex]]></title>
   <link>http://weblogs.asp.net/jeff/archive/2010/07/25/july-preview-of-pop-forums-v9-posted-to-codeplex.aspx</link>
   <description><![CDATA[<p>Get it while it's hot and juicy, my friends. The second preview for the ASP.NET MVC forum is available at <a href="http://popforums.codeplex.com/" target="_blank" mce_href="http://popforums.codeplex.com/">http://popforums.codeplex.com/</a>.</p><p>The release notes show what's new, so I won't repeat that here. Overall, I'm feeling pretty good about how it's coming along. I spent a lot of time fleshing out admin functionality, which is about the least exciting thing, but it's a lot easier to exercise the app when you can change stuff via the UI instead of poking around a database.</p><p>I would like to have a beta version out in September, and if my spare time continues to be available at the same rate, and my baby boy is happy and healthy (and sleeping in the evenings), I think there's a reasonable shot at it happening. I can see an RC even coming shortly after even. Remember the goal is to get to feature parity with v8.x first, and then go further. <br></p><img src="http://weblogs.asp.net/aggbug.aspx?PostID=7573765" width="1" height="1">]]></description>
   <dc:creator>Jeff Putz</dc:creator>
   <dc:date>7/25/2010 11:47:36 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[NET Framework 3.5 & NET Framework 4.0]]></title>
   <link>http://rndinfo.com/dot-net-microsoft-developer-india.html</link>
   <description><![CDATA[The .NET Framework is an integral Windows component that supports building and running the next generation of applications and XML Web services. The .NET Framework is hearty of development now & tomorrow for business applications.<br />
<br />

  Our dot.net consultant hides technical complexity & ensures deliver of better application. Radix has started development on net framework 4.0 to influence best technology for client projects.<br />
<br />

 Explore technical verticals of Radix consulting & development services from following sections.<br />]]></description>
   <dc:creator>Anand Patel</dc:creator>
   <dc:date>7/25/2010 9:49:47 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[EntitySpaces 2010.1.0726.0 Available for Download]]></title>
   <link>http://www.entityspaces.net/blog/2010/07/26/EntitySpaces+2010107260+Available+For+Download.aspx</link>
   <description><![CDATA[<p>
This is a minor release, there is no need to upgrade unless you need one of the fixes
below. The fixes are as follows:
</p>
<ul>
<li>
The WCF Client Side Proxy Patch is included (it was not included with 2010.1.0720.0)</li>
<li>
The namespace "Proxies" was hard coded in the client proxy template, this was fixed.</li>
<li>
The “char” modified column count error has been fixed.</li>
<li>
The case sensitive bug when returning columns with a different case than defined in
the actual table error has been fixed.</li>
</ul>
<p>
The Trial version is still 2010.1.0720.0
</p>
<p>
<a href="http://www.entityspaces.net/blog/ct.ashx?id=038f06f1-26c1-401c-8e8b-50d4e5eb4ce0&amp;url=http://www.entityspaces.net/blog/ct.ashx?id=e7740cd5-f5b1-4914-997b-d37ec7426772&amp;url=http%3a%2f%2fwww.entityspaces.net%2fblog%2fct.ashx%3fid%3d2676e564-5b8c-4378-ac7e-7e56431e64b7%26url%3dhttp%253a%252f%252fwww.entityspaces.net%252fblog%252fct.ashx%253fid%253dd5be1367-24f9-4b7b-9cea-52485f6b01d0%2526url%253dhttp%25253a%25252f%25252fwww.entityspaces.net%25252fblog%25252fct.ashx%25253fid%25253d915037c7-923f-4590-bee1-6286854f199f%252526url%25253dhttp%2525253a%2525252f%2525252fwww.entityspaces.net%2525252fblog%2525252fct.ashx%2525253fid%2525253d77f66dd3-0e04-4e94-8ad8-dfac8e2b2921%25252526url%2525253dhttp%252525253a%252525252f%252525252fwww.entityspaces.net%252525252fblog%252525252fct.ashx%252525253fid%252525253d04570b37-56c1-4a64-b64f-544c252b1b06%2525252526url%252525253dhttp%25252525253a%25252525252f%25252525252fwww.entityspaces.net%25252525252f"><img border="0" alt="EntitySpaces" src="http://www.entityspaces.net/images/es.png"></a> 
<p>
From <strong>Mobile Devices</strong> to large scale enterprise solutions in need of
serious transaction support, EntitySpaces can meet your needs. Whether you’re writing
an ASP.NET application with <strong>Medium Trust</strong> requirements, a <strong>Silverlight/WCF</strong> application,
a <strong>Mono</strong> application, or a <strong>Windows.Forms</strong> application,
the EntitySpaces architecture is there for you. EntitySpaces is provider independent,
which means that you can run the same binary code against any of the supported databases.
EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection,
no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces
is one tough, dependable .NET architecture. 
<p>
EntitySpaces LLC<br>
<strong>Persistence Layer and Business Objects for Microsoft .NET<br>
</strong><a href="http://www.entityspaces.net">http://www.entityspaces.net</a>]]></description>
   <dc:creator>Mike Griffin</dc:creator>
   <dc:date>7/25/2010 9:15:48 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Notes on Templates and Data Annotations in MVC 2]]></title>
   <link>http://odetocode.com/Blogs/scott/archive/2010/07/25/notes-on-templates-and-data-annotations-in-mvc-2.aspx</link>
   <description><![CDATA[<p>Brad Wilson has an excellent series of 5 blog posts on <a href="http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html">model metadata and templates</a> you can use to get started with templates and metadata in ASP.NET MVC 2. Here are a couple notes I've made around some of aspects that commonly confuse developers (including me, it seems). </p>  <p>1. Although most of the metadata attributes live in the System.ComponentModel.DataAnnotations namespace, there are a few exceptions. If you aren't seeing something you need in Intellisense, then try adding System.ComponentModel (for the popular DisplayName attribute) and System.Web.Mvc (for the popular HiddenInput attribute). </p>  <p>2. Some of the confusion around data annotations exists because the MVC runtime doesn't recognize every data annotation attribute built into .NET. For example, using [Editable(false)] is tempting, but you'll find it doesn't have any impact in model binding, validation, or templating. The built-in templates respect 7 data annotation attributes: </p>  <ul>   <li>DisplayColumn</li>    <li>HiddenInput</li>    <li>UIHint</li>    <li>DataType</li>    <li>DisplayFormat</li>    <li>ScaffoldColumn</li>    <li>DisplayName</li> </ul>  <p>3. There are two additional attributes the default model metadata provider will consume:</p>  <ul>   <li>ReadOnly</li>    <li>Required</li> </ul>  <p>However, the built-in templates do not make use of the information from these attributes. For example, you can apply [ReadOnly(true)] to a property, but you'll find the default templates in use by helpers like Html.EditorForModel will still show a textbox input for the user to enter a value. If you want to get rid of the input with EditorForModel you'll need a custom template, or you'll need to use [ScaffoldColumn(false)]. </p>  <p>Note the default model binder does respect the ReadOnly attribute, so it won't move a value into a property with [ReadOnly[false)]. Also, the built-in validation logic respects the Required attribute. These attributes definitely have value in an MVC app, but they won't influence the UI rendered by the default templates. </p><img src="http://odetocode.com/Blogs/scott/aggbug/1078.aspx" width="1" height="1" />]]></description>
   <dc:creator>K. Scott allen</dc:creator>
   <dc:date>7/25/2010 9:04:33 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[A disappointing Windows Marketplace (mobile developer) experience.]]></title>
   <link>http://notgartner.wordpress.com/2010/07/25/a-disappointing-windows-marketplace-mobile-developer-experience/</link>
   <description><![CDATA[Microsoft is going to market late this calendar year with Windows Phone 7, a completely revamped mobile platform set to take on the likes of Apple’s iPhone and Google’s Android platforms. From a technical perspective I’m excited about the platform and I think that it could easily be the technically superior option on the market. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=notgartner.wordpress.com&blog=307844&post=3088&subd=notgartner&ref=&feed=1" />]]></description>
   <dc:creator>Mitch Denny</dc:creator>
   <dc:date>7/25/2010 4:41:48 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[Course Update]]></title>
   <link>http://feedproxy.google.com/~r/UdiDahan-TheSoftwareSimplist/~3/7nJZpjVXmm8/</link>
   <description><![CDATA[Just wanted to let you know that there is a scheduling change for my upcoming courses. This is due to some minor issues internal to Skills Matter, the company that hosts my training in the UK and manages the France location as well. Anyway, these issues have been resolved but the scheduling changes remain.
The courses [...]]]></description>
   <dc:creator>Udi Dahan - The Software Simplist</dc:creator>
   <dc:date>7/24/2010 2:03:20 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[SQL 2008 FILESTREAM]]></title>
   <link>http://www.mostlydevelopers.com/mostlydevelopers/blog/post/2010/07/24/SQL-2008-FILESTREAM.aspx</link>
   <description><![CDATA[<p>The FILESTREAM feature of SQL 2008 allows more effective storage and retrieval to BLOB data.&nbsp; It accomplishes this by utilizing both SQL 2008 and the NTFS file system.&nbsp; In the past, most developers stored BLOB data in the SQL Server using varbinary(max).&nbsp; This has some drawbacks including:&nbsp; you had a 2GB max, streaming performance was awful, and recovery from fragmentation was poor.&nbsp; The FILESTREAM can hold up to the size of the NTFS volume size, streaming performance is excellent, and it can recover from fragmentation on disk nicely.</p>
<p>The one drawback that I can see is when the client needs to perform small &amp; frequent BLOB updates.&nbsp; Rather than writing to SQL Server data files, FILESTREAM writes to the file system.&nbsp; Locating, creating, updating, deleting files outside of the SQL Server data files do come at a cost.&nbsp; So some consideration as to the size &amp; frequency of BLOB data would need to be made.</p>
<p>There are a few ways to enable FILESTREAM (SQL Server Configuration Manager, SQL Server Management Studio properties of the connected instance, and via TSQL scripting).&nbsp; Personally I was only able to get it to work by using the SQL Server Configuration Manager.&nbsp; Apparently installing Visual Studio/SQL 2005 can screw up FILESTREAM features of SQL 2008&hellip;&nbsp; Anyway, here&rsquo;s the basic FILESTREAM access levels which you&rsquo;ll need to understand when enabling it.</p>
<p><span style="text-decoration: underline;">FILESTREAM access levels: <br /></span>a) 0 = Disables FILESTREAM support for this instance. <br />b) 1 = Enables FILESTREAM for Transact-SQL access. <br />c) 2 = Enables FILESTREAM for Transact-SQL and Win32 streaming access.</p>
<p>I created a script which enables FILESTREAM for the SQL Instance, then it enables it for my &ldquo;testdb&rdquo; database.&nbsp; It auto-detects where your database&rsquo;s data/log files reside and then creates a directory in there for FILESTREAM objects.</p>
<p>&nbsp;</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">USE</span> [master];</pre>
<pre><span class="lnum">   2:  </span><span class="kwrd">GO</span></pre>
<pre class="alt"><span class="lnum">   3:  </span><span class="kwrd">DECLARE</span> @filestream_access_level <span class="kwrd">SMALLINT</span>;</pre>
<pre><span class="lnum">   4:  </span><span class="kwrd">SELECT</span> @filestream_access_level = <span class="kwrd">CONVERT</span>(<span class="kwrd">SMALLINT</span>, SERVERPROPERTY(<span class="str">'FilestreamEffectiveLevel'</span>));</pre>
<pre class="alt"><span class="lnum">   5:  </span>&nbsp;</pre>
<pre><span class="lnum">   6:  </span><span class="kwrd">IF</span> @filestream_access_level &lt;&gt; 2</pre>
<pre class="alt"><span class="lnum">   7:  </span><span class="kwrd">BEGIN</span></pre>
<pre><span class="lnum">   8:  </span>    <span class="kwrd">EXEC</span> sp_configure filestream_access_level, 2;</pre>
<pre class="alt"><span class="lnum">   9:  </span>    <span class="kwrd">RECONFIGURE</span> <span class="kwrd">WITH</span> OVERRIDE;</pre>
<pre><span class="lnum">  10:  </span><span class="kwrd">END</span>;</pre>
<pre class="alt"><span class="lnum">  11:  </span><span class="kwrd">GO</span></pre>
<pre><span class="lnum">  12:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  13:  </span><span class="kwrd">USE</span> [testdb];</pre>
<pre><span class="lnum">  14:  </span><span class="kwrd">GO</span></pre>
<pre class="alt"><span class="lnum">  15:  </span><span class="kwrd">IF</span> <span class="kwrd">NOT</span> <span class="kwrd">EXISTS</span> (<span class="kwrd">SELECT</span> * <span class="kwrd">FROM</span> sys.filegroups <span class="kwrd">AS</span> fg <span class="kwrd">WITH</span> (NOLOCK) <span class="kwrd">WHERE</span> name = <span class="str">'testdb_FILESTREAM'</span>)</pre>
<pre><span class="lnum">  16:  </span><span class="kwrd">BEGIN</span></pre>
<pre class="alt"><span class="lnum">  17:  </span>    --<span class="kwrd">add</span> a <span class="kwrd">file</span> <span class="kwrd">group</span> <span class="kwrd">and</span> indicate that it will contain FILESTREAM objects</pre>
<pre><span class="lnum">  18:  </span>    <span class="kwrd">ALTER</span> <span class="kwrd">DATABASE</span> testdb <span class="kwrd">ADD</span> FILEGROUP testdb_FILESTREAM <span class="kwrd">CONTAINS</span> FILESTREAM;</pre>
<pre class="alt"><span class="lnum">  19:  </span><span class="kwrd">END</span>;</pre>
<pre><span class="lnum">  20:  </span><span class="kwrd">GO</span></pre>
<pre class="alt"><span class="lnum">  21:  </span><span class="kwrd">IF</span> <span class="kwrd">NOT</span> <span class="kwrd">EXISTS</span> (<span class="kwrd">SELECT</span> * </pre>
<pre><span class="lnum">  22:  </span>    <span class="kwrd">FROM</span> sys.filegroups <span class="kwrd">AS</span> fg <span class="kwrd">WITH</span> (NOLOCK) </pre>
<pre class="alt"><span class="lnum">  23:  </span>        <span class="kwrd">INNER</span> <span class="kwrd">JOIN</span> sys.database_files <span class="kwrd">AS</span> df <span class="kwrd">WITH</span> (NOLOCK) <span class="kwrd">ON</span> fg.data_space_id = df.data_space_id </pre>
<pre><span class="lnum">  24:  </span>    <span class="kwrd">WHERE</span> fg.name = <span class="str">'testdb_FILESTREAM'</span></pre>
<pre class="alt"><span class="lnum">  25:  </span>        <span class="kwrd">AND</span> df.name = <span class="str">'testdb_FILESTREAM'</span>)</pre>
<pre><span class="lnum">  26:  </span><span class="kwrd">BEGIN</span></pre>
<pre class="alt"><span class="lnum">  27:  </span>    <span class="kwrd">DECLARE</span> @<span class="kwrd">path</span> NVARCHAR(<span class="kwrd">MAX</span>), @sql_statement NVARCHAR(<span class="kwrd">MAX</span>);</pre>
<pre><span class="lnum">  28:  </span>    <span class="kwrd">SELECT</span> @<span class="kwrd">path</span> = mf.physical_name <span class="kwrd">FROM</span> sys.master_files <span class="kwrd">AS</span> mf <span class="kwrd">WITH</span> (NOLOCK) <span class="kwrd">WHERE</span> mf.name = <span class="str">'testdb'</span> <span class="kwrd">AND</span> mf.type_desc = <span class="str">'ROWS'</span>;</pre>
<pre class="alt"><span class="lnum">  29:  </span>    <span class="kwrd">SELECT</span> @<span class="kwrd">path</span> = <span class="kwrd">SUBSTRING</span>(@<span class="kwrd">path</span>, 1, LEN(@<span class="kwrd">path</span>) - CHARINDEX(<span class="str">'\'</span>, REVERSE(@<span class="kwrd">path</span>))) + <span class="str">'\testdb_FILESTREAM'</span>;</pre>
<pre><span class="lnum">  30:  </span>&nbsp;</pre>
<pre class="alt"><span class="lnum">  31:  </span>    --tell the <span class="kwrd">file</span> <span class="kwrd">group</span> <span class="kwrd">where</span> the FILESTREAM objects should be stored</pre>
<pre><span class="lnum">  32:  </span>    <span class="kwrd">SELECT</span> @sql_statement = N<span class="str">'ALTER DATABASE testdb ADD FILE (NAME = '</span><span class="str">'testdb_FILESTREAM'</span><span class="str">', FILENAME = '</span><span class="str">''</span> + @<span class="kwrd">path</span> + <span class="str">''</span><span class="str">') TO FILEGROUP testdb_FILESTREAM;'</span>;</pre>
<pre class="alt"><span class="lnum">  33:  </span>&nbsp;</pre>
<pre><span class="lnum">  34:  </span>    <span class="kwrd">EXEC</span> sp_executesql @<span class="kwrd">statement</span> = @sql_statement;</pre>
<pre class="alt"><span class="lnum">  35:  </span><span class="kwrd">END</span>;</pre>
<pre><span class="lnum">  36:  </span>GO</pre>
</div>
<p><!-- .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
<p>&nbsp;</p>
<p>At this point I was ready to design a table in SQL Management Studio with a FILESTREAM column.&nbsp; A FILESTREAM column is actually a varbinary(max) column with the FILESTREAM attribute.&nbsp; Well, the table designer in SQL Management Studio does not support specifying the FILESTREAM attribute.&nbsp; You have to script it.</p>
<p><span style="text-decoration: underline;">Here&rsquo;s some rules which you&rsquo;ll need to adhere to when creating FILESTREAM columns.</span> <br />1) The table can have multiple FILESTREAM columns, but they must all be in the same FILEGROUP. <br />2) If you don&rsquo;t specify the FILESTREAM_ON clause, the default FILEGROUP will be used. <br />3) The table must have a uniqueidentifier column with the ROWGUIDCOL attribute.&nbsp; It cannot contain NULL values and must have either a UNIQUE or PRIMARY KEY single column constraint.</p>
<p>&nbsp;</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">USE</span> [testdb];</pre>
<pre><span class="lnum">   2:  </span><span class="kwrd">GO</span></pre>
<pre class="alt"><span class="lnum">   3:  </span><span class="kwrd">IF</span> <span class="kwrd">NOT</span> <span class="kwrd">EXISTS</span> (<span class="kwrd">SELECT</span> * <span class="kwrd">FROM</span> sys.tables <span class="kwrd">AS</span> t <span class="kwrd">WITH</span> (NOLOCK) <span class="kwrd">WHERE</span> t.name = <span class="str">'Document'</span> <span class="kwrd">AND</span> t.type = <span class="str">'U'</span>)</pre>
<pre><span class="lnum">   4:  </span><span class="kwrd">BEGIN</span></pre>
<pre class="alt"><span class="lnum">   5:  </span>    <span class="kwrd">CREATE</span> <span class="kwrd">TABLE</span> dbo.Document (</pre>
<pre><span class="lnum">   6:  </span>        DocumentID <span class="kwrd">INT</span> <span class="kwrd">IDENTITY</span> <span class="kwrd">PRIMARY</span> <span class="kwrd">KEY</span>,</pre>
<pre class="alt"><span class="lnum">   7:  </span>        DocumentGUID UNIQUEIDENTIFIER <span class="kwrd">NOT</span> <span class="kwrd">NULL</span> <span class="kwrd">ROWGUIDCOL</span> <span class="kwrd">UNIQUE</span> <span class="kwrd">DEFAULT</span> NEWID(),</pre>
<pre><span class="lnum">   8:  </span>        Document VARBINARY(<span class="kwrd">MAX</span>) FILESTREAM <span class="kwrd">NULL</span></pre>
<pre class="alt"><span class="lnum">   9:  </span>    )  <span class="kwrd">ON</span> [<span class="kwrd">PRIMARY</span>];</pre>
<pre><span class="lnum">  10:  </span><span class="kwrd">END</span>;</pre>
<pre class="alt"><span class="lnum">  11:  </span>GO</pre>
</div>
<p><!-- .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
<p>&nbsp;</p>
<p>In my next post, I will show .NET streaming capabilities with the new FILESTREAM features in SQL 2008.</p>]]></description>
   <dc:creator>Bill Christenson</dc:creator>
   <dc:date>7/24/2010 11:28:46 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[Notes from a TDD masterclass]]></title>
   <link>http://feedproxy.google.com/~r/Iserializable/~3/ZfBGZPBi7sw/notes-from-a-tdd-masterclass.aspx</link>
   <description><![CDATA[<p><a href="http://osherove.com/training">another TDD masterclass is done</a>, and this time it was Munich! Lovely people, and smart programmers :)</p>  <p>made a few changes this time – had an excersice about doing automated builds and CI, removed rhino mocks and added a bunch of other frameworks (FakeItEasy, JustMock and others) and various other small things.</p>  <p>at the last day of the course, I asked each person on the most important thing they learned, and something that surprised them during the course. </p>  <p>&#160;</p>  <p>here’s the list we made:</p>  <p>&#160;</p>  <p>•How to practice TDD</p>  <p>•Isolation frameworks abilities, differences and categories</p>  <p>•Difference between test and production code standards</p>  <p>•Pay attention to requirements</p>  <p>•TDD is doable, also in legacy</p>  <p>•Simple tests</p>  <p>•Legacy code refactoring is hard</p>  <p>•Better unit tests</p>  <p>•It’s not hype</p>  <p>•Reviewing is easier than thought</p>  <p>•Pair programming is productive</p>  <p>•How to refactor and test legacy</p>  <p>•Power of manual fakes</p>  <p>•Tdd makes testable code</p>  <p>•Tests as specs</p>  <p>•How to write fast tests, productively with tdd</p>  <p>•RTM tests are harder than you think</p>  <p>•Spec and Interface based development</p>  <p>•Code gets written differently</p>  <p>•Incremental work, simply</p>  <p>•Lots of different ways to do the same concept</p>  <p>•How to handle statics</p>  <p>•Different people are different</p>  <p>•Brownfield is tough to tdd</p><img src="http://weblogs.asp.net/aggbug.aspx?PostID=7573138" width="1" height="1"><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Iserializable?a=ZfBGZPBi7sw:Qy-R_SJXixw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Iserializable?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Iserializable?a=ZfBGZPBi7sw:Qy-R_SJXixw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Iserializable?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Iserializable?a=ZfBGZPBi7sw:Qy-R_SJXixw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Iserializable?i=ZfBGZPBi7sw:Qy-R_SJXixw:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Iserializable/~4/ZfBGZPBi7sw" height="1" width="1"/>]]></description>
   <dc:creator>Roy Osherove</dc:creator>
   <dc:date>7/23/2010 10:48:09 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Extension method to find root Parent Workflow of current activity]]></title>
   <link>http://geekswithblogs.net/mnf/archive/2010/07/23/helper-function-to-find-root-parent-workflow-of-current.aspx</link>
   <description><![CDATA[<div goog_docs_charindex="8">Below is an extension method  to find root Parent Workflow of current activity</div>
<div goog_docs_charindex="74">  /// &lt;summary&gt;<br goog_docs_charindex="90" />
  /// Get root Parent Workflow of current activity</div>
<div goog_docs_charindex="142">  /// &lt;param name="activity"&gt;&lt;/param&gt;<br goog_docs_charindex="180" />
  /// &lt;returns&gt;&lt;/returns&gt;<br goog_docs_charindex="206" />
  public static Activity FindRootWorkflow(this Activity activity)<br goog_docs_charindex="272" />
  {<br goog_docs_charindex="276" />
   List&lt;string&gt; list = new List&lt;string&gt;();<br goog_docs_charindex="319" />
   Activity act = activity;<br goog_docs_charindex="347" />
   while (act != null)<br goog_docs_charindex="370" />
   {<br goog_docs_charindex="375" />
    if (act.Parent==null)<br goog_docs_charindex="401" />
    {<br goog_docs_charindex="407" />
     return act;<br goog_docs_charindex="424" />
    }<br goog_docs_charindex="430" />
    act = act.Parent;</div>
<div goog_docs_charindex="453">   }<br goog_docs_charindex="458" />
   return null;<br goog_docs_charindex="474" />
  }<br goog_docs_charindex="478" />
 </div>
<div goog_docs_charindex="480">It was  asked in MS Connect Suggestion "<a id="q7hf" title="Activity to access Parent workflow or Root Workflow" goog_docs_charindex="521" href="https://connect.microsoft.com/wf/feedback/details/351459/activity-to-access-parent-workflow-or-root-workflow?wa=wsignin1.0">Activity to access Parent workflow or Root Workflow</a>"</div>
<div goog_docs_charindex="576"> </div>
<div goog_docs_charindex="579">My related post <a id="CategoryEntryList_ascx_EntryStoryList_Entries_ctl06_TitleUrl" title="Click To View Entry." goog_docs_charindex="596" href="http://geekswithblogs.net/mnf/archive/2009/01/23/concatenate-all-parents-qualifiednames--instead-of-call-stack.aspx">Windows Workflow: Concatenate all parents QualifiedNames- instead of call stack</a></div>
<p><br goog_docs_charindex="678" />
 </p><p><a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&u=141046"><img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&u=141046" border="0"/></a></p><iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;Task=Get&amp;PageID=31016&amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No>
<script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;Task=Get&amp;Browser=NETSCAPE4&amp;NoCache=True&PageID=31016&amp;SiteID=1"></script>
<noscript><a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;Task=Click&amp;Mode=HTML&amp;SiteID=1&amp;PageID=31016" target="_blank">
<img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;Task=Get&amp;Mode=HTML&amp;SiteID=1&amp;PageID=31016" width="1" height="1" border="0"  alt=""></a>
</noscript>
</iframe>
<img src="http://geekswithblogs.net/mnf/aggbug/141046.aspx" width="1" height="1" />]]></description>
   <dc:creator>Michael Freidgeim</dc:creator>
   <dc:date>7/23/2010 4:34:40 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[F# Discoveries This Week 07/23/2010]]></title>
   <link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx</link>
   <description><![CDATA[<p>One of my favorite things about the F# community is that its members tend to build things that are a bit more interesting, and think about concepts that are a bit deeper.&#160; This week is no exception.&#160; Come on in and see what’s been happening in the F# world.</p>  <p>A quick note to those giving F# talks or running events: If you would like listed here please don’t hesitate to contact me via the email link at the top of the page.&#160; I’d love to help you help others to learn F#.</p>  <p>&#160;</p>  <h1 align="center">Events</h1>  <h3><a href="http://bloggemdano.blogspot.com/2010/07/nashville-geek-lunch-1130-am-next.html">Nashville Geek Lunch 11:30 AM Next Tuesday (7/27/2010)</a></h3>  <p>&#160;</p>  <p>&#160;</p>  <h1 align="center">Articles</h1>  <h3><a href="http://tomasp.net/blog/event-object-duality.aspx">Tomas Petricek’s The Duality of Object and Event references</a></h3>  <blockquote>   <p><em>In this article, I'll talk about an interesting example of duality that (to my best knowledge) wasn't described by anyone before. The two dual structures are references between objects in a normal program and references between events in a reactive application.</em></p> </blockquote>  <p>&#160;</p>  <h3><a href="http://mariusbancila.ro/blog/2010/07/18/resources-for-the-f-presentation-at-ronua-roadshow/">Marius Bancila’s Resources for the F# Presentation at Ronua Roadshow</a></h3>  <blockquote>   <p><em>The program that I shown exhibits traits of both functional (for computing the fractal) and object oriented (for displaying the fractal) paradigms.</em></p> </blockquote>  <p>&#160;</p>  <h3><a href="http://techneilogy.blogspot.com/2010/07/two-instruction-virtual-computer.html">Neil Carrier’s A Two-Instruction Virtual RISC</a></h3>  <blockquote>   <p><em>One of my favorite hobbies is building really tiny virtual computers. The experience has even paid off a time or two when I needed to create a compact domain-specific language (DSL).</em></p> </blockquote>  <p>&#160;</p>  <h3><a href="http://techneilogy.blogspot.com/2010/07/this-post-is-about-pair-of-f-operators.html">Neil Carrier’s F#'s Little-Known (?) and (?&lt;-) Operators</a></h3>  <blockquote>   <p><em>These two operators work similar to the C/C++ “stringizing” pre-processor operator. That is, they convert non-string code (limited to simple identifiers in the case of F#) into strings according to the following translation patterns:</em></p> </blockquote>  <p>&#160;</p>  <h3><a href="http://lepensemoi.free.fr/index.php/2010/07/17/arbitraging-bookmakers-with-f">Julien Ortin’s Arbitraging bookmakers with F#</a></h3>  <blockquote>   <p><em>The principle is rather simple.&#160; Take the best quotes for each outcome, and process.&#160; If the sum of 1/quote_i is less than one, an arbitrage opportunity exists.&#160; The amount to bet on each outcome is 100/quote. </em></p> </blockquote>  <p>&#160;</p>  <h3><a href="http://v2matveev.blogspot.com/2010/07/tricky-late-binding-operators.html">Vladimir Matveev’s Tricky late binding operators</a></h3>  <blockquote>   <p><em>F# Dynamic and DynamicAssignment operators are not as simple as they appear ex facte. Most popular sample of their usage is something like this:</em></p> </blockquote>  <p>&#160;</p>  <h3><a href="http://v2matveev.blogspot.com/2010/06/playing-with-websharper.html">Vladimir Matveev’s Playing with WebSharper</a></h3>  <blockquote>   <p><em>As a sample we’ll make simple StickyNotes application. Web design is not my primary and favorite skill, so I'll omit cross-browser compatibility and bind all styles to Firefox.</em></p> </blockquote>  <p>&#160;</p>  <h3><a href="http://naveensrinivasan.com/2010/07/16/using-f-to-automate-reading%E2%80%93the-morning-brew/">Naveen Srinivasan’s Using F# to Automate Reading–The Morning Brew</a></h3>  <blockquote>   <p><em>I like to try and automate most of the stuff . So I thought why not write a script that reads the Morning Brew feed, filter the excluded content that I am not interested in and open the urls before I come in.</em></p> </blockquote>  <p>&#160;</p>  <h3><a href="http://stevegilham.blogspot.com/2010/07/building-partcover-4-on-vista.html">Steve Gilham’s Building PartCover 4 on Vista</a></h3>  <blockquote>   <p><em>Following on from earlier in the week, I pulled the current trunk from SourceForge, and set about building it then putting it to work on some F# code which had caused</em> an earlier version (the most recent available at the end of last year) to balk.</p> </blockquote>  <p>&#160;</p>  <h3><a href="http://www.codeproject.com/KB/net-languages/FS_Recursion_on_Reader.aspx">Gert-Jan van der Kamp’s Using a DataReader like a list in F#</a></h3>  <blockquote>   <p><em>This article demonstrates a technique how you can write recursive algorithms in F# using a Reader instead of a list, so you don't have to load all your data into memory first.</em></p> </blockquote>  <p>&#160;</p>  <h3><a href="http://saladwithsteve.com/2010/07/building-fsharp-on-the-mac.html">Steve Jenson’s Building F# on Mac OS X</a></h3>  <blockquote>   <p><em>Joe says his team at Microsoft runs into these issues often with users and was kind enough to walk me through the steps to get F# running on the mac.</em></p></blockquote>
<div class = "shareblock"><strong>Share this post:</strong> <a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;;subject=F%23+Discoveries+This+Week+07%2f23%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx">email it!</a> |  <a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;;title=F%23+Discoveries+This+Week+07%2f23%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx">bookmark it!</a> |  <a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx">digg it!</a> |  <a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;title=F%23+Discoveries+This+Week+07%2f23%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx">reddit!</a> |  <a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;;title=F%23+Discoveries+This+Week+07%2f23%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx">kick it!</a> |  <a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;;mkt=en-us&amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;;title=F%23+Discoveries+This+Week+07%2f23%2f2010&amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx">live it!</a></div><img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20912" width="1" height="1">]]></description>
   <dc:creator>Rick Minerich</dc:creator>
   <dc:date>7/23/2010 1:37:45 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Debugging Multiple SWFs]]></title>
   <link>http://www.sapphiresteel.com/Blog/article/debugging-multiple-swfs</link>
   <description><![CDATA[One of the neat features of the Amethyst 'Clylon' debugger is its ability to 'listen and attach' to SWFs across multiple projects and even running in multiple applications. This gives you the ability to debug two, three, four or more SWFs simultaneously. This is a real advantage when building complex applications or web sites in which many separate SWFs communicate. Debugging them one at a time only gives you part of the picture. Multiple SWF-debugging lets you set (...)]]></description>
   <dc:creator>Huw Collingbourne</dc:creator>
   <dc:date>7/23/2010 1:02:47 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Free DotNetNuke Training now available]]></title>
   <link>http://weblogs.asp.net/christoc/archive/2010/07/22/free-dotnetnuke-training-now-available.aspx</link>
   <description><![CDATA[When I started up here at DotNetNuke Corp. in March, I spent quite a bit of time planning and tweaking our plan in regards to the DotNetNuke Training that we would be offering. The initial phase launched when we started offering our paid DotNetNuke Training...(<a href="http://weblogs.asp.net/christoc/archive/2010/07/22/free-dotnetnuke-training-now-available.aspx">read more</a>)<img src="http://weblogs.asp.net/aggbug.aspx?PostID=7571305" width="1" height="1">]]></description>
   <dc:creator>Chris Hammond</dc:creator>
   <dc:date>7/22/2010 2:21:15 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Microsoft Azure Cloud Services and Mobile Applications]]></title>
   <link>http://joelblogs.co.uk/2010/07/22/microsoft-azure-cloud-services-and-mobile-applications/</link>
   <description><![CDATA[I’ve just come across another great video from Jason Zander at the UK Tech Days event in Reading. This time it’s about mobile applications and the Azure platform. I’ve been following the Microsoft cloud service offerings for a couple of years since the Microsoft Architect Insight Conference 2008. What started as SQL Server Data Services [...]]]></description>
   <dc:creator>Joel Jeffery</dc:creator>
   <dc:date>7/22/2010 5:32:40 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[Sudoku for WP7 on YouTube]]></title>
   <link>
        http://www.reflectionit.nl/Blog/PermaLink3a91430f-88fd-4493-8b6e-f728372a269b.aspx</link>
   <description><![CDATA[<p>I have placed a movie of my Sudoku for the Windows Phone 7 on <a shape="rect" href="http://www.youtube.com/watch?v=TEHB4lCB-TY">YouTube</a>. I have build it using the new Beta bits. It uses the same Model and ViewModel code as my <a href="http://www.silverarcade.com/games/sonnemaf/sudoku">Silverlight</a> implementation.</p>
<p>I'm almost finished. I only have to implement the 'Notes' and 'Import from Camera' features. I can't test the Import/OCR yet because the emulator doesn't support the WebCam, bummer. I hope i can test it on a device soon.</p>

<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/TEHB4lCB-TY&amp;hl=nl_NL&amp;fs=1?rel=0&amp;color1=0x006699&amp;color2=0x54abd6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/TEHB4lCB-TY&amp;hl=nl_NL&amp;fs=1?rel=0&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>

<p>Cheers,</p>
<p><b>Fons</b></p>]]></description>
   <dc:creator>Fons Sonnemans</dc:creator>
   <dc:date>7/22/2010 3:06:14 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[SQLite 3.7.0 Released – WAL is now available]]></title>
   <link>http://www.csharphacker.com/technicalblog/index.php/2010/07/21/sqlite-3-7-0-released-wal-is-now-available/</link>
   <description><![CDATA[The official release information can be found [SQLite Release 3.7.0 On 2010 July 22 (3.7.0)]. The summary is that this is a pretty large change compared to previous releases.

WAL (Write Ahead Logging) support &#8211; this means:

Generally faster
More concurrency
Better disk performance when processing the WAL logs.
Cant use network shares or different computers for writing to the [...]]]></description>
   <dc:creator>Gareth</dc:creator>
   <dc:date>7/21/2010 8:34:31 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[How to get rid of flicker on Windows Forms applications]]></title>
   <link>http://angryhacker.com/blog/archive/2010/07/21/how-to-get-rid-of-flicker-on-windows-forms-applications.aspx</link>
   <description><![CDATA[<p>Windows Forms apps have a well known issue that when you have a bunch of controls on your form (not to mention any 3rd party controls), the app flickers, there is UI tearing – it's just not pretty.  The problem most seems to impact the startup of the app when everything is being loaded. </p>  <p>Simply setting the form and any controls to be Double Buffered doesn’t do the trick because the .DoubleBuffered property works at a control level, not the form level.  </p>  <p>There is a fix for this that automatically enables double-buffering at the form level and on down.  This works by setting the <em><strong>WS_EX_COMPOSITED</strong></em> flag in the <em>Form.CreateParams.ExStyle</em> property.  Just drop the following code into form:</p>  <div class="csharpcode">   <pre class="alt"><span class="kwrd">protected</span> <span class="kwrd">override</span> CreateParams CreateParams</pre>

  <pre>{</pre>

  <pre class="alt">    get</pre>

  <pre>    {</pre>

  <pre class="alt">        <span class="rem">// Activate double buffering at the form level.  All child controls will be double buffered as well.</span></pre>

  <pre>        CreateParams cp = <span class="kwrd">base</span>.CreateParams;</pre>

  <pre class="alt">        cp.ExStyle |= 0x02000000;   <span class="rem">// WS_EX_COMPOSITED</span></pre>

  <pre>        <span class="kwrd">return</span> cp;</pre>

  <pre class="alt">    }</pre>

  <pre>} </pre>
</div>
<style type="text/css"><![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]></style>

<p>
  <br />This fix works relatively well, but <em><strong>WS_EX_COMPOSITED</strong></em> flag causes a couple of side effects:</p>

<ul>
  <li>The Maximize, Minimize and Close buttons don’t animate on Windows XP. </li>

  <li>Resizing a control-heavy form feels very laggy because everything is being double-buffered. 
    <br /></li>
</ul>

<p>The trick to fix both issues, it turns out, is the same, though very hacky.  The idea is to turn off the <em><strong>WS_EX_COMPOSITED</strong></em> flag right after the form is loaded and thus turning the form-level double-buffering off. So replace the above code with the following:</p>

<div class="csharpcode">
  <pre class="alt"><span class="kwrd">int</span> originalExStyle = -1;</pre>

  <pre><span class="kwrd">bool</span> enableFormLevelDoubleBuffering = <span class="kwrd">true</span>;</pre>

  <pre class="alt"> </pre>

  <pre><span class="kwrd">protected</span> <span class="kwrd">override</span> CreateParams CreateParams</pre>

  <pre class="alt">{</pre>

  <pre>    get</pre>

  <pre class="alt">    {</pre>

  <pre>        <span class="kwrd">if</span> (originalExStyle == -1)</pre>

  <pre class="alt">            originalExStyle = <span class="kwrd">base</span>.CreateParams.ExStyle;</pre>

  <pre> </pre>

  <pre class="alt">        CreateParams cp = <span class="kwrd">base</span>.CreateParams;</pre>

  <pre>        <span class="kwrd">if</span> (enableFormLevelDoubleBuffering)</pre>

  <pre class="alt">            cp.ExStyle |= 0x02000000;   <span class="rem">// WS_EX_COMPOSITED</span></pre>

  <pre>        <span class="kwrd">else</span></pre>

  <pre class="alt">            cp.ExStyle = originalExStyle;</pre>

  <pre> </pre>

  <pre class="alt">        <span class="kwrd">return</span> cp;</pre>

  <pre>    }</pre>

  <pre class="alt">} </pre>
</div>
<style type="text/css"><![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]></style>

<p> </p>

<p>So the pieces are in place: when <em>enableFormLevelDoubleBuffering</em> is set to false, we’ll have to get the <em>System.Windows.Forms.Form</em> object to call the <em>CreateParams</em> method and, in doing so, reset the ExStyle flag.  But how can we get the app to call <em>CreateParams</em>?  </p>

<p>For reasons I don’t know, simply calling the following does the trick:</p>

<div class="csharpcode">
  <pre class="alt"><span class="kwrd">this</span>.MaximizeBox = <span class="kwrd">true</span>;</pre>
</div>
<style type="text/css"><![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]></style>

<p>
  <br />Yes, did I mention, it was hacky?  So let’s create a method that does all the work:</p>

<div class="csharpcode">
  <pre class="alt"><span class="kwrd">private</span> <span class="kwrd">void</span> TurnOffFormLevelDoubleBuffering()</pre>

  <pre>{</pre>

  <pre class="alt">    enableFormLevelDoubleBuffering = <span class="kwrd">false</span>;</pre>

  <pre>    <span class="kwrd">this</span>.MaximizeBox = <span class="kwrd">true</span>;</pre>

  <pre class="alt">}</pre>
</div>
<style type="text/css"><![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]></style>

<p>
  <br />And we should call this method after the form has loaded in the Shown event:</p>

<div class="csharpcode">
  <pre class="alt"><span class="kwrd">private</span> <span class="kwrd">void</span> frmMain_Shown(<span class="kwrd">object</span> sender, EventArgs e)</pre>

  <pre>{</pre>

  <pre class="alt">    TurnOffFormLevelDoubleBuffering();</pre>

  <pre>}</pre>
</div>
<style type="text/css"><![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]></style>

<p />

<p />

<p />

<p />

<p />

<p>And that’s how we roll.</p><img src="http://angryhacker.com/blog/aggbug/54.aspx" width="1" height="1" />]]></description>
   <dc:creator>Angry Hacker</dc:creator>
   <dc:date>7/21/2010 5:27:49 PM</dc:date>
  </item>
  <item>
   <title><![CDATA[Introducing… Dynamo – A Scriptable DotNetNuke module]]></title>
   <link>http://weblogs.asp.net/rchartier/archive/2010/07/21/introducing-dynamo-a-scriptable-dotnetnuke-module.aspx</link>
   <description><![CDATA[<h4>Introduction</h4> <p>Imagine, for a second, you have a server sided JavaScript interpreter built right into a Content Management System. It should have full access to the entire Server sided API’s, depending on security requirements of course. You could literally treat source code as content. That is what this post is about.</p> <p>If you have ever created a module for DotNetNuke you probably have spent (wasted) countless hours mucking around with Visual Studio, IIS, the file system, packaging, deploying, etc. It didn’t matter if they were the most complex modules, or a simple Hello World module. In the end you probably have come to the conclusion that there just has to be an easier way of doing this.</p> <p>Enter Dynamo.. (Sorry for the lame name…)</p> <p>Essentially Dynamo is a <a href="http://dotnetnuke.codeplex.com/" mce_href="http://dotnetnuke.codeplex.com/">DotNetNuke Module</a> which uses <a href="http://jint.codeplex.com/" mce_href="http://jint.codeplex.com/">Jint</a> under the covers.</p> <p>Dynamo allows you to completely skip Visual Studio, the debugger, IIS, deployment, packaging, etc... Install this single module and open your DNN installation to the world of dynamic language interpretation.</p> <p>Since DotNetNuke is a content management system, Dynamo brings your source code directly into the DNN UI. It allows you to create code, on the fly, and manage that code within DNN itself.</p> <p>A screenshot might help clarify…</p> <p><a href="http://weblogs.asp.net/blogs/rchartier/WindowsLiveWriter/IntroducingDynamoAScriptableDotNetNukemo_9328/image_2.png" mce_href="http://weblogs.asp.net/blogs/rchartier/WindowsLiveWriter/IntroducingDynamoAScriptableDotNetNukemo_9328/image_2.png"><img src="http://weblogs.asp.net/blogs/rchartier/WindowsLiveWriter/IntroducingDynamoAScriptableDotNetNukemo_9328/image_thumb.png" style="border-width: 0px; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/rchartier/WindowsLiveWriter/IntroducingDynamoAScriptableDotNetNukemo_9328/image_thumb.png" border="0" height="576" width="628"></a> </p> <p>As you might not be able to interpret from the above screen shot, this is a server sided scripting language built right into DotNetNuke. In the Scripting Window you edit your script and either Preview or Save it. Notice the fancy syntax highlighting, just no intellisense. When viewing the module it will interpret and render the script at the server side. So the above example produces:</p> <p><a href="http://weblogs.asp.net/blogs/rchartier/WindowsLiveWriter/IntroducingDynamoAScriptableDotNetNukemo_9328/image_4.png" mce_href="http://weblogs.asp.net/blogs/rchartier/WindowsLiveWriter/IntroducingDynamoAScriptableDotNetNukemo_9328/image_4.png"><img src="http://weblogs.asp.net/blogs/rchartier/WindowsLiveWriter/IntroducingDynamoAScriptableDotNetNukemo_9328/image_thumb_1.png" style="border-width: 0px; display: inline;" title="image" alt="image" mce_src="http://weblogs.asp.net/blogs/rchartier/WindowsLiveWriter/IntroducingDynamoAScriptableDotNetNukemo_9328/image_thumb_1.png" border="0" height="143" width="248"></a> </p> <p>&nbsp;</p> <p>The echo method will emit text to the output container directly. Anything return’ed out of the function will also get slapped into the output container automatically. So you can either use a StringBuilder to append up your content, or just echo content directly. Watch out for Page.Response.Write, it will emit the content at the top of the page; which is consistent with ASP.NET’s rendering.</p> <h4>Examples</h4> <p>Another real world example would be to reproduce (at a very rudimentary level) the Feedback Module which ships with DotNetNuke. Here is the code block:</p> <div class="csharpcode"><pre class="alt"><span class="lnum">   1:  </span>echo(<span class="str">"&lt;div valign='top'&gt;&lt;fieldset&gt;&lt;legend&gt;Provide Feedback&lt;/legend&gt;"</span>);</pre><pre><span class="lnum">   2:  </span>echo(<span class="str">"Your Email:&lt;br /&gt;&lt;input type='text' name='fromemail'&gt;&lt;br /&gt;"</span>);</pre><pre class="alt"><span class="lnum">   3:  </span>echo(<span class="str">"Subject:&lt;br /&gt;&lt;input type='text' name='subject'&gt;&lt;br /&gt;"</span>);</pre><pre><span class="lnum">   4:  </span>echo(<span class="str">"Body:&lt;br /&gt;&lt;textarea name='body' rows='10' cols='50'&gt;&lt;/textarea&gt;&lt;br /&gt;"</span>);</pre><pre class="alt"><span class="lnum">   5:  </span>echo(<span class="str">"&lt;input type='submit' value='Send Feedback'&gt;&lt;br /&gt;"</span>);</pre><pre><span class="lnum">   6:  </span>echo(<span class="str">"&lt;/fieldset&gt;&lt;/div&gt;"</span>);</pre><pre>&nbsp;</pre><pre class="alt"><span class="lnum">   7:  </span><span class="kwrd">if</span>(Page.IsPostBack) {</pre><pre><span class="lnum">   8:  </span><span class="kwrd">var</span> fromemail = get(<span class="str">"fromemail"</span>);</pre><pre class="alt"><span class="lnum">   9:  </span><span class="kwrd">var</span> subject = get(<span class="str">"subject"</span>);</pre><pre><span class="lnum">  10:  </span><span class="kwrd">var</span> body= get(<span class="str">"body"</span>);</pre><pre class="alt"><span class="lnum">  11:  </span><span class="kwrd">if</span>(fromemail!=<span class="str">""</span> &amp;&amp; subject!=<span class="str">""</span> &amp;&amp; body!=<span class="str">""</span>) </pre><pre><span class="lnum">  12:  </span><span class="kwrd">return</span> DotNetNuke.Services.Mail.Mail.SendMail(fromemail, <span class="str">"toemail@localhost"</span>, <span class="str">""</span>, subject, body, <span class="str">""</span>, <span class="str">""</span>, <span class="str">""</span>, <span class="str">""</span>, <span class="str">""</span>, <span class="str">""</span>);</pre><pre class="alt"><span class="lnum">  13:  </span><span class="kwrd">else</span></pre><pre><span class="lnum">  14:  </span><span class="kwrd">return</span> <span class="str">""</span></pre><pre class="alt"><span class="lnum">  15:  </span>}</pre><pre><span class="lnum">  16:  </span><span class="kwrd">else</span> {</pre><pre class="alt"><span class="lnum">  17:  </span><span class="kwrd">return</span> <span class="str">""</span>;</pre><pre><span class="lnum">  18:  </span>}</pre></div>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>

<p>&nbsp;</p>
<p>So you should first notice that Dynamo does not support context switching between plain HTML and Code Blocks. Everything is a code block. If you want to emit HTML, you must do something like:</p><pre class="csharpcode">echo(<span class="str">"&lt;div valign='top'&gt;&lt;fieldset&gt;&lt;legend&gt;Provide Feedback&lt;/legend&gt;"</span>);</pre>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>

<p>Mixing HTML and code is a nice-to-have in the ole product roadmap for the project.</p>
<p>Next you will notice the code itself is a slight mix with JavaScript syntax and .NET Types. The <a href="http://jint.codeplex.com/" mce_href="http://jint.codeplex.com/">interpreter</a> has the ability to mix each and interpret it accordingly. This also includes being able to call into the DotNetNuke API library as well. It’s important to note that we are using an interpreter and NOT using Reflection.Emit(). Thus we are just fine within Medium Trust.</p>
<p>What else can Dynamo do? Here is a short list of tested scenarios:</p>
<ol>
<li>Consumes RSS Feeds (uses RSS.NET)</li>
<li>Full Database CRUD</li>
<li>Full Access to the DNN API, including but not limited to Portals/Tabs, Modules, Users, etc..</li>
<li>Emitting custom JavaScript and CSS (into the Head tag, or CSS inline)</li>
<li>Detecting PostBack’s</li>
<li>File I/O</li>
<li>Rendering files (into the interpreter, and getting the results)</li>
<li>Twitter Timeline</li>
<li>Page caching</li></ol>
<p>Your options you have are literally limitless.</p>
<h4>Debugging</h4>
<p>Since DotNetNuke is Web Based it would be extremely hard difficult to get stuff like intellisense and full step by step debugging working. I don’t have the time right now, but you never know with a future version of the product.</p>
<p>For now, I have the ability to “Show Debugger Details”, in the Edit Script control, when you hit Preview. It literally will emit debug information at each step of the code as it interprets it. I did a simple dump of the Current Statement and the locals available. </p>
<p>With that said I don’t block any exceptions and do bubble them up to the UI, so if you do have issues they will very obvious.</p>
<h4>Source Code Versioning </h4>
<p>Most professional software developers do use some sort of Source Control software. Right now the tool does NOT have anything built in to help with this. I would love to add this at the very least to the product backlog. Eventually I would love to get to it…</p>
<h4>Security</h4>
<p>The source code itself contains the line of code which completely disabled all security validations. You can do some serious damage with this. If this bothers you, you should do one of two things:</p>
<p>1. Find the line: JintEngine.DisableSecurity(); Remove it, recompile and redeploy to your server</p>
<p>2. Don’t use this package version in production.</p>
<h4>Getting started</h4>
<p>There are two methods for you to get started; the easiest method would be to use the <a href="http://dnnlabs.codeplex.com/releases/view/49383#DownloadId=136628" mce_href="http://dnnlabs.codeplex.com/releases/view/49383#DownloadId=136628" target="_blank">prepackaged module installation file here.</a> Download it, and install it into your Development DNN Installation site. The module’s name is “Dynamo” and should be available for you to drop on a page.</p>
<p>The more difficult method would be to <a href="http://dnnlabs.codeplex.com/SourceControl/list/changesets" mce_href="http://dnnlabs.codeplex.com/SourceControl/list/changesets">grab the source code,</a> and compile it. This would be the method you would need to take in order to re-enable the Security (See the Security section above). This is what I use when building/testing the module itself. So if you need to make other fundamental changes you will need to do this as well.</p>
<p>I would recommend you reset your references to the DotNetNuke specific DLL’s out of your actual bin folder for DotNetNuke. Once you have it building, I personally just use xcopy deployment to the website’s bin and DesktopModules folder and refresh the browser. Debugging can easily be done by setting the breakpoint and attaching VS.NET to w3wp.exe. </p><img src="http://weblogs.asp.net/aggbug.aspx?PostID=7570730" width="1" height="1">]]></description>
   <dc:creator>Rob Chartier</dc:creator>
   <dc:date>7/21/2010 11:05:10 AM</dc:date>
  </item>
  <item>
   <title><![CDATA[Microsoft releases Visual Studio Scrum 1.0 process template]]></title>
   <link>http://msmvps.com/blogs/vstsblog/archive/2010/07/21/microsoft-releases-visual-studio-scrum-1-0-process-template.aspx</link>
   <description><![CDATA[<p><img style="display:inline;" alt="Scrum" align="right" src="http://i.msdn.microsoft.com/dynimg/IC365683.png" width="280" height="196" /></p>  <p>As announced <a href="http://blogs.msdn.com/b/aaronbjork/archive/2010/07/19/announcing-microsoft-visual-studio-scrum-1-0.aspx" target="_blank">here</a>. From the description:</p>  <blockquote>   <p>This template includes:</p>    <ul>     <li>Work Item Types        <ul>         <li>Sprint </li>          <li>Product Backlog Item </li>          <li>Bug </li>          <li>Task </li>          <li>Impediment </li>          <li>Test Case </li>       </ul>     </li>      <li>Reports        <ul>         <li>Release Burndown </li>          <li>Velocity </li>          <li>Sprint Burndown </li>          <li>Build Success Over Time </li>          <li>Build Summary </li>          <li>Test Case Readiness </li>          <li>Test Plan Progress </li>       </ul>     </li>      <li>SharePoint Project Portal </li>   </ul> </blockquote>  <p>Below are screenshots of the Sprint Burndown and Release Burndown reports included with the template.</p>  <p><img alt="" src="http://i2.visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e/image/file/29441/0/sprint%20burndown.jpg" width="260" height="215" /><img alt="" src="http://i2.visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e/image/file/29442/0/release%20burndown.jpg" width="238" height="218" /></p>  <ul>   <li><a href="http://visualstudiogallery.msdn.microsoft.com/en-us/59ac03e3-df99-4776-be39-1917cbfc5d8e" target="_blank">Download Process Template</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/ff731587.aspx" target="_blank">Online Documentation</a> </li> </ul>  <p>(All images in this blog post: Copyright by Microsoft Corp.)    </p><div style="clear:both;"></div><img src="http://msmvps.com/aggbug.aspx?PostID=1774471" width="1" height="1">]]></description>
   <dc:creator>VSTSBlog (by Neno Loje)</dc:creator>
   <dc:date>7/21/2010 9:56:15 AM</dc:date>
  </item>
 </channel>
</rss>