<?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: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-1360141375605460168</id><updated>2011-07-28T05:42:28.355-07:00</updated><category term='azure'/><title type='text'>Once Upon A Nanosecond</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-2396462186495709260</id><published>2009-11-13T15:42:00.001-08:00</published><updated>2009-11-13T15:43:57.851-08:00</updated><title type='text'>The Simplest Possible Ninject log4net Binding</title><content type='html'>&lt;p&gt;I’ve been using Ninject more and more. I also use log4net for logging. But how to do I get my log4net peanut butter into my Ninject chocolate? Like this:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;Bind&amp;lt;ILog&amp;gt;().ToMethod(x =&amp;gt; LogManager.GetLogger(x.Request.ParentContext.Plan.Type)); &lt;/pre&gt;&lt;br /&gt;&lt;p&gt;As far as I can tell, this is the simplest possible way to get Ninject to build an ILog object for dependency injection. NOTE! This is only valid for dependency injection! If you just call: &lt;/p&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;kernel.Get&amp;lt;ILog&amp;gt;();&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;You will be less than satisfied with the results… However, this works brilliantly:&lt;/p&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;public class Notifier : INotifier&lt;br /&gt;{&lt;br /&gt;    private readonly ILog _log;&lt;br /&gt;&lt;br /&gt;    public Notifier(ILog log)&lt;br /&gt;    {&lt;br /&gt;        _log = log;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;No wrappers, static classes or helper objects! If I ever meet Nate Kohari, I’m going to give him a big ol' hug. I may even tear up a little bit… &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-2396462186495709260?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/2396462186495709260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=2396462186495709260' title='38 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/2396462186495709260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/2396462186495709260'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2009/11/simplest-possible-ninject-log4net.html' title='The Simplest Possible Ninject log4net Binding'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>38</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-8970963115436816672</id><published>2009-04-22T15:51:00.001-07:00</published><updated>2009-04-23T17:57:33.706-07:00</updated><title type='text'>Installing Contribute Publishing Services on Windows Server 2008</title><content type='html'>&lt;p&gt;We use Adobe Contribute to edit/manage our web site at work. We’re also steadily moving to Windows Server 2008. I was thus a bit disappointed to see that when I tried to install CPS on Windows Server 2008, it just sat there – trying to install, but in fact doing nothing at all. Being a) stubborn and b) probably stupid (let’s face it, Contribute is dead), I was able to bring it up by copying an existing installation from Windows Server 2003 and then registering the services appropriately. Here’s what I did (your paths and server names will vary). In this example, &lt;strong&gt;WEBSTAGE&lt;/strong&gt; is the old Windows Server 2003 box and &lt;strong&gt;WEBSTAGE08&lt;/strong&gt; is the new Windows Server 2008 box.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Copied &lt;strong&gt;C:\Program Files\Macromedia\Contribute Publishing Services&lt;/strong&gt; from &lt;strong&gt;WEBSTAGE&lt;/strong&gt; to &lt;strong&gt;WEBSTAGE08&lt;/strong&gt;.&lt;/li&gt;    &lt;li&gt;From the Command Prompt, created the CPS service (note space after “binPath=” – important and annoying to miss)     &lt;br /&gt;&lt;font face="Courier New"&gt;sc.exe create CPS binPath= ”C:\Program Files\Macromedia\Contribute Publishing Services\jrun4\bin\jrunsvc.exe”&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Exported &lt;strong&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\Macromedia Contribute Publishing Server&lt;/strong&gt; from &lt;strong&gt;WEBSTAGE&lt;/strong&gt; to &lt;strong&gt;CPS1.reg&lt;/strong&gt;.&lt;/li&gt;    &lt;li&gt;Exported &lt;strong&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CPS&lt;/strong&gt; from &lt;strong&gt;WEBSTAGE&lt;/strong&gt; to &lt;strong&gt;CPS2.reg&lt;/strong&gt;.&lt;/li&gt;    &lt;li&gt;Edited &lt;strong&gt;CPS2.reg&lt;/strong&gt; and removed the &lt;strong&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CPS\Security&lt;/strong&gt; and &lt;strong&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CPS\Enum&lt;/strong&gt; sections.&lt;/li&gt;    &lt;li&gt;Imported &lt;strong&gt;CPS1.reg&lt;/strong&gt; and &lt;strong&gt;CPS2.reg&lt;/strong&gt; on &lt;strong&gt;WEBSTAGE08&lt;/strong&gt;.&lt;/li&gt;    &lt;li&gt;Started the &lt;strong&gt;Macromedia Contribute Publishing Server&lt;/strong&gt; service on &lt;strong&gt;WEBSTAGE08&lt;/strong&gt;.&lt;/li&gt;    &lt;li&gt;Added firewall exception to allow access to all ports opened by &lt;strong&gt;C:\Program Files\Macromedia\Contribute Publishing Services\jrun4\bin\jrun.exe&lt;/strong&gt;.&lt;/li&gt;    &lt;li&gt;Opened &lt;strong&gt;https://webstage08:8900/contribute/admin/server.cfm&lt;/strong&gt;.&lt;/li&gt;    &lt;li&gt;Logged in with old admin password and changed to new admin password.&lt;/li&gt;    &lt;li&gt;Switched to &lt;strong&gt;Website Settings&lt;/strong&gt; panel and deleted &lt;strong&gt;webstage&lt;/strong&gt; website.&lt;/li&gt;    &lt;li&gt;Launched Contribute CS3, created a new connection to &lt;strong&gt;WEBSTAGE08&lt;/strong&gt; and added &lt;strong&gt;https://webstage08:8900/contribute&lt;/strong&gt; as the publishing server.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;That’s it. Can’t believe it worked, really.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-8970963115436816672?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/8970963115436816672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=8970963115436816672' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/8970963115436816672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/8970963115436816672'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2009/04/installing-contribute-publishing.html' title='Installing Contribute Publishing Services on Windows Server 2008'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-7653413902105418981</id><published>2009-04-13T18:16:00.000-07:00</published><updated>2009-04-13T21:20:16.503-07:00</updated><title type='text'>A DSL for IoC Configuration</title><content type='html'>Just kind of thinking out loud here... Seems like a fantastic use for an M grammar! Hmm...&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Include file from assembly resource&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;include&lt;/span&gt; res://CWS.SoCHelp.NHibernate/Basic.config&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Include file from C: drive&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;include&lt;/span&gt; file:///C:/Users/sherwooda/Documents/Visual%20Studio%202008/Projects/CWS.SoCHelp.Tests/Extended.config&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Include file relative to executable&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;include&lt;/span&gt; file://~/Fluent.config&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Declare aliases for namespaces and assemblies&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;alias&lt;/span&gt; SoCHelp (CWS.SoCHelp, CWS.SoCHelp);&lt;br /&gt;&lt;span class="kwrd"&gt;alias&lt;/span&gt; NHibernate (CWS.SoCHelp, CWS.SoCHelp.NHibernate);&lt;br /&gt;&lt;span class="kwrd"&gt;alias&lt;/span&gt; Tests (CWS.SoCHelp.Tests, CWS.SoCHelp.Tests);&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Basic configuration, map service to type, default to "singleton" with no name&lt;/span&gt;&lt;br /&gt;SoCHelp:IUnitOfWorkFactory -&gt; NHibernate:NHibernateUnitOfWorkFactory;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Map open generic with transient instance and no name&lt;/span&gt;&lt;br /&gt;SoCHelp:IRepository`1 -&gt; NHibernate:NHibernateRepository`1 &lt;span class="kwrd"&gt;transient&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Don't use aliases, map exact type specified&lt;/span&gt;&lt;br /&gt;&lt;span class="str"&gt;"CWS.SoCHelp.IUnitOfWorkFactory, CWS.SoCHelp"&lt;/span&gt; -&gt; &lt;br /&gt;&lt;span class="str"&gt;"CWS.SoCHelp.NHibernate.NHibernateUnitOfWorkFactory, CWS.SoCHelp.NHibernate"&lt;/span&gt; &lt;span class="kwrd"&gt;singleton&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Specify an identifier for a service&lt;/span&gt;&lt;br /&gt;$Command = Tests:ICommand -&gt; Tests:Command &lt;span class="kwrd"&gt;singleton&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Map specialized generic&lt;/span&gt;&lt;br /&gt;$UserRepo = SoCHelp:IRepository`1[[Tests:User]] -&gt; Tests:UserRepository &lt;span class="kwrd"&gt;transient&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Parameters specified&lt;/span&gt;&lt;br /&gt;$RedBookFinanceRetriever = Tests:IRetriever -&gt; Tests:HttpRetriever &lt;span class="kwrd"&gt;singleton&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;    url = &lt;span class="str"&gt;"http://www.megacorp.com/financials/redbook.csv"&lt;/span&gt;;&lt;br /&gt;    timeout = 3000;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$BlueBookFinanceRetriever = Tests:IRetriever -&gt; Tests:HttpRetriever &lt;span class="kwrd"&gt;singleton&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;    url = &lt;span class="str"&gt;"http://www.megacorp.com/financials/bluebook.csv"&lt;/span&gt;;&lt;br /&gt;    timeout = 3000;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Refer a dependency to a previously created component&lt;/span&gt;&lt;br /&gt;$ExternalFinancialProcessor = Tests:IProcessor -&gt; Tests:AuditProcessor&lt;br /&gt;{&lt;br /&gt;    retriever = $BlueBookFinanceRetriever;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$InternalFinancialProcessor = Tests:IProcessor -&gt; Tests:AuditProcessor&lt;br /&gt;{&lt;br /&gt;    retriever = $RedBookFinanceRetriever;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Declare a bunch of commands&lt;/span&gt;&lt;br /&gt;$JumpRope = Tests:ICommand -&gt; Tests:JumpRope;&lt;br /&gt;$PickUpSticks = Tests:ICommand -&gt; Tests:PickUpSticks;&lt;br /&gt;$Honk = Tests:ICommand -&gt; Tests:Honk;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;// Pass an array of components to a dependency&lt;/span&gt;&lt;br /&gt;Tests:IProcessor -&gt; Tests:CommandProcessor&lt;br /&gt;{&lt;br /&gt;    commands = [$JumpRope, $PickUpSticks, $Honk];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-7653413902105418981?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/7653413902105418981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=7653413902105418981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/7653413902105418981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/7653413902105418981'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2009/04/dsl-for-ioc-configuration.html' title='A DSL for IoC Configuration'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-8485902249526528716</id><published>2009-01-28T13:07:00.000-08:00</published><updated>2009-01-28T13:28:06.547-08:00</updated><title type='text'>Kelvin's First Playlist</title><content type='html'>Someone was VERY upset this morning. We believe he may have been pleading for Child Protective Services based on the volume of his cries.. I put together a little playlist for him and we danced and danced and he LOVED IT! He calmed right down! Went from 60 to 0 in like 1.4 seconds. It was amazing! Daddy is very tired though. That was a lot of dancing and singing for someone as out of shape as I am.. &lt;br /&gt;&lt;br /&gt;Here's the playlist:&lt;br /&gt;&lt;br /&gt;I Love Beans - Cartoon Planet BBQ&lt;br /&gt;I'm On Standby - Grandaddy&lt;br /&gt;Secret Monorail - Parker Paul&lt;br /&gt;I'm A Believer - The Monkees&lt;br /&gt;Day O - Harry Belafonte&lt;br /&gt;Particle Man - They Might Be Giants&lt;br /&gt;Swinging On A Star - Bing Crosby&lt;br /&gt;Jump In The Line - Harry Bellafonte&lt;br /&gt;If I Wasn't Shy - They Might Be Giants&lt;br /&gt;Stand - R.E.M.&lt;br /&gt;Across The Universe - Fiona Apple (Pleasantville Soundtrack)&lt;br /&gt;You Ruined Everything - Jonathan Coulton&lt;br /&gt;Pork And Beans - Weezer&lt;br /&gt;A Knife And A Fork - Information Society&lt;br /&gt;With A Little Help From My Friends - The Beatles&lt;br /&gt;A Fable With No Moral - Quasi&lt;br /&gt;Stroller Town - Jonathan Coulton&lt;br /&gt;Foux Du Fafa - Flight Of The Conchords&lt;br /&gt;Manta Ray - Nan Vernon&lt;br /&gt;Mr. Blue Sky - Electric Light Orchestra&lt;br /&gt;Put A Lid On It - Squirrel Nut Zippers&lt;br /&gt;Fearless - Pink Floyd&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-8485902249526528716?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/8485902249526528716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=8485902249526528716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/8485902249526528716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/8485902249526528716'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2009/01/kelvins-first-playlist.html' title='Kelvin&apos;s First Playlist'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-5571497694503804973</id><published>2009-01-20T11:38:00.000-08:00</published><updated>2009-01-20T11:52:49.678-08:00</updated><title type='text'>Understanding The Scale of Kelvin</title><content type='html'>My son, Kelvin was born 1/16/2009 at 09:14PST, measuring 7.5lbs and 20.5 inches. Some people may have trouble visualizing the scale of our new bambino, so I've provided this handy guide...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:130%;"  &gt;1G iPod Touch, 8GB&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2IsoZc4lye4/SXYqT7Fns1I/AAAAAAAAAEw/gcKqUQoO8kQ/s1600-h/IMG_0045.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_2IsoZc4lye4/SXYqT7Fns1I/AAAAAAAAAEw/gcKqUQoO8kQ/s320/IMG_0045.JPG" alt="" id="BLOGGER_PHOTO_ID_5293464933787743058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;XBox 360 Wireless Controller&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2IsoZc4lye4/SXYqeQxnnDI/AAAAAAAAAE4/J-DVQUw4Rjs/s1600-h/IMG_0046.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_2IsoZc4lye4/SXYqeQxnnDI/AAAAAAAAAE4/J-DVQUw4Rjs/s320/IMG_0046.JPG" alt="" id="BLOGGER_PHOTO_ID_5293465111408122930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;1G Playstation Portable&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2IsoZc4lye4/SXYq2jg7nQI/AAAAAAAAAFA/JV4oX6C2mOw/s1600-h/IMG_0049.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_2IsoZc4lye4/SXYq2jg7nQI/AAAAAAAAAFA/JV4oX6C2mOw/s320/IMG_0049.JPG" alt="" id="BLOGGER_PHOTO_ID_5293465528755264770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;80GB 2.5" 5400RPM Serial ATA Hard Disk Drive&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2IsoZc4lye4/SXYq8vgmECI/AAAAAAAAAFI/I-cc6x5GAfU/s1600-h/IMG_0048.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_2IsoZc4lye4/SXYq8vgmECI/AAAAAAAAAFI/I-cc6x5GAfU/s320/IMG_0048.JPG" alt="" id="BLOGGER_PHOTO_ID_5293465635054293026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;WALL-E Blu-Ray Disc&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2IsoZc4lye4/SXYrG_4xMVI/AAAAAAAAAFQ/w_rJJvHZllE/s1600-h/IMG_0047.JPG"&gt;&lt;img style="cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_2IsoZc4lye4/SXYrG_4xMVI/AAAAAAAAAFQ/w_rJJvHZllE/s320/IMG_0047.JPG" alt="" id="BLOGGER_PHOTO_ID_5293465811249344850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now if you'll excuse me, I need to go analyze some poop for color and consistency...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-5571497694503804973?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/5571497694503804973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=5571497694503804973' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/5571497694503804973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/5571497694503804973'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2009/01/understanding-scale-of-kelvin.html' title='Understanding The Scale of Kelvin'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_2IsoZc4lye4/SXYqT7Fns1I/AAAAAAAAAEw/gcKqUQoO8kQ/s72-c/IMG_0045.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-1055547181762352067</id><published>2009-01-04T16:02:00.000-08:00</published><updated>2009-01-04T16:47:28.421-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='azure'/><title type='text'>How I Spent My Winter Vacation : Two weeks with the Azure Services Platform</title><content type='html'>I've had the past two weeks off of work and spent the time really digging into the Azure Services Platform from Microsoft. I'll spare everyone the descriptions and assume you know how to use Google if you're unfamiliar with it. My goal, I thought, was quite simple. I would create a small web application that would serve a small number of customers (dozens, perhaps). I decided on a pet licensing application, as the data model would be fairly simple. I looked at some of the paperwork from our cat adoption, poked around a few county sites for pet licensing and came up with a simple domain model. Great! Now to build an Azure application around it!&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;Getting Started&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The first step was to sign up for the CTP. Read my blog post about that &lt;a href="http://onceuponans.blogspot.com/2008/12/how-to-sign-up-for-windows-azure.html"&gt;here&lt;/a&gt;. It was initially a bit confusing. Mostly due to the massive number of things Microsoft unleashed on the world all at once. While waiting for my magic tokens, I prepped my machine by installing the &lt;a href="http://www.microsoft.com/Downloads/details.aspx?FamilyID=bb893fb0-ad04-4fe8-bb04-0c5e4278d3e9&amp;amp;displaylang=en"&gt;Azure SDK&lt;/a&gt;, &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=63D0D248-1B08-4F7D-ABDE-62EB75CB1E69&amp;amp;displaylang=en"&gt;Visual Studio Tools for Azure&lt;/a&gt; and &lt;a href="http://code.msdn.microsoft.com/AzureManagementTools"&gt;Azure Management Tools&lt;/a&gt;. Lucky for me, a good Samaritan from Microsoft was listening to my tweets and helped me get my tokens right away. It sounds like if you didn't go to the 2008 PDC, you're going to be waiting awhile for access to Azure's Hosted Services (where you run ASP.NET applications). I ended up with two storage accounts and one hosted service, plus access to SQL Data Services, Service Bus, Workflow Service and Access Control Services. Sweet!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;Hello Cloud!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Like all software developers, I started off by writing "Hello World". First, I got it working on my machine using the Development Fabric, then I created a new Hosted Service and stepped my way through the prompts to deploy my application. It was relatively straight forward, but I wasn't always sure if I was doing the right thing. There are a lot of status codes like "Initializing..." and "Allocating...", but nothing to indicate how long I should twiddle my thumbs for. Speaking of thumbs, here's a rule of thumb for all things Azure: be patient. Just walk away - go get a cup of tea or harass some people in the marketing department. By the time you get back, there will probably be green lights waiting for you and you can proceed. What you have to do is usually fairly obvious, how long it will take, is not. Anyway, after some navel gazing, I had "Hello World" published to the cloud. Woohoo!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;Running ASP.NET MVC on Azure&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I'm a glutton for punishment. As such, I decided to cram as many new technologies into my skull as possible. I had read a few blog posts about people running ASP.NET MVC on Azure, so I thought I would give it a shot. &lt;a href="http://www.aaronlerch.com/blog/2008/11/01/run-aspnet-mvc-on-windows-azure/"&gt;Aaron Lerch&lt;/a&gt; has a fantastic piece up on how to get it up and running on the Development Fabric. Just follow the instructions! One thing to note, this ate one of my two Storage Accounts. ASP.NET MVC needs cloud-based providers for membership, role management, profiles and sessions. The samples included with the Azure SDK include everything you need and Aaron walks you through the process of setting up your application to use the appropriate providers. You should also read through the Cloudy in Seattle posts (&lt;a href="http://blogs.msdn.com/jnak/archive/2008/11/10/asp-net-mvc-on-windows-azure-with-providers.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/jnak/archive/2008/10/28/asp-net-mvc-projects-running-on-windows-azure.aspx"&gt;here&lt;/a&gt;) on ASP.NET MVC and check out Maarten Balliauw's &lt;a href="http://blog.maartenballiauw.be/post/2008/12/09/Track-your-car-expenses-in-the-cloud%21-CarTrackr-on-Windows-Azure-Part-1-Introduction.aspx"&gt;CarTrackr&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All of those posts are great and they'll definitely help you get ASP.NET MVC up and running on your local machine, but they all kind of gloss over how to deploy your application as a Hosted Service. As luck would have it, there's an excellent &lt;a href="http://msdn.microsoft.com/en-us/library/dd203057.aspx"&gt;MSDN article&lt;/a&gt; that covers this very topic. By following the instructions there, I was able get ASP.NET MVC app hosted in the cloud with minimal difficulty.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;span style="font-family:verdana;"&gt;Inversion of Control and Dependency Injection on Azure&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;One of the great things about ASP.NET MVC is that they've really been listening to the development community and respect the work the ALT.NET/xDD folks have been doing. Fundamental to xDD is the concept of inversion of control and dependency injection for the creation and management of objects. Again, I won't go into the details (your Google finger isn't broken is it?), but there are a myriad of options available: Castle Windsor, StructureMap, Unity, Ninject, Autofac... The list goes on and on. Lots of people like writing IoC containers because they're fun and functional! So my next task was to figure out which IoC container I could use with Azure and ASP.NET MVC. My needs for an IoC container were as follows: run under medium trust, cannot rely on attributes for configuration, support registration of open-ended generics and support constructor argument injection at configuration. Here's the run down:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Castle Windsor&lt;/span&gt; - My preferred IoC container, but it won't run under medium trust. Out!&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;StructureMap&lt;/span&gt; - My second favorite IoC container. Runs under medium trust locally, but not under Azure. Submitted bug report to Jeremy Miller. Reading through the &lt;a href="http://groups.google.com/group/structuremap-users"&gt;StructureMap user's group&lt;/a&gt;, it looks like he's going to try to fix that early this year.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Ninject&lt;/span&gt; - I didn't really monkey around with Ninject much. The sample code I saw was riddled with [Inject] attributes, which kinda turned me off. Apologies to @nkohari if I dismissed it too early.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Autofac&lt;/span&gt; - Works great in medium trust under Azure, easy to configure, but doesn't support registering arguments for constructor injection at configuration time. You have to specify them when you resolve the service.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Unity&lt;/span&gt; - No problems at all! Worked great in medium trust on Azure, easy to configure, supports everything I need! I gotta say I'm really impressed by how far Unity has come in such a short time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Persistence, Perpetually&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This is where things started to go awry. I'm an NHibernate guy. It's ridiculously easy for me to create a domain model, write up some mappings to the database and bam - persistence is done. The Entity Framework lets me do essentially the same thing, but I prefer the way NHibernate works with POCOs. I also like LINQ - a LOT. I mean seriously, I could kiss Anders Hejlsberg square on the lips. You can perhaps imagine my disappointment when I looked at the sample data access methods for Azure Table Services and SQL Data Services and saw pages and pages of infrastructure code to store even the simplest entity. Here's what I want to do:&lt;br /&gt;&lt;pre class="csharpcode"&gt;_container.Resolve&amp;lt;IRepository&amp;lt;Contact&amp;gt;&amp;gt;().Save(&lt;span class="kwrd"&gt;new&lt;/span&gt; Contact { Id = Guid.NewGuid(), Name = &lt;span class="str"&gt;"Fred"&lt;/span&gt; });&lt;/pre&gt;Bam! Entity in database. StorageClient (for Azure Table Services) offers something like this functionality, although you have to derive your domain objects from TableStorageEntity. Unfortunately, Azure Table Services is fairly limited at the moment - tables are non-relational and there are no joins. There's also this warning in the documentation: "The StorageClient sample library is not optimized for performance and is not intended to be used for building robust services, but only as an example of a working client library." Ouch.&lt;br /&gt;&lt;br /&gt;At this point, SQL Data Services was starting to look a little more desirable. When I import a service reference to the SQL Data Service into a .NET project, I'm basically staring at the repository pattern. That coupled with the fact that it supports intra-container joins made me jump ship to SQL Data Services. Plus, this is about learning! I wanted to touch as much of the platform as possible. Out of the box, the only thing missing from SDS is LINQ. So after poking around for awhile and not finding anything of consequence about LINQ to SDS, I set about implementing the repository pattern and with IQueryable&lt;t&gt; support. I worked on it for about two days and was probably about 80% done when I found this: SSDS REST Library. I was more than a little upset. It was buried in the noise of Google's search results and I didn't happen upon it until I was looking for some help implementing IQueryable&lt;t&gt;.  Sigh.&lt;br /&gt;&lt;br /&gt;It was around this time that I thought to myself, "Self, you might be missing the forest for the trees here. What about Astoria?" Astoria is/was the code name for ADO.NET Data Services - a way of exposing access to data stores via RESTful web services. It even supports LINQ right out of the box (well, mostly)! Unfortunately, Microsoft hasn't issued a CTP for ADO.NET Data Services over SQL Data Services yet. In fact, it seems like there are some &lt;a href="http://blogs.msdn.com/ssds/archive/2008/07/15/8732676.aspx"&gt;"issues"&lt;/a&gt; aligning the two (three, if you count Azure Table Services) offerings.&lt;br /&gt;&lt;br /&gt;At this point, I'm a bit frustrated with the persistence picture for Azure. Yes, it's very service-oriented. There are REST APIs through the wazoo - but I don't want to spend my time building and dissecting magic strings for queries and entities. I want to type repo.Save(entity) or repo.Delete(entity) and be done with it.  I will say that both Azure Table Services and SQL Data Services both seem to have nailed the data set extension problem. It's VERY easy for a multi-tenant application to extend the schema per-client. Kudos to Microsoft for that!&lt;br /&gt;&lt;br /&gt;Ironically, the biggest problem with persistence in Azure applications is that there are so many choices. Microsoft seems to be attacking the problem from multiple directions and I'm unsure which battalion I should join up with.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Future Directions&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Unfortunately, I've run out of time and I wasn't able to finish my application, but I have learned a ton about Azure and I'm fairly comfortable moving around the platform now. However, there is still so much more to learn. I didn't even scratch the surface of queues, workflow, the service bus or live ID. These are all areas I intend to investigate - but at a much slower pace. I also BARELY touched on some of the major architectural issues with building Azure applications. I had a great &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/5a6c0ff0-67b9-4bc3-8fbc-e07f00c9e51e/"&gt;conversation &lt;/a&gt;with David Chou, Joseph Healy, Shan McArthur, Roger Jennings and others on multi-tenant Azure applications over on the Windows Azure MSDN Forums.&lt;/t&gt;&lt;/t&gt; In the end, I'm probably going to switch to Azure Table Services and StorageClient because I can work with it offline using the Development Storage. Any future work I do with Azure will probably be done on the MAX (Portland's mass transit system), so this is more out of necessity than preference.&lt;br /&gt;&lt;t&gt;&lt;t&gt;&lt;br /&gt;Overall, I gotta say I had a BLAST working with Azure! Yes, there were a few frustrating moments and plenty of rough edges, but when I look at what the blue badges are putting together, I see the future. These guys are really thinking hard about what it's going to take to build gigantic, accessible, scalable applications. This isn't just "let me host your CPU for you" - it's truly an internet-scale operating system in the making. Right now I think the two best players on the field are Microsoft and Amazon. It may seem odd that I've left Google off that list, but they don't even rate compared to what Microsoft and Amazon are offering right now. There are a handful of others out there: RightScale, Yahoo, VMWare, etc - but I think Azure is the platform to beat.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/t&gt;&lt;/t&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-1055547181762352067?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/1055547181762352067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=1055547181762352067' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/1055547181762352067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/1055547181762352067'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2009/01/how-i-spent-my-winter-vacation-two.html' title='How I Spent My Winter Vacation : Two weeks with the Azure Services Platform'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-7070782051880173114</id><published>2008-12-23T14:50:00.000-08:00</published><updated>2008-12-23T14:58:30.853-08:00</updated><title type='text'>How To Sign Up for Windows Azure</title><content type='html'>There are three services to sign up for: Windows Azure, .NET Services and SQL Data Services. You sign-up for all of these services here: &lt;a href="http://go.microsoft.com/fwlink/?LinkID=129453"&gt;http://go.microsoft.com/fwlink/?LinkID=129453&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You will NOT receive your tokens immediately. It make take awhile. Also, there are different tokens for different services and they may arrive at different times. This can be confusing, but basically you just need to be patient. You will need TWO invitation tokens to receive access to all three services.&lt;br /&gt;&lt;br /&gt;Windows Azure - provides computation services, hosting for ASP.NET applications and access to Azure Storage (blob, queue &amp;amp; table). Requires invitation token with the form XXXXX-XXXXX-XXXXX-XXXXX-XXXXX, where 'X' is [0-9A-F]. Access via the following URL: &lt;a href="http://lx.azure.microsoft.com/fs"&gt;http://lx.azure.microsoft.com/fs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;.NET Services &amp;amp; SQL Data Services - provides access to Service Bus, Access Control Service, Workflow Service and SQL Data Services. Requires invitation token with the form: XXX-XXXX-XXXX, where 'X' is [0-9A-Z]. Access via the following URL: &lt;a href="http://portal.ex.azure.microsoft.com/"&gt;http://portal.ex.azure.microsoft.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please note, Azure Storage != SQL Data Services. Azure Storage provides rudimentary database support via the table storage. SQL Data Services provides more conventional database concepts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-7070782051880173114?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/7070782051880173114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=7070782051880173114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/7070782051880173114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/7070782051880173114'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/12/how-to-sign-up-for-windows-azure.html' title='How To Sign Up for Windows Azure'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-3575119074448036876</id><published>2008-12-20T16:18:00.001-08:00</published><updated>2008-12-20T16:35:55.586-08:00</updated><title type='text'>Windows Azure for Powershell</title><content type='html'>The Azure SDK includes a setenv.cmd batch file for an Azure Command Prompt. But I haven't used the Command Prompt in ages! Powershell or bust! So.. Here's my Azure PowerShell Prompt script. Add it to the end of your profile.ps1 in the %USERPROFILE%\Documents\WindowsPowerShell folder and go make something cloudy!&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="rem"&gt;##############################################################################################&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;# AzureCmdPrompt.ps1&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;##############################################################################################&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; SetupAzure($installPath, $netPath)&lt;br /&gt;{&lt;br /&gt;    $curPath = $env:path;&lt;br /&gt;    $binPath = $installPath + &lt;span class="str"&gt;"bin"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    $env:PATH = $binPath + &lt;span class="str"&gt;";"&lt;/span&gt; + $curPath + &lt;span class="str"&gt;";"&lt;/span&gt; + $netPath;&lt;br /&gt;    $env:ServiceHostingSDKInstallPath = $installPath;&lt;br /&gt;    &lt;br /&gt;    echo &lt;span class="str"&gt;"Windows Azure SDK PowerShell"&lt;/span&gt;;&lt;br /&gt;    $host.ui.RawUI.WindowTitle = &lt;span class="str"&gt;"Windows Azure SDK Environment"&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (!$env:ServiceHostingSDKInstallPath)&lt;br /&gt;{ &lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (test-path &lt;span class="str"&gt;"hklm:\software\microsoft\microsoft sdks\servicehosting\v1.0"&lt;/span&gt;)&lt;br /&gt;    {    &lt;br /&gt;        $installPath = $(gp &lt;span class="str"&gt;"HKLM:\Software\Microsoft\Microsoft SDKs\ServiceHosting\v1.0"&lt;/span&gt;).InstallPath&lt;br /&gt;        $net64Path = &lt;span class="str"&gt;"$env:SystemRoot\Microsoft.NET\Framework64\v3.5"&lt;/span&gt;;&lt;br /&gt;        $net32Path = &lt;span class="str"&gt;"$env:SystemRoot\Microsoft.NET\Framework\v3.5"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (test-path $net64Path)&lt;br /&gt;            { SetupAzure $installPath $net64Path }&lt;br /&gt;        &lt;span class="kwrd"&gt;elseif&lt;/span&gt; (test-path $net32Path)&lt;br /&gt;            { SetupAzure $installPath $net32Path }&lt;br /&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;            { echo &lt;span class="str"&gt;"Please install the .NET 3.5 Framework."&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;        { echo &lt;span class="str"&gt;"Please install the Windows Azure SDK."&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-3575119074448036876?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/3575119074448036876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=3575119074448036876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/3575119074448036876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/3575119074448036876'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/12/windows-azure-for-powershell.html' title='Windows Azure for Powershell'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-1330609740992676359</id><published>2008-06-17T09:29:00.000-07:00</published><updated>2008-06-17T09:39:17.438-07:00</updated><title type='text'>Using C# 3.0 in ASP.NET 2.0</title><content type='html'>C# 3.0 has a lot of great features to help with ASP.NET 3.5 web projects. However, you can also use SOME C# 3.0 features in SOME .NET 3.0 and 2.0 projects if you're using Visual Studio 2008. The gist of it is, if you create a new "ASP.NET Web Application" solution (File -&gt; New -&gt; Project... -&gt; Web -&gt; ASP.NET Web Application) you can use most C# 3.0 features (lambdas, vars, anonymous types, etc.) The exception being LINQ, expression trees and extension methods, which require additional classes/attributes that are only present in the 3.5 base class library. This works because the compiler is generating all of the code for your site into DLLs which have to be deployed along with your pages, and .NET 2.0, 3.0 and 3.5 all target the .NET 2.0 CLR.&lt;br /&gt;&lt;br /&gt;However, if you are creating an "ASP.NET Web Site" solution (File -&gt; New -&gt; Web Site... -&gt; ASP.NET Web Site), all bets are off. With this type of solution, you are relying on the framework to compile your application at run time. Thus, the target framework's C# compiler will be used. Because the C# 3.0 compiler is only available in .NET 3.5, you can not use C# 3.0 features with this feature of ASP.NET prior to v3.5.&lt;br /&gt;&lt;br /&gt;There are a few ways around these limitations. First, you can use &lt;a href="http://www.albahari.com/nutshell/linqbridge.html"&gt;LinqBridge&lt;/a&gt;. LinqBridge recreates several of the classes from the 3.5 framework in the 2.0 framework, effectively letting you use nearly all C# 3.0 features in your .NET 2.0 projects. Expression trees are the only feature you won't be able to use. Extension methods, LINQ to Objects and query expressions all work just fine. However, you must be using the C# 3.0 compiler to use LinqBridge, so ASP.NET Web Site solutions are still left out in the cold.&lt;br /&gt;&lt;br /&gt;Almost.&lt;br /&gt;&lt;br /&gt;It turns out there is a sort of work around to compile an ASP.NET Web Site solution with C# 3.0, as long as you don't mind sacarificing dynamic compilation. From the Website menu, select "Start Options". Click on "Build". Change the Target Framework to 3.5 and clear the "Build Web site as part of solution" checkbox and click OK. Now click on "MSBuild Options" and set "Output Folder" to a path outside of your solution's source tree. I'd like to say I know why you have to do that, but I don't. You'll get an error from MSBUild if you specify an output folder within your solution's source tree. Boo. Hiss. Moving on. At this point, you will no longer be able to build your project in Visual Studio. However, you can build it with MSBuild. If you fire up a VS2008 command prompt, change to your web site solution's folder and type "msbuild", your project will compile with the C# 3.0 compiler. Please note that you are compiling your web site to DLLs, so you will not be able to make code updates. Still, it's potentially a nice interim solution until you can move your web projects over.&lt;br /&gt;&lt;br /&gt;Here's a feature capability table:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th style="text-align: left;"&gt;Solution Type&lt;/th&gt;&lt;th colspan="4"&gt;Project&lt;/th&gt;&lt;th colspan="3"&gt;Web Site&lt;/th&gt;&lt;/tr&gt;&lt;tr style="text-align: center;"&gt;&lt;th style="text-align: left;"&gt;.NET Framework Version&lt;/th&gt;&lt;td style="width: 3em;"&gt;3.5&lt;/td&gt;&lt;td style="width: 3em;"&gt;3.0&lt;/td&gt;&lt;td style="width: 3em;"&gt;2.0&lt;/td&gt;&lt;td style="width: 6em;"&gt;2.0 with LinqBridge&lt;/td&gt;&lt;td style="width: 3em;"&gt;3.5&lt;/td&gt;&lt;td style="width: 3em;"&gt;3.0&lt;/td&gt;&lt;td style="width: 3em;"&gt;2.0&lt;/td&gt;&lt;/tr&gt;&lt;tr style="text-align: center;"&gt;&lt;th style="text-align: left;"&gt;Expression Trees&lt;/th&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr style="text-align: center;"&gt;&lt;th style="text-align: left;"&gt;LINQ/Query Expressions&lt;/th&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr style="text-align: center;"&gt;&lt;th style="text-align: left;"&gt;Extension Methods&lt;/th&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr style="text-align: center;"&gt;&lt;th style="text-align: left;"&gt;Lambdas&lt;/th&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr style="text-align: center;"&gt;&lt;th style="text-align: left;"&gt;"var" keyword&lt;/th&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr style="text-align: center;"&gt;&lt;th style="text-align: left;"&gt;Anonymous Types&lt;/th&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr style="text-align: center;"&gt;&lt;th style="text-align: left;"&gt;Automatic Properties&lt;/th&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr style="text-align: center;"&gt;&lt;th style="text-align: left;"&gt;Object Initializers&lt;/th&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr style="text-align: center;"&gt;&lt;th style="text-align: left;"&gt;Collection Initializers&lt;/th&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;Y&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-1330609740992676359?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/1330609740992676359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=1330609740992676359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/1330609740992676359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/1330609740992676359'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/06/using-c-30-in-aspnet-20.html' title='Using C# 3.0 in ASP.NET 2.0'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-2263981924471793495</id><published>2008-05-25T15:22:00.001-07:00</published><updated>2008-05-25T15:22:54.728-07:00</updated><title type='text'>This is for Sally</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_2IsoZc4lye4/SDnmvtp2_4I/AAAAAAAAACA/zzdP6rvUV3E/s1600-h/Photo_052508_001-774730.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_2IsoZc4lye4/SDnmvtp2_4I/AAAAAAAAACA/zzdP6rvUV3E/s320/Photo_052508_001-774730.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5204444551786725250" /&gt;&lt;/a&gt;&lt;/p&gt;Where to put the screwdriver. Lefty loosey!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-2263981924471793495?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/2263981924471793495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=2263981924471793495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/2263981924471793495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/2263981924471793495'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/05/this-is-for-sally.html' title='This is for Sally'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2IsoZc4lye4/SDnmvtp2_4I/AAAAAAAAACA/zzdP6rvUV3E/s72-c/Photo_052508_001-774730.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-6143585455620551933</id><published>2008-05-20T11:15:00.000-07:00</published><updated>2008-05-20T11:26:57.072-07:00</updated><title type='text'>How do you *know* it's a witch?</title><content type='html'>Wow.. The &lt;a href="http://altdotnet.org/"&gt;ALT.NET&lt;/a&gt; blogs have &lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2008/05/19/what-dan-simmons-forgot-to-tell-you-about-the-entity-framework.aspx"&gt;been&lt;/a&gt; &lt;a href="http://weblogs.asp.net/fbouma/archive/2008/05/19/why-use-the-entity-framework-yeah-why-exactly.aspx"&gt;downright&lt;/a&gt; &lt;a href="http://codebetter.com/blogs/david_laribee/archive/2008/05/19/entity-framework-our-albatross.aspx"&gt;hostile&lt;/a&gt; to the Entity Framework. Admittedly, I'm a total noob in this arena. I've done some work with IoC containers, but I haven't done much with the various and sundry ORM frameworks. I played around with Hibernate quite awhile ago and was very impressed (yes, I've written Java; no, it's not contagious), but NHibernate was in very early beta at the time.&lt;br /&gt;&lt;br /&gt;Anyway. I think it's a bit premature to call for the pitchforks and torches with respect to the Entity Framework. From what I've read, the EF appears to force you to weld your code to it, which is annoying. But remember, this is 1.0 product and Microsoft has never, ever released a decent 1.0. I think it might be best to sit out this first version, but I wouldn't be surprised to see some interesting things coming from the mothership in the coming years.&lt;br /&gt;&lt;br /&gt;What kinds of things? I'm glad you asked! The Entity Framework requires numerous XML files to work. Those XML files integrate seamlessly into C# and VB projects. In fact, Microsoft has a quite bit of history blending XML with their projects. So much so, that VB9 allows you to write XML directly in your code. C# doesn't have that feature (yet), but it does have LINQ. While LINQ isn't XML, it is a language in its own right. Then we have WPF, which comes in both XML and API flavors. Windows Workflow - same story. All of these things lead me to one conclusion:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Visual Studio will become a polyglot programming environment&lt;/span&gt;. I believe Microsoft is thinking beyond source code (the horror!) to an environment that allows us to write some code and literally draw other bits of code. Right now, it looks pretty ugly, but it should get better. The biggest flaw in my crystal ball is the fact that you can't mix .NET languages in a single project right now. Maybe multi-language source files are something we can expect in CLR 3.0? Imagine drawing data entities, writing utility classes in C#, contracts in IronRuby and orchestrating the whole thing with F#!&lt;br /&gt;&lt;br /&gt;What a long, strange trip it will be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-6143585455620551933?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/6143585455620551933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=6143585455620551933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/6143585455620551933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/6143585455620551933'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/05/how-do-you-know-its-witch.html' title='How do you *know* it&apos;s a witch?'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-3577160830708357292</id><published>2008-05-09T09:13:00.000-07:00</published><updated>2008-05-09T09:22:03.684-07:00</updated><title type='text'>The Best SATA/IDE-USB Adapter Ever</title><content type='html'>The Vantec CB-ISATAU2 adapter is marvelous! 99% of the time, I just want to hook up a drive and copy some data off of it. This normally means finding an appropriate enclosure, taking it apart, swapping out a drive, putting it together again and finally plugging it in and getting the data off of it. This adapter eliminates all but the last step. It has 2.5", 3.5" IDE and SATA connectors, a power connector and a USB connector. Plug in drive, plug in USB connector - done.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16812232002"&gt;Buy one!&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-3577160830708357292?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/3577160830708357292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=3577160830708357292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/3577160830708357292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/3577160830708357292'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/05/best-sataide-usb-adapter-ever.html' title='The Best SATA/IDE-USB Adapter Ever'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-863508566488332338</id><published>2008-05-04T21:27:00.000-07:00</published><updated>2008-05-04T21:38:39.429-07:00</updated><title type='text'>Undermount sinks - awesome and sucky</title><content type='html'>All at the same time. It looks fantastic, but it's an unbelievable bear to install. It's no wonder people end up paying 30k-40k to have their kitchens updated - IT SUCKS! As nice as this sink is, I don't think I'd do it again. It's a sink. It doesn't need to look like a masterpiece, it needs to hold dirty dishes until I get them into the dishwasher. So next time, over-mount sink. I think that makes more sense anyway, with weight-loading and what-not.&lt;br /&gt;&lt;br /&gt;Also, I got black caulk in my hair, which really pisses me off. Don't get me wrong - I'm sure a lot of people love black caulk, I'm just not one of them.&lt;br /&gt;&lt;br /&gt;Oh well.. I'm just impressed I managed to drill 14 holes into the bottom of the countertop WITHOUT popping through the other side.&lt;br /&gt;&lt;br /&gt;Here's a lovely piccy. Weekend over. Who needs a drink?&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2IsoZc4lye4/SB6PDoh5tqI/AAAAAAAAAB4/D4SsXRp0LKo/s1600-h/Sink.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_2IsoZc4lye4/SB6PDoh5tqI/AAAAAAAAAB4/D4SsXRp0LKo/s320/Sink.JPG" alt="" id="BLOGGER_PHOTO_ID_5196748312614123170" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-863508566488332338?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/863508566488332338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=863508566488332338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/863508566488332338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/863508566488332338'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/05/undermount-sinks-awesome-and-sucky.html' title='Undermount sinks - awesome and sucky'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2IsoZc4lye4/SB6PDoh5tqI/AAAAAAAAAB4/D4SsXRp0LKo/s72-c/Sink.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-2003212593271581778</id><published>2008-04-29T08:04:00.001-07:00</published><updated>2008-04-29T08:04:19.315-07:00</updated><title type='text'>Public Transit FTW</title><content type='html'>Today is the first day that I&amp;#39;m taking public transportation to/from work. It takes longer than driving, but it&amp;#39;s LOADS cheaper. I&amp;#39;m leaving my car at work during the week so if I need it for anything while I&amp;#39;m at work, I&amp;#39;ll have it. It takes about an hour on the train, so I&amp;#39;m going to try working, reading and blogging. &lt;p&gt;But right now, I&amp;#39;m listening to This American Life, which has me thoroughly distracted. It&amp;#39;s about cryonics, which is both fascinating and frightening. It seems the first cryonics group was run by &amp;quot;some guy&amp;quot; and all of his scientific advisors quit early on. Quite an auspicious start...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-2003212593271581778?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/2003212593271581778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=2003212593271581778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/2003212593271581778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/2003212593271581778'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/04/public-transit-ftw.html' title='Public Transit FTW'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-655151178781358047</id><published>2008-04-26T10:30:00.000-07:00</published><updated>2008-04-26T10:40:33.173-07:00</updated><title type='text'>Countertops are looking good!</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_2IsoZc4lye4/SBNm5Yh5tpI/AAAAAAAAABw/vEYVhDsdb_I/s1600-h/Photo_042608_002-777506.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_2IsoZc4lye4/SBNm5Yh5tpI/AAAAAAAAABw/vEYVhDsdb_I/s320/Photo_042608_002-777506.jpg" alt="" id="BLOGGER_PHOTO_ID_5193607931311535762" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We're using a product called Paperstone, which is an eco-friendly material made from recycled paper and a resin. It cuts  like wood, but it's incredibly strong and non-porous... If you nick it, you can just break out some sandpaper and sand it out.&lt;/p&gt;&lt;p&gt;This doesn't really show it, but we have an egregious amount of counter space - which is awesome. I can't wait to cook again!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-655151178781358047?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/655151178781358047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=655151178781358047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/655151178781358047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/655151178781358047'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/04/counter-tops-are-looking-good.html' title='Countertops are looking good!'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2IsoZc4lye4/SBNm5Yh5tpI/AAAAAAAAABw/vEYVhDsdb_I/s72-c/Photo_042608_002-777506.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-8936494856604785698</id><published>2008-04-24T15:44:00.000-07:00</published><updated>2008-04-24T15:50:15.051-07:00</updated><title type='text'>Powershell Prompt</title><content type='html'>With my recent re-dedication to working with UAC, I find myself constantly wondering if I'm running Powershell in Admin mode not. After a little poking around, I found that the "SESSIONNAME" environment variable is missing when running as an administrator. Odd, but whatever. The upside of this is, I can now tell if I'm running in Admin mode and throw up a different prompt. So! Here is my new, revised Prompt function for Powershell:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function Prompt&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (($env:SESSIONNAME).Length -gt 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$host.ui.RawUI.WindowTitle = $(get-location)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"$&gt;"&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$host.ui.RawUI.WindowTitle = '[Admin] ' + $(get-location)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"#&gt;"&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-8936494856604785698?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/8936494856604785698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=8936494856604785698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/8936494856604785698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/8936494856604785698'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/04/powershell-prompt.html' title='Powershell Prompt'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-4333250035630288295</id><published>2008-04-17T10:40:00.001-07:00</published><updated>2008-04-17T10:40:34.025-07:00</updated><title type='text'>The gift of music</title><content type='html'>If you were going to rickroll a mix CD for someone, would you do it at the beginning, middle or end of the CD? Assuming, of course, that you don&amp;#39;t put the song on the track list. I see merits to all three, but I suppose middle makes the most sense.&lt;p&gt;This is completely hypothetical, obviously...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-4333250035630288295?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/4333250035630288295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=4333250035630288295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/4333250035630288295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/4333250035630288295'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/04/gift-of-music.html' title='The gift of music'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-6130028831704826587</id><published>2008-04-13T09:46:00.001-07:00</published><updated>2008-04-13T09:46:24.411-07:00</updated><title type='text'>The front yard</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_2IsoZc4lye4/SAI44LF4AKI/AAAAAAAAABo/jkqPXg9IF-Q/s1600-h/Photo_041308_002-784413.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_2IsoZc4lye4/SAI44LF4AKI/AAAAAAAAABo/jkqPXg9IF-Q/s320/Photo_041308_002-784413.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5188772258385494178" /&gt;&lt;/a&gt;&lt;/p&gt;Looking good! This is before the application of bark dust. I took the pic now because the sun will soon disappear for God knows how long. Ahh Portland!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-6130028831704826587?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/6130028831704826587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=6130028831704826587' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/6130028831704826587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/6130028831704826587'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/04/front-yard.html' title='The front yard'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2IsoZc4lye4/SAI44LF4AKI/AAAAAAAAABo/jkqPXg9IF-Q/s72-c/Photo_041308_002-784413.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-6886982136595136905</id><published>2008-04-13T09:15:00.001-07:00</published><updated>2008-04-13T09:18:25.720-07:00</updated><title type='text'>Mobile blog test</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_2IsoZc4lye4/SAIxnLF4AJI/AAAAAAAAABg/Epm8XmGlqGs/s1600-h/Photo_041308_001-724577.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_2IsoZc4lye4/SAIxnLF4AJI/AAAAAAAAABg/Epm8XmGlqGs/s320/Photo_041308_001-724577.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5188764269746323602" /&gt;&lt;/a&gt;&lt;/p&gt;Trying to send a mobile blog entry with a pic..&lt;br /&gt;&lt;br /&gt;I'll be damned.. It worked - and without signing up for MMS from Sprint. This is our cat Celeste and some of our new bamboo floor. Not terribly exciting, but unspectacular test results are sometimes the best kind, eh?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-6886982136595136905?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/6886982136595136905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=6886982136595136905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/6886982136595136905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/6886982136595136905'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/04/mobile-blog-test.html' title='Mobile blog test'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2IsoZc4lye4/SAIxnLF4AJI/AAAAAAAAABg/Epm8XmGlqGs/s72-c/Photo_041308_001-724577.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-3983733551552448314</id><published>2008-04-12T09:40:00.000-07:00</published><updated>2008-04-12T09:47:54.638-07:00</updated><title type='text'>Big Day Out!</title><content type='html'>With the sun a'shining as it is, it's time to get outside and start deweeding our insanely overgrown front yard. I'll try to take some pics and post them when I'm through - if it looks reasonable. Before that, I'll probably work on a logo or something for ze blog. I've got an idea - I'm just not sure how it's going to pan out... Then tonight - it's bookstore and Fry's time! Woooo!&lt;br /&gt;&lt;br /&gt;Oh, and the cat has stopped coughing, which is great. But she's taken to shedding, which is not. We're going to be able to build another cat with all of this fur...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-3983733551552448314?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/3983733551552448314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=3983733551552448314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/3983733551552448314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/3983733551552448314'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/04/big-day-out.html' title='Big Day Out!'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-28760421994148395</id><published>2008-04-07T10:10:00.000-07:00</published><updated>2008-04-07T10:13:01.514-07:00</updated><title type='text'>Books I Want</title><content type='html'>LINQ In Action&lt;br /&gt;Consider Phlebas&lt;br /&gt;Broken Angels&lt;br /&gt;The Ghost Brigades&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-28760421994148395?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/28760421994148395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=28760421994148395' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/28760421994148395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/28760421994148395'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/04/books-i-want.html' title='Books I Want'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-2883947211958947632</id><published>2008-04-05T23:51:00.000-07:00</published><updated>2008-04-06T00:08:58.851-07:00</updated><title type='text'>Less Annoying UAC For Vista</title><content type='html'>When I first got Vista, I ran with UAC fully enabled. I did so to fully experience what users would experience when running UAC and thus, avoid being part of the problem when writing user-land code. It drove me completely bonkers. &lt;br /&gt;&lt;br /&gt;When I switched to 64-bit Vista, I decided enough was enough and I turned it off altogether, but I always felt a little guilty. I tried the "elevate without prompting" approach, but it felt like cheating - although I guess it's good that you still get file and registry virtualization. Plus, it seems a great many of MS bloggers insist on keeping UAC turned on for the same reasons that I originally left it on.&lt;br /&gt;&lt;br /&gt;Now however, I think I've found the best of both worlds. I leave UAC on, set to "Prompt for consent", but I turn OFF the Secure Desktop. It saves just a fraction of a second when UAC prompts appear, but it makes all the difference. And it's much less visually distracting. Give it a shot if you hate UAC (who doesn't?). &lt;br /&gt;&lt;br /&gt;Run the Local Security Policy application and change the "Local Policies\Security Options\User Account Control: Switch to the secure desktop when prompting for elevation" policy to "Disabled".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-2883947211958947632?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/2883947211958947632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=2883947211958947632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/2883947211958947632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/2883947211958947632'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/04/less-annoying-uac-for-vista.html' title='Less Annoying UAC For Vista'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-4506597899596139156</id><published>2008-04-04T17:55:00.000-07:00</published><updated>2008-04-05T09:17:14.732-07:00</updated><title type='text'>Reunion Time!</title><content type='html'>Alright! Alright! Keep it down in here you three! And send me links to your blogs, eh? So *I* can put you in *MY* Google Reader! EDIT: It's too late - I've already found you! &lt;br /&gt;&lt;br /&gt;Oh, and I'm on twitter too.. twitter.com/xinmyname&lt;br /&gt;&lt;br /&gt;Still need to do more work on the blog. I'll probably do that tomorrow morning whilst the missus is sleepin'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-4506597899596139156?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/4506597899596139156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=4506597899596139156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/4506597899596139156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/4506597899596139156'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/04/reunion-time.html' title='Reunion Time!'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-7375635719924485347</id><published>2008-03-30T18:20:00.000-07:00</published><updated>2008-03-30T18:33:30.384-07:00</updated><title type='text'>Google Lying Zeitgeist</title><content type='html'>I googled all of the leading presidential candidates names followed by the word "lies". The number of pages returned are as follows:&lt;br /&gt;&lt;br /&gt;"McCain lies" : 19,400&lt;br /&gt;"Obama lies" : 26,100&lt;br /&gt;"Clinton lies" : 53,600&lt;br /&gt;"Bush lies" : 207,000&lt;br /&gt;&lt;br /&gt;And of course, no set of statistics would be complete without a bar graph...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2IsoZc4lye4/R_A-FLZDnSI/AAAAAAAAAAY/PJmYji87KAA/s1600-h/Lying+Zeitgeist.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_2IsoZc4lye4/R_A-FLZDnSI/AAAAAAAAAAY/PJmYji87KAA/s320/Lying+Zeitgeist.gif" alt="" id="BLOGGER_PHOTO_ID_5183711429781593378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pretty much entirely useless - but look at the graph! Oh my God!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-7375635719924485347?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/7375635719924485347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=7375635719924485347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/7375635719924485347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/7375635719924485347'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/03/google-lying-zeitgeist.html' title='Google Lying Zeitgeist'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2IsoZc4lye4/R_A-FLZDnSI/AAAAAAAAAAY/PJmYji87KAA/s72-c/Lying+Zeitgeist.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1360141375605460168.post-7671195481661681170</id><published>2008-03-28T09:23:00.001-07:00</published><updated>2008-03-28T09:31:54.958-07:00</updated><title type='text'>Hola Amigos</title><content type='html'>Konichiwa bitches! I know it's been awhile since I rapped at ya. Oh wait - it's been never. Anyway... I'm starting to flesh out the blog a bit. Still got some work to do though. Mostly in the color department. I've also got to update my IoC container spreadsheet with the latest Unity drop so I can post it.&lt;br /&gt;&lt;br /&gt;Oh.. and this theme has GOT to be wider.. 660 pixels? Seriously? I got, like, a gallion pixels on this crazy wide screen - I'll bump it up a bit later...&lt;br /&gt;&lt;br /&gt;Now - on to kitchen cabinet assembly!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1360141375605460168-7671195481661681170?l=onceuponans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://onceuponans.blogspot.com/feeds/7671195481661681170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1360141375605460168&amp;postID=7671195481661681170' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/7671195481661681170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1360141375605460168/posts/default/7671195481661681170'/><link rel='alternate' type='text/html' href='http://onceuponans.blogspot.com/2008/03/hola-amigos.html' title='Hola Amigos'/><author><name>Andy</name><uri>http://www.blogger.com/profile/09686138963268092402</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_2IsoZc4lye4/S01c2bKU6nI/AAAAAAAAA_U/ZNjIfbwoU-M/S220/AndyXBox.png'/></author><thr:total>6</thr:total></entry></feed>
