<?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'><id>tag:blogger.com,1999:blog-3715951292715300758</id><updated>2009-10-12T21:02:52.949-07:00</updated><title type='text'>inner workings of lost thoughts</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dukelive.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default'/><link rel='alternate' type='text/html' href='http://dukelive.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Duke</name><uri>http://www.blogger.com/profile/03767960849279462239</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3715951292715300758.post-7232750304095997947</id><published>2009-05-14T07:28:00.000-07:00</published><updated>2009-05-14T11:31:27.754-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql xml'/><title type='text'>Read XML nodes in SQL</title><content type='html'>&lt;pre&gt;&lt;br /&gt;DECLARE @htc xml&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;SET&lt;/strong&gt; @htc = &lt;span style="color:#008000;"&gt;'&lt;br /&gt;&amp;lt;boatGroup&amp;gt;&lt;br /&gt;&amp;lt;boat&amp;gt;&lt;br /&gt;&amp;lt;boatId&amp;gt;1CDA141&amp;lt;/boatId&amp;gt;&lt;br /&gt;&amp;lt;/boat&amp;gt;&lt;br /&gt;&amp;lt;/boatGroup&amp;gt;'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SELECT&lt;/strong&gt; O.boat.value(&lt;span style="color:#008000;"&gt;'(boatId)[1]'&lt;/span&gt;,&lt;span style="color:#008000;"&gt;'nvarchar(max)'&lt;/span&gt;) &lt;strong&gt;AS&lt;/strong&gt; BoatID&lt;br /&gt;&lt;strong&gt;FROM&lt;/strong&gt; @htc.nodes(&lt;span style="color:#008000;"&gt;'/boatGroup/boat'&lt;/span&gt;) &lt;strong&gt;AS&lt;/strong&gt; O&lt;strong&gt;(&lt;/strong&gt;boat)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reads all the 'boatId' elements within the 'boat' node. Element names are case sensitive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3715951292715300758-7232750304095997947?l=dukelive.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dukelive.blogspot.com/feeds/7232750304095997947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3715951292715300758&amp;postID=7232750304095997947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/7232750304095997947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/7232750304095997947'/><link rel='alternate' type='text/html' href='http://dukelive.blogspot.com/2009/05/read-xml-nodes-in-sql.html' title='Read XML nodes in SQL'/><author><name>Duke</name><uri>http://www.blogger.com/profile/03767960849279462239</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15834862816231634865'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3715951292715300758.post-1485109263444119001</id><published>2008-01-06T23:47:00.000-08:00</published><updated>2008-01-07T00:09:03.910-08:00</updated><title type='text'>Psychology</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7l4uDbSzB0I/R4HbDkKpoUI/AAAAAAAAAB8/yCLUxx2UmHE/s1600-h/chat_ss.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_7l4uDbSzB0I/R4HbDkKpoUI/AAAAAAAAAB8/yCLUxx2UmHE/s400/chat_ss.jpg" alt="" id="BLOGGER_PHOTO_ID_5152640302982996290" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7l4uDbSzB0I/R4HbIUKpoVI/AAAAAAAAACE/Lt0rE3FBsi0/s1600-h/app.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_7l4uDbSzB0I/R4HbIUKpoVI/AAAAAAAAACE/Lt0rE3FBsi0/s400/app.jpg" alt="" id="BLOGGER_PHOTO_ID_5152640384587374930" border="0" /&gt;&lt;/a&gt;I was contracted by an individual in Italy to develop &lt;span style="font-weight: bold;"&gt;Psychology&lt;/span&gt;. It is a web based chat/game facebook application which trains people to communicate in a more effective manner. Peers rate each other while following the rules of the game. It was a very interesting project, both the concept and the development. The solution was built in ASP.NET using the AJAX toolkit and custom Javascript to create the necessary interface. The chat interface is different that what you would find on a typical chat room, it uses dialog bubbles to show who is speaking and it's position is on the right or left of the window depending on who is speaking. This information is published with the permission of the intellectual property owner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3715951292715300758-1485109263444119001?l=dukelive.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dukelive.blogspot.com/feeds/1485109263444119001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3715951292715300758&amp;postID=1485109263444119001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/1485109263444119001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/1485109263444119001'/><link rel='alternate' type='text/html' href='http://dukelive.blogspot.com/2008/01/psychology.html' title='Psychology'/><author><name>Duke</name><uri>http://www.blogger.com/profile/03767960849279462239</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15834862816231634865'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7l4uDbSzB0I/R4HbDkKpoUI/AAAAAAAAAB8/yCLUxx2UmHE/s72-c/chat_ss.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3715951292715300758.post-2168673895566277619</id><published>2007-06-30T15:44:00.000-07:00</published><updated>2008-01-03T12:23:31.154-08:00</updated><title type='text'>Wishlist Gifter Facebook Application</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7l4uDbSzB0I/R31BX0KpoRI/AAAAAAAAABk/mSA-sH0dGCE/s1600-h/new.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_7l4uDbSzB0I/R31BX0KpoRI/AAAAAAAAABk/mSA-sH0dGCE/s400/new.jpg" alt="" id="BLOGGER_PHOTO_ID_5151345426177827090" border="0" /&gt;&lt;/a&gt;When the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Facebook&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;API&lt;/span&gt; was release I became excited about it, I knew that social networks were rapidly becoming a part of life, and finally developers would interact with it. Strangely enough I find the possibilities of social networks more interesting than the sites themselves. In the past I leaped onto &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;myspace&lt;/span&gt;, but soon became disappointed with their disdain for third party developers. Developer access to social networks enable applications to have a real social context for their users and a real relevance to their lives.&lt;br /&gt;&lt;br /&gt;I developed &lt;span style="font-weight: bold;" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Wishlist Giter&lt;/span&gt; to get my feet wet with the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Facebook&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;API&lt;/span&gt;, which is very intuitive thanks to the &lt;a href="http://www.codeplex.com/FacebookToolkit"&gt;.Net &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Facebook&lt;/span&gt; Toolkit&lt;/a&gt;. Its purpose is simple, grab a user's &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;wish list&lt;/span&gt; from &lt;a href="http://www.amazon.com/"&gt;Amazon.com&lt;/a&gt; and display the items in the user's profile. The user's friend can look at these, click on them and be directed to pay and ship the item to the user.&lt;br /&gt;&lt;br /&gt;The process is seamless, point, click and get your friend/relative the movie or CD they wanted for their birthday.&lt;br /&gt;&lt;br /&gt;The application works with the international Amazon sites and only requires the email address you use with Amazon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3715951292715300758-2168673895566277619?l=dukelive.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dukelive.blogspot.com/feeds/2168673895566277619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3715951292715300758&amp;postID=2168673895566277619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/2168673895566277619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/2168673895566277619'/><link rel='alternate' type='text/html' href='http://dukelive.blogspot.com/2008/01/gifter-facebook-application.html' title='Wishlist Gifter Facebook Application'/><author><name>Duke</name><uri>http://www.blogger.com/profile/03767960849279462239</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15834862816231634865'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7l4uDbSzB0I/R31BX0KpoRI/AAAAAAAAABk/mSA-sH0dGCE/s72-c/new.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3715951292715300758.post-7285057432031246933</id><published>2007-03-01T23:32:00.000-08:00</published><updated>2007-07-17T01:40:34.905-07:00</updated><title type='text'>Phone access to MySpace. Early Testing. Couldn't wait.</title><content type='html'>&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/S1roTiBP-pY"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/S1roTiBP-pY" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;This is a project I am working on, it's a phone based gateway to MySpace. This does not use WAP(mobile web) access, it uses a regular phone line to access your MySpace message inbox. It works with TTS (text-to-speech) voice synthesis and voice/tone recognition.&lt;br /&gt;&lt;br /&gt;Soon you'll be able to check your MySpace inbox even from a pay phone! I just hope Tom doesn't shut me down.&lt;br /&gt;&lt;br /&gt;This is the first test after implementing the message parsing functions. The code is still not done, but is operational. This not a Beta, its an Alpha version.&lt;br /&gt;&lt;br /&gt;I need a better name for this project.&lt;br /&gt;PhoneSpace is the code name, please send me suggestions for the final name.&lt;br /&gt;&lt;br /&gt;The application is now connected to this account:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;friendid=1281827"&gt;&lt;img src="http://a863.ac-images.myspacecdn.com/images01/57/s_f3eb7508edc99f11f71398f45b8041ee.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;amp;friendid=1281827"&gt;[PhoneSpa..&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;s&gt;&lt;br /&gt;1) Send a message to that account [PhoneSpace]&lt;br /&gt;2) Call 1-877-338-6225&lt;br /&gt;&lt;br /&gt;When it answers enter this :&lt;br /&gt;&lt;br /&gt;PIN: 1111&lt;br /&gt;User ID: 4024444&lt;br /&gt;&lt;br /&gt;It should now read messages, remember it's experimental so errors might occur!&lt;br /&gt;&lt;/s&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;UPDATE:  The live demo has been disabled until it is moved to another server.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3715951292715300758-7285057432031246933?l=dukelive.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dukelive.blogspot.com/feeds/7285057432031246933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3715951292715300758&amp;postID=7285057432031246933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/7285057432031246933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/7285057432031246933'/><link rel='alternate' type='text/html' href='http://dukelive.blogspot.com/2007/03/early-testing-couldnt-wait.html' title='Phone access to MySpace. Early Testing. Couldn&apos;t wait.'/><author><name>Duke</name><uri>http://www.blogger.com/profile/03767960849279462239</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15834862816231634865'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3715951292715300758.post-7920979679439608783</id><published>2007-02-27T19:31:00.000-08:00</published><updated>2007-02-27T19:34:32.391-08:00</updated><title type='text'>Classes so far</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7l4uDbSzB0I/ReT35ZPEojI/AAAAAAAAAAo/mqXYhNDx6p4/s1600-h/mys.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_7l4uDbSzB0I/ReT35ZPEojI/AAAAAAAAAAo/mqXYhNDx6p4/s400/mys.jpg" alt="" id="BLOGGER_PHOTO_ID_5036422848705765938" 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/3715951292715300758-7920979679439608783?l=dukelive.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dukelive.blogspot.com/feeds/7920979679439608783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3715951292715300758&amp;postID=7920979679439608783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/7920979679439608783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/7920979679439608783'/><link rel='alternate' type='text/html' href='http://dukelive.blogspot.com/2007/02/classes-so-far.html' title='Classes so far'/><author><name>Duke</name><uri>http://www.blogger.com/profile/03767960849279462239</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15834862816231634865'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7l4uDbSzB0I/ReT35ZPEojI/AAAAAAAAAAo/mqXYhNDx6p4/s72-c/mys.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3715951292715300758.post-786201511723654259</id><published>2007-02-25T15:00:00.000-08:00</published><updated>2007-02-26T23:22:51.793-08:00</updated><title type='text'>PhoneSpace</title><content type='html'>Recently I’&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ve&lt;/span&gt; taken an interest in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;VoiceXML&lt;/span&gt; and related technologies which are used to develop a new generation of phone based applications. I’&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ve&lt;/span&gt; also had a few thoughts for a library component to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;programmatically&lt;/span&gt; access my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;MySpace&lt;/span&gt; inbox. The merger of these two itches is becoming a small project known informally as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;PhoneSpace&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;The idea is to access your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;MySpace&lt;/span&gt; mail inbox in the same way you access your phone’s &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;voice mail&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You would dial a 1-800 toll free number and have your messages read out loud by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;TTS&lt;/span&gt; (Text-To-Speech) voice synthesis.&lt;br /&gt;&lt;br /&gt;It’s an elaborate process considering it requires a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;VoiceXML&lt;/span&gt; client that connects to a server (ASP.NET) which communicates with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;MySpace&lt;/span&gt; by simulating the user.&lt;br /&gt;&lt;br /&gt;I don’t really have the time for these &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;endeavours&lt;/span&gt;, but this is something fun that might prove useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why?&lt;/span&gt;&lt;br /&gt;I have always held a deep interest in technologies that connect us with the world, and more importantly with the software that drives and inter-connects these mediums. I've written software that has connected Pocket PCs, desktops, servers, mobile phones and video game systems to other systems or services enabling communication and control on the go.&lt;br /&gt;It’s satisfying to connect two points together and to provide access to systems in innovative ways.&lt;br /&gt;&lt;br /&gt;Coming soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3715951292715300758-786201511723654259?l=dukelive.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dukelive.blogspot.com/feeds/786201511723654259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3715951292715300758&amp;postID=786201511723654259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/786201511723654259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/786201511723654259'/><link rel='alternate' type='text/html' href='http://dukelive.blogspot.com/2007/02/phonespace.html' title='PhoneSpace'/><author><name>Duke</name><uri>http://www.blogger.com/profile/03767960849279462239</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15834862816231634865'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3715951292715300758.post-1330642998116944679</id><published>2007-01-24T21:34:00.000-08:00</published><updated>2009-01-15T10:23:33.146-08:00</updated><title type='text'>GetVideoURL and GetVideoName from Youtube</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Update: 1/15/2009 YouTube made breaking changes to their site, the code below no longer works.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;The function &lt;span style="FONT-STYLE: italic"&gt;GetVideoURL&lt;/span&gt; returns the direct URL to the movie file in a Youtube page by passing the page's HTML source.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Private Function GetVideoURL(ByVal htmlSource As String) As String&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;'Youtube's url to retrieve the video&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Dim targetUrl As String = "http://www.youtube.com/get_video?"&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;'locate the src url passed to the flash player&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Dim regexpFindID = New Regex("/player2.swf?((.\n)*?)"",", RegexOptions.IgnoreCase)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Dim matchID As Match&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;matchID = regexpFindID.Match(htmlSource)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;If matchID.Success Then&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;'extract the videoID query string&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Dim vidID As String&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;vidID = matchID.Value.Substring(13, matchID.Value.Length - 15)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Return targetUrl + vidID&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Else&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Return Nothing&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Private Function GetVideoName(ByVal htmlSource As String) As String&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;'locate the title based on the div tag&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Dim regexpFindName = New Regex("video_title""&gt;((.\n)*?)", RegexOptions.IgnoreCase)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Dim matchName As Match&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;matchName = regexpFindName.Match(htmlSource)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;If matchName.Success Then&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;'extract the title&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Dim vidName As String&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;vidName = matchName.Value.Substring(13, matchName.Value.Length - 18)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;'remove common invalid file system chars &amp;amp; html syntax&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Dim arrInvalids As String() = {"\", "/", ":", "?", "&lt;", "&gt;", "", " ", "&amp;lt;", "&amp;gt;", "&amp;amp;", """}&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Dim invalid As String&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;For Each invalid In arrInvalids&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;If vidName.Contains(invalid) Then&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;vidName = vidName.Replace(invalid, "")&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Return vidName&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Else&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;Return Nothing&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;End Function&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="COLOR: rgb(255,255,255)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Xido is just an IE control using these functions along with threaded asynchronous calls using the Net.WebClient object to download the files (the download limit is by design to prevent abuse).&lt;br /&gt;Many people are now focusing on these kinds of applications, both running as clients or web applications and are including video transcoding as well as other features.&lt;br /&gt;&lt;br /&gt;By contrast Xido is only a small application built out of boredom using these old functions which I had once written out of my frustration while using &lt;a href="http://www.keepvid.com/"&gt;keepvid.com&lt;/a&gt;. Sites like KeepVid forced me to copy/paste URLs and manually rename every single file. Xido was only meant to alleviate this problem and should be considered defunct until an interesting challenge comes up using embedded Flash video.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Go build your own rip site like :&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.dubayou.com/mytube.php"&gt;&lt;br /&gt;http://www.dubayou.com/mytube.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ripzor.com/youtuberipper.html"&gt;http://www.ripzor.com/youtuberipper.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.keepvid.com/"&gt;http://www.keepvid.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Someone even built a webservice that does this same thing (I still don't know why).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3715951292715300758-1330642998116944679?l=dukelive.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dukelive.blogspot.com/feeds/1330642998116944679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3715951292715300758&amp;postID=1330642998116944679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/1330642998116944679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/1330642998116944679'/><link rel='alternate' type='text/html' href='http://dukelive.blogspot.com/2007/01/getvideoid.html' title='GetVideoURL and GetVideoName from Youtube'/><author><name>Duke</name><uri>http://www.blogger.com/profile/03767960849279462239</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15834862816231634865'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3715951292715300758.post-2816698185201542022</id><published>2007-01-15T21:54:00.000-08:00</published><updated>2007-02-12T22:35:16.276-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='ripper'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='you'/><category scheme='http://www.blogger.com/atom/ns#' term='tube'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='rip'/><category scheme='http://www.blogger.com/atom/ns#' term='youtube'/><title type='text'>Download from Youtube</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7l4uDbSzB0I/Raxo1J85LmI/AAAAAAAAAAU/DwqM0xWab38/s1600-h/xido.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_7l4uDbSzB0I/Raxo1J85LmI/AAAAAAAAAAU/DwqM0xWab38/s320/xido.jpg" alt="" id="BLOGGER_PHOTO_ID_5020502947024940642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Xido 1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Youtube ripper application&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With this application you can download videos from Youtube as you browse the actual Youtube website. It will download videos directly to a folder with the same title as in the website.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download (link below)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unzip the file&lt;/li&gt;&lt;li&gt;Run &lt;span style="font-style: italic;"&gt;xido.exe&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Browse to a video on the website&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Click on the television button to download the video&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;The videos are in flash video format (&lt;span style="font-style: italic;"&gt;.flv&lt;/span&gt;) &lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;, &lt;/span&gt;&lt;/span&gt;you might need to download &lt;a href="http://www.videolan.org/"&gt;VLC&lt;/a&gt; to play them.&lt;br /&gt;You must have the .net framework 2.0 installed in your system for Xido to run. The application notifies the user of a completed download by yelling "toasty!" (like in Mortal Kombat 2)  you can disable or change this by deleting or replacing the &lt;span style="font-style: italic;"&gt;toasty.wav&lt;/span&gt; file.&lt;br /&gt;&lt;br /&gt;This originated from an unfinished post regarding embedded flash video.  This is a quick and dirty personal app.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www12.asphost4free.com/eldukemx/xido_1.0.zip"&gt;Download Here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3715951292715300758-2816698185201542022?l=dukelive.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dukelive.blogspot.com/feeds/2816698185201542022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3715951292715300758&amp;postID=2816698185201542022' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/2816698185201542022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/2816698185201542022'/><link rel='alternate' type='text/html' href='http://dukelive.blogspot.com/2007/01/xido-1.html' title='Download from Youtube'/><author><name>Duke</name><uri>http://www.blogger.com/profile/03767960849279462239</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15834862816231634865'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7l4uDbSzB0I/Raxo1J85LmI/AAAAAAAAAAU/DwqM0xWab38/s72-c/xido.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3715951292715300758.post-5790476244269947007</id><published>2006-12-26T19:53:00.000-08:00</published><updated>2007-02-20T20:07:23.620-08:00</updated><title type='text'>Hello World</title><content type='html'>Just opened an account here.&lt;br /&gt;Comments are anonymous, feel free to leave one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3715951292715300758-5790476244269947007?l=dukelive.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dukelive.blogspot.com/feeds/5790476244269947007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3715951292715300758&amp;postID=5790476244269947007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/5790476244269947007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3715951292715300758/posts/default/5790476244269947007'/><link rel='alternate' type='text/html' href='http://dukelive.blogspot.com/2006/12/hello.html' title='Hello World'/><author><name>Duke</name><uri>http://www.blogger.com/profile/03767960849279462239</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15834862816231634865'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>