<?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-419861494385568398</id><updated>2012-01-18T10:40:33.964-08:00</updated><category term='2009'/><category term='asp.net MVC authentication'/><category term='TFS Configuration'/><category term='Event log c# .net 3.5 4.0'/><category term='amazon s3 backup'/><category term='Halloween candy'/><category term='Asp.net MVC 3 S#arp'/><category term='west seattle bike ride'/><category term='Qdoba Chipotle'/><category term='git windows'/><category term='angular.js iis7'/><category term='STP in a day'/><title type='text'>Letters from Bilbao</title><subtitle type='html'>Random entries and ramblings from a crazy Canuck.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-8345882843526827496</id><published>2012-01-18T07:17:00.000-08:00</published><updated>2012-01-18T10:40:33.977-08:00</updated><title type='text'>Adding PostgreSQL db to Asp.Net web project on Windows 7</title><content type='html'>Last night I was trying to connect an existing Asp MVC 3 app to use an PostgreSQL database. &amp;nbsp;It is using nHibernate, so I'm still going to have to determine if I need to tweak anything there, but for now just wanted to connect properly.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;After installing Postgre, I needed to install the ODBC connector in order to establish a connection in my .Net application. &amp;nbsp;There was a little trick, when I used the ODBC configurator from the Start menu,&lt;i&gt; I didn't see the newly installed ODBC adapter&lt;/i&gt;! &amp;nbsp;WTF? &amp;nbsp;Turns out, since I was running a 64 bit version of my OS, I had to run &lt;u&gt;c:\windows\syswow64\odbcad32.exe&lt;/u&gt; in order to set my new ODBC driver. &amp;nbsp;There is also another way...&lt;br /&gt;&lt;br /&gt;Install &lt;a href="http://pgfoundry.org/frs/?group_id=1000140"&gt;NpgSQL adapter&lt;/a&gt;, I used the latest .Net 4.0 install. &amp;nbsp;After referencing the Npg dll in your project (plus an associated Mono dll), you can simply use their wrappers in order to connect, here you can get the gist:&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt;using NpgSQL;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt;var connstring = String.Format("Server=localhost;Port=5432;User Id=&lt;userid&gt;;Password=xxx; Database=DbName;");&lt;/userid&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt;var conn = new NpgsqlConnection(connstring);&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt;conn.Open();&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt;const string sql = "SELECT LastName FROM Users ORDER BY LastName LIMIT 10";&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt;var da = new NpgsqlDataAdapter(sql, conn);&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt;var ds = new DataSet();&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt;da.Fill(ds);&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-8345882843526827496?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/8345882843526827496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=8345882843526827496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/8345882843526827496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/8345882843526827496'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2012/01/adding-postgresql-db-to-aspnet-web.html' title='Adding PostgreSQL db to Asp.Net web project on Windows 7'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-7867768202179138326</id><published>2012-01-09T06:53:00.000-08:00</published><updated>2012-01-13T13:17:22.330-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='angular.js iis7'/><title type='text'>Angular.js and setting up IIS to recognize JSON</title><content type='html'>Ok, so I've been messing around with Angular.js, so far, a great framework for client-side HTML manipulation. &amp;nbsp;Advantages include separation of concern (with an MVC architecture), and really good testing ease using Jasmine,&amp;nbsp;taking advantage of&amp;nbsp;Dependency&amp;nbsp;injection, and&amp;nbsp;awesome databinding features.&lt;br /&gt;&lt;br /&gt;With regards to the&amp;nbsp;Dependency&amp;nbsp;injection, there is a $xhr service (it's a service used to GET data), but when I attempted to use it with IIS 7, no go. &amp;nbsp;Checking IIS under the hood, I found no MIME mapping to .json files, so after some digging on the web, here is how to set it up:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 class="posttitle icon" style="background-attachment: initial; background-clip: initial; background-color: #fafafa; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #314e64; font-family: HelveticaNeue, Arial, sans-serif; line-height: 1em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-rendering: optimizelegibility; text-shadow: rgba(255, 255, 255, 0.792969) 0px 1px 1px; vertical-align: baseline;"&gt;&lt;span style="font-size: small;"&gt;Configure IIS to recognize JSON:&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;div id="post_message_229858" style="background-attachment: initial; background-clip: initial; background-color: #fafafa; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3e3e3e; font-family: 'Helvetica Neue', Arial, 'Lucida Grande', sans-serif; font-size: 14px; line-height: 19px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;blockquote class="postcontent restore" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; quotes: none; vertical-align: baseline; word-wrap: break-word;"&gt;&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;u&gt;IIS7 configuration to support JSON:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 40px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Using IIS manager: clock on IIS server (the main node on the left - where you see the machine name)&lt;br /&gt;&lt;ol class="decimal" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: initial; margin-bottom: 1em; margin-left: 2em; margin-right: 1em; margin-top: 1em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: outside; list-style-type: decimal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Add ‘json’ MIME Type&lt;/li&gt;&lt;/ol&gt;&lt;ul style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 1em; margin-left: 40px; margin-right: 1em; margin-top: 1em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Double click on ‘MIME Types’ icon&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Click ‘Add…’ link (under Actions section on the right side)&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;In ‘Add MIME Type’ window type:&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 80px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;File name extension: .json&lt;br /&gt;MIME type: application/json&lt;/div&gt;&lt;ul style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 1em; margin-left: 40px; margin-right: 1em; margin-top: 1em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Click OK, You should see the .json MIME Type added to the list of the MIME Types list.&lt;/li&gt;&lt;/ul&gt;2. Add Script Map Handler for ‘json’ MIME Type&lt;br /&gt;&lt;ul style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 1em; margin-left: 40px; margin-right: 1em; margin-top: 1em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Double click on ‘Handler Mappings’ icon&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Click on ‘Add Script Map…’ link (under Actions section on the right side)&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;In ‘Add Script Map’ window type:&lt;/li&gt;&lt;/ul&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 80px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Request path: *.json&lt;br /&gt;Executable: C:\Windows\System32\inetsrv\asp.dll&lt;br /&gt;Name: JSON&lt;/div&gt;&lt;ul style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 1em; margin-left: 2em; margin-right: 1em; margin-top: 1em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Click OK (Message box pops up with a message: Do you want to allow this ISAPI extension?...etc ) Click Yes, You should see the .json extension added to the list of the Handler Mappings list&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-7867768202179138326?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/7867768202179138326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=7867768202179138326' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/7867768202179138326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/7867768202179138326'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2012/01/angularjs-and-setting-up-iis-to.html' title='Angular.js and setting up IIS to recognize JSON'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-1241982330179105900</id><published>2011-12-14T09:21:00.000-08:00</published><updated>2011-12-14T09:22:52.532-08:00</updated><title type='text'>CDs and DVDs - Why???</title><content type='html'>As far as the CD and DVD technology, I've felt like I've been in a twilight zone episode for the past 5 years!&lt;br /&gt;&lt;br /&gt;Let's face it, CDs were a breakthrough technology in the 80s, brought great features and&amp;nbsp;portability&amp;nbsp;over the existing tape players. &amp;nbsp;Later DVDs brought more storage and functionality, but I can't understand why this media is still being used commercially today.&lt;br /&gt;&lt;br /&gt;Netflix tried to buck the trend and tried to push streaming versus physical DVD rental and the stock plunged, the masses rebuffed. (in this case the business model and content&amp;nbsp;availability&amp;nbsp;were to blame)&lt;br /&gt;&lt;br /&gt;I have two little boys that rent DVDs from the library to see the latest Sesame Street video, it is rarely playable since a few tiny scratches render the medium unplayable. &amp;nbsp;Bring back the &lt;a href="http://en.wikipedia.org/wiki/Floppy_disk"&gt;3 1/2 floppy&lt;/a&gt;! :)&lt;br /&gt;&lt;br /&gt;Solid State sticks are great, but I guess the cost per use ratio isn't as viable as the cheaply produced DVDs...&lt;br /&gt;&lt;br /&gt;Any alternatives on the horizon so I can go on in peace?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-1241982330179105900?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/1241982330179105900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=1241982330179105900' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1241982330179105900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1241982330179105900'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2011/12/cds-and-dvds-why.html' title='CDs and DVDs - Why???'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-1316568566539724418</id><published>2011-11-04T12:11:00.000-07:00</published><updated>2011-11-04T12:11:51.961-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asp.net MVC 3 S#arp'/><title type='text'>Beginning a S#arp architecture ASP MVC 3 solution</title><content type='html'>I've used a lot of blogs in order to piecemeal together a S#arp architecture solution and here are the steps involved.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Why use S#arp architecture?&lt;/i&gt;&lt;/b&gt; &amp;nbsp;Well, you could try various architectures, I am currently working a Unity/nHibernate/Fluid NHibernate solution, but it takes so long to set up, whereas S#arp is first of all a great setup, but also very simple to install and setup the project.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1&lt;/b&gt;. Download and install T4 Templater (choose Typical install) &lt;a href="http://www.codeplex.com/t4toolbox"&gt;http://www.codeplex.com/t4toolbox&lt;/a&gt;&lt;br /&gt;The templater allows you to have VS templates such as S#arp.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2&lt;/b&gt;. Get &lt;a href="http://www.blogger.com/Get%20and%20install%20Templify%20http://opensource.endjin.com/templify/"&gt;Templify&lt;/a&gt;. It's a great tool to deploy your S#arp architecture solution, it even comes with the S#arp template ready to go.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3&lt;/b&gt;. This step is optional. &amp;nbsp;You can a &lt;a href="http://www.blogger.com/Download%20and%20install%20http://t4-editor.tangible-engineering.com/T4-Editor-Visual-T4-Editing.html"&gt;Visual Studio template editor&lt;/a&gt; for more&amp;nbsp;pizzazz.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4&lt;/b&gt;. To insure you have the latest S#arp template, might as well install the latest Templify template from here: &amp;nbsp;&lt;a href="http://www.sharparchitecture.net/downloads.htm"&gt;http://www.sharparchitecture.net/downloads.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5&lt;/b&gt;. Using Windows Explorer, create a folder where you want your new MVC project to go. &amp;nbsp;Right click on the folder and select "Templify Here". &amp;nbsp;You will be shown the following screen and it will guide you to create your project. &amp;nbsp;Be patient as it sets it up...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-AmoFt2kyND8/TrQ4Hv8BUdI/AAAAAAAADQo/Xg-1YeFELrc/s1600/Capture2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://3.bp.blogspot.com/-AmoFt2kyND8/TrQ4Hv8BUdI/AAAAAAAADQo/Xg-1YeFELrc/s320/Capture2.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Compile and run your project. &amp;nbsp;You may have to specify an NHibernate DB login to proceed. &amp;nbsp;You now have the template compiled and running! &amp;nbsp;You should see the following and be ready to start coding:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-v6o7zGe4M4s/TrQ3zF1EckI/AAAAAAAADQg/eKQ7Sn0gjQo/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-v6o7zGe4M4s/TrQ3zF1EckI/AAAAAAAADQg/eKQ7Sn0gjQo/s320/Capture.PNG" /&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/419861494385568398-1316568566539724418?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/1316568566539724418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=1316568566539724418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1316568566539724418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1316568566539724418'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2011/11/beginning-sarp-architecture-asp-mvc-3.html' title='Beginning a S#arp architecture ASP MVC 3 solution'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-AmoFt2kyND8/TrQ4Hv8BUdI/AAAAAAAADQo/Xg-1YeFELrc/s72-c/Capture2.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-3818582664361523717</id><published>2011-08-10T20:17:00.000-07:00</published><updated>2011-08-10T20:18:41.750-07:00</updated><title type='text'>Ignoring certain file types on SVN commit</title><content type='html'>I've been using SVN as my main source control and was annoyed that on every commit I had to uncheck a few files that were created locally and shouldn't be part of the repository.&lt;br /&gt;&lt;br /&gt;Files like roo.log and a bunch of *.externalToolBuilder files.  How to exclude those every time from the check in process?&lt;br /&gt;&lt;br /&gt;Fortunately you can exclude certain file types when you are commiting.&lt;br /&gt;&lt;br /&gt;First, you can check what is currently being omitted by typing:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;svn propget svn:ignore&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You will probably see .project, .setting, etc.  svn does exclude some by default, but now type:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;svn propedit svn:ignore .&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If it complains about not having an editor, simply create an environmental variable to store the following:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;SVN_EDITOR=notepad&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now type the propedit command and add whatever additional filters you want!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-3818582664361523717?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/3818582664361523717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=3818582664361523717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3818582664361523717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3818582664361523717'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2011/08/ignoring-certain-file-types-on-svn.html' title='Ignoring certain file types on SVN commit'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-8267483905071158391</id><published>2011-07-31T09:20:00.000-07:00</published><updated>2011-07-31T09:21:15.426-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Event log c# .net 3.5 4.0'/><title type='text'>Custom Event Logger for .Net 3.5 and .Net 4.0</title><content type='html'>I needed to write a .Net 3.5 Event logger for a custom lib I am coding for a client.  After scouring the internet, there were a lot of antiquated code samples.  I even found a lot of modern samples on MSDN, but was surprised to see very poor code (having a .close() not within a using() or finally())&lt;br /&gt;&lt;br /&gt;I decided to write a custom Event logger class with the following simple functionality, since the primary use was to report events or errors.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Have a write() event that would log a custom error to the event log (found in the System logs)&lt;/li&gt;&lt;li&gt;Would write to a text file in the event the Event did not get logged.  I found this step necessary since the calling program may not have Event log access due to security.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Here is the Class:&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;class CustomEventLog&lt;br /&gt;    {&lt;br /&gt;        const string sourceName = "Your custom event name here";&lt;br /&gt;        const string logType = "System";&lt;br /&gt;        const string customTextLog = "c:\\CustomEventLog.log";&lt;br /&gt;&lt;br /&gt;        public static void Write(string message, EventLogEntryType type)&lt;br /&gt;        {&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                //See if the source exists. &lt;br /&gt;                if (!(EventLog.SourceExists(sourceName, System.Environment.MachineName)))&lt;br /&gt;                {&lt;br /&gt;                    System.Diagnostics.EventLog.CreateEventSource(new EventSourceCreationData(sourceName, logType));&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                using (EventLog ev = new EventLog(logType, System.Environment.MachineName, sourceName))&lt;br /&gt;                {&lt;br /&gt;                    ev.WriteEntry(message, type, 10001);&lt;br /&gt;                    Console.WriteLine(message);&lt;br /&gt;                    ev.Close();&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            catch (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                // If all else fails write to disk&lt;br /&gt;                using (StreamWriter sw = new StreamWriter(customTextLog, true))&lt;br /&gt;                {&lt;br /&gt;                    sw.WriteLine(ex.ToString());&lt;br /&gt;                    if (message != null)&lt;br /&gt;                    {&lt;br /&gt;                        sw.WriteLine(message);&lt;br /&gt;                    }&lt;br /&gt;                    sw.Close();&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is also sample usage:&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;CustomEventLog.Write("This is an informational comment.", EventLogEntryType.Information);&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-8267483905071158391?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/8267483905071158391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=8267483905071158391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/8267483905071158391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/8267483905071158391'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2011/07/custom-event-logger-for-net-35-and-net.html' title='Custom Event Logger for .Net 3.5 and .Net 4.0'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-9190789888614960593</id><published>2011-07-15T13:40:00.000-07:00</published><updated>2011-07-19T13:56:20.347-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git windows'/><title type='text'>Setting up correct Git config parameters on Windows</title><content type='html'>So when configuring Git to run on Windows, I ran into an annoying thing that took me a bit to figure out.&lt;br /&gt;&lt;br /&gt;When you configure Git via bash, specifying the config setting with &lt;i&gt;&lt;b&gt;git config --global yadayadayada&lt;/b&gt;&lt;/i&gt; was not properly linking to the editors, diff tools, etc.  The reason was that the config file could not determine the location of the apps because quotes were either missing, or added to the config file without escape characters.&lt;br /&gt;&lt;br /&gt;Here is the .gitconfig file:&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;[user]&lt;br /&gt; name = mkadlec&lt;br /&gt; email = kadlecmark@hotmail.com&lt;br /&gt;[core]&lt;br /&gt; editor = \"C:/Program Files (x86)/Git/bin/git-core-editor.sh\"&lt;br /&gt; autocrlf = false&lt;br /&gt;[merge]&lt;br /&gt; tool = kdiff3&lt;br /&gt;[diff]&lt;br /&gt; tool = kdiff3&lt;br /&gt; guitool = kdiff3&lt;br /&gt;[mergetool "kdiff3"]&lt;br /&gt; keepBackup = false&lt;br /&gt; trustExitCode = false&lt;br /&gt; path = \"c:/Program Files (x86)/KDiff3/kdiff3.exe\"&lt;br /&gt;[difftool "kdiff3"]&lt;br /&gt; path = \"c:/Program Files (x86)/KDiff3/kdiff3.exe\"&lt;br /&gt; keepBackup = false&lt;br /&gt; trustExitCode = false&lt;br /&gt; cmd = \"c:/Program Files (x86)/KDiff3/kdiff3.exe\" \"$LOCAL\" \"$REMOTE\"&lt;br /&gt;&lt;/pre&gt;See?  Look closely, you have to escape all the quotations, and wrap any file locations with quotes if they are not.  Once configured, all is good!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-9190789888614960593?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/9190789888614960593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=9190789888614960593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/9190789888614960593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/9190789888614960593'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2011/07/setting-up-correct-git-config.html' title='Setting up correct Git config parameters on Windows'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-1956556460634257448</id><published>2011-05-02T09:05:00.000-07:00</published><updated>2011-07-19T13:57:25.537-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS Configuration'/><title type='text'>Modify TFS for Agile development</title><content type='html'>&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;TFS is a great tool for Agile development, especially if you are already using it to develop your code!&amp;nbsp; There are some very good templates out there already.&amp;nbsp;&amp;nbsp;&lt;a href="http://scrumforteamsystem.com/"&gt;Scrum for Team System&lt;/a&gt; is my favourite, and Microsoft now has their own: &lt;a href="http://visualstudiogallery.msdn.microsoft.com/59ac03e3-df99-4776-be39-1917cbfc5d8e"&gt;Scrum 1.0&lt;/a&gt;.&amp;nbsp; You can modify any of these templates to add fields, change statuses, and modify the flow.&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;If you are running Visual Studio 2010, here's the quick and dirty on how to modify the templates:&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;1.&amp;nbsp; Open Visual Studio Command Console, then go to&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="ms-rteThemeForeColor-2-0"&gt;&lt;/span&gt;&lt;span class="ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-size: 12pt;"&gt;&lt;/span&gt;&lt;span class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;2.&amp;nbsp; Run Command to&amp;nbsp;Export the xml&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;div&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; witadmin exportwitd  /collection:http://tfs_server_name:8080/tfs/collection_name&amp;nbsp;/p:"project_name" /f:"output_xml_file" /n:"Task"​&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="ms-rteThemeForeColor-2-0"&gt;&lt;/span&gt;&lt;span class="ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-size: 12pt;"&gt;&lt;/span&gt;&lt;span class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&amp;nbsp; This will generate output.xml in the same location.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="ms-rteThemeForeColor-2-0"&gt;&lt;/span&gt;&lt;span class="ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-size: 12pt;"&gt;&lt;/span&gt;&lt;span class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&amp;nbsp; Eg:&amp;nbsp;&lt;span class="Apple-style-span"&gt;&amp;gt;witadmin exportw&lt;/span&gt;itd /collection:http://vprdtfs2010:8080/tfs/quorumdevprojects /p:"er57q1" /f:"output.xml" /n:"Task"​&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&amp;nbsp; If you want to export the User Story template, simply use "UserStory" instead of "Task".&lt;/div&gt;&lt;span class="ms-rteThemeForeColor-2-0"&gt;&lt;/span&gt;&lt;span class="ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-size: 12pt;"&gt;&lt;/span&gt;&lt;span class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="ms-rteThemeForeColor-2-0"&gt;&lt;/span&gt;&lt;span class="ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-size: 12pt;"&gt;&lt;/span&gt;&lt;span class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;3. Change the file as necessary.&amp;nbsp; Remember, the output is simply an XML representation of the template and it is pretty intuitive when you open it up and start digging.&amp;nbsp; Add states, fields, transitions, etc.&lt;/div&gt;&lt;span class="ms-rteThemeForeColor-2-0"&gt;&lt;/span&gt;&lt;span class="ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-size: 12pt;"&gt;&lt;/span&gt;&lt;span class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="ms-rteThemeForeColor-2-0"&gt;&lt;/span&gt;&lt;span class="ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-size: 12pt;"&gt;&lt;/span&gt;&lt;span class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;4.&amp;nbsp; Run Command to Import the xml&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/div&gt;&lt;span class="ms-rteThemeForeColor-2-0"&gt;&lt;/span&gt;&lt;span class="ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-size: 12pt;"&gt;&lt;/span&gt;&lt;span class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp; witadmin importwitd /collection:http://tfs_server_name:8080/tfs/collection_name /p:"project_name" /f:"input_xml_file"​&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="ms-rteThemeForeColor-2-0"&gt;&lt;/span&gt;&lt;span class="ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-size: 12pt;"&gt;&lt;/span&gt;&lt;span class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="ms-rteFontFace-3 ms-rteFontSize-3 ms-rteThemeForeColor-2-0" style="font-family: 'times new roman',times,serif; font-size: 12pt;"&gt;&lt;div&gt;Eg:&amp;nbsp;&amp;gt;witadmin importwitd /collection:http://vprdtfs2010:8080/tfs/quorumdevprojects /p:"er57q1" /f:"output.xml"​&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-1956556460634257448?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/1956556460634257448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=1956556460634257448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1956556460634257448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1956556460634257448'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2011/05/modify-tfs-for-agile-development.html' title='Modify TFS for Agile development'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-3941342605000784650</id><published>2011-05-02T08:48:00.000-07:00</published><updated>2011-05-02T08:48:34.796-07:00</updated><title type='text'>Qwinsta, better than a rap name</title><content type='html'>If I were to have a 3rd kid I think I would be inclined to name him Qwinsta...&lt;br /&gt;&lt;br /&gt;One of the most underrated, secret, powerful commands out there, if you want to see who is logged on to a Server, simply type:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;qwinsta /server:&lt;/span&gt;&lt;your name="" server=""&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;your name="" server=""&gt;&lt;/your&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[your server name here]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At the command prompt and voila, all users are listed.  Pair that with a Powershell script and you are like Capt. Kirk sitting in his command chair.&lt;/your&gt;&lt;br /&gt;&lt;br /&gt;&lt;your name="" server=""&gt;I use it a lot to see who is logged in to a Server in case the max connections are exceeded. &lt;/your&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-3941342605000784650?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/3941342605000784650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=3941342605000784650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3941342605000784650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3941342605000784650'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2011/05/qwinsta-better-than-rap-name.html' title='Qwinsta, better than a rap name'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-6582060501958855945</id><published>2011-03-31T16:55:00.000-07:00</published><updated>2011-07-19T13:56:51.149-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qdoba Chipotle'/><title type='text'>Qdoba versus Chipotle</title><content type='html'>Ever wonder which restaurant serves the better burrito, Qdoba or Chipotle?&lt;br /&gt;&lt;br /&gt;I wondered the same thing for years, when a co-worker of mine though we should apply scientific theory to this important question.&amp;nbsp; So we did...&lt;br /&gt;&lt;br /&gt;The Test: Order the same burrito from each restaurant (with medium sauce, black beans).&amp;nbsp; One person cuts the burritos in half, sticks a toothpick in the one they know the brand, then the other person will choose to either switch the toothpicks or not (while the other person is not looking).&amp;nbsp; This ensures that neither person know which is which until it is revealed at the end.&lt;br /&gt;&lt;br /&gt;One person remarked prior to the test that Chipotle is better in some meats than others, so we decided to do the test for all meats.&lt;br /&gt;&lt;br /&gt;Here are the results:&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-bottom: 10px;"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td colspan="2"&gt;&lt;b&gt;CHICKEN&lt;/b&gt;&lt;/td&gt; &lt;td rowspan="2" style="padding-left: 10px;"&gt;WINNER: Chipotle 2 - 0&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td style="border: 1px solid; width: 90px;"&gt;Mark&lt;/td&gt;&lt;td style="border: 1px solid; width: 90px;"&gt;Chipotle&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td style="border: 1px solid;"&gt;Jamie&lt;/td&gt;&lt;td style="border: 1px solid;"&gt;Chipotle&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td colspan="2"&gt;&lt;b&gt;PORK&lt;/b&gt;&lt;/td&gt; &lt;td rowspan="4" style="padding-left: 10px;"&gt;WINNER: Qdoba 3 - 1&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td style="border: 1px solid; width: 90px;"&gt;Mark&lt;/td&gt;&lt;td style="border: 1px solid; width: 90px;"&gt;Qdoba&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td style="border: 1px solid;"&gt;Jamie&lt;/td&gt;&lt;td style="border: 1px solid;"&gt;Chipotle&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td style="border: 1px solid;"&gt;Padam&lt;/td&gt;&lt;td style="border: 1px solid;"&gt;Qdoba&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td style="border: 1px solid;"&gt;Rian&lt;/td&gt;&lt;td style="border: 1px solid;"&gt;Qdoba&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style="padding-bottom: 10px;"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td colspan="2"&gt;&lt;b&gt;STEAK&lt;/b&gt;&lt;/td&gt; &lt;td rowspan="2" style="padding-left: 10px;"&gt;WINNER: Chipotle 2 - 0&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td style="border: 1px solid; width: 90px;"&gt;Mark&lt;/td&gt;&lt;td style="border: 1px solid; width: 90px;"&gt;Chipotle&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td style="border: 1px solid;"&gt;Jamie&lt;/td&gt;&lt;td style="border: 1px solid;"&gt;Chipotle&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="padding-bottom: 10px;"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td colspan="2"&gt;&lt;b&gt;SHREDDED BEEF&lt;/b&gt;&lt;/td&gt; &lt;td rowspan="2" style="padding-left: 10px;"&gt;WINNER: Chipotle 2 - 0&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td style="border: 1px solid; width: 90px;"&gt;Mark&lt;/td&gt;&lt;td style="border: 1px solid; width: 90px;"&gt;Chipotle&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;   &lt;td style="border: 1px solid;"&gt;Jamie&lt;/td&gt;&lt;td style="border: 1px solid;"&gt;Chipotle&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;It's over, Chipotle with the overall victory 3-1!  It's worth a trip to Qdoba though if you are in the mood for pork (or craving their Queso sauce), otherwise, Chipotle is the place to go.  &amp;nbsp; Also to note, the burritos were priced within 5% of each other, so cost was not a factor in this comparison.&lt;br /&gt;&lt;br /&gt;&lt;script&gt;  $(document).ready(function() {    $('td').css('padding-left', '5px');  });&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-6582060501958855945?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/6582060501958855945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=6582060501958855945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/6582060501958855945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/6582060501958855945'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2011/03/q-doba-versus-chipotle.html' title='Qdoba versus Chipotle'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-2680894169020394962</id><published>2010-10-27T10:43:00.000-07:00</published><updated>2010-11-01T20:06:26.711-07:00</updated><title type='text'>Early morning running - Lessons learned</title><content type='html'>Today I decided to get a jump start to the day and get a run in before work.  Since the Seattle marathon is a month away, I wanted to do a 10 mile run today.&amp;nbsp; So I set my alarm clock for 06:15, got woken up at 05:30 by my 4 year old son, by 6am I was ready to go.&lt;br /&gt;&lt;br /&gt;Lessons learned:&lt;br /&gt;&lt;br /&gt;1.&amp;nbsp; Eating a banana and a pack of gummy bears before the run I thought I would be safe to run right away, but even with a banana I think it's better to wait 1/2 hour.&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp; I played soccer 2 days before and had a knock on my quad, no big deal at all.&amp;nbsp; But after 5 miles &lt;i&gt;every&lt;/i&gt; little injury is a big deal. &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp; There are a lot of old people going for walks at 6am.&amp;nbsp; Normally I get motivated seeing other runners or people being active.&amp;nbsp; Instead I felt myself saying "Ahh, that's a good life I could get used to...".&amp;nbsp; Not exactly motivating me to run faster.&lt;br /&gt;&lt;br /&gt;4.&amp;nbsp; In the dark you need to be more careful.&amp;nbsp; I stepped into two little potholes before learning this one. &amp;nbsp;Another thing to be very aware of is that your watch is hard to read. &amp;nbsp;My pace was all over the place, it made me realize how much I rely on my watch to monitor pace.&lt;br /&gt;&lt;br /&gt;5.&amp;nbsp; On the contrary, the &lt;a href="http://www.travelmuse.com/articles/seattle/seattle-anchor-overview"&gt;sunrise in Seattle&lt;/a&gt; can be pretty awesome.&amp;nbsp; Kept my attention for the second half of the run.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-2680894169020394962?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/2680894169020394962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=2680894169020394962' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/2680894169020394962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/2680894169020394962'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2010/10/early-morning-running-lessons-learned.html' title='Early morning running - Lessons learned'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-2693110515683970177</id><published>2010-08-27T10:56:00.000-07:00</published><updated>2010-08-27T11:09:11.434-07:00</updated><title type='text'>Capturing window "close" action</title><content type='html'>I was presented with the task of capturing the event in which one of our users would hit the close browser button (you know, that little 'x' on the top right).&amp;nbsp; The business wanted me to give a warning to the user that his information was still not saved yet.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; I remembered a solution I did a couple of years ago where I simply added a before unload event to my body and some simple Javascript:&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;    &lt;script&gt;&lt;br /&gt;        window.onbeforeunload = HandleOnClose;&lt;br /&gt;&lt;br /&gt;        function window_onbeforeunload()&lt;br /&gt;        { &lt;br /&gt;            // If this was the "x" close button that was clicked&lt;br /&gt;            if (window.event.clientY &lt; 0)&lt;br /&gt;            {&lt;br /&gt;                window.event.returnValue="You will lose any unsaved content, are you sure you want to close?";&lt;br /&gt;            }&lt;br /&gt;        } &lt;br /&gt;    &lt;/script&gt; &lt;br /&gt;&lt;/pre&gt;This works great... in IE, not in Firefox or Chrome though.&amp;nbsp; The problem is that IE tracks the clientY mouse position and the other browsers don't, so a different solution was needed.&amp;nbsp; I got some snippets off of the web for tracking mouse position and came up with this cross-browser solution and it works great.First, add the following Javascript to your page:&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;    &lt;script language="JavaScript1.2"&gt;&lt;br /&gt;    &lt;!--&lt;br /&gt;&lt;br /&gt;    // Detect if the browser is IE or not.&lt;br /&gt;    // If it is not IE, we assume that the browser is NS.&lt;br /&gt;    var IE = document.all?true:false&lt;br /&gt;&lt;br /&gt;    // If NS -- that is, !IE -- then set up for mouse capture&lt;br /&gt;    if (!IE) document.captureEvents(Event.MOUSEMOVE)&lt;br /&gt;&lt;br /&gt;    // Set-up to use getMouseXY function onMouseMove&lt;br /&gt;    document.onmousemove = getMouseXY;&lt;br /&gt;&lt;br /&gt;    // Temporary variables to hold mouse x-y pos.s&lt;br /&gt;    var tempX = 0&lt;br /&gt;    var tempY = 0&lt;br /&gt;&lt;br /&gt;    // Main function to retrieve mouse x-y pos.s&lt;br /&gt;&lt;br /&gt;    function getMouseXY(e) {&lt;br /&gt;      if (IE) { // grab the x-y pos.s if browser is IE&lt;br /&gt;        tempX = event.clientX + document.body.scrollLeft&lt;br /&gt;        tempY = event.clientY + document.body.scrollTop&lt;br /&gt;      } else {  // grab the x-y pos.s if browser is NS&lt;br /&gt;        tempX = e.pageX&lt;br /&gt;        tempY = e.pageY&lt;br /&gt;      }  &lt;br /&gt;      // catch possible negative values in NS4&lt;br /&gt;      if (tempX &lt; 0){tempX = 0}&lt;br /&gt;      if (tempY &lt; 0){tempY = 0}  &lt;br /&gt;      // show the position values in the form named Show&lt;br /&gt;      // in the text fields named MouseX and MouseY&lt;br /&gt;      document.Show.MouseX.value = tempX&lt;br /&gt;      document.Show.MouseY.value = tempY&lt;br /&gt;      return true&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //--&gt;&lt;br /&gt;    &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;        window.onbeforeunload = HandleOnClose;&lt;br /&gt;&lt;br /&gt;        function HandleOnClose(e) {&lt;br /&gt;&lt;br /&gt;            var posY = 0;&lt;br /&gt;            var elem = document.getElementsByName('MouseY');&lt;br /&gt;            if (elem[0]) {&lt;br /&gt;                posY = elem[0].value;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            if (posY &lt; 50) {    // Your form "submit" buttons will hopefully be more than 100 pixels down due to movement&lt;br /&gt;                return "You will lose any unsaved content, are you sure you want to close?";&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Next, add the following form to your page, this simply stores the mouse coordinates, you could use the var values, but I liked having these to debug and see what's happening.&lt;pre class="csharp" name="code"&gt;&lt;br /&gt;   &lt;form name="Show"&gt;&lt;br /&gt;        &lt;input type="hidden" name="MouseX" value="0" size="4"&gt;&lt;br /&gt;        &lt;input type="hidden" name="MouseY" value="0" style="display:block" size="0"&gt;&lt;br /&gt;    &lt;/form&gt;&lt;/pre&gt;&lt;br /&gt;That's it!  Now you can warn users using any browser that they still have unsaved work.  You will still need to monitor whether the page is dirty, etc, but this allows you to at least capture the event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-2693110515683970177?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/2693110515683970177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=2693110515683970177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/2693110515683970177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/2693110515683970177'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2010/08/capturing-window-close-action.html' title='Capturing window &quot;close&quot; action'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-3310863159970336272</id><published>2010-08-09T15:12:00.000-07:00</published><updated>2010-08-09T15:35:33.799-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amazon s3 backup'/><title type='text'>Backup sensitive file information using Amazon's S3 cloud</title><content type='html'>Everyone please answer the following questions honestly:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Do you store all your digital pictures on your home computer's hard drive, and do you have backups if the hard drive got corrupted?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Would your data be safe?  Do you have duplicate media?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. What if your entire house burned down?&lt;/b&gt; (hopefully this will never be the case!)&lt;br /&gt;&lt;br /&gt;I have backups, and the HD backup sits about 2 feet from my computer, so I realized that if my house burned down, I could not retrieve my photos.&lt;br /&gt;&lt;br /&gt;There are a few options, what I like to call "The Ghetto" backup, which would entail me giving my backup HD to a friend, but guess what?  Then I lose access to that and it can easily be outdated.&lt;br /&gt;&lt;br /&gt;There are some very good backup services, but they run $50 year, still good to have though.&lt;br /&gt;&lt;br /&gt;I opted for Amazon's S3 cloud services, &lt;a href="http://aws.amazon.com/s3/pricing/"&gt;here is their pricing&lt;/a&gt;, considering I've got about 10 Gig of pictures, I'm only out about $20/year.&lt;br /&gt;&lt;br /&gt;It's honestly pretty rudimentary, they don't really have a great interface, you are left using REST/SOAP calls for advanced handling.  That is until I discovered the S3Fox Firefox plugin which makes things a breeze!&lt;br /&gt;&lt;br /&gt;Now I have my pictures backed up, and another cool feature is that if I am away from my computer, I still have full access to all my original photos. See the screenshot below, real easy...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_NVKfWfAlNbc/TGB9nlvh5WI/AAAAAAAACk0/1dWovrtflUM/s1600/s3Fox.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_NVKfWfAlNbc/TGB9nlvh5WI/AAAAAAAACk0/1dWovrtflUM/s320/s3Fox.jpg" /&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/419861494385568398-3310863159970336272?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/3310863159970336272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=3310863159970336272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3310863159970336272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3310863159970336272'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2010/08/backup-sensitive-file-information-using.html' title='Backup sensitive file information using Amazon&apos;s S3 cloud'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NVKfWfAlNbc/TGB9nlvh5WI/AAAAAAAACk0/1dWovrtflUM/s72-c/s3Fox.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-5196066924440498091</id><published>2010-07-24T09:49:00.000-07:00</published><updated>2010-07-24T19:22:54.006-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net MVC authentication'/><title type='text'>Authentication sharing between diverse .Net apps</title><content type='html'>I work at a company that has a .Net WebForms app on .Net 3.5.  Pretty standard stuff, but from that we would like to link a .Net MVC app, and already be authenticated (We have WebForm authentication in the original Webforms app).&lt;br /&gt;&lt;br /&gt;I thought this would be a pretty frequent scenario, but Google tells me otherwise, so I thought I would post on how to "git-r-done".&lt;br /&gt;&lt;br /&gt;There are a few ways to do this, I chose a pretty simple, yet effective method.  First off, copy your Authentication method section from your parent app into the child web.config.  Exactly as is, no changes.&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;   &lt;authentication mode="Forms"&gt;&lt;br /&gt;      &lt;forms loginurl="Navigation/Login.aspx" name="QuorumReviewSecureAccess" path="/" protection="All" timeout="60"&gt;&lt;br /&gt;      &lt;/forms&gt;&lt;br /&gt;   &lt;/authentication&gt;&lt;br /&gt;&lt;/pre&gt;You will also need to share a machine key between the two applications, this is the insurance that the apps can share authentication.  Simply add a MachineKey to your web config:&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;&lt;machinekey decryptionkey=" &amp;lt;your key&amp;gt; " validationkey=" &amp;lt;your key&amp;gt; "&gt;&lt;br /&gt;&lt;/machinekey&gt;&lt;/pre&gt;&lt;br /&gt;That's all there is to it, now you can simply link the child app from the parent app and authentication will be passed and not required again, pretty cool!&lt;br /&gt;&lt;br /&gt;There is one more thing that is key.  Web.config settings are &lt;i&gt;inherited by default&lt;/i&gt;.  The way around that is easy as well. Simply wrap your System.web section in the parent web.config with the location tag and the "inheritInChildApplications" attribute.&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;&lt;location path="." inheritInChildApplications="false"&gt;&lt;br /&gt;    &lt;system.web&gt;&lt;br /&gt;           ....&lt;br /&gt;    &lt;/system.web&gt;&lt;br /&gt;  &lt;/location&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So there it is!  I have a complete separate MVC app sharing authentication behind the scenes with a legacy webforms app, took a while to figure out these little trick so thought I would share.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-5196066924440498091?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/5196066924440498091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=5196066924440498091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/5196066924440498091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/5196066924440498091'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2010/07/authentication-sharing-between-diverse.html' title='Authentication sharing between diverse .Net apps'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-4201249081057077501</id><published>2010-04-30T06:59:00.000-07:00</published><updated>2010-05-03T18:57:09.767-07:00</updated><title type='text'>Lance Bullit and Windows 3.1</title><content type='html'>My parents visited recently and brought me a historic gem, a "movie" that I made with some friends 20 years ago.  We got our teenage hands on a Hi-8 video camera and the rest is history.&lt;br /&gt;&lt;br /&gt;The name of the movie is &lt;i&gt;Lance Bullit&lt;/i&gt;, here it is:&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CRpFkt013v4&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CRpFkt013v4&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Notables:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The word processor in the office scene is a predecessor to Word Perfect.  It was freeware and I think I was running on a hacked copy of Windows 3.1&lt;/li&gt;&lt;li&gt;The sound of the fire in the car explosion scene is actually velcro&lt;/li&gt;&lt;li&gt;The bandages in the hospital scene is really TP&lt;/li&gt;&lt;li&gt;Dave plays two characters in the movie, and both have masks&lt;/li&gt;&lt;li&gt;2 men jump through the door to assault Lance (that was purposely left in when editing), but Lance only refers to a "thug" *blooper&lt;/li&gt;&lt;li&gt;If you listen closely, you can hear Mike counting &lt;i&gt;3, 2, 1&lt;/i&gt; in the office scene.&lt;/li&gt;&lt;/ul&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-4201249081057077501?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/4201249081057077501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=4201249081057077501' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/4201249081057077501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/4201249081057077501'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2010/04/lance-bullit-and-windows-31.html' title='Lance Bullit and Windows 3.1'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-3304320678670412497</id><published>2010-03-19T09:56:00.000-07:00</published><updated>2010-03-19T10:22:29.460-07:00</updated><title type='text'>Viewing Powerpoint documents from Silverlight 3.0</title><content type='html'>I recently had a request to create a link to a User Guide for one of our products.  "Great" I said, expecting an HTML page, or some text I could put into a Silverlight page.&lt;br /&gt;&lt;br /&gt;What I got was a 10 page Powerpoint presentation with graphics. Silverlight 3 can't natively show a PPT file, so how could I do this?&lt;br /&gt;&lt;br /&gt;First, I decided to create a "User Guide" hyperlink that would bring me out of Silverlight, and into an aspx page, here is the click event:&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;Uri SourceUri = new Uri(HtmlPage.Document.DocumentUri, Application.Current.Host.Source.ToString().Substring(0, Application.Current.Host.Source.ToString().IndexOf("ClientBin") - 1) + "/MSEUserGuide.aspx");&lt;br /&gt;      HtmlPage.Window.Navigate(SourceUri, "_blank"); &lt;br /&gt;&lt;/pre&gt;Next, I would use the ASP.net AJAX &lt;i&gt;SlideShow &lt;/i&gt;control, Joe Stagner has a &lt;a href="http://www.asp.net/learn/ajax-videos/video-163.aspx"&gt;nice video tutorial&lt;/a&gt; on using the control that I found helpful.&lt;br /&gt;&lt;br /&gt;This required a webservice with a list of images, but how to get the images from a PPT file?&amp;nbsp; Easy.&amp;nbsp; Open up the PPT file and choose "Save As" with your favourite image type.&amp;nbsp; I chose .gif and voila - 10 images nicely numbered from 1 to 10.&amp;nbsp; I then created a webservice to read in the images:&lt;br /&gt;&lt;pre class="csharp" name="code"&gt;[WebMethod]&lt;br /&gt;    public AjaxControlToolkit.Slide[] GetSlides()&lt;br /&gt;    {&lt;br /&gt;      List&lt;ajaxcontroltoolkit.slide&gt; slides = new List&lt;ajaxcontroltoolkit.slide&gt;();&lt;br /&gt;&lt;br /&gt;      for (int i = 1; i &amp;lt;= 10; i++)&lt;br /&gt;      {&lt;br /&gt;        string fileName = string.Format("PowerPoint/Slide{0}.GIF", i.ToString());&lt;br /&gt;        slides.Add(new AjaxControlToolkit.Slide(fileName, string.Format("Slide {0}", i.ToString()), string.Format("Slide {0}", i.ToString())));&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      return slides.ToArray();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;Finally, here is the XAML code from my MSEUserGuide.aspx page (this is the newly created page I navigate to from the click even): &lt;br /&gt;&lt;pre class="csharp" name="code"&gt;  &lt;form id="form1" runat="server"&gt;    &lt;br /&gt;    &lt;asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"&gt;&lt;br /&gt;    &lt;/asp:ToolkitScriptManager&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div style="text-align:center"&gt;      &lt;br /&gt;&lt;br /&gt;      &lt;asp:Image ID="Image1" runat="server"&lt;br /&gt;                  Style="border:1px solid black;width:auto"&lt;br /&gt;                  ImageUrl="~/PowerPoint/Slide1.GIF" /&gt;&lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;      &lt;asp:Label ID="imgLabel1" runat="server" Visible="false"&gt;&lt;/asp:Label&gt;&lt;br /&gt;      &lt;asp:Button ID="prevButton" runat="server" Text="Previous" /&gt;&lt;br /&gt;      &lt;asp:Button ID="playButton" runat="server" Text="Play" /&gt;&lt;br /&gt;      &lt;asp:Button ID="nextButton" runat="server" Text="Next" /&gt;&lt;br /&gt;      &lt;asp:SlideShowExtender ID="SlideShowExtender1"&lt;br /&gt;                    runat="server"&lt;br /&gt;                    SlideShowServiceMethod="GetSlides"&lt;br /&gt;                    SlideShowServicePath="~/UserManual.asmx"&lt;br /&gt;                    AutoPlay="true"&lt;br /&gt;                    ImageDescriptionLabelID="imgLabel1"&lt;br /&gt;                    NextButtonID="nextButton"&lt;br /&gt;                    PreviousButtonID="prevButton"&lt;br /&gt;                    PlayButtonID="playButton"&lt;br /&gt;                    PlayInterval="5000"&lt;br /&gt;                    PlayButtonText="Play"&lt;br /&gt;                    StopButtonText="Stop"&lt;br /&gt;                    UseContextKey="false"&lt;br /&gt;                    TargetControlID="Image1"&gt;&lt;br /&gt;      &lt;/asp:SlideShowExtender&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;  &lt;/form&gt;&lt;/body&gt;&lt;br /&gt;&lt;/pre&gt;That's it!  Seems like a complex way to show a simple PPT, but it was pretty quick to create and now you don't have to deal with the document any more which in my opinion is an advantage.&lt;br /&gt;&lt;br /&gt;Alternatives to this would be to purchase a 3rd Party product to display the native PPT, or to wait for Silverlight 4 which &lt;i&gt;I believe&lt;/i&gt; simplifies this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-3304320678670412497?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/3304320678670412497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=3304320678670412497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3304320678670412497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3304320678670412497'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2010/03/viewing-powerpoint-documents-from.html' title='Viewing Powerpoint documents from Silverlight 3.0'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-9063027916612185973</id><published>2010-02-23T22:12:00.000-08:00</published><updated>2010-02-23T22:12:15.279-08:00</updated><title type='text'>Meal preparation in the 21st century</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_NVKfWfAlNbc/S4TBn49qB5I/AAAAAAAABzc/sGEB786KaYg/s1600-h/microwave-dinner.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_NVKfWfAlNbc/S4TBn49qB5I/AAAAAAAABzc/sGEB786KaYg/s320/microwave-dinner.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Working at Microsoft, I'm seeing an interesting work culture/phenomenon that I've now adopted.&lt;br /&gt;&lt;br /&gt;Rather than go out to lunch with folks (getting off campus would involve driving), apart from eating in the MS cafeteria, 80% of the folks here eat at their desk.&lt;br /&gt;&lt;br /&gt;Remember the days when you actually prepared a meal from scratch?&amp;nbsp; Reheating that would be gourmet compared to what some of the folks eat here (myself included).&amp;nbsp; I actually saw one of my team workers eat 6 slices of white bread for lunch (nothing else - and yes, I counted 6 slices).&lt;br /&gt;&lt;br /&gt;I think my favourite lazy observation has got to be the microwave dinners.&amp;nbsp; They are so easy to prepare, one of the instructions on my dinner said heat on high for 3 minutes, return, stir, then heat for another minute and let sit for one more minute.&amp;nbsp; Five minutes and you are all set!&amp;nbsp; Unless you do what a lazy programmer would do and heat on high for 5 minutes straight, burn your mouth, and complain that the prep instructions are too involved.&lt;br /&gt;&lt;br /&gt;Welcome to the 21st century...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-9063027916612185973?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/9063027916612185973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=9063027916612185973' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/9063027916612185973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/9063027916612185973'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2010/02/meal-preparation-in-21st-century.html' title='Meal preparation in the 21st century'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NVKfWfAlNbc/S4TBn49qB5I/AAAAAAAABzc/sGEB786KaYg/s72-c/microwave-dinner.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-1498368386130766677</id><published>2009-12-18T19:25:00.000-08:00</published><updated>2011-06-22T20:37:05.120-07:00</updated><title type='text'>Interviews - Don'ts and Don'ts</title><content type='html'>Fresh off the job hunt I can sort of laugh at some of the lessons learned.&lt;br /&gt;&lt;br /&gt;I've always thought of myself as a bad phone interviewer and I was wrong.&amp;nbsp; I'm actually much worst than bad...&amp;nbsp; I feel much more relaxed when at in-person interviews.&amp;nbsp; My track record at in person is not too bad, probably 8/10 lifetime record.&amp;nbsp; My track record for phone interviews?  5 in 100?&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_NVKfWfAlNbc/SyxHCMzJcgI/AAAAAAAABsg/xSw9bojeiPI/s1600-h/OfficeSpace.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_NVKfWfAlNbc/SyxHCMzJcgI/AAAAAAAABsg/xSw9bojeiPI/s320/OfficeSpace.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;How bad are my phone interview skills?&amp;nbsp; You don't have to be a coder to observe how I can spiral downwards, absolutely freeze and become a complete idiot (more than normal).&amp;nbsp; Here are some excerpts from last weeks hilarity, none of them were from the company that hired me, rest assured.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #073763;"&gt;&lt;b&gt;Interviewer&lt;/b&gt;:&amp;nbsp; Mark, what prompted you to apply to our company?&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #444444;"&gt;&lt;b&gt;Me&lt;/b&gt;:&amp;nbsp; Oh, my friend suggested I apply...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #073763;"&gt;&lt;b&gt;Interviewer&lt;/b&gt;:&amp;nbsp; How can you describe the differences between .Net 1.1, 2.0, and 3.5?&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #444444;"&gt;&lt;b&gt;Me&lt;/b&gt;:&amp;nbsp; Ummm.....Ummm......Ummm.....I work with them all the time!....Ummm.....Ummm.....I can't think of any.&amp;nbsp; Sorry.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #073763;"&gt;&lt;b&gt;Interviewer&lt;/b&gt;:&amp;nbsp; What are the differences between a const and a readonly in .Net?&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #444444;"&gt;&lt;b&gt;Me&lt;/b&gt;:&amp;nbsp; A cont variable is a fixed, defined value that cannot be changed by the program, the readonly...?&amp;nbsp; Hmmm, haven't used one in a few years so not sure how it is different from the const...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;My favourite response:&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;Interviewer&lt;/b&gt;&lt;span style="color: #073763;"&gt;:&amp;nbsp; So how is a protected method different from a private?&amp;nbsp;&lt;/span&gt; (This was basically a question to see if I've ever programmed before)&lt;br /&gt;&lt;div style="color: #444444;"&gt;&lt;b&gt;Me&lt;/b&gt;:&amp;nbsp; Ummm....well, a private method is private to you know, umm, the container object.&amp;nbsp; The protected method is available to the associated objects.&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #073763;"&gt;&lt;b&gt;Interviewer&lt;/b&gt;:&amp;nbsp; Well, who can access the protected method?&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #444444;"&gt;&lt;b&gt;Me&lt;/b&gt;:&amp;nbsp; Well, the associated objects, it's public to all associated stuff.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #444444;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;FAIL&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I luckily didn't freeze up on a couple other phone interviews...&lt;br /&gt;&lt;br /&gt;Merry Christmas to all!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-1498368386130766677?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/1498368386130766677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=1498368386130766677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1498368386130766677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1498368386130766677'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/12/interviews-donts-and-donts.html' title='Interviews - Don&apos;ts and Don&apos;ts'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NVKfWfAlNbc/SyxHCMzJcgI/AAAAAAAABsg/xSw9bojeiPI/s72-c/OfficeSpace.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-6816542100642578267</id><published>2009-11-23T14:32:00.000-08:00</published><updated>2009-11-23T14:34:36.933-08:00</updated><title type='text'>CDs and DVDs - Why?</title><content type='html'>I remember when I saw my first CD, it was back in the mid-80s.  Revolutionary, you could skip to different song within a second.  But that was more than 20 years ago!  DVDs delivered more storage, but the same issues as the CD – it easily scratches.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_NVKfWfAlNbc/SwsNVzpi5JI/AAAAAAAABkY/iHIZx2cUQaA/s1600/597px-Commodore_1581_01.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_NVKfWfAlNbc/SwsNVzpi5JI/AAAAAAAABkY/iHIZx2cUQaA/s320/597px-Commodore_1581_01.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&amp;nbsp;I remember soon after the CD came out I spent ½ years worth of allowances to purchase my first high storage drive, &lt;a href="http://en.wikipedia.org/wiki/Commodore_1581"&gt;the Commodore 1581&lt;/a&gt;. It could  store a whopping 1 Meg of storage (great for my BBS – The Surf Board!), but what I remember distinctly is that it was the first time I used the 3 ½ floppy.  Sure you can make fun of the disk now due to it’s low storage, but since the actual magnetic disk was encased in plastic, you could throw it across the room, rub sandpaper across it, and it would still work.&lt;br /&gt;&lt;br /&gt;Last week my wife got a DVD from the library for our 3 year old son, &lt;a href="http://en.wikipedia.org/wiki/Bear_in_the_Big_Blue_House"&gt;Bear and the Big Blue House&lt;/a&gt;, and I was frustrated due to the frequent skips.  How long does a DVD last with 3 year olds handling it?  About 5 minutes I would guess.  I feel we’ve advanced so far in all aspects of technology, yet we still seemed plagued with this bad storage medium.&lt;br /&gt;&lt;br /&gt;Blue Ray?  Slightly better, but still not adopted everywhere.  Solid State HDs seem very promising, but I’m not seeing Bear and the Big Blue House on a 2 Gig stick at the library.  Or a USB port on my TV that will allow me to play it.&lt;br /&gt;&lt;br /&gt;I’m hoping soon CDs and DVDs will be relics on the wall, as for now I’ll continue to Fast Forward and rewind past bad frames…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-6816542100642578267?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/6816542100642578267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=6816542100642578267' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/6816542100642578267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/6816542100642578267'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/11/cds-and-dvds-why.html' title='CDs and DVDs - Why?'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NVKfWfAlNbc/SwsNVzpi5JI/AAAAAAAABkY/iHIZx2cUQaA/s72-c/597px-Commodore_1581_01.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-1037250143819985655</id><published>2009-11-12T16:39:00.000-08:00</published><updated>2009-11-13T12:37:49.891-08:00</updated><title type='text'>Asyncronous file upload in asp.net</title><content type='html'>I recently had a customer request a feature to upload files to their account.&lt;br /&gt;&lt;br /&gt;It's an interesting architectural dilemma, since the file is on the client, the file is to be stored on the Server (in my case, not even the web server), and I definitely wanted to avoid postbacks since it was a rich web app and a postback would look/behave badly.&lt;br /&gt;&lt;br /&gt;Some options are &lt;a href="http://ajaxuploader.com/"&gt;AjaxUploader&lt;/a&gt;, while it looks solid, I didn't want to pay for the service at the time since paperwork for this type of functionality was more work than coding from scratch.&lt;br /&gt;&lt;br /&gt;Another option was the AsyncFileUploader which comes with the latest &lt;a href="http://ajaxcontroltoolkit.codeplex.com/"&gt;Microsoft Toolkit&lt;/a&gt;, screenshot below. It does an automatic upload on selection, and provides a mind-numbing green background on success, and a red background if it was unsuccessful (which is a nice feature!)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_NVKfWfAlNbc/Svymxpd2wlI/AAAAAAAABjY/iM8Xr_md5KI/s1600-h/AsyncFileUpload.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_NVKfWfAlNbc/Svymxpd2wlI/AAAAAAAABjY/iM8Xr_md5KI/s320/AsyncFileUpload.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Unfortunately, this great control had errors with IE6.  Since a lot of our users are on IE6, this is a show-stopper.&lt;br /&gt;&lt;br /&gt;I adopted an idea from a co-worker, kludgy, but effective.  Essentially, you put a file upload control in an iFrame (so a postback within the iFrame doesn't postback the entire page), then send a Javascript message from the code behind when the file upload is complete.  There were several challenges with this:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;asp.net name mangling&lt;/li&gt;&lt;li&gt;Lots of Javascript&lt;/li&gt;&lt;li&gt;Updating the asp.net grid within the UpdatePanel so a full page refresh doesn't happen&lt;/li&gt;&lt;/ol&gt;Here was the result, works pretty well:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_NVKfWfAlNbc/Svyo9mmQEeI/AAAAAAAABjg/rGn9qFBL6cQ/s1600-h/IFrame.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_NVKfWfAlNbc/Svyo9mmQEeI/AAAAAAAABjg/rGn9qFBL6cQ/s320/IFrame.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Notice that the filename can be clicked to be viewed, and the delete option, these are all done in the asp.net code behind and done without full postback since the grid is within an UpdatePanel.&lt;br /&gt;&lt;br /&gt;So how do you update the grid on file upload?&lt;br /&gt;&lt;br /&gt;I added a linkbutton on the grid with associated codebehind (I kept the LinkButton1 name for posterity):&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;&lt;asp:linkbutton id="LinkButton1" onclick="LinkButton1_Click" runat="server" style="display: none;"&gt;LinkButton&lt;/asp:linkbutton&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre class="cpp" name="code"&gt;protected void LinkButton1_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;   LoadDocs();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Now, when the file uploads, simply call the javascript function &lt;i&gt;uploadNotify&lt;/i&gt;, via ServerCode:&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;ClientScript.RegisterStartupScript(this.GetType(), "uploadNotify", script);&lt;br /&gt;&lt;/pre&gt;Now, the final step?  Write the uploadNotify script on the parent page:&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;function raiseAsyncPostback() {&lt;br /&gt;   __doPostBack("&amp;lt;%= this.LinkButton1.UniqueID %&amp;gt;", "");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;The UniqueId is resolved to the mangled name (this nuisance now resolved in .net 4.0 - yay!)&lt;br /&gt;&lt;br /&gt;That's what it takes!  Kludgy, but effective, and gives you highly customizable options.  Personally, I'd wait for the Toolkit version to be spiffed up, looks really good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-1037250143819985655?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/1037250143819985655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=1037250143819985655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1037250143819985655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1037250143819985655'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/11/asyncronous-file-upload-in-aspnet.html' title='Asyncronous file upload in asp.net'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NVKfWfAlNbc/Svymxpd2wlI/AAAAAAAABjY/iM8Xr_md5KI/s72-c/AsyncFileUpload.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-7140718194722676385</id><published>2009-11-05T08:36:00.000-08:00</published><updated>2009-11-07T22:28:24.566-08:00</updated><title type='text'>Silverlight Autocompletebox with custom dropdown</title><content type='html'>I needed to create an Autocompletebox for selecting staff.  I wanted a robust select so you can type in the first name of the employee, last name, staff id, or even the office the staff member resided in, and the list would be filtered and selectable in the dropdown.&lt;br /&gt;&lt;br /&gt;Once selected, the box could fire an event that would load additional info about the employee.  Here is what it looks like, this is before I put in pretty formating, keep in mind I'm a coder, not an artist. :)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_NVKfWfAlNbc/SvMQms2GLMI/AAAAAAAABNw/n1T8rI67D_o/s1600-h/AutoCompleteBox.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_NVKfWfAlNbc/SvMQms2GLMI/AAAAAAAABNw/n1T8rI67D_o/s320/AutoCompleteBox.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;I decided to get the staff member via a WCF call, here is the GetStaffList() call I defined and am returning a custom class so I can specify the exact search criteria.&lt;br /&gt;&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;[OperationContract]&lt;br /&gt;public List&lt;staffsearchclass&gt; GetStaffList()&lt;br /&gt;{&lt;br /&gt;   Csla.ApplicationContext.ClientContext["HostName"] = // I used CSLA, put address here;&lt;br /&gt;&lt;br /&gt;   List&lt;staffsearchclass&gt; staffList = new List&lt;staffsearchclass&gt;();&lt;br /&gt;   StaffViewListClass staffListClass = StaffViewListClass.GetStaff();&lt;br /&gt;&lt;br /&gt;   foreach (StaffViewClass staff in staffListClass)&lt;br /&gt;   {&lt;br /&gt;      staffList.Add(new StaffSearchClass(staff.FullName, staff.FirstName,&lt;br /&gt;                  staff.OfficeName, staff.StaffId));&lt;br /&gt;   }&lt;br /&gt;   return staffList;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And here is the custom class definition:&lt;br /&gt;&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;[DataContract]&lt;br /&gt;    public class StaffSearchClass&lt;br /&gt;    {&lt;br /&gt;        [DataMember]&lt;br /&gt;        public string FullName { get; set; }&lt;br /&gt;        [DataMember]&lt;br /&gt;        public string StaffId { get; set; }&lt;br /&gt;        [DataMember]&lt;br /&gt;        public string FirstName { get; set; }&lt;br /&gt;        [DataMember]&lt;br /&gt;        public string OfficeName { get; set; }&lt;br /&gt;        [DataMember]&lt;br /&gt;        public string DisplayValue { get; set; }&lt;br /&gt;&lt;br /&gt;        public StaffSearchClass(string fullName, string firstName, string officeName, string staffId)&lt;br /&gt;        {&lt;br /&gt;            FullName = fullName;&lt;br /&gt;            FirstName = firstName;&lt;br /&gt;            OfficeName = officeName;&lt;br /&gt;            StaffId = staffId;&lt;br /&gt;            DisplayValue = StaffId + " " + FullName;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note the use of [DataContract] and [DataMember] attributes.  These are important so the ServiceReference knows about them.&lt;br /&gt;&lt;br /&gt;The next phase was to create a custom searchable Autocomplete box.  Jeff Wilcox Microsoft MVP has a great &lt;a href="http://www.jeff.wilcox.name/2008/11/autocompletebox-missing-guide/"&gt;"missing guide"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 1: In your Silverlight project, add a Service Reference to your WCF Service.&lt;br /&gt;&lt;br /&gt;Step 2: Get the Staff Data Asyncronously.  Here is my MainPage() method:&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;public MainPage()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;&lt;br /&gt;            SilverlightAuto.StaffService.StaffServiceClient client = new SilverlightAuto.StaffService.StaffServiceClient();&lt;br /&gt;&lt;br /&gt;            client.GetStaffListCompleted += new EventHandler&lt;silverlightauto.staffservice.getstafflistcompletedeventargs&gt;(client_GetStaffListCompleted);&lt;br /&gt;&lt;br /&gt;            client.GetStaffListAsync();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        void client_GetStaffListCompleted(object sender, SilverlightAuto.StaffService.GetStaffListCompletedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            List&lt;silverlightauto.staffservice.staffsearchclass&gt; list = e.Result.ToList();&lt;br /&gt;            uxAuto.ItemsSource = e.Result.ToList();&lt;br /&gt;&lt;br /&gt;            uxAuto.ItemFilter += SearchStaff;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;/silverlightauto.staffservice.staffsearchclass&gt;&lt;/silverlightauto.staffservice.getstafflistcompletedeventargs&gt;&lt;/pre&gt;&lt;br /&gt;Important to note: In my ServiceReference completed event, I've added an ItemFilter to my Autocompletebox control (uxAuto).  This is necessary to custom bind my search criteria (remember that I wanted to search on First name, last name, etc).  Autocompletebox can't assume what you want to search on, but makes it pretty easy to customize.&lt;br /&gt;&lt;br /&gt;Here is the SeachStaff method, you can put whatever search criteria you want, but be aware of performance if you are parsing a lot of data.&lt;br /&gt;&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;bool SearchStaff(string search, object value)&lt;br /&gt;        {&lt;br /&gt;            search = search.ToLower();&lt;br /&gt;            SilverlightAuto.StaffService.StaffSearchClass staff = value as SilverlightAuto.StaffService.StaffSearchClass;&lt;br /&gt;&lt;br /&gt;            if (staff != null)&lt;br /&gt;            {&lt;br /&gt;                if (staff.StaffId.StartsWith(search))&lt;br /&gt;                    return true;&lt;br /&gt;                else if (staff.FullName.ToLower().StartsWith(search))&lt;br /&gt;                    return true;&lt;br /&gt;                else if (staff.FirstName.ToLower().StartsWith(search))&lt;br /&gt;                    return true;&lt;br /&gt;                else if (staff.OfficeName.ToLower().StartsWith(search))&lt;br /&gt;                    return true;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As a reference, here is the Xaml for the autocomplete box.  Note you need to add the System.Windows.Controls.Input declarative.&lt;br /&gt;&lt;pre class="cpp" name="code"&gt;&lt;usercontrol d:designheight="480" d:designwidth="640" mc:ignorable="d" x:class="SilverlightAuto.MainPage" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:input="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;&lt;br /&gt;  &lt;grid x:name="LayoutRoot"&gt;&lt;br /&gt;        &lt;input:autocompletebox dropdownclosed="uxAuto_DropDownClosed"&lt;br /&gt;                               filtermode="Custom"&lt;br /&gt;                               fontsize="9"&lt;br /&gt;                               height="20"&lt;br /&gt;                               horizontalalignment="Left"&lt;br /&gt;                               margin="20,1,2,1"&lt;br /&gt;                               minwidth="180"&lt;br /&gt;                               tooltipservice.tooltip="Enter Staff Info" &lt;br /&gt;                               valuememberpath="DisplayValue" x:name="uxAuto"&gt;&lt;br /&gt;            &lt;input:autocompletebox.itemtemplate&gt;&lt;br /&gt;                &lt;datatemplate&gt;&lt;br /&gt;                    &lt;stackpanel orientation="Horizontal"&gt;&lt;br /&gt;                        &lt;textblock margin="0,0,5,0" text="{Binding Path=StaffId}"&gt;&lt;br /&gt;                        &lt;textblock text="{Binding Path=FullName}"&gt;&lt;br /&gt;                    &lt;/textblock&gt;&lt;br /&gt;                &lt;/textblock&gt;&lt;br /&gt;            &lt;/stackpanel&gt;&lt;br /&gt;        &lt;/datatemplate&gt;&lt;br /&gt;&lt;/input:autocompletebox.itemtemplate&gt;&lt;/input:autocompletebox&gt;&lt;/grid&gt;&lt;/usercontrol&gt;&lt;/pre&gt;&lt;br /&gt;So remember the requirement that I needed to populate some other stuff once the staff member has been selected?  That was tricky, there is no obvious event to hook into when the user has been selected, but if you look, I have an event on DropDownClosed.  Seems like an odd event to tie into, but works exactly like I wanted it to since when a staff member is selected the box closes!&lt;br /&gt;&lt;br /&gt;Overall I am really impressed with this control.  I used to have to do a lot of custom coding to re-create this behaviour in web forms, and it's &lt;b&gt;really&lt;/b&gt; kludgy to do in AJAX, if you are lucky enough to get something close to this functionality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-7140718194722676385?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/7140718194722676385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=7140718194722676385' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/7140718194722676385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/7140718194722676385'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/11/bool-searchstaffstring-search-object.html' title='Silverlight Autocompletebox with custom dropdown'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NVKfWfAlNbc/SvMQms2GLMI/AAAAAAAABNw/n1T8rI67D_o/s72-c/AutoCompleteBox.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-3974810035686845657</id><published>2009-11-02T12:31:00.000-08:00</published><updated>2009-11-02T14:42:54.060-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Halloween candy'/><title type='text'>Halloween candy consolidation?</title><content type='html'>It occurred to me while &lt;strike&gt;raiding&lt;/strike&gt; looking through my son’s Halloween candy yesterday, that all people bought the same candy to give out to treaters.  In fact, I think if I held up my son’s loot next to the Costco "mixed" snack size candy, &lt;i&gt;they would be identical&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Apart from M and M’s, snickers, butterfinger, and Hersheys snack size candy, there were no unique candies.   If I’m not mistaken, most of the treats came from the same manufacturer, Mars Inc. (or Hersheys).  There were also a lot less houses participating, my guess is every second house did not give out treats.  My era? 1 in 10 did not participate.&lt;br /&gt;&lt;br /&gt;Next year I am going to search for some unique treats, and buy a lot of the full size bars for the cool costumes – let’s treat the kids right!&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-3974810035686845657?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/3974810035686845657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=3974810035686845657' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3974810035686845657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3974810035686845657'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/11/halloween-candy-consolidation.html' title='Halloween candy consolidation?'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-8219664693863573243</id><published>2009-10-08T10:42:00.001-07:00</published><updated>2009-10-08T11:12:33.243-07:00</updated><title type='text'>My dad was right!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NVKfWfAlNbc/Ss4mVeUez-I/AAAAAAAABGM/3BmhBlRPdXk/s1600-h/banana.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 87px; height: 128px;" src="http://4.bp.blogspot.com/_NVKfWfAlNbc/Ss4mVeUez-I/AAAAAAAABGM/3BmhBlRPdXk/s320/banana.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5390287954367139810" /&gt;&lt;/a&gt;&lt;br /&gt;Sometimes I'll admit my dad does things differently (ok, a lot of the times), but after reading a post from my fellow namesake &lt;a href="http://timkadlec.com"&gt;Tim Kadlec&lt;/a&gt;, it turns out I've been opening a banana the wrong way my whole life!&lt;br /&gt;&lt;br /&gt;My family has made fun of my dad for the past decade for the way he opens the banana, but he was being way more efficient the whole time.  A humble lesson for me today, &lt;span style="font-style:italic;"&gt;always &lt;/span&gt;keep an open mind.  Lesson #2, you're never too old to learn a thing or two from your folks.&lt;br /&gt;&lt;br /&gt;Check out &lt;a href="http://www.youtube.com/watch?v=nBJV56WUDng"&gt;the video&lt;/a&gt;, stem down from now on!&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-8219664693863573243?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/8219664693863573243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=8219664693863573243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/8219664693863573243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/8219664693863573243'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/10/my-dad-was-right.html' title='My dad was right!'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NVKfWfAlNbc/Ss4mVeUez-I/AAAAAAAABGM/3BmhBlRPdXk/s72-c/banana.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-4838387048985157558</id><published>2009-07-19T22:01:00.001-07:00</published><updated>2009-07-19T22:19:31.766-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='west seattle bike ride'/><title type='text'>45 miles of Bongo</title><content type='html'>I've created a new route that I would like to share with anyone that would like to join me on a killer route that will destroy your legs.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.everytrail.com/view_trip.php?trip_id=281133"&gt;Click here for more detail&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;iframe src="http://www.everytrail.com/iframe2.php?trip_id=281133&amp;width=415&amp;height=300" marginheight=0 marginwidth=0 frameborder=0 scrolling=no width=415 height=300&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The route starts in West Seattle, goes through the heart of Seattle up a neverending ascent up Jackson Street, then goes around Mercer Island.  Once around Mercer, you can stop at washrooms and fill your water up because guess what?  You are only halfway done.  Go back to the Sound, across to West Seattle and loop around the North End of Alki.  For the finish take an uninteresting ride through an industrial area to the killer climb known as Highland Park drive.  Next to Montreax, this thing will leave you spent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-4838387048985157558?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/4838387048985157558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=4838387048985157558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/4838387048985157558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/4838387048985157558'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/07/45-miles-of-bongo.html' title='45 miles of Bongo'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-4196434159900324532</id><published>2009-07-13T09:04:00.000-07:00</published><updated>2009-07-13T18:54:44.841-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2009'/><category scheme='http://www.blogger.com/atom/ns#' term='STP in a day'/><title type='text'>STP in a day - epilogue</title><content type='html'>RAD and I got up at 03:15, ate breakfast and drove up to meet the team at 04:30. Nothing like doing an all day ride on 4 hours sleep!&lt;br /&gt;&lt;br /&gt;Felt pretty good riding in the morning, Spiz got a flat but overall everything was going smoothly. We ate and rested in Centralia, but soon encountered pretty strong headwinds and most notably the heat! It was 30C outside but felt like 40 on the bike. Frequent water stops helped.&lt;br /&gt;&lt;br /&gt;There were plenty of stops, by estimate I ate 6 Peanut butter and jelly sandwiches, 3 turkey wraps, 10 bananas, 6 slices of Banana bread, 10 Fig newtons, 10 Oreos, 5 SweetNSalty bars, 2 Cliff bars, 2 oranges, 2 Gels, 5 bottles of Gatorade, and 10 bottles of water.&lt;br /&gt;&lt;br /&gt;We crossed the finish at 8:45p and after stopping to change at the hotel, I enjoyed some tequila and Pork sliders.&lt;br /&gt;&lt;br /&gt;Yes, we look like dorks but c'mon, it 05:00 at this point...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NVKfWfAlNbc/Sltcj3D4zBI/AAAAAAAAAm8/GCw-yZZ2F3A/s1600-h/StartLine.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_NVKfWfAlNbc/Sltcj3D4zBI/AAAAAAAAAm8/GCw-yZZ2F3A/s320/StartLine.jpg" alt="" id="BLOGGER_PHOTO_ID_5357977952832769042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NVKfWfAlNbc/Sltcc_lAREI/AAAAAAAAAm0/cF6CIyKhM6c/s1600-h/TeamShot.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 201px;" src="http://1.bp.blogspot.com/_NVKfWfAlNbc/Sltcc_lAREI/AAAAAAAAAm0/cF6CIyKhM6c/s320/TeamShot.jpg" alt="" id="BLOGGER_PHOTO_ID_5357977834860069954" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-4196434159900324532?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/4196434159900324532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=4196434159900324532' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/4196434159900324532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/4196434159900324532'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/07/stp-in-day-epilogue.html' title='STP in a day - epilogue'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NVKfWfAlNbc/Sltcj3D4zBI/AAAAAAAAAm8/GCw-yZZ2F3A/s72-c/StartLine.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-621286690111624874</id><published>2009-07-09T16:39:00.000-07:00</published><updated>2009-07-09T16:42:56.954-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='STP in a day'/><title type='text'>2 days before the Seattle to Portland (STP)</title><content type='html'>Another sold out event at Cascade so there will be 10,000 riders to contend with on Saturday at 05:00, I'll definitely need a coffee before the race.&lt;br /&gt;&lt;br /&gt;I've set a goal this year of riding the STP in a day.  It's 330 km and most will ride this in two days.  I am one of the insane 2500 riders that will attempt in a single day.&lt;br /&gt;The good news is that the ride is very organized and there are plenty of stops for food and rehydration.  I've also trained for this cause I think it will be a long day in the saddle.  Hope to finish in under 12 hours.&lt;br /&gt;&lt;br /&gt;Team Bike Run Swig consists of The Guth, Spiz, RAD, Suzie, and myself.  We will meet at Suzie's at 04:30 (like I said, I'll need coffee!) and bike over to Husky Stadium for pictures and the start.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pack List:&lt;/span&gt;&lt;br /&gt;Bike Shoes&lt;br /&gt;Socks&lt;br /&gt;Shorts and BRS Jersey&lt;br /&gt;iPod Shuffle&lt;br /&gt;Pump&lt;br /&gt;2 Gels/Bars&lt;br /&gt;2 Bottles Gatorade&lt;br /&gt;ID and $$&lt;br /&gt;Cellphone&lt;br /&gt;Sunglasses&lt;br /&gt;Helmet&lt;br /&gt;MultiTool&lt;br /&gt;Spare tube&lt;br /&gt;Tire levers&lt;br /&gt;Race Packet with bib number&lt;br /&gt;Sunscreen&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-621286690111624874?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/621286690111624874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=621286690111624874' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/621286690111624874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/621286690111624874'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/07/2-days-before-seattle-to-portland-stp.html' title='2 days before the Seattle to Portland (STP)'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-2175978023151354630</id><published>2009-06-14T08:44:00.000-07:00</published><updated>2009-06-14T09:20:54.810-07:00</updated><title type='text'>2009 Flying Wheels Century</title><content type='html'>Yesterday I rode the 2009 Flying Wheels Century, basically my first organized ride and it was definitely eventful.  I learned first hand to "expect the unexpected".  I rode with The Guth, Spiz, and Guth's friend Olson AKA "Olly".&lt;br /&gt;&lt;br /&gt;We set out from Marymoore at exactly 08:00, I packed only a couple of gels since I heard that the pit stops have tons of food and water.  The first hour had a pretty steep hill that left everyone out of breath, but everything seemed pretty normal.&lt;br /&gt;&lt;br /&gt;Mile 35 - I pull a muscle in my left calf.  Great, I now have 65 more miles gritting my teeth in pain.  I decide to just not bend my left ankle for the rest of the ride which semi-works.  I thought of &lt;a href="http://www.redorbit.com/news/general/10682/hamilton_with_broken_collarbone_wins_stage/"&gt;Tyler Hamilton at the Tour de France&lt;/a&gt; years ago and sucked it up.&lt;br /&gt;&lt;br /&gt;Mile 38 - Olly pukes on the side of the road.&lt;br /&gt;&lt;br /&gt;Mile 40 - I get a front flat for no apparent reason.  Russian guy stops to help me pump - I owe him a beer but don't see him again.&lt;br /&gt;&lt;br /&gt;Mile 80 - Everyone is pretty tired and guess what's in store...a 3 mile hill!  The folks at Cascade have a sense of humour. :)&lt;br /&gt;&lt;br /&gt;Mile 85 - The Guth and I unexpectedly create our killer drink mix.  The Guth aptly describes it as "A lemon-lime roundhouse" that nearly knocked us off of our bikes.&lt;br /&gt;&lt;br /&gt;Mile 99.5 - Blow my rear tire out.  Yes, that number is correct, literally 1/2 mile from the finish I hear a loud gunshot blast and jump off my bike.  The photographer 100 yards away yelled "Whoa dude, was that your tire?".  I completely blow my rear tire out and have to walk across the finish line.&lt;br /&gt;&lt;br /&gt;All in all a great day, very hot conditions but I think we fared pretty well.  The pit stops were incredible, I ate delicious food and snacks throughout the day.   Spiz had his GPS running so &lt;a href="http://connect.garmin.com/activity/7111095"&gt;here are the details&lt;/a&gt; of the ride.  Next stop, STP in a day!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-2175978023151354630?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/2175978023151354630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=2175978023151354630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/2175978023151354630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/2175978023151354630'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/06/2009-flying-wheels-century.html' title='2009 Flying Wheels Century'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-8535901399052386796</id><published>2009-05-28T13:10:00.000-07:00</published><updated>2009-06-15T08:35:23.293-07:00</updated><title type='text'>North End Training Camp</title><content type='html'>Looks like we are going to head up to Bellingham this weekend for a North End training camp for bike season.&lt;br /&gt;&lt;br /&gt;We are going to do &lt;a href="http://www.bikely.com/maps/bike-path/Bellingham-Chuckanut-Padilla-Bay-Lake-Whatcom"&gt;this route&lt;/a&gt; on Saturday, stay overnight at Spiz's and I'm heading back Sunday morning.  The route looks fantastic with initial views of the Pacific Sound for the first half of the day and views of Mt. Baker for the second half.&lt;br /&gt;&lt;br /&gt;Unfortunately Robin can't make it, the poor guy hasn't received his Passport yet, so he will miss out on all the fun.  Skoda, more beer for me! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-8535901399052386796?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/8535901399052386796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=8535901399052386796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/8535901399052386796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/8535901399052386796'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/05/north-end-training-camp.html' title='North End Training Camp'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-4813333588226233151</id><published>2009-05-02T23:05:00.000-07:00</published><updated>2009-05-03T08:45:44.663-07:00</updated><title type='text'>Homemade Power bars</title><content type='html'>Ok, since I am constantly sucking down Cliff Bars, I decided to try to make my own and see what I could do.  After reading a &lt;a href="http://www.practicalhacks.com/2008/08/04/homemade-energy-bars-cheap-delicious-and-surprisingly-easy/"&gt;great article&lt;/a&gt; on how to make your own energy bars, I made a few tweaks, rolled up my sleeves, and got to work.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NVKfWfAlNbc/Sf01SUiJovI/AAAAAAAAAY4/9tO_M8cfdxw/s1600-h/DSC_0267+(Large).JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_NVKfWfAlNbc/Sf01SUiJovI/AAAAAAAAAY4/9tO_M8cfdxw/s320/DSC_0267+(Large).JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5331476122742399730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;My Ingredients&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3 1/2 cups rolled oats&lt;br /&gt;2 scoops protein powder&lt;br /&gt;1 T cinnamon&lt;br /&gt;1 cup nonfat dry milk&lt;br /&gt;1/2 cup chopped dates/raisins&lt;br /&gt;1/2 cup chopped nuts&lt;br /&gt;1/4 cup Ovaltine&lt;br /&gt;&lt;br /&gt;1 banana mashed&lt;br /&gt;1/4 cup molasses&lt;br /&gt;1/4 cup light corn syrup&lt;br /&gt;1/4 cup Honey or Agave syrup&lt;br /&gt;1 t Vanilla extract&lt;br /&gt;1/4 cup juice&lt;br /&gt;2 egg whites&lt;br /&gt;1 T vegetable oil&lt;br /&gt;1/4 Cup apple sauce&lt;br /&gt;&lt;br /&gt;Optional&lt;br /&gt;1/4 cup Peanut butter&lt;br /&gt;1/2 cup chocolate chips&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Instructions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   1. Thoroughly mix all the ingredients in a bowl&lt;br /&gt; (mix the dry ingredients together before adding liquid ingredients, then mix everything)&lt;br /&gt;&lt;br /&gt;   2. Put spoonfuls on the waxed paper (use some non-stick spray on the paper)&lt;br /&gt;  and form into bars (I use a plain table knife for doing this.)&lt;br /&gt;   Spreading the spoonfuls out a bit as you put them on the paper makes this much easier&lt;br /&gt;&lt;br /&gt;   3. Bake at 330°F for approximately 17 minutes or until the bottoms of your bars are golden brown&lt;br /&gt;&lt;br /&gt;Here is what they looked like before going into the oven:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NVKfWfAlNbc/Sf01zhW7veI/AAAAAAAAAZA/-kViEtgHmnE/s1600-h/DSC_0268+(Large).JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_NVKfWfAlNbc/Sf01zhW7veI/AAAAAAAAAZA/-kViEtgHmnE/s320/DSC_0268+(Large).JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5331476693120695778" /&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;And then after baking: &lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NVKfWfAlNbc/Sf02mzA_FbI/AAAAAAAAAZI/ym4rk_YHj7o/s1600-h/DSC_0270+(Large).JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_NVKfWfAlNbc/Sf02mzA_FbI/AAAAAAAAAZI/ym4rk_YHj7o/s320/DSC_0270+(Large).JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5331477574033806770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;The batch yielded 14 bars and were very close in size to a Clif Bar.&lt;br&gt;&lt;br&gt;&lt;br /&gt;I did a nutritional analysis of these bars (yes, I know I'm a geek) and here are the final numbers:&lt;br&gt;&lt;br&gt;&lt;br /&gt;Calories per bar: 253.5&lt;br&gt;&lt;br /&gt;Fat per bar: 6.4 g&lt;br&gt;&lt;br /&gt;Protein: 9.0 g&lt;br&gt;&lt;br /&gt;Sugar: 22.8 g&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;These numbers were extremely close to the Clif Bar as well! (Almond/Cherry was used in comparison)&lt;br&gt;&lt;br /&gt;The fat content was a little higher in my bars due to the added nuts, but you can tweak as you like.  I opted to add chocolate chips, and next time may add Peanut butter, look forward to a revised recipe soon!&lt;br&gt;&lt;br /&gt;All in all, they turned out great, fit great into the snack ziplocks (which are reusable so less waste).  If you try, let me know how they turn out!&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NVKfWfAlNbc/Sf05d6peZ4I/AAAAAAAAAZQ/9-vb-OKMWXI/s1600-h/DSC_0271+(Large).JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_NVKfWfAlNbc/Sf05d6peZ4I/AAAAAAAAAZQ/9-vb-OKMWXI/s320/DSC_0271+(Large).JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5331480719998740354" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-4813333588226233151?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/4813333588226233151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=4813333588226233151' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/4813333588226233151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/4813333588226233151'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2009/05/homemade-power-bars.html' title='Homemade Power bars'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NVKfWfAlNbc/Sf01SUiJovI/AAAAAAAAAY4/9tO_M8cfdxw/s72-c/DSC_0267+(Large).JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-7613803846000144388</id><published>2008-07-08T12:56:00.001-07:00</published><updated>2008-11-15T06:36:32.599-08:00</updated><title type='text'>Trenčin, Slovakia</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NVKfWfAlNbc/SHRf4oGbzGI/AAAAAAAAABI/PcizNJNDM6A/s1600-h/CastleTop.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_NVKfWfAlNbc/SHRf4oGbzGI/AAAAAAAAABI/PcizNJNDM6A/s320/CastleTop.JPG" alt="" id="BLOGGER_PHOTO_ID_5220903294470966370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We figured out a bus to Aushwitz though it was a little difficult in figuring it out.  Some Swedish girls were insisting it was on one platform but we made a quick decision and got a seat on a mini-bus (a lot of people were left standing).&lt;br /&gt;&lt;br /&gt;Aushwitz was very moving as expected.  I still remember Dachau, but when they took us to the expanded Birkenau site, there were about a 100 houses, each holding at least 2 or 3 hundred prisoners.  We also went through the crematorium, you could see the fingernail scratches in the concrete.&lt;br /&gt;&lt;br /&gt;We went back to Krakow and our mood lifted when we went out for dinner.  We had the local favourite, Kebobs, which was a type of pita filled with hand carved meat and spicy vegetable fixins'.  It was so good we had it two nights in a row.&lt;br /&gt;&lt;br /&gt;Next morning we hopped on the the train to Trenčin, a small college town which has one of the most important and spectacular castles in European history.  The castle was at a crossroads to many important trade routes.   In the base of the cliff on which it is built is etched some Roman phrase and it is dated at 205 AD.  It is a commemoration of some battle that occurred where 800 soldiers triumphed.&lt;br /&gt;&lt;br /&gt;We walked around the castle (which was built in the 1200s) and found it was very non-touristy (give it a couple of years), saw some very old weapon relics and an awesome view of the surrounding countryside.  That evening we took in dinner and drinks and saw sunset over a big church on the cliffside.&lt;br /&gt;&lt;br /&gt;Today we are off to Bratislava, then on to Budapest,&lt;br /&gt;&lt;br /&gt;Mark.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-7613803846000144388?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/7613803846000144388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=7613803846000144388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/7613803846000144388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/7613803846000144388'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2008/07/trenin-slovakia.html' title='Trenčin, Slovakia'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NVKfWfAlNbc/SHRf4oGbzGI/AAAAAAAAABI/PcizNJNDM6A/s72-c/CastleTop.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-1613459072535160840</id><published>2008-07-06T10:50:00.000-07:00</published><updated>2008-07-06T11:10:02.188-07:00</updated><title type='text'>Krakow, Poland</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Djen&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Dobre&lt;/span&gt;,&lt;br /&gt;&lt;br /&gt;  In &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Visoce&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Tatry&lt;/span&gt; we decided to go for a hike despite the drizzle.  Wouldn't you know that as soon as we started hiking the rain stopped the clouds parted, and we even got views of the mountains!  It was exactly what we needed, some decent views and exercise.   After we had some delicious Slovak food and beer we called it a night.&lt;br /&gt;&lt;br /&gt;  The next morning we caught a bus to the Slovak/Polish border.  A big drunk guy spoke to me the entire hour about how Communism was the best system and how America is corrupting the world.  He invited &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Chantelle&lt;/span&gt; and I to his private cabin in the woods but I politely declined.&lt;br /&gt;&lt;br /&gt;  After arriving at the border, we had to walk across to the Polish side which was chaos.  The bus to take us to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Zakopane&lt;/span&gt; was running and waiting for us, but we had no Polish &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;zlotny&lt;/span&gt;.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Chantelle&lt;/span&gt; ran into the line for money exchange while I stalled the driver.  We luckily made it on and were on our way.  When we were dropped off in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Zakopane&lt;/span&gt; we were told that the next train to Krakow leaves at 12:15pm on platform 2.  Of course at 12:10 we get on a train that says Krakow that is sitting on platform 2.  Well, our Polish must have been off because at 12:15 another train departs and we are still sitting there.  I asked a young polish guy and he says that that was the fast train that departed for Krakow from Platform 2 - the one that we were supposed to be on.  The train we were sitting on was the slow 4 hour train ride from Platform 1 &lt;strong&gt;&lt;em&gt;track&lt;/em&gt;&lt;/strong&gt; 2.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Ahhh&lt;/span&gt;!  Then a really drunk bum started trying to talk to me and it was a comical conversation.   "&lt;em&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Deutch&lt;/span&gt;&lt;/em&gt;?  No.  &lt;em&gt;Swedish&lt;/em&gt;?  No.  &lt;em&gt;Spanish&lt;/em&gt;?  No?  &lt;em&gt;Czech&lt;/em&gt;?  No."  I thought this was going to go on forever so we switched cars and started talking to a pretty cool Australian guy.  The bum finally found us but the Aussie kept him busy by playing his guitar.&lt;br /&gt;&lt;br /&gt;  We finally arrived in Krakow and it was insanely busy.  There is a Jewish festival here and it already attracts millions of visitors each year, so the main square made Venice's main square look small and quiet!  We had some trouble finding a hostel since everything was booked, but we finally found one (and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;consequently&lt;/span&gt; lost the Aussie).&lt;br /&gt;&lt;br /&gt;That night we went to dinner in a nightclub/bar and wander around until we got to the Jewish quarter.  The whole area was alight with loud music and people dancing, the Jewish can really party!  We had a few beers on an outdoor terrace and called it a night.&lt;br /&gt;&lt;br /&gt;Today we wandered around and checked out the Wawa (pronounced Vava) castle.  It holds a mighty cathedral and some pretty interesting ancient archetecture.  It kind of reminded me of checking out the Roman ruins in Rome.&lt;br /&gt;&lt;br /&gt;We then went a little out of the town and checked out the Salt mines.  The mines are super huge, in fact we went down 130 meters to level 3 and there are actually 9 levels!   The sculptures made out of salt (everything there is carved out of the salt) and are very impressive.&lt;br /&gt;&lt;br /&gt;Tomorrow we are off to Auschwitz and are planning to spend one more day in Slovakia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-1613459072535160840?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/1613459072535160840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=1613459072535160840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1613459072535160840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1613459072535160840'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2008/07/krakow-poland.html' title='Krakow, Poland'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-2276129950534538046</id><published>2008-07-04T06:44:00.000-07:00</published><updated>2008-07-04T06:52:50.299-07:00</updated><title type='text'>Vysoke Tatry</title><content type='html'>Nazdrav,&lt;br /&gt;&lt;br /&gt;  I am in the High Tatras today and it is drizzling pretty much all day.  Getting here was pretty interesting though.  We took a bus to Poprad yesterday and wanted to find a place to stay.  We were told to near the base of the mountain to a place called Nova Lesna.  We took an electrica (electric train/tram) to the small town and a gypsy woman approached us if we needed a place to stay.  We said yes and she took us to a dark corner of the town and showed us an awful room.  We tried to leave and she got very upset, I was starting to wonder if we were safe!  We found a nicer place down the road and set up for the night.  We went to the main town and had a great dinner and drank with the locals.&lt;br /&gt;&lt;br /&gt;  The next morning we were up an ready for our hike.  We tried to find the Penzion owner to pay and give the keys back, but she was gone to do her laundry!  (her neighbour told us).  We finally pounded hard on the door and the owners mom came to the door and took our money, but had to ask the neighbours for change (very strange scene).&lt;br /&gt;&lt;br /&gt;Unfortunately a storm came in and the weather is not very good, you can't see the beautiful mountains that are right in front of us.  We have even skipped our hike today, maybe after dinner a short hike, not sure.&lt;br /&gt;&lt;br /&gt;Tomorrow is a holiday in Slovakia, but we are hoping to catch one of the few buses to the Polish border where we will walk across where another bus will take us to Zakopane, Poland.&lt;br /&gt;&lt;br /&gt;Davi den,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-2276129950534538046?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/2276129950534538046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=2276129950534538046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/2276129950534538046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/2276129950534538046'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2008/07/vysoke-tatry.html' title='Vysoke Tatry'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-3203286235979179603</id><published>2008-07-02T01:57:00.000-07:00</published><updated>2008-11-15T06:36:33.682-08:00</updated><title type='text'>Kosice!</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_NVKfWfAlNbc/SGzLvgL0kXI/AAAAAAAAAA4/2lpzz2wxUzk/s1600-h/Townpic.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5218770085169369458" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_NVKfWfAlNbc/SGzLvgL0kXI/AAAAAAAAAA4/2lpzz2wxUzk/s320/Townpic.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_NVKfWfAlNbc/SGzLaJAJCMI/AAAAAAAAAAw/r2ze2f-g0mw/s1600-h/WindowView.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5218769718169110722" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_NVKfWfAlNbc/SGzLaJAJCMI/AAAAAAAAAAw/r2ze2f-g0mw/s320/WindowView.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_NVKfWfAlNbc/SGzLOBH62NI/AAAAAAAAAAo/8DzQlD1epPI/s1600-h/IMGP2438.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5218769509895821522" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_NVKfWfAlNbc/SGzLOBH62NI/AAAAAAAAAAo/8DzQlD1epPI/s320/IMGP2438.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_NVKfWfAlNbc/SGzKFX8qigI/AAAAAAAAAAg/Cy1nYRwsuOo/s1600-h/IMGP2419.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5218768261892180482" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_NVKfWfAlNbc/SGzKFX8qigI/AAAAAAAAAAg/Cy1nYRwsuOo/s320/IMGP2419.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;I finally have time to write, so much has happened. Yesterday started out as the day from hell, we caught a streetcar to the trainstation, but going the wrong way. We finally realized this and with our terrible Hungarian eeked out a conversation with someone to explain where we were supposed to go. That's when the fun began. After getting to the station with our heavy packs, we ran all over the place to find where to get tickets. We were weaving through caverns due to construction, waited in line, and were told to take a ticket. No problem - still 10 min before our train leaves. Wait in line again, buy our tickets, but which platform do we go to? The guy doesn't know, he says to wait in the other line. No problem, still 5 minutes left so we wait in line. The agent says platform 2, so we go to what we think is platform 2, (the platforms are poorly labeled) and get on the empty train. We wait 5 more minutes, go back to the agent and she says "Hurry, your train must be leaving!", we run out, ask a few more people why the train to Kosice is not moving and nobody knows. Turns out after asking the 5th person that we were standing at the wrong platform (I guess they just know) and we missed our train by 5 minutes. So we now had to wait a few hours to the next one.&lt;br /&gt;&lt;br /&gt;We had some errands to run since Chantelle thought she left her book at a restaurant the night before but on the way back to the train station we got busted for failing to pay for metro. We actually had a ticket, but it wasn't valid for transfers. They held us and took our passports so we wouldn't run, and we had to pay an $80 fine to get out of the mess - almost missing our train.&lt;br /&gt;&lt;br /&gt;Once we got on the train our day completely changed. Beautiful Hungarian and Slovakian countryside led us to Kosice where we caught another train to the medevil town of Levoča. We wandered around at night, had a great Slovakian dinner and hung out with the young crowd in a cool pub afterwards. I had a shot of Slivovica, a very Czech liquor made from plums.&lt;br /&gt;&lt;br /&gt;This morning we took a bus to PodPišs, a little town at the base of the šspiskzy Hrad (huge castle). The castle is enormous and you can freely walk around the grounds and check out the rooms and dungeon. The day was very hot and the lunch of beer, cheese, bread, and chocolate we brought with us hit the spot. It was very non-touristy, in fact, the only tourists were the Czechs! I haven't heard english or german for a couple of days now.&lt;br /&gt;&lt;br /&gt;I'll try and upload some pictures, until next time...&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-3203286235979179603?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/3203286235979179603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=3203286235979179603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3203286235979179603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/3203286235979179603'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2008/07/off-to-kosice.html' title='Kosice!'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NVKfWfAlNbc/SGzLvgL0kXI/AAAAAAAAAA4/2lpzz2wxUzk/s72-c/Townpic.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-1183079809338890623</id><published>2008-07-01T00:58:00.000-07:00</published><updated>2008-11-15T06:36:33.850-08:00</updated><title type='text'>Budapest!</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_NVKfWfAlNbc/SGnrpmARDvI/AAAAAAAAAAY/Qdl-vKW7ibQ/s1600-h/IMGP2388.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217960743094259442" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_NVKfWfAlNbc/SGnrpmARDvI/AAAAAAAAAAY/Qdl-vKW7ibQ/s320/IMGP2388.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Finally made it to Budapest, the flight itself was uneventful, but getting there was close. We got caught in a storm on the way to the airport and the border crossing was slow. I can still picture my poor dad clutching the wheel and weaving through traffic in the torrential downpour. The airport was angry at us for arriving so late but hey - we made it.&lt;br /&gt;&lt;br /&gt;Budapest is a great city, I can see why it is often overlooked as a travel destination though. No single building is the Eighth wonder, but all the old buildings and architecture are really amazing. I could wander around for hours. The language is very difficult to speak, we are struggling. I have figured out a few words to get me by, but we constantly get blank stares.&lt;br /&gt;&lt;br /&gt;Our hostel is a private dorm hosted by Maria and Istiban, luckily they speak a little English and can help us out. Today 3 Swedish woman are checking into the room next to us. My imagination has gone wild, but Chantelle told me to calm down, she is expecting 3 retirees. I am still holding out hope though. :)&lt;br /&gt;&lt;br /&gt;This morning we figured out a train to Slovakia tomorrow, we hope to be in the mountains by tomorrow.&lt;br /&gt;&lt;br /&gt;Sorry no pictures todaz, the computer we are on does not have a USB connection.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-1183079809338890623?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/1183079809338890623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=1183079809338890623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1183079809338890623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1183079809338890623'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2008/07/budapest.html' title='Budapest!'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NVKfWfAlNbc/SGnrpmARDvI/AAAAAAAAAAY/Qdl-vKW7ibQ/s72-c/IMGP2388.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-1631013152807671654</id><published>2008-06-28T18:26:00.000-07:00</published><updated>2008-06-28T18:36:53.769-07:00</updated><title type='text'>Finally made it to Toronto!</title><content type='html'>Wow.  Think of the worst flight you were ever on and I had a much worse flight yesterday.  It didn't start out well since because of mechanical problems the flight was an hour delayed.  It should have been a warning because an hour into our flight everyone was woken up by the pilot announcing we were making a landing in Great Falls, Montana since one engine has run out of oil and may stop.  Then we were stuck in the plane with a 1 1/2 year old for over 3 hours since there was nobody at the airport to let us out!    The pilot said they were going to fly a plane in from SLC, but that would be a few hours before anything would happen.  We finally got let out, but then the SLC flight was also delayed for an hour!  We also missed our connection in Cincinnati and couldn't get on the next one since it was full.  A lot of the passengers were yelling, swearing, (one lady was sobbing).  We finally got on another flight that took us to Toronto at 6pm the next day, almost 24 hours after we left Seattle.&lt;br /&gt;&lt;br /&gt;I'm not looking forward to the plane ride to Budapest tomorrow, but will be glad when I can kick back and relax.&lt;br /&gt;&lt;br /&gt;It's been great spending time with my parents and enjoying my mom's cooking, I almost have my sleep caught up for the trip (almost).&lt;br /&gt;&lt;br /&gt;Next post will be from Europe,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-1631013152807671654?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/1631013152807671654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=1631013152807671654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1631013152807671654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/1631013152807671654'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2008/06/finally-made-it-to-toronto.html' title='Finally made it to Toronto!'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-5981066017029469670</id><published>2008-06-26T08:17:00.000-07:00</published><updated>2008-06-26T08:26:54.188-07:00</updated><title type='text'>Last minute packing</title><content type='html'>Leavin' on a jet plane tonight...&lt;br /&gt;&lt;br /&gt;So I'm sort of packed, will hopefully keep up the blog while I am in Toronto and then onwards to Europe.  I still can't believe I have a near 24 hour journey to Budapest!  We leave Burlington by car, drive to Buffalo, then fly with 2 connections to Budapest and arrive 21 hours later.  That's what happens when you book using Cheapoair.com (yes, that is the actual name).&lt;br /&gt;&lt;br /&gt;My poor parents hopefully won't expect many pictures of Landon in the first couple of days.  He face-planted on some hard ground yesterday and has a huge bruise on his forehead and a cut on his nose.  Murphy's Law this happens the day before we leave.&lt;br /&gt;&lt;br /&gt;Looking forward to some time off!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-5981066017029469670?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/5981066017029469670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=5981066017029469670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/5981066017029469670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/5981066017029469670'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2008/06/last-minute-packing.html' title='Last minute packing'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-419861494385568398.post-4096462033169719772</id><published>2008-06-13T14:36:00.000-07:00</published><updated>2008-06-13T14:49:28.766-07:00</updated><title type='text'>First "Letters from Bilbao" entry</title><content type='html'>Letters from Bilbao?  Ok, it's a play on words from a great song from a great band called &lt;span style="font-style: italic;"&gt;The Lowest of the Low. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Not sure if I will be keeping this blog permanent, but will hopefully keep it up for my upcoming trip to Eastern Europe.  The trip is barely two weeks long, but with my busy schedule lately two weeks seems like an eternity.&lt;br /&gt;&lt;br /&gt;Plan is to fly to Toronto with Chantelle and Landon, drop Landon off with my parents, backpack Eastern Europe with Chantelle, come back to Toronto for some reuniting of friends and family then back to Seattle.  Our plans in Europe are tentatively Budapest -&gt; Bratislava -&gt; Krakow -&gt; Budapest.&lt;br /&gt;&lt;br /&gt;Packing will begin next week, the following week will be off!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/419861494385568398-4096462033169719772?l=mkadlec99.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mkadlec99.blogspot.com/feeds/4096462033169719772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=419861494385568398&amp;postID=4096462033169719772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/4096462033169719772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/419861494385568398/posts/default/4096462033169719772'/><link rel='alternate' type='text/html' href='http://mkadlec99.blogspot.com/2008/06/initial-entry.html' title='First &quot;Letters from Bilbao&quot; entry'/><author><name>Mark Kadlec</name><uri>http://www.blogger.com/profile/01023381592330342023</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp3.blogger.com/_NVKfWfAlNbc/SFLqCDcfOnI/AAAAAAAAAAM/TO04I_32vvQ/S220/mpk_small.jpg'/></author><thr:total>0</thr:total></entry></feed>
