<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Technical Overviews</title>
        <link>http://geekswithblogs.net/coredump/category/7359.aspx</link>
        <description>Technical Overviews</description>
        <language>en-US</language>
        <copyright>Russell Ball</copyright>
        <managingEditor>rt_ball@yahoo.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Boo: Not as Scary as it Sounds</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/08/07/114461.aspx</link>
            <description>&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;img width="100" vspace="10" hspace="10" height="122" border="0" align="left" src="http://farm2.static.flickr.com/1005/1039802846_e542b68dfb.jpg?v=0" alt="" /&gt;I'm a little bit tired today because I stayed up late the last couple of nights working my way through the &lt;a href="http://boo.codehaus.org/Boo+Primer"&gt;Boo Primer&lt;/a&gt; on codehaus. I think I first heard about this relatively young (2003), open source .NET language through various posts by Ayende and Hanselman. I was intrigued by the some of the adjectives that I commonly heard in relation to this language such as 'beautiful' and 'wrist-friendly', so I incorporated learning Boo into my &lt;a href="http://geekswithblogs.net/coredump/archive/2007/07/15/113943.aspx"&gt;6 Month Roadmap&lt;/a&gt; to becoming a better developer. If nothing else, I just really like looking at the project's stellar green ghost logo that reminds me of a Pac-Man ghost and makes me smile every time I load up the project home page.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;Since Boo is built upon the Common Language Infrastructure, it is really not that much of a stretch for .NET developer to start using it, especially since the majority of programming in .NET these days involves using the base class library which is accessible from any CLI language. You'll be even more comfortable with Boo if you've ever played around with Python. Although Boo is officially described as a mixture of Python, C#, and Ruby, the extremely bare bones syntax (hence the adjective ‘wrist-friendly’) most closely resembles Python. &lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;Probably the easiest way to get started with Boo is to install &lt;a href="http://sourceforge.net/projects/sharpdevelop"&gt;SharpDevelop&lt;/a&gt;, an open source IDE for .NET. Have no fear; this is not like the typical multi-hour Visual Studio installation process. Despite being very close in functionality to Visual Studio, it only takes a few minutes to install. In fact, due to its incredibly quick start up time, I think I'm going to use this environment for quick proof of concept code instead of Visual Studio from now on. It has built-in support for Boo, so all you have to do to get a hello world running in Boo is create a new Boo console project and hit f5. Then you can get all the debugging goodness that you’re used to when working with VB.Net or C#.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;If you prefer the command line, however, you can get up and running even quicker by &lt;a href="http://dist.codehaus.org/boo/distributions/?C=M;O=D"&gt;downloading&lt;/a&gt; the compiler (booc.exe) and associated dll's from the project homepage and setting your machine's environmental path variable to the Boo bin directory. It comes with a nifty command line utility called Booish that provides real time execution environment so that you can test boo syntax without having to compile code first.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;I haven't had a chance to make up my mind on the aesthetics yet, but it was very nice to have such an easy time getting started and it has definitely been very refreshing to learn something completely new without any expectation that I will somehow use it at work. I think it put a little more fun back into programming.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114461"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114461" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/114461.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/08/07/114461.aspx</guid>
            <pubDate>Tue, 07 Aug 2007 18:14:43 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/114461.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/08/07/114461.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/114461.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/114461.aspx</trackback:ping>
        </item>
        <item>
            <title>Powershell from 50,000 feet</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/07/03/113652.aspx</link>
            <description>&lt;p&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;I've been spelunking Powershell lately with Bruce Payette's excellent book, &lt;a href="http://www.manning.com/payette/"&gt;&lt;span style="color: blue;"&gt;Powershell in Action&lt;/span&gt;&lt;/a&gt;, and thought I would take a step back from some of the lower level nuances, such as dynamic type conversion and parameter binding rules, and organize my thoughts at a higher level.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;strong&gt;What is Powershell? -&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; It is the new command line/scripting environment from Microsoft that replaces cmd.exe and WSH. You can install it as a small, free &lt;a href="http://www.microsoft.com/technet/scriptcenter/topics/msh/download.mspx"&gt;OS update&lt;/a&gt; on Windows XP, Windows 2003, and Vista as long as you have the 2.0 framework installed.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;strong&gt;Why is it Significant?&lt;/strong&gt; - &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Microsoft has traditionally been focused much more on the GUI portion of the OS, which made creating administrative tasks much more difficult in Windows than it typically is from non-MS shells like Bash. This new version of the shell not only addresses these shortcomings in functionality, but significantly raises the bar for other shells by being object-based rather than string based. This eliminates most of the text parsing craziness that is usually required in order to consume command line output. Powershell also achieves an enormous amount of functional coverage by exposing&lt;/span&gt;&lt;font face="Arial"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Segoe UI&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; all of the major MS API's, including XML, .NET,COM, ADO, WMI, and ADSI.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;strong&gt;Some Basic Concepts&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul type="disc"&gt;
    &lt;li class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;strong&gt;Cmdlets&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; - Commands that follow the verb-noun pattern, such as &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Get-Process&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; or &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Get-Date&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;. These are actually .net classes that inherit from the base Cmdlet class and can take traditional switches or parameters with arguments. The environment comes with a number of great built in commands, but you can supplement these by installing the &lt;a href="http://www.codeplex.com/PowerShellCX/Release/ProjectReleases.aspx?ReleaseId=2688"&gt;Powershell Community Extensions from Codeplex&lt;/a&gt; or creating your own that will get automatically loaded into the environment when the shell opens. You can view the cmdlets available on your system by calling Get-Command and then using Get-Help to find out more information about a particular cmdlet.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;font size="2"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;strong&gt;Pipeline&lt;/strong&gt; - &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;The pipe operator ( | ) allows you to chain together commands in a very concise way by taking the output from the command on the left side of the pipe operator and feeding it as input to the command on the right-side of the operator. This is where the object based paradigm really shines because it allows you to access specific information in the pipeline through properties instead of regular expressions and hard-coded column indexes.&lt;/span&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/li&gt;
    &lt;li class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;strong&gt;Expansive Syntax&lt;/strong&gt;- Powershell makes extensive use of aliases and pattern matching to ease the transition from cmd.exe and to allow for the terse, write-only experience from the command line that maximizes productivity when producing throw away code. For example, you can use the familiar dir instead of Get-Children when navigating the file system or the shortened alias gps instead of Get-Process when retrieving processes. You can get a list of built-in aliases using Get-Alias and even create your own using Set-Alias.&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;strong&gt;Provider Stores&lt;/strong&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;- These expose various data stores such as the registry, certs, and environmental variables as drives, thus allowing you to navigate a registry hive by simply typing cd hklm:&lt;/span&gt;&lt;font size="2"&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; Open source projects have been created to expose VSS, SQL, and Exchange as providers. Use Get-PSDrive to enumerate the available drives.&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;strong&gt;A Quick Sample Script&lt;/strong&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;(Query top 5 CPU consuming process&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;font size="2"&gt; on a machine)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right: 0px;"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;em&gt;get-process | sort-object -desc CPU | select-object -first 5 processName, cpu | format-table -auto&lt;/em&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;strong&gt;Now a little more concisely with aliases&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote dir="ltr" style="margin-right: 0px;"&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;em&gt;gps | sort -desc CPU | select -first 5 processName, cpu | ft -auto&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;If you want a good 20 minute introduction to the topic, I recommend listening to this old &lt;a href="http://www.hanselminutes.com/default.aspx?showID=12"&gt;HanselMinutes podcast&lt;/a&gt;. It's over a year old, so the podcast uses the old code-name Monad, but it provides a great high level overview. If you enjoy it, check out later episodes where he interviews &lt;a href="http://www.hanselminutes.com/default.aspx?showID=64"&gt;Bruce Payette&lt;/a&gt;, the dev lead on the Powershell team, and &lt;a href="http://www.hanselminutes.com/default.aspx?showID=47"&gt;Jeffrey Snover&lt;/a&gt;, the architect.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113652"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113652" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/113652.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/07/03/113652.aspx</guid>
            <pubDate>Tue, 03 Jul 2007 18:23:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/113652.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/07/03/113652.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/113652.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/113652.aspx</trackback:ping>
        </item>
    </channel>
</rss>