<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1745988021575354825</id><updated>2026-02-23T06:54:55.052-05:00</updated><category term="Development"/><category term="Microsoft"/><category term="Geek"/><category term="CodeMash"/><category term="Conferences"/><category term="Google"/><category term="Open Source"/><category term="Funny"/><category term="Blogging"/><category term="CodeToLive"/><category term="Humor"/><category term="Technorati"/><category term=".NET"/><category term="Apple"/><category term="CES"/><category term="Christmas"/><category term="Events"/><category term="Fatherhood"/><category term="Husbandhood"/><category term="IronRuby"/><category term="Politics"/><category term="Programming"/><category term="SQL"/><category term="Social Web"/><category term="Wikipedia"/><category term="Xbox360"/><category term="2008"/><category term="Astroturf"/><category term="Games"/><category term="General"/><category term="NASCAR"/><category term="QuickStart"/><category term="Ruby"/><category term="Scoble"/><category term="Superheroes"/><category term="TechCrunch"/><category term="Tutorial"/><category term="Twitter"/><category term="Utilities"/><category term="Video"/><category term="Work"/><category term="YouTube"/><category term="iPhone"/><category term="2007"/><category term="24"/><category term="8wishes"/><category term="Access"/><category term="Administration"/><category term="Adobe"/><category term="Ann Arbor"/><category term="ArcReady"/><category term="Architecture"/><category term="Arrington"/><category term="Blog Wars"/><category term="Blogger"/><category term="BlueJ"/><category term="Bush"/><category term="C#"/><category term="CSharp"/><category term="Carlos Mencia"/><category term="Charity"/><category term="Cleveland"/><category term="Clinton"/><category term="Closed Source"/><category term="CodeBetter"/><category term="Community"/><category term="DLR"/><category term="Dale Jr"/><category term="Day of DotNet"/><category term="Daytona 500"/><category term="Dell"/><category term="Design"/><category term="Digg"/><category term="DoDN"/><category term="Election"/><category term="Email"/><category term="Engadget"/><category term="Entertainment"/><category term="Example"/><category term="FeedBurner"/><category term="FeedFlare Unit"/><category term="FeedFlareUnit"/><category term="Food"/><category term="Ford"/><category term="Fox"/><category term="Fun"/><category term="GMAFB"/><category term="GMAiL.pl"/><category term="GMail"/><category term="Gizmodo"/><category term="Hardware"/><category term="Havidol"/><category term="Infield Parking"/><category term="IronLogo"/><category term="James Avery"/><category term="Jim Holmes"/><category term="Joe Rogan"/><category term="John Edwards"/><category term="Jolt"/><category term="Kevin Harvick"/><category term="Keynotes"/><category term="Leaderboard"/><category term="Linux"/><category term="MLK"/><category term="MMORadio"/><category term="Mark Martin"/><category term="Mark Russinovich"/><category term="Mobile"/><category term="Music"/><category term="MySpace"/><category term="Nerd"/><category term="New Years"/><category term="North East Ohio"/><category term="ODF"/><category term="OOXML"/><category term="Obasanjo"/><category term="Office"/><category term="Ohio"/><category term="Palm"/><category term="Patents"/><category term="Pictures"/><category term="PodTech"/><category term="PopFly"/><category term="Professional"/><category term="RandomTweets"/><category term="Ruby.NET"/><category term="ScottGu"/><category term="Selfish Causes"/><category term="Software Piracy"/><category term="Sync"/><category term="Sysinternals"/><category term="TSQL"/><category term="TV"/><category term="Tafiti"/><category term="Techmeme"/><category term="Tips"/><category term="UMPC"/><category term="Video Games"/><category term="Vista"/><category term="Web2.0"/><category term="Wikiasari"/><category term="WinDevPowerTools"/><category term="Zephyr"/><category term="Zune"/><category term="xkcd"/><title type='text'>Michael.NET</title><subtitle type='html'>Ramblings of a father/programmer.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default?start-index=26&amp;max-results=25'/><author><name>Michael Letterle</name><uri>http://www.blogger.com/profile/05005926748849149616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://groups.google.com/groups/profile/img?r=enfocus%3A%2F%2FXG6NEy8AAAA7e-nhmlPxHzpH27kdtCOv_GQ1km9RuaFOicH0AV9FF4U9XEDHbyq35VhY5VJrH1I&amp;w=50&amp;h=50'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>100</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-1252177942208926196</id><published>2008-03-14T07:51:00.001-05:00</published><updated>2008-03-14T07:51:23.440-05:00</updated><title type='text'>Time to update your feed..</title><content type='html'>&lt;p&gt;I&#39;m closing down the Michael.NET feed, be sure to subscribe to the new one at &lt;a href=&quot;http://feeds.feedburner.com/theprokrammer&quot;&gt;The Prokrammer&lt;/a&gt;!&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/1252177942208926196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/1252177942208926196?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/1252177942208926196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/1252177942208926196'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2008/03/time-to-update-your-feed.html' title='Time to update your feed..'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-7522974767119027218</id><published>2008-03-04T22:23:00.001-05:00</published><updated>2008-03-04T22:23:26.321-05:00</updated><title type='text'>Closing time....</title><content type='html'>&lt;p&gt;Hey gang, I&#39;ve decided to move off of blogspot and go to a self hosted solution... come on over to &lt;a href=&quot;http://blog.prokrams.com&quot;&gt;The Prokrammer&lt;/a&gt; and follow me on my coding adventures!&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/7522974767119027218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/7522974767119027218?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/7522974767119027218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/7522974767119027218'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2008/03/closing-time.html' title='Closing time....'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-3710929133903001291</id><published>2008-02-21T11:26:00.001-05:00</published><updated>2008-02-21T11:26:19.811-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><title type='text'>A New Day Dawns...</title><content type='html'>&lt;p&gt;Microsoft is &lt;a href=&quot;http://www.theregister.co.uk/2008/02/21/microsoft_api_open/&quot;&gt;releasing the majority of their API&lt;/a&gt; and &lt;a href=&quot;http://www.news.com/8301-13860_3-9876029-56.html?tag=nefd.lede&quot;&gt;promising not to sue OpenSource&lt;/a&gt; for interoperability.&amp;#160; It&#39;s brought of a &amp;quot;broad interoperability strategy&amp;quot;.&lt;/p&gt;  &lt;p&gt;All I can say is.&amp;#160; Wow.&amp;#160; If this is even half of what comes from all of this, Microsoft is no longer the one we all knew, real changes are being effected from inside.&amp;#160; Once I see the full details, I&#39;ll post more complete thoughts. Details on the conference call &lt;a href=&quot;http://www.microsoft.com/presspass/press/2008/feb08/02-21NewsConferenceMA.mspx?rss_fdn=Press%20Releases&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/3710929133903001291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/3710929133903001291?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/3710929133903001291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/3710929133903001291'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2008/02/new-day-dawns.html' title='A New Day Dawns...'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-6145286866508586203</id><published>2008-02-06T21:04:00.001-05:00</published><updated>2008-02-06T21:04:58.628-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IronRuby"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby.NET"/><title type='text'>The Grass May Not Be Greener Yet, But The Soil Is More Fertile</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The &lt;a href=&quot;http://sky.fit.qut.edu.au/~kellyw/&quot;&gt;founder&lt;/a&gt; of the &lt;a href=&quot;http://rubydotnet.googlegroups.com/web/Home.htm&quot;&gt;Ruby.NET&lt;/a&gt; project &lt;a href=&quot;http://groups.google.com/group/RubyDOTNET/browse_thread/thread/1752830c857620b0&quot;&gt;announced&lt;/a&gt; yesterday that he is leaving active development of that project and moving over to fully supporting the &lt;a href=&quot;http://www.ironruby.com/&quot;&gt;IronRuby&lt;/a&gt; effort.&amp;#160; Based on everything I&#39;ve heard about Dr. Kelly and Ruby.NET, this is fantastic news.&amp;#160; Hopefully this will spurn even more activity on the &lt;a href=&quot;http://rubyforge.org/projects/ironruby/&quot;&gt;IronRuby project&lt;/a&gt;.&amp;#160; Some of the important quotes from his post are:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&amp;quot;I&#39;ve come to the conclusion that the DLR is clearly here to stay - it&#39;s becoming an even more important part of the Microsoft platform.&amp;quot;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&amp;quot;I now believe that IronRuby is more likely to succeed as a production quality implementation of Ruby on the .NET platform.&amp;quot;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That&#39;s quite an endorsement.&amp;#160; I have a feeling the next year or so will be the year of the DLR, we&#39;ll begin seeing it&#39;s API solidify with more and more languages being implemented on it.&lt;/p&gt;  &lt;p&gt;That all said, IronRuby still has one major roadblock.&amp;#160; That is the perception of it&#39;s corporate sponsor.&amp;#160; I had another dev tell me this today:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&amp;quot;Well, ironruby is mostly being&amp;#160; developed inside Microsoft, so almost everyone that talks about&amp;#160; ironruby dev day-to-day does so on&amp;#160; MS-internal mailing lists. &amp;quot;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href=&quot;http://www.iunknown.com/&quot;&gt;John Lam&lt;/a&gt; say it ain&#39;t so...&lt;/p&gt;  &lt;p&gt;The &lt;a href=&quot;http://www.rubyforge.org/pipermail/ironruby-core/&quot;&gt;ironruby-core mailing list&lt;/a&gt; is fairly active, and the &lt;a href=&quot;http://michaeldotnet.blogspot.com/2007/10/two-microsoft-licenses-now-osi-approved.html&quot;&gt;MS-PL is OSI approved&lt;/a&gt;.&amp;#160; Yet, Microsoft &lt;em&gt;has&lt;/em&gt; to &lt;strong&gt;actively&lt;/strong&gt; be promoting these things, otherwise the outside perception will not change and IronRuby will be the less for it I fear.&lt;/p&gt;  &lt;p&gt;What IronRuby needs more than anything right now is a large group of outside contributors, so come on down and get coding, testing, and documenting!&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/6145286866508586203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/6145286866508586203?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/6145286866508586203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/6145286866508586203'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2008/02/grass-may-not-be-greener-yet-but-soil.html' title='The Grass May Not Be Greener Yet, But The Soil Is More Fertile'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-5699636572970122571</id><published>2008-01-31T09:06:00.001-05:00</published><updated>2008-01-31T09:06:07.275-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DLR"/><category scheme="http://www.blogger.com/atom/ns#" term="Example"/><category scheme="http://www.blogger.com/atom/ns#" term="IronLogo"/><category scheme="http://www.blogger.com/atom/ns#" term="IronRuby"/><category scheme="http://www.blogger.com/atom/ns#" term="QuickStart"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><title type='text'>(Semi) Practical IronRuby</title><content type='html'>&lt;p&gt;So you followed the &lt;a href=&quot;http://michaeldotnet.blogspot.com/2008/01/ironruby-quick-start.html&quot;&gt;quick start&lt;/a&gt; I posted earlier, and you&#39;re thinking &amp;quot;So what?&amp;#160; What good is IronRuby and DLR to me?&amp;quot;&amp;#160; The DLR provides an extensible, powerful way to add scripting capabilities to your application.&amp;#160; Let&#39;s take a look at how IronRuby and C# can really interact. We&#39;ll create an &amp;quot;IronLogo&amp;quot; application, consisting of a windows form we can draw on utilizing a simple DSL implemented in Ruby.&amp;#160; Commands can be loaded via a file or through a console.&lt;/p&gt;  &lt;p&gt;Our bulk of our application is actually going to be in C#, the details aren&#39;t important, but let&#39;s take a quick look at the class definition.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.google.com/michaeldotnet/R6HVyDc6xyI/AAAAAAAAACE/zh5bSj4ybFA/image4&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;256&quot; alt=&quot;image&quot; src=&quot;http://lh5.google.com/michaeldotnet/R6HVyTc6xzI/AAAAAAAAACM/FKNXDtaFNxs/image_thumb2&quot; width=&quot;367&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I&#39;ve hidden a lot of the cruft, but the important things here are the TurtlePoint property that holds a Point object of the turtle&#39;s current location, and the MoveTurtle method.&amp;#160; What we&#39;re going to want to do is take the current turtle&#39;s location and move some offset.&amp;#160; Of course we don&#39;t have to write some complicated command parser, so we&#39;re going to use IronRuby and the DLR to handle all the heavy lifting.&amp;#160; Let&#39;s take a quick look at the application&#39;s Main method:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style=&quot;font-size: 8pt; background: #1b1b1b; color: silver; font-family: courier new&quot;&gt;   &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #bbddff&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: #bbddff&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;Main&lt;/span&gt;()&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #46aa0c&quot;&gt;Application&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;EnableVisualStyles&lt;/span&gt;();&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #46aa0c&quot;&gt;Application&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;SetCompatibleTextRenderingDefault&lt;/span&gt;(&lt;span style=&quot;color: #bbddff&quot;&gt;false&lt;/span&gt;);&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #46aa0c&quot;&gt;LogoWindow&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;logowin&lt;/span&gt; = &lt;span style=&quot;color: #bbddff&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #46aa0c&quot;&gt;LogoWindow&lt;/span&gt;();&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #46aa0c&quot;&gt;IScriptEngine&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;ruby&lt;/span&gt; = &lt;span style=&quot;color: #46aa0c&quot;&gt;IronRuby&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;GetEngine&lt;/span&gt;(&lt;span style=&quot;color: #46aa0c&quot;&gt;IronRuby&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;CreateRuntime&lt;/span&gt;());&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #46aa0c&quot;&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: #46aa0c&quot;&gt;SymbolId&lt;/span&gt;, &lt;span style=&quot;color: #bbddff&quot;&gt;object&lt;/span&gt;&amp;gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;globalvars&lt;/span&gt; = &lt;span style=&quot;color: #46aa0c&quot;&gt;IronRuby&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;GetExecutionContext&lt;/span&gt;(&lt;span style=&quot;color: #a3a3a3&quot;&gt;ruby&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Runtime&lt;/span&gt;).&lt;span style=&quot;color: #a3a3a3&quot;&gt;GlobalVariables&lt;/span&gt;;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #a3a3a3&quot;&gt;globalvars&lt;/span&gt;[&lt;span style=&quot;color: #46aa0c&quot;&gt;SymbolTable&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;StringToId&lt;/span&gt;(&lt;span style=&quot;color: #fd7979&quot;&gt;&amp;quot;logowin&amp;quot;&lt;/span&gt;)] = &lt;span style=&quot;color: #a3a3a3&quot;&gt;logowin&lt;/span&gt;;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #46aa0c&quot;&gt;IScriptScope&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;IronLogoScope&lt;/span&gt; = &lt;span style=&quot;color: #a3a3a3&quot;&gt;ruby&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Runtime&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;CreateScope&lt;/span&gt;();&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #a3a3a3&quot;&gt;ruby&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Execute&lt;/span&gt;(&lt;span style=&quot;color: #a3a3a3&quot;&gt;IronLogoScope&lt;/span&gt;, &lt;span style=&quot;color: #a3a3a3&quot;&gt;ruby&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;CreateScriptSourceFromString&lt;/span&gt;(&lt;span style=&quot;color: #a3a3a3&quot;&gt;Properties&lt;/span&gt;.&lt;span style=&quot;color: #46aa0c&quot;&gt;Resources&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;IronLogoRuby&lt;/span&gt;, &lt;span style=&quot;color: #46aa0c&quot;&gt;SourceCodeKind&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;File&lt;/span&gt;));&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #a3a3a3&quot;&gt;logowin&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;PassScopeAndEngine&lt;/span&gt;(&lt;span style=&quot;color: #a3a3a3&quot;&gt;IronLogoScope&lt;/span&gt;, &lt;span style=&quot;color: #a3a3a3&quot;&gt;ruby&lt;/span&gt;);&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #a3a3a3&quot;&gt;logowin&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;ShowDialog&lt;/span&gt;();&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can see a lot of the same stuff happening here as you did in the &lt;a href=&quot;http://michaeldotnet.blogspot.com/2008/01/ironruby-quick-start.html&quot;&gt;quick start&lt;/a&gt;, though there are some subtle differences.&amp;#160; First, if you look at line 11 you can see that we&#39;re actually assigning a global variable to the reference to our windows form.&amp;#160; That&#39;s right, our Ruby code will be able to access our Window form object directly, all though the magic of the DLR!&amp;#160; Also, on line 13, I create a scope using the Runtime property of the engine, this is important as this will create a scope that has references to the right engine, context, and so forth.&amp;#160; We learned from the quick start about the IScriptEngine.Execute command, but what are we running on line 15?&amp;#160; Why, it&#39;s an embedded text file that contains our ruby code that implements the DSL!&amp;#160; Would you believe it&#39;s only 15 lines?&amp;#160; See for yourself:&lt;/p&gt;  &lt;div style=&quot;font-size: 8pt; background: #1b1b1b; color: silver; font-family: courier new&quot;&gt;   &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt; def up(steps=1)&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $logowin.MoveTurtle($logowin.get_TurtlePoint.X, $logowin.get_TurtlePoint.Y - steps)&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt; end&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt; def dn(steps=1)&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $logowin.MoveTurtle($logowin.get_TurtlePoint.X, $logowin.get_TurtlePoint.Y + steps)&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt; end&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt; def rt(steps=1)&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $logowin.MoveTurtle($logowin.get_TurtlePoint.X + steps, $logowin.get_TurtlePoint.Y)&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 11&lt;/span&gt; end&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 13&lt;/span&gt; def lt(steps=1)&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $logowin.MoveTurtle($logowin.get_TurtlePoint.X - steps, $logowin.get_TurtlePoint.Y)&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 15&lt;/span&gt; end&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;   &lt;br /&gt;Here you can see we&#39;re defining four methods, they take a parameter called &amp;quot;steps&amp;quot; (which defaults to one) and then accesses the main form object through the global variable and calls the MoveTurtle method, as well as accessing the TurtlePoint method (remember that properties are really just syntactic sugar/metadata for method pairs, so we&#39;re actually calling the get method directly).&lt;/p&gt;  &lt;p&gt;The other bit of trickery in the Main method is on line 17, this is where I pass both my engine and the scope that the above Ruby script was executed in, to the LogoWindow form. &lt;/p&gt;  &lt;p&gt;Let&#39;s take a look at what we can do in the LogoWindow form since we have a reference to our scripting engine and scope.&amp;#160; Let&#39;s say we want to be able to load a script of our DSL and have the application run it.&amp;#160; Let&#39;s create a text file that looks like so:&lt;/p&gt;  &lt;p&gt;up 10    &lt;br /&gt;lt 10     &lt;br /&gt;dn 10     &lt;br /&gt;rt 10     &lt;br /&gt;dn 10&lt;/p&gt;  &lt;p&gt;As you can see, what it really consists of is just calls of the methods we defined above, let&#39;s see how we load such a file in the application:&lt;/p&gt;  &lt;div style=&quot;font-size: 8pt; background: #1b1b1b; color: silver; font-family: courier new&quot;&gt;   &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 147&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #bbddff&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #bbddff&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;applyIronLogoScriptToolStripMenuItem_Click&lt;/span&gt;(&lt;span style=&quot;color: #bbddff&quot;&gt;object&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;sender&lt;/span&gt;, &lt;span style=&quot;color: #46aa0c&quot;&gt;EventArgs&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;e&lt;/span&gt;)&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 148&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 149&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #46aa0c&quot;&gt;OpenFileDialog&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;ofd&lt;/span&gt; = &lt;span style=&quot;color: #bbddff&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #46aa0c&quot;&gt;OpenFileDialog&lt;/span&gt;();&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 150&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #a3a3a3&quot;&gt;ofd&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Filter&lt;/span&gt; = &lt;span style=&quot;color: #fd7979&quot;&gt;&amp;quot;IronLogo Files (*.ilogo)|*.ilogo|All Files (*.*)|*.*&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 151&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #a3a3a3&quot;&gt;ofd&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Title&lt;/span&gt; = &lt;span style=&quot;color: #fd7979&quot;&gt;&amp;quot;Apply An IronLogo File...&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 152&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #bbddff&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color: #a3a3a3&quot;&gt;ofd&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;ShowDialog&lt;/span&gt;() == &lt;span style=&quot;color: #46aa0c&quot;&gt;DialogResult&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;OK&lt;/span&gt;)&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 153&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 154&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #bbddff&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;scriptengine&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Execute&lt;/span&gt;(&lt;span style=&quot;color: #bbddff&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;scriptscope&lt;/span&gt;, &lt;span style=&quot;color: #bbddff&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;scriptengine&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;CreateScriptSourceFromFile&lt;/span&gt;(&lt;span style=&quot;color: #a3a3a3&quot;&gt;ofd&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;FileName&lt;/span&gt;));&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 155&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 156&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160; 157&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;   &lt;br /&gt;Thats.... it really.&amp;#160; See how simple that is?&amp;#160; Loading the file results in our methods being executed and our Turtle being moved:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.google.com/michaeldotnet/R6HVyzc6x0I/AAAAAAAAACU/yKo5avxT27w/image%5B3%5D&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;244&quot; alt=&quot;image&quot; src=&quot;http://lh4.google.com/michaeldotnet/R6HVzDc6x1I/AAAAAAAAACc/i5QvKLbW_cY/image_thumb&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Yay for the power of the DLR!&amp;#160; What if we want to be more interactive though?&amp;#160; We actually want to open a console and let people run the commands interactively.&amp;#160; No fear, with the DLR that&#39;s easy as well!&amp;#160; Since this is a Windows application first, we do need to import a couple of external Windows API funcitons, namely AllocConsole and FreeConsole.&amp;#160; Once we do that we can then create a console window and tell the DLR to open a Ruby console in it.&amp;#160; There&#39;s some Threading trickery going on that I&#39;ll spare you from, but the method for actually opening a console looks like this:&lt;/p&gt;  &lt;div style=&quot;font-size: 8pt; background: #1b1b1b; color: silver; font-family: courier new&quot;&gt;   &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #bbddff&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #bbddff&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;RunConsole&lt;/span&gt;()&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #bbddff&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color: #a3a3a3&quot;&gt;AllocConsole&lt;/span&gt;())&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #bbddff&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;consoleopen&lt;/span&gt; = &lt;span style=&quot;color: #bbddff&quot;&gt;true&lt;/span&gt;;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #a3a3a3&quot;&gt;Ruby&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Hosting&lt;/span&gt;.&lt;span style=&quot;color: #46aa0c&quot;&gt;RubyCommandLine&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;rubycommandline&lt;/span&gt; = &lt;span style=&quot;color: #bbddff&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #46aa0c&quot;&gt;RubyCommandLine&lt;/span&gt;(&lt;span style=&quot;color: #bbddff&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;Ruby&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Runtime&lt;/span&gt;.&lt;span style=&quot;color: #46aa0c&quot;&gt;RubyContext&lt;/span&gt;(&lt;span style=&quot;color: #46aa0c&quot;&gt;ScriptDomainManager&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;CurrentManager&lt;/span&gt;));&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #a3a3a3&quot;&gt;Microsoft&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Scripting&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Shell&lt;/span&gt;.&lt;span style=&quot;color: #46aa0c&quot;&gt;SuperConsole&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;superconsole&lt;/span&gt; = &lt;span style=&quot;color: #bbddff&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;Microsoft&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Scripting&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Shell&lt;/span&gt;.&lt;span style=&quot;color: #46aa0c&quot;&gt;SuperConsole&lt;/span&gt;(&lt;span style=&quot;color: #a3a3a3&quot;&gt;rubycommandline&lt;/span&gt;, &lt;span style=&quot;color: #bbddff&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;scriptengine&lt;/span&gt;, &lt;span style=&quot;color: #bbddff&quot;&gt;true&lt;/span&gt;);&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #a3a3a3&quot;&gt;rubycommandline&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Run&lt;/span&gt;(&lt;span style=&quot;color: #bbddff&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;scriptengine&lt;/span&gt;, &lt;span style=&quot;color: #a3a3a3&quot;&gt;superconsole&lt;/span&gt;, &lt;span style=&quot;color: #bbddff&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #a3a3a3&quot;&gt;Ruby&lt;/span&gt;.&lt;span style=&quot;color: #a3a3a3&quot;&gt;Hosting&lt;/span&gt;.&lt;span style=&quot;color: #46aa0c&quot;&gt;RubyConsoleOptions&lt;/span&gt;());&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: #45474e&quot;&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;11 lines of code...and the real heavy lifting is only done in three of them.&amp;#160; Wow.&amp;#160; All that work, done for us.&amp;#160; What you end up with after that is something that looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.google.com/michaeldotnet/R6HVzTc6x2I/AAAAAAAAACk/XPGpxgZ8tbY/image%5B8%5D&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;213&quot; alt=&quot;image&quot; src=&quot;http://lh6.google.com/michaeldotnet/R6HVzjc6x3I/AAAAAAAAACs/efAlgbRp46o/image_thumb%5B3%5D&quot; width=&quot;616&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Summary&lt;/h3&gt;  &lt;p&gt;There you have it, a simple implementation of LOGO as a DSL in Ruby, running on the DLR, interoperating with our C# code.&amp;#160; I&#39;ve uploaded the above application to &lt;a href=&quot;http://www.codeplex.com&quot;&gt;CodePlex&lt;/a&gt; for your enjoyment.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://www.codeplex.com/ironlogo&quot;&gt;IronLogo CodePlex Project&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/5699636572970122571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/5699636572970122571?isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/5699636572970122571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/5699636572970122571'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2008/01/semi-practical-ironruby.html' title='(Semi) Practical IronRuby'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-5354138924948610570</id><published>2008-01-28T09:25:00.001-05:00</published><updated>2008-01-28T09:30:37.089-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IronRuby"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="QuickStart"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial"/><title type='text'>IronRuby Quick Start</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://www.ironruby.com/&quot;&gt;IronRuby&lt;/a&gt; is &lt;a href=&quot;http://www.microsoft.com/&quot;&gt;Microsoft&#39;s&lt;/a&gt;, with collaboration by the &lt;a href=&quot;http://rubyforge.org/projects/ironruby&quot;&gt;public&lt;/a&gt;,  implementation of &lt;a href=&quot;http://www.ruby-lang.org/en/&quot;&gt;Ruby&lt;/a&gt; on their  &lt;a href=&quot;http://lh3.google.com/michaeldotnet/R53lszc6xsI/AAAAAAAAABQ/nFG0GhOkmzo/image8&quot;&gt;&lt;img style=&quot;border-width: 0px;&quot; alt=&quot;image&quot; src=&quot;http://lh4.google.com/michaeldotnet/R53ltDc6xtI/AAAAAAAAABc/sOCNFstpN80/image_thumb4&quot; align=&quot;right&quot; border=&quot;0&quot; height=&quot;113&quot; width=&quot;97&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://compilerlab.members.winisp.net/dlr-spec-hosting.pdf&quot;&gt;Dynamic Language Runtime&lt;/a&gt;.  There&#39;s another version of Ruby for .NET called, ironically, &lt;a href=&quot;http://rubydotnet.googlegroups.com/web/Home.htm&quot;&gt;Ruby.NET&lt;/a&gt; that runs directly on the CLR.  This post won&#39;t be about that though, if you want to see a comparison, look &lt;a href=&quot;http://www.oreillynet.com/windows/blog/2008/01/rubynet_vs_ironruby_whats_the.html&quot;&gt;here&lt;/a&gt; for a fairly good write up. &lt;/p&gt;  &lt;p&gt;Downloading IronRuby from the &lt;a href=&quot;http://rubyforge.org/scm/?group_id=4359&quot;&gt;SVN server&lt;/a&gt; and compiling in VS2005 was actually pretty painless.  But after that I couldn&#39;t find any, working, examples of getting an Ruby script running in the DLR.  A big part of this is due to IronRuby still being officially &quot;pre-Alpha&quot; with the Scripting Host API in flux.  Regardless, I hope this will be enough to get some people trying to use the latest SVN (rev. 75) up and running.&lt;/p&gt;  &lt;h3&gt;Building The Source&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;Download the latest revision from &lt;a href=&quot;http://rubyforge.org/scm/?group_id=4359&quot;&gt;RubyForge using SVN&lt;/a&gt;, if you need a client I HIGHLY recommend &lt;a href=&quot;http://tortoisesvn.org/&quot;&gt;TortiseSVN&lt;/a&gt;.  Once you&#39;re done downloading the source, you should be able to open the IronRuby.sln file in Visual Studio.  We only need to make one change, and that&#39;s to the Microsoft Scripting Project.   Bring up the project properties and go to the Build tab:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.google.com/michaeldotnet/R53ltzc6xuI/AAAAAAAAABk/Zhil_6qTYoA/image3&quot;&gt;&lt;img style=&quot;border-width: 0px;&quot; alt=&quot;image&quot; src=&quot;http://lh4.google.com/michaeldotnet/R53luDc6xvI/AAAAAAAAABs/wdBSYcRhyLE/image_thumb1&quot; border=&quot;0&quot; height=&quot;157&quot; width=&quot;546&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We have to remove the Conditional compilation symbol of &quot;SIGNED&quot;, otherwise the Scripting host will be looking for Microsoft signed copies of the IronRuby library, which we don&#39;t have.  After that go ahead and build the solution (cross your fingers if it makes you feel better).&lt;/p&gt;  &lt;p&gt;When all is done you should end up with a bin\Debug folder in your SVN root that looks something like this:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.google.com/michaeldotnet/R53lujc6xwI/AAAAAAAAAB0/4FDLIIu19tQ/image12&quot;&gt;&lt;img style=&quot;border-width: 0px;&quot; alt=&quot;image&quot; src=&quot;http://lh5.google.com/michaeldotnet/R53lvTc6xxI/AAAAAAAAAB8/6zX5i4oVvrg/image_thumb6&quot; border=&quot;0&quot; height=&quot;277&quot; width=&quot;290&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can go ahead and start rbx from right there and begin &lt;a href=&quot;http://www.ruby-lang.org/en/documentation/quickstart/&quot;&gt;playing with Ruby&lt;/a&gt; if you&#39;d like.  But if that&#39;s all we wanted to do we would have just downloaded Ruby, right?  This is IronRuby, let&#39;s do it the .NET Way!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt; &lt;strong&gt;   &lt;h3&gt;Hosting IronRuby in C#&lt;/h3&gt;&lt;/strong&gt;Create a new Console Application solution in Visual Studio, say RubyExample.  Add References to the Microsoft.Scripting.dll, IronRuby.dll, and IronRuby.Libraries.dll files.   &lt;p&gt;Let&#39;s begin with the most basic, a simple Hello World:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;Ruby;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;Ruby.Runtime;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;Microsoft.Scripting;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;Microsoft.Scripting.Hosting;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;namespace &lt;/span&gt;RubyExample&lt;br /&gt;{&lt;br /&gt;  &lt;span style=&quot;color:blue;&quot;&gt;static class &lt;/span&gt;&lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;Program&lt;br /&gt;  &lt;/span&gt;{&lt;br /&gt;      &lt;span style=&quot;color:gray;&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;      /// &lt;/span&gt;&lt;span style=&quot;color:green;&quot;&gt;The main entry point for the application.&lt;br /&gt;      &lt;/span&gt;&lt;span style=&quot;color:gray;&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;      &lt;/span&gt;[&lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;STAThread&lt;/span&gt;]&lt;br /&gt;      &lt;span style=&quot;color:blue;&quot;&gt;static void &lt;/span&gt;Main()&lt;br /&gt;      {&lt;br /&gt;         &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;IScriptEnvironment &lt;/span&gt;scriptenvironment = &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;ScriptEnvironment&lt;/span&gt;.GetEnvironment();&lt;br /&gt;         &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;IScriptEngine &lt;/span&gt;rubyengine = scriptenvironment.GetEngine(&lt;span style=&quot;color: rgb(163, 21, 21);&quot;&gt;&quot;ruby&quot;&lt;/span&gt;);&lt;br /&gt;         scriptenvironment.ExecuteSourceUnit(rubyengine.CreateScriptSourceFromString(&lt;span style=&quot;color: rgb(163, 21, 21);&quot;&gt;&quot;puts&#39;Hello World!&lt;br /&gt;         \nPress Any Key To Continue..&#39;&quot;&lt;/span&gt;) );&lt;br /&gt;         &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;Console&lt;/span&gt;.ReadKey();&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;Let&#39;s take a quick look at what we&#39;re doing here.  We&#39;re setting up a ScriptEnvironment, this is where our Dynamic languages are going to live and play.  Then out of that environment we&#39;re asking for someone who understands Ruby.  After that we&#39;re just saying, hey ScriptEnvironment, run what the Ruby guy says.&lt;/p&gt;So that&#39;s pretty nifty, we could also tell the RubyEngine to CreateScriptSourceFromFile and move whatever code we want out of a string constant.  Which is probably a good idea for anything beyond a line a two.  But what if we actually want to talk back and forth?  Let&#39;s move on to the next example.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Accessing Global Variables&lt;/h3&gt;The easiest way to pass data between IronRuby and C# is via Global Variables.  See below for an example.&lt;br /&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;Ruby;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;Ruby.Runtime;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;Microsoft.Scripting;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;using &lt;/span&gt;Microsoft.Scripting.Hosting;&lt;br /&gt;&lt;span style=&quot;color:blue;&quot;&gt;namespace &lt;/span&gt;RubyExample&lt;br /&gt;{&lt;br /&gt;  &lt;span style=&quot;color:blue;&quot;&gt;static class &lt;/span&gt;&lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;Program&lt;br /&gt;  &lt;/span&gt;{&lt;br /&gt;      &lt;span style=&quot;color:gray;&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;      /// &lt;/span&gt;&lt;span style=&quot;color:green;&quot;&gt;The main entry point for the application.&lt;br /&gt;      &lt;/span&gt;&lt;span style=&quot;color:gray;&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;      &lt;/span&gt;[&lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;STAThread&lt;/span&gt;]&lt;br /&gt;      &lt;span style=&quot;color:blue;&quot;&gt;static void &lt;/span&gt;Main()&lt;br /&gt;      {&lt;br /&gt;          &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;IScriptEngine &lt;/span&gt;rubyengine = &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;IronRuby&lt;/span&gt;.GetEngine(&lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;IronRuby&lt;/span&gt;.CreateRuntime());&lt;br /&gt;          &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;SymbolId&lt;/span&gt;, &lt;span style=&quot;color:blue;&quot;&gt;object&lt;/span&gt;&amp;gt; globalvars = &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;IronRuby&lt;/span&gt;.GetExecutionContext(rubyengine.Runtime).GlobalVariables;&lt;br /&gt;&lt;br /&gt;          globalvars[&lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;SymbolTable&lt;/span&gt;.StringToId(&lt;span style=&quot;color: rgb(163, 21, 21);&quot;&gt;&quot;widget&quot;&lt;/span&gt;)] = &lt;span style=&quot;color: rgb(163, 21, 21);&quot;&gt;&quot;.NET&quot;&lt;/span&gt;;&lt;br /&gt;        &lt;br /&gt;          &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;IScriptScope &lt;/span&gt;scope = rubyengine.CreateScope();&lt;br /&gt;        &lt;br /&gt;          rubyengine.Execute(scope, rubyengine.CreateScriptSourceFromString(&lt;span style=&quot;color: rgb(163, 21, 21);&quot;&gt;&quot;puts &#39;Ruby and  &#39; +&lt;br /&gt;          $widget.to_s + &#39; together at last&#39;&quot;&lt;/span&gt;));&lt;br /&gt;        &lt;br /&gt;          &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;SymbolId &lt;/span&gt;rubynumber = &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;SymbolTable&lt;/span&gt;.StringToId(&lt;span style=&quot;color: rgb(163, 21, 21);&quot;&gt;&quot;mynumber&quot;&lt;/span&gt;);&lt;br /&gt;          &lt;span style=&quot;color:blue;&quot;&gt;int &lt;/span&gt;mynumber = 12;&lt;br /&gt;        &lt;br /&gt;          globalvars[rubynumber] = mynumber;&lt;br /&gt;        &lt;br /&gt;          rubyengine.Execute(scope, rubyengine.CreateScriptSourceFromString(&lt;span style=&quot;color: rgb(163, 21, 21);&quot;&gt;&quot;$mynumber = $mynumber&lt;br /&gt;           + 13&quot;&lt;/span&gt;));&lt;br /&gt;        &lt;br /&gt;          mynumber = (&lt;span style=&quot;color:blue;&quot;&gt;int&lt;/span&gt;)globalvars[rubynumber];&lt;br /&gt;        &lt;br /&gt;          &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: rgb(163, 21, 21);&quot;&gt;&quot;The variable mynumber = {0}&quot;&lt;/span&gt;, mynumber);&lt;br /&gt;          &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;Console&lt;/span&gt;.ReadKey();&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;As you can see I switched it up a bit and inited the Environment and Engine a bit differently, one way is more general, the other specific to IronRuby.  The power of the ScriptingHost API is you can on the fly decide what language you want to use.  But if you know you&#39;re only going to be doing IronRuby, you can use the above method.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The real trick is in the second line, we get a reference to the GlobalVariables of the current IronRuby execution context.  Once we have that we can start assigning global variables values and retrieving them back.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Summary&lt;/h3&gt;Hopefully this is enough to get you started.  As I continue to delve into IronRuby, I will be sure to post what I find here, so keep an eye out!&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.ironruby.com/&quot;&gt;IronRuby Homepage&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://rubyforge.org/projects/ironruby&quot;&gt;IronRuby RubyForge Project&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ruby-lang.org/en/&quot;&gt;Ruby Language Homepage&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://compilerlab.members.winisp.net/dlr-spec-hosting.pdf&quot;&gt;DLR Hosting Spec&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.iunknown.com/&quot;&gt;John Lam&#39;s homepage&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/5354138924948610570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/5354138924948610570?isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/5354138924948610570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/5354138924948610570'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2008/01/ironruby-quick-start.html' title='IronRuby Quick Start'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-6988102338761561833</id><published>2008-01-26T17:45:00.001-05:00</published><updated>2008-01-26T17:45:39.750-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cleveland"/><category scheme="http://www.blogger.com/atom/ns#" term="Community"/><category scheme="http://www.blogger.com/atom/ns#" term="Events"/><category scheme="http://www.blogger.com/atom/ns#" term="North East Ohio"/><category scheme="http://www.blogger.com/atom/ns#" term="Ohio"/><title type='text'>Developer Events In North East Ohio</title><content type='html'>&lt;p&gt;North East Ohio seems to suffer from a dearth of good Developer centric events.&amp;#160; And the events we do get seem to be poorly advertised.&amp;#160; And the developers who would be interested in planning and implementing events can often have a hard time finding like minded souls.&amp;#160; To help alleviate both problems, I am implementing the North East Ohio Developer Events &lt;a href=&quot;http://neodevevents.blogspot.com/&quot;&gt;blog&lt;/a&gt; and &lt;a href=&quot;http://groups.google.com/group/neodevevents&quot;&gt;Google group&lt;/a&gt;.&amp;#160; The &lt;a href=&quot;http://neodevevents.blogspot.com/&quot;&gt;blog&lt;/a&gt; is intended as a place where North East Ohio based developers can hear about upcoming events that may interest them, while the &lt;a href=&quot;http://groups.google.com/group/neodevevents&quot;&gt;Google group&lt;/a&gt; is a place where those passionate North East Ohio developers can collaborate and plan events.&amp;#160; I&#39;m hoping that we can really get some activity going in this region, I truly think it&#39;s under appreciated, and I know &lt;a href=&quot;http://tocode.blogspot.com/2008/01/why-does-cleveland-get-shaft.html&quot;&gt;others feel as I do&lt;/a&gt;.&amp;#160; The &lt;a href=&quot;http://neodevevents.blogspot.com/&quot;&gt;blog&lt;/a&gt; kicks off with details on the next Cleveland &lt;a href=&quot;http://www.arcready.com&quot;&gt;ArcReady&lt;/a&gt; event.&amp;#160; I hear word of an upcoming &lt;a href=&quot;http://codingdojo.org/&quot;&gt;Coding Dojo&lt;/a&gt;, with other talk of a &lt;a href=&quot;http://blogs.msdn.com/trobbins/archive/2004/12/12/280181.aspx&quot;&gt;Code Camp&lt;/a&gt; and rumors of a possible &lt;a href=&quot;http://www.msdnevents.com/devcares/&quot;&gt;DevCares&lt;/a&gt; event both in the near future.&amp;#160; As I get details they will be announced on the &lt;a href=&quot;http://neodevevents.blogspot.com/&quot;&gt;NEODevEvent blog.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://neodevevents.blogspot.com/&quot;&gt;North East Ohio Developer Events Blog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://groups.google.com/group/neodevevents&quot;&gt;North East Ohio Developer Events Group&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/6988102338761561833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/6988102338761561833?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/6988102338761561833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/6988102338761561833'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2008/01/developer-events-in-north-east-ohio.html' title='Developer Events In North East Ohio'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-8555065925614877730</id><published>2008-01-26T16:24:00.001-05:00</published><updated>2008-01-26T16:24:22.224-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="2008"/><category scheme="http://www.blogger.com/atom/ns#" term="CodeMash"/><category scheme="http://www.blogger.com/atom/ns#" term="Conferences"/><category scheme="http://www.blogger.com/atom/ns#" term="Events"/><title type='text'>CodeMash 2008 Wrap Up</title><content type='html'>&lt;p&gt; A little late, I know, but I finally got some time to put my thoughts into place.&amp;#160; First I want to send out my congratulations to &lt;a href=&quot;http://frazzleddad.blogspot.com/&quot;&gt;Jim Holmes&lt;/a&gt;, &lt;a href=&quot;http://brianhprince.blogspot.com/&quot;&gt;Brian Prince&lt;/a&gt;, &lt;a href=&quot;http://www.wjgilmore.com/&quot;&gt;Jason Gilmore&lt;/a&gt;, &lt;a href=&quot;http://jasonfollas.com/blog&quot;&gt;Jason Follas&lt;/a&gt;, &lt;a href=&quot;http://srtsolutions.com/blogs/diannemarsh/&quot;&gt;Dianne Marsh&lt;/a&gt;, &lt;a href=&quot;http://www.jeffblankenburg.com/&quot;&gt;Jeff Blakenburg&lt;/a&gt;, &lt;a href=&quot;http://joshholmes.com/&quot;&gt;Josh Holmes&lt;/a&gt;, and &lt;a href=&quot;http://www.dotnetrockstar.com/&quot;&gt;John Hopkins&lt;/a&gt; for putting on ANOTHER wonderful event.&amp;#160; I went into &lt;a href=&quot;http://www.codemash.org/default.aspx&quot;&gt;CodeMash &#39;08&lt;/a&gt; with very high expectations based on last years spectacular event, and the group did not disappoint.&amp;#160; A quick thank you to the &lt;a href=&quot;http://www.codemash.org/Sponsors.aspx&quot;&gt;CodeMash sponsors&lt;/a&gt; for helping those folks do that job!&amp;#160; Your loyalty to the development community will not be forgotten by this developer.&lt;a href=&quot;http://www.flickr.com/photos/michaeldotnet/2188196730/&quot;&gt;&lt;img height=&quot;188&quot; src=&quot;http://farm3.static.flickr.com/2161/2188196730_a0d6b37d0f_m.jpg&quot; width=&quot;248&quot; align=&quot;right&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It was kicked off by a very insightful &lt;a href=&quot;http://www.flickr.com/photos/michaeldotnet/tags/codemash2008/&quot;&gt;panel&lt;/a&gt; on how to &amp;quot;sell&amp;quot; yourself and your ideals to clients and/or colleagues.&amp;#160; Then were the two days of sessions which were again some of the most insightful and educational I&#39;ve ever had the pleasure of attending.&lt;/p&gt;  &lt;p&gt;The keynotes were five star once again, with &lt;a href=&quot;http://www.hanselman.com/blog/&quot;&gt;Scott Hanselman&lt;/a&gt;, &lt;a href=&quot;http://memeagora.blogspot.com/&quot;&gt;Neal Ford&lt;/a&gt;, and &lt;a href=&quot;http://www.briangoetz.com/&quot;&gt;Brian Geotz&lt;/a&gt; all doing an outstanding job.&lt;/p&gt;  &lt;p&gt;I strongly urge everyone to go listen to &lt;a href=&quot;http://blog.cloudsocket.com/&quot;&gt;Chris Woodruff&#39;s&lt;/a&gt; &lt;a href=&quot;http://codemash.podbean.com/&quot;&gt;CodeMash Podcasts&lt;/a&gt;, as well as checkout the &lt;a href=&quot;http://www.codemash.org&quot;&gt;CodeMash&lt;/a&gt; site for slide decks and session audio.&lt;/p&gt;  &lt;p&gt;Of course the other half the conference occurs after the sessions are long over and deep into the night.&amp;#160; I had great conversations with folks like &lt;a href=&quot;http://objo.com/&quot;&gt;Joe O&#39;Brien&lt;/a&gt; (who is a way bigger &lt;a href=&quot;http://www.twitter.com&quot;&gt;twitter&lt;/a&gt; addict then me, Keith) , &lt;a href=&quot;http://jrwren.wrenfam.com/blog/&quot;&gt;Jay Wren&lt;/a&gt;, and &lt;a href=&quot;http://stevenharman.net/&quot;&gt;Steven Harman&lt;/a&gt; that I am still digesting over.&amp;#160; &lt;/p&gt;  &lt;p&gt;Let the countdown to CodeMash 2009 begin!&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/8555065925614877730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/8555065925614877730?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/8555065925614877730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/8555065925614877730'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2008/01/codemash-2008-wrap-up.html' title='CodeMash 2008 Wrap Up'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm3.static.flickr.com/2161/2188196730_a0d6b37d0f_t.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-4223345452720222111</id><published>2008-01-03T09:00:00.001-05:00</published><updated>2008-01-04T08:49:39.732-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CodeBetter"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><title type='text'>Changes At CodeBetter.</title><content type='html'>&lt;p&gt;Looks like &lt;a href=&quot;http://blogs.msdn.com/gblock/&quot;&gt;Glenn Block&lt;/a&gt;, from Microsoft&#39;s patterns &amp;amp; practices group, is now &lt;a href=&quot;http://codebetter.com/blogs/glenn.block/default.aspx&quot;&gt;blogging&lt;/a&gt; at CodeBetter.  I&#39;m sure it&#39;s only a coincidence that &lt;a href=&quot;http://weblogs.asp.net/sbellware/&quot;&gt;Scott Bellware&lt;/a&gt; (ooold link, but only one still valid) no longer is (and had all his content removed). &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Update:  Glenn replied in the comments that Scott was actually the one that asked him to join CodeBetter. &lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/4223345452720222111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/4223345452720222111?isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/4223345452720222111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/4223345452720222111'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2008/01/changes-at-codebetter.html' title='Changes At CodeBetter.'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-2565127886599195068</id><published>2007-12-18T14:14:00.001-05:00</published><updated>2007-12-18T14:14:28.584-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Husbandhood"/><category scheme="http://www.blogger.com/atom/ns#" term="Video Games"/><category scheme="http://www.blogger.com/atom/ns#" term="Xbox360"/><title type='text'>Why It&amp;#39;s STILL Good To Be Married.</title><content type='html'>&lt;p&gt;Since I just switched jobs and my previous employer paid me due vacation time, we had a little extra cash in our coffers.&amp;#160; My &lt;a href=&quot;http://michaeldotnet.blogspot.com/2007/01/why-it-good-to-be-married.html&quot;&gt;aforementioned wife&lt;/a&gt; suggested I get myself an early Christmas present. As you can no doubt tell by the &lt;a href=&quot;http://live.xbox.com/member/Judiah&quot;&gt;GamerCard&lt;/a&gt; on the site, I am now the proud owner of a Xbox 360 Elite.&amp;#160; I was also able to pick up the HDDVD drive.&amp;#160; Though unlike the list earlier in the year I did not get the wireless adapter nor Gears of War.&amp;#160; I had already gotten a wireless bridge for the PS2, so connectivity was no issue.&amp;#160; I ended up getting &lt;a href=&quot;http://www.ubi.com/US/Games/Info.aspx?pId=5919&quot;&gt;Assassin&#39;s Creed&lt;/a&gt;, as well as the &lt;a href=&quot;http://www.imdb.com/title/tt0379786/&quot;&gt;Serenity&lt;/a&gt;&amp;#160; HD-DVD.&amp;#160; Feel free to send me a friend&#39;s request on XBox LIVE.&amp;#160; Which, by the way, is everything I had hoped.&amp;#160; Between the marketplace and the arcade it&#39;s nothing short of awesome.&amp;#160; The XBox itself makes a wonderful media extender.&amp;#160; I tried Windows Media Center, but quickly dropped it in favor of &lt;a href=&quot;http://www.tversity.com/home&quot;&gt;TVersity&lt;/a&gt;.&amp;#160; Check it out!&amp;#160; Now that I&#39;m settled in at my new job, be on the look out for some blog posts in the coming days...&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/2565127886599195068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/2565127886599195068?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/2565127886599195068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/2565127886599195068'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/12/why-it-still-good-to-be-married.html' title='Why It&amp;#39;s STILL Good To Be Married.'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-851427586659207935</id><published>2007-11-13T16:18:00.001-05:00</published><updated>2007-11-13T18:40:51.669-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="Development"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL"/><category scheme="http://www.blogger.com/atom/ns#" term="TSQL"/><title type='text'>T-SQL Hex String to VarBinary (Improved)</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://sqlblog.com/blogs/peter_debetta/default.aspx&quot;&gt;Peter DeBetta&lt;/a&gt; posted a while back with &lt;a href=&quot;http://sqlblog.com/blogs/peter_debetta/archive/2007/03/09/t-sql-convert-hex-string-to-varbinary.aspx&quot;&gt;a function&lt;/a&gt; to take a hex string and convert it to varbinary&amp;nbsp; It has a couple of slight issues, the biggest of which is it can&#39;t handle an odd number of hex digits.&amp;nbsp; Below is my replacement, because it&#39;s using bigints the upper limit isn&#39;t as high, but it&#39;s good enough for most things:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;CREATE&lt;/span&gt; &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;FUNCTION&lt;/span&gt; dbo&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;.&lt;/span&gt;HexStrToVarBinary&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;@hexstr &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;varchar&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;8000&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;))&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;RETURNS&lt;/span&gt; &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;varbinary&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;8000&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;AS&lt;br /&gt;BEGIN&lt;/span&gt; &lt;br /&gt;    &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;DECLARE&lt;/span&gt; @hex &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;1&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;),&lt;/span&gt; @i &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;,&lt;/span&gt; @place &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;bigint&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;,&lt;/span&gt; @a &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;bigint&lt;br /&gt;&lt;/span&gt;    &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;SET&lt;/span&gt; @i &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;LEN&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;@hexstr&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;    &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;set&lt;/span&gt; @place &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;convert&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;bigint&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;,&lt;/span&gt;1&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;br /&gt;&lt;/span&gt;    &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;SET&lt;/span&gt; @a &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;convert&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;bigint&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;,&lt;/span&gt; 0&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;WHILE&lt;/span&gt; &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;@i &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;&amp;gt;&lt;/span&gt; 0 &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;AND&lt;/span&gt; &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;substring&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;@hexstr&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;,&lt;/span&gt; @i&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;,&lt;/span&gt; 1&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;like&lt;/span&gt; &lt;span style=&quot;color: rgb(255,0,0)&quot;&gt;&#39;[0-9A-Fa-f]&#39;&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;))&lt;/span&gt; &lt;br /&gt;     &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;BEGIN&lt;/span&gt; &lt;br /&gt;        &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;SET&lt;/span&gt; @hex &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;SUBSTRING&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;@hexstr&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;,&lt;/span&gt; @i&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;,&lt;/span&gt; 1&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;/span&gt; &lt;br /&gt;        &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;SET&lt;/span&gt; @a &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;=&lt;/span&gt; @a &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;+&lt;/span&gt; &lt;br /&gt;    &lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;convert&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;bigint&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;CASE&lt;/span&gt; &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;WHEN&lt;/span&gt; @hex &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;LIKE&lt;/span&gt; &lt;span style=&quot;color: rgb(255,0,0)&quot;&gt;&#39;[0-9]&#39;&lt;/span&gt; &lt;br /&gt;         &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;THEN&lt;/span&gt; &lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;CAST&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;@hex &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;/span&gt; &lt;br /&gt;         &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;ELSE&lt;/span&gt; &lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;CAST&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;ASCII&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;UPPER&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;@hex&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;))-&lt;/span&gt;55 &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;end&lt;/span&gt; &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;*&lt;/span&gt; @place&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;br /&gt;&lt;/span&gt;    &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;set&lt;/span&gt; @place &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;=&lt;/span&gt; @place &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;convert&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;bigint&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;,&lt;/span&gt;16&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;br /&gt;&lt;/span&gt;        &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;SET&lt;/span&gt; @i &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;=&lt;/span&gt; @i &lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;-&lt;/span&gt; 1&lt;br /&gt;    &lt;br /&gt;     &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;END&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;    &lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;RETURN&lt;/span&gt; &lt;span style=&quot;color: rgb(255,0,255)&quot;&gt;convert&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;varbinary&lt;/span&gt;&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;(&lt;/span&gt;8000&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;),&lt;/span&gt;@a&lt;span style=&quot;color: rgb(128,128,128)&quot;&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;END&lt;br /&gt;&lt;/span&gt;GO &lt;/pre&gt;&lt;a href=&quot;http://11011.net/software/vspaste&quot;&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/851427586659207935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/851427586659207935?isPopup=true' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/851427586659207935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/851427586659207935'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/11/t-sql-hex-string-to-varbinary-improved.html' title='T-SQL Hex String to VarBinary (Improved)'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-5780105238071582645</id><published>2007-11-08T09:28:00.001-05:00</published><updated>2007-11-08T09:28:28.230-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Funny"/><category scheme="http://www.blogger.com/atom/ns#" term="Humor"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="xkcd"/><title type='text'>Does xkcd Influence Microsoft Campus Design?</title><content type='html'>&lt;p&gt;It appears that the new Microsoft Campus for the Entertainment and Devices Division is going to have a &lt;a href=&quot;http://blog.seattlepi.nwsource.com/microsoft/archives/125341.asp?source=rss&quot;&gt;bar&lt;/a&gt;.&amp;nbsp; One wonders if they are not shooting for the &quot;&lt;a href=&quot;http://xkcd.com/323/&quot;&gt;Ballmer Peak&lt;/a&gt;&quot;...&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/5780105238071582645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/5780105238071582645?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/5780105238071582645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/5780105238071582645'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/11/does-xkcd-influence-microsoft-campus.html' title='Does xkcd Influence Microsoft Campus Design?'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-3041650253537045926</id><published>2007-10-26T13:35:00.001-05:00</published><updated>2007-10-26T13:35:48.554-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Funny"/><category scheme="http://www.blogger.com/atom/ns#" term="Geek"/><category scheme="http://www.blogger.com/atom/ns#" term="GMail"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><title type='text'>How To REALLY Get A Company&amp;#39;s Attention</title><content type='html'>&lt;p&gt;Forget blogging, &lt;a href=&quot;http://www.nickstarr.com/2007/10/26/give-me-gmail-imap/&quot;&gt;tape a letter to their door&lt;/a&gt;!&amp;nbsp; Looks like &lt;a href=&quot;http://www.nickstarr.com&quot;&gt;Nick Starr&lt;/a&gt; was tired of not having IMAP for Gmail and decided to go right to the &lt;a href=&quot;http://www.google.com&quot;&gt;source&lt;/a&gt;.&amp;nbsp; Thanks for &lt;a href=&quot;http://www.micropersuasion.com/&quot;&gt;Steve Rubel&lt;/a&gt;&#39;s &lt;a href=&quot;http://twitter.com/steverubel/statuses/366347122&quot;&gt;tweet&lt;/a&gt;.&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/3041650253537045926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/3041650253537045926?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/3041650253537045926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/3041650253537045926'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/10/how-to-really-get-company-attention.html' title='How To REALLY Get A Company&amp;#39;s Attention'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-1053957648485776276</id><published>2007-10-17T21:34:00.001-05:00</published><updated>2007-10-17T21:34:25.848-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><title type='text'>Two Microsoft Licenses Now OSI Approved.</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Am I blind, or is noone talking about &lt;a href=&quot;http://opensource.org/node/207&quot;&gt;this&lt;/a&gt;?&amp;nbsp; Microsoft finally getting two approved official Open Source licenses is big news.&amp;nbsp; With the approval the two licenses are being renamed:&lt;/p&gt; &lt;p&gt;Microsoft Permissive License (MS-PL) -&amp;gt; &lt;a href=&quot;http://www.microsoft.com/resources/sharedsource/licensingbasics/publiclicense.mspx&quot;&gt;Microsoft Public License&lt;/a&gt; (MS-PL) &lt;p&gt;Microsoft Community License (MS-CL) -&amp;gt; &lt;a href=&quot;http://www.microsoft.com/resources/sharedsource/licensingbasics/reciprocallicense.mspx&quot;&gt;Microsoft Reciprocal License&lt;/a&gt; (MS-RL) &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;via &lt;a href=&quot;http://blogs.msdn.com/sburke/archive/2007/10/17/osi-approves-microsoft-shared-source-licenses.aspx&quot;&gt;sburke&lt;/a&gt;, and now numerous other MSDN blogs now as well.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Seriously this must be being treated pretty low key, it&#39;s certainly not being trumpeted from the towers like it should.&amp;nbsp; I heard many pundits say it would never happen...&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/1053957648485776276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/1053957648485776276?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/1053957648485776276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/1053957648485776276'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/10/two-microsoft-licenses-now-osi-approved.html' title='Two Microsoft Licenses Now OSI Approved.'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-4252953918475770674</id><published>2007-10-04T09:11:00.001-05:00</published><updated>2007-10-04T09:11:43.727-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Development"/><category scheme="http://www.blogger.com/atom/ns#" term="Fun"/><category scheme="http://www.blogger.com/atom/ns#" term="Humor"/><category scheme="http://www.blogger.com/atom/ns#" term="RandomTweets"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>Fun with Twitter.</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://danhounshell.com&quot;&gt;Dan Hounshell&lt;/a&gt; &lt;a href=&quot;http://danhounshell.com/blogs/dan/archive/2007/10/03/more-twitter-fun-randomtweets-com.aspx&quot;&gt;announced&lt;/a&gt; his new little side project &lt;a href=&quot;http://randomtweets.com/&quot;&gt;RandomTweets&lt;/a&gt;.&amp;nbsp; Basically it&#39;s similar to &lt;a href=&quot;http://bash.org&quot;&gt;bash.org&lt;/a&gt; or &lt;a href=&quot;http://qdb.us&quot;&gt;qdb.us&lt;/a&gt; but for &lt;a href=&quot;http://www.twitter.com&quot;&gt;Twitter&lt;/a&gt;.&amp;nbsp; Right now Dan is using the API to pull random tweets and then manually sorting through them for humor or inspirational value.&amp;nbsp; He states his intention is to make the site more community driven in the future, but he&#39;s got some pretty funny stuff up there already. &lt;a href=&quot;http://www.randomtweets.com&quot;&gt;You should check it out&lt;/a&gt;!&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/4252953918475770674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/4252953918475770674?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/4252953918475770674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/4252953918475770674'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/10/fun-with-twitter.html' title='Fun with Twitter.'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-6413792351147476295</id><published>2007-10-03T20:38:00.001-05:00</published><updated>2007-10-03T20:38:50.469-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Design"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><category scheme="http://www.blogger.com/atom/ns#" term="Web2.0"/><title type='text'>Twitter Updates Look.</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://www.twitter.com&quot;&gt;Twitter&lt;/a&gt;, while being a canonical Web 2.0 poster child, has never really looked the part.&amp;nbsp; After their database upgrades Sunday they&#39;ve very stealthily updated their look. &lt;/p&gt; &lt;p&gt; The first hints that something was afoot was the mysterious disappearance of the &quot;back&quot; button to few your followee&#39;s previous tweets.&amp;nbsp; Well that&#39;s back with a much slicker looking interface.&amp;nbsp; It&#39;s a much classier look, less &quot;done in the backroom&quot; and more &quot;done by an actual designer&quot;.&amp;nbsp; Well done! It&#39;s a subtle change to be sure, but something that is easy on the eyes makes it easier to use.&lt;/p&gt; &lt;p&gt;Also, be sure to stop by &lt;a href=&quot;http://twitter.com/michaeldotnet&quot;&gt;my twitter page&lt;/a&gt; and say hi!&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/6413792351147476295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/6413792351147476295?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/6413792351147476295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/6413792351147476295'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/10/twitter-updates-look.html' title='Twitter Updates Look.'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-46313867505475694</id><published>2007-10-03T11:48:00.001-05:00</published><updated>2007-10-03T11:48:00.677-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="Development"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><category scheme="http://www.blogger.com/atom/ns#" term="ScottGu"/><title type='text'>The Microsoft .NET Framework Source Available for Developers!</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://weblogs.asp.net/scottgu&quot;&gt;Scott Guthrie&lt;/a&gt; just made an exciting &lt;a href=&quot;http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx&quot;&gt;post&lt;/a&gt;, starting with .NET 3.5 and VS 2008 the .NET libraries will have source available!&amp;nbsp; This is quite the boon to developers, the ability to drill down to source level while debugging should lead to more accurate code.&amp;nbsp; Of course there could be a downside, namely developers coding around implementation details rather then the exposed methods.&amp;nbsp; But regardless this is a very cool move by Microsoft.&amp;nbsp; It&#39;s being released under the &lt;a href=&quot;http://www.microsoft.com/resources/sharedsource/licensingbasics/referencelicense.mspx&quot;&gt;Microsoft Reference License&lt;/a&gt; which doesn&#39;t give you a whole lot of rights (none really, other then to look at the source), but it&#39;s &lt;em&gt;something&lt;/em&gt;.&amp;nbsp; Considering how important the framework is to Microsoft this is a bold move.&amp;nbsp; For a truly permissive license check out &lt;a href=&quot;www.mono-project.com/&quot;&gt;Mono&lt;/a&gt;, here&#39;s hoping there&#39;s no &quot;patent/copyright&quot; pollution there either...&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/46313867505475694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/46313867505475694?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/46313867505475694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/46313867505475694'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/10/microsoft-net-framework-source.html' title='The Microsoft .NET Framework Source Available for Developers!'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-7546244174158732544</id><published>2007-10-01T19:59:00.001-05:00</published><updated>2007-10-01T19:59:47.918-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogging"/><category scheme="http://www.blogger.com/atom/ns#" term="Development"/><category scheme="http://www.blogger.com/atom/ns#" term="Leaderboard"/><category scheme="http://www.blogger.com/atom/ns#" term="Scoble"/><category scheme="http://www.blogger.com/atom/ns#" term="TechCrunch"/><category scheme="http://www.blogger.com/atom/ns#" term="Techmeme"/><category scheme="http://www.blogger.com/atom/ns#" term="Technorati"/><title type='text'>MichaelDotNet&amp;#39;s Leaderboard</title><content type='html'>&lt;p&gt;If you haven&#39;t heard, &lt;a href=&quot;http://www.techmeme.com/&quot;&gt;Techmeme&lt;/a&gt; has a new feature, the &quot;&lt;a href=&quot;http://www.techmeme.com/lb&quot;&gt;Leaderboard&lt;/a&gt;&quot;.&amp;nbsp; &lt;a href=&quot;http://www.techcrunch.com/&quot;&gt;TechCrunch&lt;/a&gt; is &lt;a href=&quot;http://www.techcrunch.com/2007/09/30/techmeme-leaderboard-to-launch-attacking-technoratis-last-stronghold/&quot;&gt;heralding&lt;/a&gt; it as the defeating the last stronghold of &lt;a href=&quot;http://www.technorati.com&quot;&gt;Technorati&lt;/a&gt;.&amp;nbsp; &lt;a href=&quot;http://scobleizer.com/&quot;&gt;Robert Scoble&lt;/a&gt; is &lt;a href=&quot;http://scobleizer.com/2007/10/01/techmeme-list-heralds-death-of-blogging/&quot;&gt;lamenting&lt;/a&gt; the &quot;death of blogging&quot;.&amp;nbsp; &lt;a href=&quot;http://www.techeme.com&quot;&gt;Techmeme&lt;/a&gt; itself &lt;a href=&quot;http://news.techmeme.com/071001/techmeme-leaderboard&quot;&gt;says&lt;/a&gt; the list consists of &lt;em&gt;&quot;Techmeme&#39;s top 100 sources, including blogs, non-blogs, and everything in between&quot;&lt;/em&gt;, so they&#39;re not trying to be the sort of &quot;Blog Authority&quot; everyone else seems to be trying to make them.&amp;nbsp; &lt;/p&gt; &lt;p&gt;I don&#39;t think &lt;a href=&quot;http://www.technorati.com&quot;&gt;Technorati&lt;/a&gt; nor blogging in general have anything to worry about.&amp;nbsp; &lt;a href=&quot;http://www.technorati.com&quot;&gt;Technorati&lt;/a&gt; is suppose to be aimed squarley at &lt;em&gt;blogs, &lt;/em&gt;in this case I&#39;m defining a blog as &quot;The &lt;em&gt;single &lt;/em&gt;and &lt;strong&gt;unfiltered&lt;/strong&gt; voice of an individual&quot;.&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://www.techmeme.com/lb&quot;&gt;Techmeme&#39;s Leaderboard&lt;/a&gt; is solely a list of the most &lt;em&gt;newsworthy sites&lt;/em&gt; in a particular month, some of which just happen to be blogs.&amp;nbsp; &lt;/p&gt; &lt;p&gt;The best authority for the top bloggers is, of course, the bloggers themselves.&amp;nbsp; Until &lt;a href=&quot;http://www.google.com&quot;&gt;Google&lt;/a&gt; starts to release an aggregated form of their users&#39;s &lt;a href=&quot;http://reader.google.com&quot;&gt;Reader&lt;/a&gt; Stats (which may indeed herald the end of &lt;a href=&quot;http://www.technorati.com&quot;&gt;Technorati&lt;/a&gt;), we&#39;ll have to turn to each other and Technorati will show us that. &lt;/p&gt; &lt;p&gt;In the interest of promoting tech blogs that deserve to be noticed, I provide you with my current personal &quot;Tech Blog Leaderboard&quot; based on my personal &lt;a href=&quot;http://reader.google.com&quot;&gt;Reader&lt;/a&gt; trends:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://blogs.msdn.com/MainFeed.aspx&quot;&gt;MSDN Blogs&lt;/a&gt;:&amp;nbsp; Surprised?&amp;nbsp; You shouldn&#39;t be, Microsoft employs alot of smart people, this is the best way to find out something you didn&#39;t know before.&amp;nbsp; And it&#39;s not necessarily Microsoft specific all the time.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://syndication.thedailywtf.com/TheDailyWtf&quot;&gt;Worse Then Failure&lt;/a&gt;:&amp;nbsp;&amp;nbsp; Geeky humor, and great examples of what NOT to do for coders.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://slashdot.org/&quot;&gt;Slashdot&lt;/a&gt;:&amp;nbsp; Still a good resource after all these years, not a blog, yet still not on Techmeme&#39;s Leaderboard either...&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.codinghorror.com/blog/&quot;&gt;CodingHorror&lt;/a&gt;:&amp;nbsp; Everyone in development should be subscribed to this blog.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://scobleizer.com/&quot;&gt;Scobleizer&lt;/a&gt;: Cause Robert Scoble always has neat stuff.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.google.com/reader/view/user/14480565058256660224/state/com.google/broadcast&quot;&gt;Robert&#39;s Shared Items&lt;/a&gt;:&amp;nbsp; Doing all the crawling/subscribing so I don&#39;t have to.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://msmvps.com/blogs/jon.skeet/default.aspx&quot;&gt;Jon Skeet&#39;s Coding Blog&lt;/a&gt;:&amp;nbsp; Man knows his C#.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.evilmadscientist.com/&quot;&gt;Evil Mad Scientist Laboratories&lt;/a&gt;: Cause deep inside we&#39;re all evil geniuses.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.hanselman.com/blog/&quot;&gt;Scott Hanselman&#39;s Computer Zen&lt;/a&gt;:&amp;nbsp;&amp;nbsp; I mean, doesn&#39;t the fact he&#39;s not on the Leaderboard make you question it just a bit?&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;That&#39;s just a sampling, alot of webcomics and non-tech blogs in my reader too.&amp;nbsp; &lt;/p&gt; &lt;p&gt;What are some of your favourite/regular tech blogs? Is there anyone that I&#39;m obviously missing that I just HAVE to subscribe to?&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/7546244174158732544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/7546244174158732544?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/7546244174158732544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/7546244174158732544'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/10/michaeldotnet-leaderboard.html' title='MichaelDotNet&amp;#39;s Leaderboard'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-3940752136168915158</id><published>2007-10-01T09:13:00.001-05:00</published><updated>2007-10-01T09:13:50.590-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CodeMash"/><category scheme="http://www.blogger.com/atom/ns#" term="CodeToLive"/><category scheme="http://www.blogger.com/atom/ns#" term="Conferences"/><title type='text'>CodeMash 2008 Registration Is Open!</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://www.codemash.org/Register.aspx&quot;&gt;Be sure to go and register now!&lt;/a&gt;&amp;nbsp; The sooner you do the cheaper it is.&amp;nbsp; I want to CodeMash 2007 and it was one of the most awesome experiences I had, be sure to check out &lt;a href=&quot;http://michaeldotnet.blogspot.com/search/label/CodeMash&quot;&gt;my blog entries detailing last year&lt;/a&gt; if you want an idea of what it&#39;s all about.&amp;nbsp; It&#39;s inexpensive, it&#39;s at a waterpark, it&#39;s easy to get to, people are friendly, what more reason do you need?&amp;nbsp; &lt;a href=&quot;http://www.codetolive.net&quot;&gt;Do you live to code&lt;/a&gt;? Why aren&#39;t you already registered!?&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/3940752136168915158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/3940752136168915158?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/3940752136168915158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/3940752136168915158'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/10/codemash-2008-registration-is-open.html' title='CodeMash 2008 Registration Is Open!'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-115765419483078938</id><published>2007-09-30T19:13:00.001-05:00</published><updated>2007-09-30T19:13:41.370-05:00</updated><title type='text'>Finally, Compression in SQL.</title><content type='html'>&lt;p&gt;Here&#39;s a &lt;a href=&quot;http://blogs.msdn.com/sqlserverstorageengine/archive/2007/09/30/data-compression-why-do-we-need-it.aspx&quot;&gt;good overview&lt;/a&gt; of the compression in SQL 2008 and why it&#39;s a good thing.&amp;nbsp; Though I don&#39;t quite get the point on memory, don&#39;t you have to decompress the data at some point?&amp;nbsp; Surely this will end up using more memory resources, say you have a 50% compressed piece of data in memory, to store the uncompressed data would require another 100% on top of that, effectively using 150% more then if you just had the uncompressed data in memory to begin with.&amp;nbsp; Or am I missing something?&amp;nbsp; Regardless, if you&#39;ve ever zipped up a SQL Backup (I have, more times then I can count) then this seems like an obvious piece of &quot;low hanging fruit&quot; for the SQL 2008 team.&amp;nbsp; I&#39;ve always wondered why they didn&#39;t at least include built in compression for database backup and restore...&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/115765419483078938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/115765419483078938?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/115765419483078938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/115765419483078938'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/09/finally-compression-in-sql.html' title='Finally, Compression in SQL.'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-8854759323241714267</id><published>2007-09-30T19:08:00.001-05:00</published><updated>2007-09-30T19:08:00.304-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="CSharp"/><category scheme="http://www.blogger.com/atom/ns#" term="Development"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><title type='text'>What&amp;#39;s New In The Microsoft C# Community?</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/charlie/&quot;&gt;Charlie Calvert&#39;s&lt;/a&gt; &lt;a href=&quot;http://blogs.msdn.com/charlie/archive/tags/Community+Convergence/default.aspx&quot;&gt;Community Convergence posts&lt;/a&gt; are a great way to catch up with the Microsoft C# team.&amp;nbsp; &lt;a href=&quot;http://blogs.msdn.com/charlie/archive/2007/09/29/community-xxxii.aspx&quot;&gt;Be sure to check out the latest edition&lt;/a&gt;!&lt;/p&gt; &lt;p&gt;My personal Highlights:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://blogs.msdn.com/charlie/archive/2007/09/24/c-vs-vb-charlie-on-net-rocks.aspx&quot;&gt;C# vs VB: Charlie and Beth Massi on .NET Rocks&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.hanselman.com/blog/MicrosoftSurvivingFirstThreeWeeksAsARemoteEmployee.aspx&quot;&gt;Surviving the First Three Weeks&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.microsoft.com/windowsserver2008/audsel.mspx&quot;&gt;Windows Server 2008 Release Candidate&lt;/a&gt; &lt;li&gt;&lt;a href=&quot;http://www.codeplex.com/SvnBridge&quot;&gt;Tortoise SVN with Team Foundation Server&lt;/a&gt; &lt;li&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=d2f74873-c796-4e60-91c8-f0ef809b09ee&amp;amp;DisplayLang=en&quot;&gt;Microsoft .NET Framework 3.5 Beta 2&lt;/a&gt; &lt;li&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=d07219b2-1e23-49c8-8f0c-63fa18f26d3a&amp;amp;DisplayLang=en&quot;&gt;Microsoft SQL Server 2005 Service Pack 2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/8854759323241714267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/8854759323241714267?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/8854759323241714267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/8854759323241714267'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/09/what-new-in-microsoft-c-community.html' title='What&amp;#39;s New In The Microsoft C# Community?'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-2313730891521187627</id><published>2007-09-30T18:38:00.001-05:00</published><updated>2007-09-30T18:38:39.124-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Astroturf"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Wikipedia"/><title type='text'>Microsoft Gets Transparent on Wikipedia</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/ptorr/archive/2007/09/30/wikipedia-editing.aspx&quot;&gt;Or at least one employee does.&lt;/a&gt;&amp;nbsp; Peter Torr, a program manager at Microsoft, admits to editing Wikipedia articles on HD-DVD in order to &quot;[keep] the pages interesting, up-to-date, and &lt;em&gt;accurate&lt;/em&gt;&quot;.&amp;nbsp; He also comes clean about doing a bit of anonymous editing in the past and states he created a &lt;a href=&quot;http://en.wikipedia.org/wiki/User:Petertorr&quot;&gt;Wikipedia account&lt;/a&gt; so noone can &quot;stumble&quot; on his edits and accuse Microsoft of astroturfing or such.&amp;nbsp; &lt;a href=&quot;http://michaeldotnet.blogspot.com/2007/01/is-it-astroturfing-even-when-it-really.html&quot;&gt;Which of course people will.&lt;/a&gt;&amp;nbsp; I personally applaud Peter for being upfront with his editing, it will be up to the users of Wikipedia to decide if his comments are biased or not.&amp;nbsp; I would encourage Microsoft to make a standard corporate Wikipedia account that their employees should use if they want to edit Wikipedia.&amp;nbsp; Or establish a policy that they must create a MSFT* user or some-such.&amp;nbsp; Though most companies are becoming transparent &lt;a href=&quot;http://www.wired.com/politics/onlinerights/news/2007/08/wiki_tracker&quot;&gt;wither they want to or not&lt;/a&gt;, thanks to &lt;a href=&quot;http://wikiscanner.virgil.gr/&quot;&gt;WikiScanner&lt;/a&gt;.&amp;nbsp;&amp;nbsp; Regardless,&amp;nbsp; another sign that Microsoft is more open then people give them credit for.&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/2313730891521187627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/2313730891521187627?isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/2313730891521187627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/2313730891521187627'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/09/microsoft-gets-transparent-on-wikipedia.html' title='Microsoft Gets Transparent on Wikipedia'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-3796720602523662232</id><published>2007-09-29T14:04:00.001-05:00</published><updated>2007-09-29T14:08:54.027-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Development"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Query Analyzer, Resurrected.</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/buckwoody&quot;&gt;Carpe Datum&lt;/a&gt; over at MSDN talks about people &lt;a href=&quot;http://blogs.msdn.com/buckwoody/archive/2007/09/28/argh-bring-back-query-analyzer.aspx&quot;&gt;wanting Query Analyzer back over Management Studio&lt;/a&gt;.&amp;nbsp; I admit, the lack of Query Analyzer has been a source of ire for me as well.&amp;nbsp; I like the default Management Studio for editing databases and what not, but if I want to whip up a quick query or something I miss query analyzer.&amp;nbsp; Unfortunately the solution he provides causes Management Studio to always assume you want to run a query.&amp;nbsp; After a bit of fooling around, I came up with a batch routine that seems to mimic Query Analyzer pretty well.&amp;nbsp; I present to you isqlw.bat :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;@echo off&lt;br /&gt;if  &#39;%1&#39;==&#39;&#39; goto nofile&lt;br /&gt;goto file&lt;br /&gt;:nofile&lt;br /&gt;echo. &amp;gt; %TEMP%\Untitled.sql&lt;br /&gt;start sqlwb -nosplash %TEMP%\Untitled.sql&lt;br /&gt;goto end&lt;br /&gt;:file&lt;br /&gt;start sqlwb -nosplash %1&lt;br /&gt;:end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This works well for me, YMMV of course, but I hope you might find it useful.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/3796720602523662232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/3796720602523662232?isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/3796720602523662232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/3796720602523662232'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/09/query-analyzer-resurrected.html' title='Query Analyzer, Resurrected.'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-4654252133750838832</id><published>2007-09-28T20:29:00.001-05:00</published><updated>2007-09-28T20:29:10.021-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Architecture"/><category scheme="http://www.blogger.com/atom/ns#" term="CodeToLive"/><category scheme="http://www.blogger.com/atom/ns#" term="Development"/><title type='text'>Are You Just In It For The Money?</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://codebetter.com/blogs/peter.van.ooijen/&quot;&gt;Peter Van Ooijen&lt;/a&gt; made a &lt;a href=&quot;http://codebetter.com/blogs/peter.van.ooijen/archive/2007/09/28/an-architect-should-code-period.aspx&quot;&gt;post today&lt;/a&gt; that ended up being &lt;a href=&quot;http://www.dotnetkicks.com/kick/?url=http://codebetter.com/blogs/peter.van.ooijen/archive/2007/09/28/an-architect-should-code-period.aspx&quot;&gt;Kicked&lt;/a&gt; and generated some discussion.&amp;nbsp; Basically he&#39;s saying that a Software Architect should code.&amp;nbsp; I agree.&amp;nbsp; A Software Architect should be someone who is passionate about technology and development.&amp;nbsp; Some people say they were never given time to code.&amp;nbsp; I say that&#39;s bullshit.&amp;nbsp; Are you a developer for the pay, or because it&#39;s &lt;a href=&quot;http://www.codetolive.net&quot;&gt;something you love&lt;/a&gt;?&amp;nbsp; &lt;/p&gt; &lt;p&gt;If you are not passionate about what we do, get out.&amp;nbsp; Seriously.&amp;nbsp; I don&#39;t want you in my industry, make room for those developers who ARE passionate about what they do.&amp;nbsp; Make room for those developers who spend at least some of their free time putting around with languages they don&#39;t know, technology that&#39;s just coming out.&amp;nbsp; If all you want is a paycheck there are plenty of other places you can go. &lt;/p&gt; &lt;p&gt;I want the kid who hacks on &lt;a href=&quot;http://www.vbulletin.com/&quot;&gt;vBulletin&lt;/a&gt; in his spare time for his World of Warcraft &lt;a href=&quot;http://www.paxgaming.com/&quot;&gt;guild&lt;/a&gt;.&amp;nbsp; I want the father who waits until his kids go to sleep and then spends a few hours hacking in &lt;a href=&quot;http://www.xna.com/&quot;&gt;XNA&lt;/a&gt;.&amp;nbsp; Where are those people?&amp;nbsp; &lt;/p&gt; &lt;p&gt;Why does the guy who simply got in this business because it was &quot;hot&quot; get promoted, while the people who &lt;a href=&quot;http://www.codetolive.net&quot;&gt;Live To Code&lt;/a&gt; are left at the bottom rungs?&amp;nbsp;&amp;nbsp;&amp;nbsp; Part of it is choice I&#39;m sure, I&#39;ve done the managerial bit, it&#39;s less &quot;fun&quot; for sure.&amp;nbsp; But those in the trenches are frequently ignored, while those who read &quot;Buzzword Weekly&quot; make all the important decisions.&lt;/p&gt; &lt;p&gt;Fortunately, it seems Peter has a good architect who at least knows what he doesn&#39;t know, and that&#39;s a good start.&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/4654252133750838832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/4654252133750838832?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/4654252133750838832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/4654252133750838832'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/09/are-you-just-in-it-for-money.html' title='Are You Just In It For The Money?'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1745988021575354825.post-3555273619670672535</id><published>2007-09-28T19:51:00.001-05:00</published><updated>2007-09-28T19:51:56.115-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Development"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><title type='text'>Microsofties Aren&amp;#39;t Robots?  Perish The Thought...</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/gblock&quot;&gt;Glenn Bock&lt;/a&gt; over at Microsoft recently &lt;a href=&quot;http://blogs.msdn.com/gblock/archive/2007/09/22/i-am-not-a-robot.aspx&quot;&gt;blogged&lt;/a&gt; that he was not a robot because he uses the following non-Microsoft technologies: A Mac Mini (which really doesn&#39;t count, Microsoft doesn&#39;t make computers and as far as I am aware they still write software for the Mac),&amp;nbsp; an iPod, Yahoo, Google, NUnit (MS tech related), Firefox, OpenSource, Resharper (MS tech related), Ruby on Rails, and Linux.&amp;nbsp; That&#39;s all well and good, but would he still follow the &lt;a href=&quot;http://michaeldotnet.blogspot.com/2007/01/programming-promises.html&quot;&gt;Programming Promises&lt;/a&gt;? I bet he at least tries, though I&#39;d also guess he&#39;s a tad biased. :)&amp;nbsp; Regardless he&#39;s also right in he wouldn&#39;t be doing a good job if he wasn&#39;t examining and using alternatives, especially when they were better then the items he could dogfood.&amp;nbsp; It&#39;s a reminder that we all need to continually be exploring and expanding our exposure to technology from all fronts.&lt;/p&gt; </content><link rel='replies' type='application/atom+xml' href='http://michaeldotnet.blogspot.com/feeds/3555273619670672535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1745988021575354825/3555273619670672535?isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/3555273619670672535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1745988021575354825/posts/default/3555273619670672535'/><link rel='alternate' type='text/html' href='http://michaeldotnet.blogspot.com/2007/09/microsofties-aren-robots-perish-thought.html' title='Microsofties Aren&amp;#39;t Robots?  Perish The Thought...'/><author><name>Michael</name><uri>http://www.blogger.com/profile/03210836384955674734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://i147.photobucket.com/albums/r312/MLetterle/94e4c50808156c00a64099b2fd4aba53.jpg'/></author><thr:total>3</thr:total></entry></feed>