<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tamir Khason - Just code &#187; blogging tools</title>
	<atom:link href="http://khason.net/tag/blogging-tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://khason.net</link>
	<description>Take care of the sense, and the sounds will take care of themselves.</description>
	<lastBuildDate>Thu, 15 Apr 2010 13:25:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Line-Of-Business vs. Beautifulness or two dogmas comparison as exemplified by two Twitter applications</title>
		<link>http://khason.net/blog/line-of-business-vs-beautifulness-or-two-dogmas-comparison-as-exemplified-by-two-twitter-applications/</link>
		<comments>http://khason.net/blog/line-of-business-vs-beautifulness-or-two-dogmas-comparison-as-exemplified-by-two-twitter-applications/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 08:03:48 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[blogging general]]></category>
		<category><![CDATA[blogging tools]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[soft]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Windows Gadgets]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://khason.net/blog/line-of-business-vs-beautifulness-or-two-dogmas-comparison-as-exemplified-by-two-twitter-applications/</guid>
		<description><![CDATA[Today I want to speak about two dogmas: design and functional driven programming. As the example of those two approaches, I want to introduce two Twitter clients: *Chirp by thirteen23 and TwitterFox by Naan Studio As you can see, *Chirp is state of art application with outstanding user interface, and well-defined usability studies. While TwitterFox [...]

<p/>]]></description>
			<content:encoded><![CDATA[<p>Today I want to speak about two dogmas: design and functional driven programming. As the example of those two approaches, I want to introduce two Twitter clients: <a href="http://www.thirteen23.com/experiences/desktop/chirp/" target="_blank">*Chirp by thirteen23</a> and <a href="http://twitterfox.net/" target="_blank">TwitterFox by Naan Studio</a></p>
<p><img title="Chirp and TwitterFox comparision" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="651" alt="Chirp and TwitterFox comparision" src="http://khason.net/images/2009/01/image26.png" width="664" border="0" /> </p>
<p>As you can see, *Chirp is state of art application with outstanding user interface, and well-defined usability studies. While TwitterFox is wacky grey boring kind-of-grid only. However, you cannot judge app by only how it looks like. Let’s try to understand first what’s for you need twitter client?</p>
<h3>Defining application goals by user story</h3>
<p><a href="https://twitter.com/tamir" target="_blank">I’m using twitter</a> as quick and handy business tool to write my thought, feelings and everyday events. It is not my main (not even secondary) task during the day, so I want to be able to open, write and forget. Thus, I need an application, that can be invoked by one click and dismissed after writing. Also, I do not want background application to gasp valuable space in my screen, when not in use. Thus it should be background process with reduced workset and one textarea, to be focused when the main window become active. Also the application should hide itself when unfocus, yet be able to notify me about events without disturbing. </p>
<p>Let’s see how it done in *Chirp:</p>
<ul>
<li>140MB workset</li>
<li>No ability to hide</li>
<li>Bouncing thingy at left upper corner to disturb you – it designed as you main desktop beautifier.</li>
<li>No ability to know that new twittes arrived without showing main window</li>
<li>Twit process required to click additional button (named “Update” for some reason)</li>
<li>If you not finished typing, you can either dismiss all text of post it.</li>
<li>Strange 140 characters countdown on background absolutely esthetical, yet very disturbing.</li>
<li>You cannot type more, then 140 characters – this restricted by textbox. If pasted bigger text all additional characters truncated.</li>
<li>You need mouse to operate an application</li>
</ul>
<p>Now TwitterFox:</p>
<ul>
<li>10MB workset</li>
<li>You can hide it by hitting escape or clicking X button</li>
<li>Small and portable without disturbing elements – it not designed as your main everyday app.</li>
<li>New twits counter over small icon in browser tray, all other notifications can be disabled</li>
<li>Once focused text are become active, expanded automatically and ready to write</li>
<li>If you’re hiding it without clearing area, all un write text remains – you can clear it by one click</li>
<li>Small 140 characters countdown which is visible only when typing</li>
<li>You can type more, then 140 characters – counter becomes red, and you cannot post, however you’re able to fix, by dismissing unnecessary spaces or characters.</li>
<li>Can be operated by only keyboard.</li>
</ul>
<p><strong>Bottom line</strong>: *Chirp designed to show how good it looks, while TwitterFox to twit only. Thus for my specific user story TwitterFox won!</p>
<h3>Defining functional specifications</h3>
<p>Next task defined for Twitter is read other twits. I used to read all my following and followers when I have free minute. Sometimes I retwit things, rather often reply followers and read replies and rarely send direct messages. </p>
<p>*Chirp provides twit area without scrollbar, yet not restricted to number of twits. Other words, you can scroll with mouse wheel only or by holding somewhere inside and dragging unlimited up and down. When the mouse is over specific twit, it fades and show three buttons: reply, direct and retwit. Also each twit contains the name of the client was used (just like in regular web interface). When clicking user avatar it brings to special internal screen with last twit of the user, information and statistics about him, three functional buttons: UnFollow, Fave and Block and huge button Get User’s Tweets. When clicking the line displays the time of the twit it puts twit url into clipboard.</p>
<p>Also *Chirp contains five main functional buttons: Faves, Home, Direct, Update and Refresh. When Home tab unfocused (for example you’re on other screen), it also displays a number of new twits. </p>
<p>Error screen of *Chirp is really odd. It contains everything you not really need to know and beautiful whales moving on screen.</p>
<p><img title="WTF?" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="458" alt="WTF?" src="http://khason.net/images/2009/01/image27.png" width="305" border="0" /> </p>
<p>TwitterFox is much simpler. It contains two buttons on mouse/keyboard over – reply and fave. When clicking on user’s avatar it opens it’s page in Twitter with all necessary information. Main TwitterFox window contains three buttons: Recent, Replies, Messages.</p>
<p>No doubt, that *Chirp provides much richer functional spec, but wait, am I really need all this? I told earlier, that I used to read twits and replies, while *Chirp has no such view at all. You can easy copy twit url into clipboard, but what for? Also, you can read&#160; bio and statistics of people you following whenever you want without opening browser window. But how often you’re doing that?</p>
<p>TwitterFox concentrated on functionality – twit, read, reply, read replies (and direct messages) – base tasks , Twitter designed for. It also marks replies with contrast color in public timeline, while *Chirp has inline reply functionality with threaded discussions support (which is very odd for Twitter)</p>
<p><strong>Bottom line</strong>: *Chirp is enriched with not useful features, while TwitterFox contains only things, you’re use. Thus for my specific functional requirements TwitterFox won again!</p>
<h3>Developers vs. Designers final round</h3>
<p>So, we already understand, that *Chirp is an application, designed to show how skilled <a href="http://www.thirteen23.com/" target="_blank">thirteen23</a> designers are. And it achieved this goal. The application is state-of-art, looks and designed very well with taking into account even small details, however it huge, unusable for everyday twittering and extremely slow. This is a general example about Designers’ doctrine.</p>
<p>TwitterFox is very ugly, but concentrated on functionality, tiny and reactive. It includes only features are necessary for twittering and has no other goals. So, this is a general example about Developers’ doctrine.</p>
<p>Is it possible to messmate those doctrines? Probably it is. And it is really simple. Each one of actors should do his own work. Designers should design and Developers – develop. I spoke about it a lot during my lectures, I’ll speak about it also at <a href="http://khason.net/blog/action-required-smart-client-development-present-and-future/" target="_blank">11th February in user group meeting</a>. By now, when you know how I see Twitter, <a href="https://twitter.com/tamir" target="_blank">you can start following me</a>. Also, I’m interesting to hear your ideas about Designer-Developer intercommunication. It is not just about Microsoft way <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img title="Designer and Developer - Microsoft way" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="207" alt="Designer and Developer - Microsoft way" src="http://khason.net/images/2009/01/image28.png" width="419" border="0" /> </p>
<p>Have a nice day and be good people.</p>


<p/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/line-of-business-vs-beautifulness-or-two-dogmas-comparison-as-exemplified-by-two-twitter-applications/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>How to migrate from CS2007 to WordPress, Movable Type  (or any other blog engine, supports XML-RPC) with C#</title>
		<link>http://khason.net/dev/how-to-migrate-from-cs2007-to-wordpress-movable-type-or-any-other-blog-engine-supports-xml-rpc-with-c/</link>
		<comments>http://khason.net/dev/how-to-migrate-from-cs2007-to-wordpress-movable-type-or-any-other-blog-engine-supports-xml-rpc-with-c/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 19:31:51 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[DEV]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[blogging tools]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://khason.net/dev/how-to-migrate-from-cs2007-to-wordpress-movable-type-or-any-other-blog-engine-supports-xml-rpc-with-c/</guid>
		<description><![CDATA[Today we’ll speak about migration from community server 2007 to another blog engine, when you have no access to CS and/or other database. Let’s set targets first: You want to migrate all posts You want to migrate all comments You want to transfer all hosted images and media files You should update all internal links [...]


Related posts:<ol><li><a href='http://khason.net/dev/inotifypropertychanged-auto-wiring-or-how-to-get-rid-of-redundant-code/' rel='bookmark' title='Permanent Link: INotifyPropertyChanged auto wiring or how to get rid of redundant code'>INotifyPropertyChanged auto wiring or how to get rid of redundant code</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Today we’ll speak about migration from community server 2007 to another blog engine, when you have no access to CS and/or other database. </p>
<p>Let’s set targets first:</p>
<ul>
<li>You want to migrate all posts</li>
<li>You want to migrate all comments</li>
<li>You want to transfer all hosted images and media files</li>
<li>You should update all internal links </li>
</ul>
<p>Looks complicated? not really. First of all, grab any <a target="_blank" href="http://www.xmlrpc.com/">XML-RPC</a> framework (for example <a target="_blank" href="http://www.xml-rpc.net/">xml-rcp.net</a>). Then create a proxy to CS2007 – it uses Metablog API. You can see all defined methods by accessing /blogs/metablog.ashx</p>
<blockquote><p>[XmlRpcUrl(&quot;<a href="http://blogs.microsoft.co.il/blogs/metablog.ashx&quot;)]&#8220;>http://blogs.microsoft.co.il/blogs/metablog.ashx&quot;)]</a>      <br />public interface ICommunityServer {      <br />&#160;&#160; [XmlRpcMethod(&quot;blogger.deletePost&quot;)]      <br />&#160;&#160; bool deletePost(string appKey, string postid, string username, string password, bool publish); </p>
<p>&#160;&#160;&#160; [XmlRpcMethod(&quot;blogger.getUsersBlogs&quot;)]     <br />&#160;&#160; BlogInfo[] getUsersBlogs(string appKey, string username, string password); </p>
<p>&#160;&#160; [XmlRpcMethod(&quot;metaWeblog.editPost&quot;)]     <br />&#160;&#160; bool editPost(string postid, string username, string password, Post post, bool publish); </p>
<p>&#160;&#160; [XmlRpcMethod(&quot;metaWeblog.getCategories&quot;)]     <br />&#160;&#160; CategoryInfo[] getCategories(string blogid, string username, string password); </p>
<p>&#160;&#160; [XmlRpcMethod(&quot;metaWeblog.getPost&quot;)]     <br />&#160;&#160; Post getPost(string postid, string username, string password); </p>
<p>&#160;&#160; [XmlRpcMethod(&quot;metaWeblog.getRecentPosts&quot;)]     <br />&#160;&#160; Post[] getRecentPosts(string blogid, string username, string password, int numberOfPosts); </p>
<p>&#160;&#160; [XmlRpcMethod(&quot;metaWeblog.newPost&quot;)]     <br />&#160;&#160; string newPost(string blogid, string username, string password, Post post, Boolean publish);      <br />}</p>
</blockquote>
<p>As you can see, you can read and update posts, but there is no methods for comments. What to do? Community Server supports comments rss syndication. So why not to use it? Also, if you want to fix links later, save all retrieved urls</p>
<blockquote><p>posts = csblog.getRecentPosts(csBlogid, csUsername, csPassword, toFetch);     <br />for (int i = 0; i &lt; posts.Length; i++) {      <br />if (!_postsIndex.ContainsKey(posts[i].link)) _postsIndex.Add(posts[i].link, string.Empty);      <br />…      <br />var commentsRSSURL = string.Concat(&quot;<a href="http://blogs.microsoft.co.il/blogs/tamir/rsscomments.aspx?PostID=&quot;">http://blogs.microsoft.co.il/blogs/tamir/rsscomments.aspx?PostID=&quot;</a>, posts[i].postid);      <br />_rssReader = new XmlTextReader(commentsRSSURL);      </p>
<p>while (_rssReader.Read()) {     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _rssReader.MoveToContent();      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (_rssReader.NodeType == XmlNodeType.Element) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (_rssReader.Name == &quot;pubDate&quot;) { date = DateTime.Parse(_rssReader.ReadElementContentAsString()); }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (_rssReader.Name == &quot;dc:creator&quot;) { author = _rssReader.ReadElementContentAsString(); }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (_rssReader.Name == &quot;description&quot;) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (!shouldSkip) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; content = _rssReader.ReadElementContentAsString();      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; comments.Add(new Comment {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; author = author,      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; date_created_gmt = date,      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; status = true</p>
</blockquote>
<p>As you can see, now you have all comments. Next step is to detect and reupload all images to the new host.</p>
<blockquote><p>private const string imgRX = &quot;&lt;img[^&gt;]*src=\&quot;?([^\&quot;]*)\&quot;?([^&gt;]*alt=\&quot;?([^\&quot;]*)\&quot;?)?[^&gt;]*&gt;&quot;;     <br />var matches = Regex.Matches(posts[i].description, imgRX);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&quot;Fixing {0} images&#8230;&quot;, matches.Count);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (int j = 0; j &lt; matches.Count; j++) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&quot;Retriving image #{0}&quot;, j);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var url = matches[j].Groups[1].Value;      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (url.Contains(baseURL)) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var data = wc.DownloadData(url);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&quot;Uploading image #{0}&quot;, j);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var uf = newblog.uploadFile(newblogid, newUsername, newPassword, new MediaObject {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; bits = data,      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; name = matches[j].Groups[1].Value.Substring(matches[j].Groups[1].Value.LastIndexOf(&#8216;/&#8217;) + 1)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; });      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; posts[i].description = posts[i].description.Replace(url, uf.url);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } catch { }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>
</blockquote>
<p>Now all images are stored in the new location and all image links are updated within stored posts. Next step is to upload all posts to the new location. CS stores tags as categories, which is wrong. Why? Because categories can be hierarchical, while tags cannot. So we have to convert all categories within retrieved posts into real tags. After it we can post everything</p>
<blockquote><p>for (int i = posts.Length &#8211; 1; i &gt;= 0; i&#8211;) {     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; posts[i].mt_keywords = string.Join(&quot;,&quot;, posts[i].categories);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var pid = newblog.newPost(newblogid, newUsername, newPassword, posts[i], true);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (var comment in posts[i].comments) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var cid = newblog.newComment(newblogid, newUsername, newPassword, pid, comment);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } catch { }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>
</blockquote>
<p>Now we have to update all internal links within new locations. For this we should grab all posts back to learn new URLs.</p>
<blockquote><p>var newPosts = newblog.getRecentPosts(newblogid, newUsername, newPassword, toFetch);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (int i = 0; i &lt; newPosts.Length; i++) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (var pi in _postsIndex) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (newPosts[i].description.Contains(pi.Key)) newPosts[i].description = newPosts[i].description.Replace(string.Concat(baseURL,pi.Key), pi.Value);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; wpblog.editPost((string)newPosts[i].postid, newUsername, newPassword, newPosts[i], true);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (!refereces.ContainsKey(newPosts[i].link)) refereces.Add(newPosts[i].link, posts[i].link); </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>
</blockquote>
<p>We done. Last, but not the least, is to update old posts with new URL to make visitors able to forward into new location.</p>
<blockquote><p>csposts = csblog.getRecentPosts(csBlogid, csUsername, csPassword, toFetch);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for(int i=0;i&lt; csposts.Length;i++) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (_postsIndex.ContainsKey(csposts[i].link)) {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string write = string.Format(&quot;&lt;h3&gt;[This blog was migrated. You will not be able to comment here.&lt;br/&gt;The new URL of this post is &lt;a href=\&quot;{0}\&quot;&gt;{0}&lt;/a&gt;]&lt;/h3&gt;&lt;hr/&gt;&quot;, _postsIndex[csposts[i].link]);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; csposts[i].description = string.Concat(write, csposts[i].description);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; csblog.editPost((string)csposts[i].postid, csUsername, csPassword, csposts[i], true);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Console.WriteLine(&quot;Post {0} was updated&quot;,i);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>
</blockquote>
<p>Have a nice day and be good people!</p>


<p>Related posts:<ol><li><a href='http://khason.net/dev/inotifypropertychanged-auto-wiring-or-how-to-get-rid-of-redundant-code/' rel='bookmark' title='Permanent Link: INotifyPropertyChanged auto wiring or how to get rid of redundant code'>INotifyPropertyChanged auto wiring or how to get rid of redundant code</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://khason.net/dev/how-to-migrate-from-cs2007-to-wordpress-movable-type-or-any-other-blog-engine-supports-xml-rpc-with-c/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Mobile version of this blog</title>
		<link>http://khason.net/blog/mobile-version-of-this-blog/</link>
		<comments>http://khason.net/blog/mobile-version-of-this-blog/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 13:00:00 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[blogging general]]></category>
		<category><![CDATA[blogging tools]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[My tools]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://khason.net/blog/mobile-version-of-this-blog/</guid>
		<description><![CDATA[10x to great service of mofuse, I have mobile version of this blog now. So bookmark it: http://m.0&#215;15.net/ Here the QR code for your convenience

<p/>]]></description>
			<content:encoded><![CDATA[<p>10x to great service of <a href="http://www.mofuse.com/">mofuse</a>, I have <a href="http://m.0x15.net/">mobile version</a> of this blog now. So bookmark it: <a title="http://m.0x15.net/" href="http://m.0x15.net/">http://m.0&#215;15.net/</a></p>
<p><img title="image" border="0" alt="image" src="http://khason.net/images/2008/12/image-222a37ec-f62c-41a3-a5e5-e6eecb4df709.png" width="133" height="249" /> <img title="image" border="0" alt="image" src="http://khason.net/images/2008/12/image-341211ed-35ba-486b-925b-6c86b5d390e7.png" width="134" height="251" /> </p>
<p>Here the QR code for your convenience</p>
<p><img title="image" border="0" alt="image" src="http://khason.net/images/2008/12/image-4a1e7bb2-68ba-4fc8-a4f8-6c601f7b67ae.png" width="160" height="159" /> </p>


<p/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/mobile-version-of-this-blog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quick note: New TechEd downloads</title>
		<link>http://khason.net/blog/quick-note-new-teched-downloads/</link>
		<comments>http://khason.net/blog/quick-note-new-teched-downloads/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 11:25:15 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[blogging tools]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[soft]]></category>
		<category><![CDATA[teched]]></category>
		<category><![CDATA[Windows Live Writer]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://khason.net/blog/quick-note-new-teched-downloads/</guid>
		<description><![CDATA[There is TechEd in Orlando, and this means, that there are a lot of new announcements. Let’s fill up our download managers with expensive fuel and start. New WM 6.1 images (both standard and professional) – absolutely required if you’re programming Windows Mobile Managed Extensibility Framework – I blogged about it a little in the [...]

<p/>]]></description>
			<content:encoded><![CDATA[<p>There is TechEd in Orlando, and this means, that there are a lot of new announcements. Let’s fill up our download managers with <a href="http://khason.net/blog/gas-price-windows-vista-sidebar-gadget-%e2%80%93-new-version-is-available-for-download/">expensive fuel</a> and start.</p>
<ul>
<li><a href="http://www.microsoft.com/downloads/details.aspx?familyid=3D6F581E-C093-4B15-AB0C-A2CE5BFFDB47&amp;displaylang=en">New WM 6.1 images (both standard and professional)</a> – absolutely required if you’re programming Windows Mobile</li>
<li><a href="http://code.msdn.microsoft.com/mef">Managed Extensibility Framework</a> – I blogged about it a little in the past. Really cool approach for adding extensibility features to your applications. <a href="http://blogs.msdn.com/kcwalina/archive/2008/04/25/MEF.aspx">Krzysztof explains</a> new features there.</li>
<li><a href="http://windowslivewriter.spaces.live.com/blog/cns!D85741BB5E0BE8AA!1508.entry">Windows Live Writer new CTP + new SDK</a> – the best tool to post into your blog.</li>
<li><a href="http://msdn.microsoft.com/en-us/data/cc655792.aspx">New CTP of Microsoft Project Codename “Velocity”</a> – great approach for development applications, using high performance in memory cache. <a href="http://blogs.msdn.com/velocity/archive/2008/06/02/introducing-project-codename-velocity.aspx">Here the deep explanations</a> in the team blog + <a href="http://code.msdn.microsoft.com/velocity">quick start and samples</a>.</li>
</ul>
<p>Silverlight 2.0 beta 2 + Microsoft Expression Blend 2.5 June preview will be available for download very soon. Keep watching. Meanwhile, you can start learn about <a href="http://timheuer.com/blog/archive/2008/06/04/silverlight-2-introduces-tabcontrol.aspx">new TabControl</a>, <a href="http://timheuer.com/blog/archive/2008/06/04/silverlight-introduces-visual-state-manager-vsm.aspx">VisualStateManager</a>, <a href="http://timheuer.com/blog/archive/2008/06/04/skinning-silverlight-controls-made-easier.aspx">new templating system</a> and <a href="http://timheuer.com/blog/archive/2008/06/03/use-silverlight-with-any-feed-without-cross-domain-files.aspx">cross-domain policy</a> from Tim Heuer’s blog. Also there are <a href="http://silverlight.net/blogs/jesseliberty/archive/2008/06/03/beta-2-event-bubbling.aspx">some news about event bubbling</a> in beta 2 in Jesse’s blog.</p>


<p/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/quick-note-new-teched-downloads/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>It’s broken</title>
		<link>http://khason.net/blog/it%e2%80%99s-broken/</link>
		<comments>http://khason.net/blog/it%e2%80%99s-broken/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 20:25:45 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[blogging general]]></category>
		<category><![CDATA[blogging tools]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://khason.net/blog/it%e2%80%99s-broken/</guid>
		<description><![CDATA[Hi, everybody. First of all, I want to apologize for the inconvenience, caused by me to all bloggers in blogs.microsoft.co.il. The reason is, that one of my posts got slashdoted. This night our server, hosted in orcweb received month amount of visitors within couple of hours. This cause some problems, that even load balancing farm [...]

<p/>]]></description>
			<content:encoded><![CDATA[<p>Hi, everybody. First of all, I want to apologize for the inconvenience, caused by me to all bloggers in blogs.microsoft.co.il. The reason is, that <a href="http://khason.net/blog/computer-languages-and-facial-hair-%e2%80%93-take-two/" target="_blank">one</a> of my posts <a href="http://en.wikipedia.org/wiki/Slashdot_effect" target="_blank">got slashdoted</a>. This night our server, hosted in orcweb received month amount of visitors within couple of hours. This cause some problems, that even <a href="http://en.wikipedia.org/wiki/Load_balancing_(computing)" target="_blank">load balancing farm</a> was unable to leverage. Currently you can experience problems with rss feeds, the site access and other side effects. To be sure, the right RSS url is “<a title="http://feeds.feedburner.com/microsft" href="http://feeds.feedburner.com/microsft">http://feeds.feedburner.com/microsft</a>” Just put in into your rss reader and it will work very soon, right after all technical problems will be solved. Also, my personal web site, that hosts some content in this blog was temporary closed because of extreme traffic excitation, thus neither of Silverlight and SVG examples will work. Sorry again and thank you for understanding.</p>
<p>Tamir</p>
<p><img title="image" border="0" alt="image" src="http://khason.net/images/2008/12/image-b4262775-6961-423d-b542-80716b61dbcd.png" width="628" height="127" /></p>


<p/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/it%e2%80%99s-broken/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Microsoft almost never paying their presenters, so why we&#8217;re coming?</title>
		<link>http://khason.net/blog/microsoft-almost-never-paying-their-presenters-so-why-were-coming/</link>
		<comments>http://khason.net/blog/microsoft-almost-never-paying-their-presenters-so-why-were-coming/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 20:13:24 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[blogging general]]></category>
		<category><![CDATA[blogging tools]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[teched]]></category>
		<category><![CDATA[TechedIsrael2008]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://khason.net/blog/microsoft-almost-never-paying-their-presenters-so-why-were-coming/</guid>
		<description><![CDATA[In most cases, presenters, participate in TechEd, DevAcademy, open houses or other public sessions, arranged by Microsoft, are not get paid. However, we&#8217;re still coming and presenting. Preparation of even small session takes at least a couple of days and costs us a lot of money, but we&#8217;re still coming and presenting. Why? The answer [...]

<p/>]]></description>
			<content:encoded><![CDATA[<p>In most cases, presenters, participate in <a href="http://blogs.microsoft.co.il/tags/TechedIsrael2008/default.aspx" target="_blank">TechEd</a>, <a href="http://blogs.microsoft.co.il/tags/DevAcademy2/default.aspx" target="_blank">DevAcademy</a>, <a href="http://blogs.microsoft.co.il/blogs/tamir/archive/tags/promo/default.aspx" target="_blank">open houses</a> or other public sessions, arranged by Microsoft, <strong>are not get paid</strong>. However, we&#8217;re still coming and presenting. Preparation of even small session takes at least a couple of days and costs us a lot of money, but we&#8217;re still coming and presenting. Why? </p>
<p>The answer is not simple. So, in order to make it clearer to me, I created decision chart, that helps me to answer &quot;yes&quot; or &quot;no&quot; for next request to attend an event as presenter. Here it comes</p>
<p><img height="929" alt="image" src="http://khason.net/images/2008/12/image-ee439459-9446-43f5-9fb8-d927b60f4282.png" width="526" border="0" /> </p>
<p>Let me explain it for you. My hour costs at about 100$. To present at small event, I should prepare in ratio of 1/3 &#8211; for one hour session, I have to work at least three hours + arrangements, travel time, accommodations etc. Other words, one small session should costs about 1000$. Can they pay me what I&#8217;m worth? Probably they can, but there are other factors &#8211; what am I earn for example. </p>
<p>If I&#8217;m interested within attendees, I can generate more revenue from business opportunities, then from one time payment. Thus I wont ask to be paid. But sometimes, I might me unable to get such revenue. In this case, I&#8217;m asking another question: maybe inviters really need my help and I can allow myself to publish some charity? In this case I&#8217;ll attend too.</p>
<p>So should Microsoft pay their presenters? Probably it should, but there are other factors should be took into account. </p>
<p>See me at <a href="http://www.microsoft.com/israel/teched2008/index.aspx" target="_blank">TechEd &#8217;08 in Eilat</a> <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>


<p/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/microsoft-almost-never-paying-their-presenters-so-why-were-coming/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Free official copies of Camtasia studio and SnagIt</title>
		<link>http://khason.net/blog/free-official-copies-of-camtasia-studio-and-snagit/</link>
		<comments>http://khason.net/blog/free-official-copies-of-camtasia-studio-and-snagit/#comments</comments>
		<pubDate>Thu, 29 Nov 2007 11:24:09 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[blogging tools]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[soft]]></category>

		<guid isPermaLink="false">http://khason.net/blog/free-official-copies-of-camtasia-studio-and-snagit/</guid>
		<description><![CDATA[Want Camtasia Studio (the best software to make screencasts &#8211; remember about Justin&#8217;s competition?) and SnagIt for free? No problem, just go and download it from official Techsmith website. What&#8217;s the catch? No catch! This is old versions, provided for free by the company. Download Camtasia 3 (current version 5) here and get free license [...]

<p/>]]></description>
			<content:encoded><![CDATA[<p>Want Camtasia Studio (the best software to make screencasts &#8211; remember about <a href="http://blogs.microsoft.co.il/blogs/justinangel/archive/2007/11/07/israeli-developer-screencast-competition.aspx">Justin&#8217;s competition</a>?) and SnagIt <strong>for free?</strong> No problem, just go and download it from official Techsmith website. What&#8217;s the catch? No catch! This is old versions, provided for free by the company.</p>
<p>Download Camtasia 3 (current version 5) <a href="http://download.techsmith.com/camtasiastudio/enu/312/camtasiaf.exe">here</a> and get free license key <a href="http://www.techsmith.com/camtasia/pcpls.asp">here</a>.    <br />Download SnagIt 7.2.5 (current version 8.2) <a href="ftp://ftp.techsmith.com/pub/products/snagit/725/SnagIt.exe">here</a>.</p>
<p>Have a nice weekend.</p>
<p><em><a href="http://windowsconnected.com/blogs/aubrey/archive/2007/11/28/free-copies-of-snagit-and-camtasia.aspx">via Windows Connect</a></em></p>


<p/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/free-official-copies-of-camtasia-studio-and-snagit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Live Messenger Web API</title>
		<link>http://khason.net/blog/windows-live-messenger-web-api/</link>
		<comments>http://khason.net/blog/windows-live-messenger-web-api/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 10:41:00 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[blogging tools]]></category>
		<category><![CDATA[demos]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[Windows Live]]></category>

		<guid isPermaLink="false">http://khason.net/blog/windows-live-messenger-web-api/</guid>
		<description><![CDATA[A couple of hours after Windows Live has been announced, you can chat with me directly from my (or your) blog. Enter and see the left side for Windows Live Messenger Web Control. Want too? That&#8217;s simple. First, allow others to see your presence. Then choose the control to use. Now (for those, who are [...]

<p/>]]></description>
			<content:encoded><![CDATA[<p>A couple of hours after <a href="http://khason.net/blog/new-branded-yournamelivecom-is-available/" target=_blank mce_href="http://khason.net/blog/new-branded-yournamelivecom-is-available/">Windows Live has been announced</a>, you can chat with me directly from my (or your) blog. Enter and see the left side for <a class="" href="http://blogs.msdn.com/angus_logan/archive/2007/11/07/announcment-windows-live-messenger-im-control-presence-api-conversations-from-web-to-client-querying-presence.aspx" mce_href="http://blogs.msdn.com/angus_logan/archive/2007/11/07/announcment-windows-live-messenger-im-control-presence-api-conversations-from-web-to-client-querying-presence.aspx">Windows Live Messenger Web Control</a>.</p>
<p>Want too? That&#8217;s simple. First, allow <a href="http://settings.messenger.live.com/applications/websettings.aspx" target=_blank mce_href="http://settings.messenger.live.com/applications/websettings.aspx">others to see your presence</a>. Then <a href="http://settings.messenger.live.com/Applications/CreateHtml.aspx" target=_blank mce_href="http://settings.messenger.live.com/Applications/CreateHtml.aspx">choose the control to use</a>. Now (for those, who are using CS) add it into News section or other place in your blog (Spaces for sure).</p>
<p><img height=306 alt=image src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/WindowsLiveMessengerWebAPI_9668/image_45a3d019-c471-4334-a7e1-633c56c4efa4.png" width=199 border=0 mce_src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/WindowsLiveMessengerWebAPI_9668/image_45a3d019-c471-4334-a7e1-633c56c4efa4.png"/></p>


<p/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/windows-live-messenger-web-api/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RSS to Email</title>
		<link>http://khason.net/blog/rss-to-email/</link>
		<comments>http://khason.net/blog/rss-to-email/#comments</comments>
		<pubDate>Sat, 03 Nov 2007 22:21:00 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[blogging general]]></category>
		<category><![CDATA[blogging tools]]></category>
		<category><![CDATA[promo]]></category>

		<guid isPermaLink="false">http://khason.net/blog/rss-to-email/</guid>
		<description><![CDATA[Many of my friends asked why I do not provide RSS subscription by email. It&#8217;s true, I&#8217;m not, more properly, I was not. From today, all those, who has limited or no internet access can subscribe to my blog RSS by Email (service provided by FeedBurner and they are not going to sell your email [...]

<p/>]]></description>
			<content:encoded><![CDATA[<p>Many of my friends asked why I do not provide RSS subscription by email. It&#8217;s true, I&#8217;m not, more properly, I was not. From today, all those, who has limited or no internet access can <a title="Subscribe now" href="http://www.feedburner.com/fb/a/emailverifySubmit?feedId=609005&amp;loc=en_US" target=_blank mce_href="http://www.feedburner.com/fb/a/emailverifySubmit?feedId=609005&amp;loc=en_US">subscribe to my blog RSS by Email</a> (service provided by FeedBurner and they are not going to sell your email address to spammers).</p>
<p>&nbsp;<a title="Subscribe to RSS by email" href="http://www.feedburner.com/fb/a/emailverifySubmit?feedId=609005&amp;loc=en_US" target=_blank mce_href="http://www.feedburner.com/fb/a/emailverifySubmit?feedId=609005&amp;loc=en_US"><img height=122 alt="Subscribe to this blog by Email." src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/RSStoEmail_13A42/image_8e136313-a452-4959-b708-dd1a0ea6f067.png" width=326 border=0 mce_src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/RSStoEmail_13A42/image_8e136313-a452-4959-b708-dd1a0ea6f067.png"/></a> </p>
<p>You can always find <a href="http://www.feedburner.com/fb/a/emailverifySubmit?feedId=609005&amp;loc=en_US" target=_blank mce_href="http://www.feedburner.com/fb/a/emailverifySubmit?feedId=609005&amp;loc=en_US"><img height=15 alt="this icon" src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/RSStoEmail_13A42/image_ee8482f9-385c-4751-8dca-d78cf947feb7.png" width=40 border=0 mce_src="http://blogs.microsoft.co.il/blogs/tamir/WindowsLiveWriter/RSStoEmail_13A42/image_ee8482f9-385c-4751-8dca-d78cf947feb7.png"/></a> in the left side of each screen under <a href="http://www.linkedin.com/in/tamirk" target=_blank mce_href="http://www.linkedin.com/in/tamirk">my LinkedIn profile</a>.</p>


<p/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/rss-to-email/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Add Windows Live SkyDrive attachment to your post, by using Windows Live Writer</title>
		<link>http://khason.net/blog/add-windows-live-skydrive-attachment-to-your-post-by-using-windows-live-writer/</link>
		<comments>http://khason.net/blog/add-windows-live-skydrive-attachment-to-your-post-by-using-windows-live-writer/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 21:44:00 +0000</pubDate>
		<dc:creator>Tamir</dc:creator>
				<category><![CDATA[BLOG]]></category>
		<category><![CDATA[blogging tools]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[My tools]]></category>
		<category><![CDATA[promo]]></category>
		<category><![CDATA[SkyDrive]]></category>
		<category><![CDATA[soft]]></category>
		<category><![CDATA[Windows Live Writer]]></category>

		<guid isPermaLink="false">http://khason.net/blog/add-windows-live-skydrive-attachment-to-your-post-by-using-windows-live-writer/</guid>
		<description><![CDATA[As you, probably, know, about two months ago, Windows Live team released new sharing platform, named SkyDrive (known as Windows Live Folders). This is really useful service, that allows you to share up to 500MB of your files in internet, by using nice and simple user interface. Why not to use it for attachments (especially, [...]

<p/>]]></description>
			<content:encoded><![CDATA[<p>As you, probably, know, about two months ago, Windows Live team <a href="/blogs/tamir/archive/2007/06/27/Windows-Live-Folders.aspx" target=_blank>released new sharing platform, named SkyDrive (known as Windows Live Folders)</a>. This is really useful service, that allows you to share up to 500MB of your files in internet, by using nice and simple user interface. Why not to use it for attachments (especially, when current version of CS here has known bug to use attachment API <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ). </p>
<p>I think, that all of you using <a href="http://g.live.com/8SEENUSGALLERY/GALSYSREQSysReqDotNet" target=_blank>Windows Live Writer</a> to write and publish your posts, thus I decided to write simple and &#8220;straight-forward&#8221; <a href="http://gallery.live.com/liveItemDetail.aspx?li=f5eb0e56-0132-4d3e-95c8-d43cd2c62688" target=_blank>plugin to use SkyDrive from WLW</a>. Feel free to download, use, rate and tell what you think about.</p>
<p>Unfourchantly, there is no API for <a href="http://skydrive.live.com/" target=_blank>SkyDrive</a>, thus <a href="http://gallery.live.com/liveItemDetail.aspx?li=f5eb0e56-0132-4d3e-95c8-d43cd2c62688" target=_blank>the plugin</a> is <strong>really big one</strong>. <img src='http://khason.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Have a nice drive.</p>
<p><a href="http://gallery.live.com/liveItemDetail.aspx?li=f5eb0e56-0132-4d3e-95c8-d43cd2c62688" target=_blank>Download Windows Live SkyDrive Attachment plugin for Windows Live Writer &gt;&gt;</a></p>
<p><iframe style="BORDER-RIGHT: #dde5e9 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #dde5e9 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px; BORDER-LEFT: #dde5e9 1px solid; WIDTH: 240px; PADDING-TOP: 0px; BORDER-BOTTOM: #dde5e9 1px solid; HEIGHT: 66px; BACKGROUND-COLOR: #ffffff" marginWidth=0 marginHeight=0 src="http://cid-4e39ecd492e4eec1.skydrive.live.com/embedrowdetail.aspx/Windows%20Share%20Folder/EfoHenAbachurot.MP3" frameBorder=0 scrolling=no></iframe></p>
<p><a title="SkyDrive attachment plugin for WLW test" href="http://soapbox.msn.com/video.aspx?vid=43d2c9f5-38f1-4617-8a9f-58732559c8a6" target=_new><img height=84 alt="SkyDrive attachment plugin for WLW test" src="http://a1427.g.akamai.net/f/1427/23830/v0001/msnuuv1.download.akamai.com/23830/thumbs/prod/70/f6/88/f853d7ed-e0c8-451c-92c1-6e994f88f670.jpg" width=112 border=0/><br />Video demo of SkyDrive attachment plugin for WLW test</a></p>


<p/>]]></content:encoded>
			<wfw:commentRss>http://khason.net/blog/add-windows-live-skydrive-attachment-to-your-post-by-using-windows-live-writer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
