<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2titles.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemtitles.css"?><rss 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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Flipping a random bit</title>
	
	<link>http://petarvucetin.me/blog</link>
	<description />
	<lastBuildDate>Thu, 17 Nov 2011 21:51:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/petarvucetin" /><feedburner:info uri="petarvucetin" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>37.758434</geo:lat><geo:long>-122.435126</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><feedburner:emailServiceId>petarvucetin</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fpetarvucetin" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fpetarvucetin" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fpetarvucetin" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/petarvucetin" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fpetarvucetin" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fpetarvucetin" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fpetarvucetin" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fpetarvucetin" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://www.addtoany.com/?linkname=Flipping%20a%20random%20bit&amp;linkurl=http%3A%2F%2Ffeeds.feedburner.com%2Fpetarvucetin&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><feedburner:browserFriendly>Thanks for subscribing. I appreciate your time and feedback you might provide. Please share your opinions and feel free to contact me any time.</feedburner:browserFriendly><item>
		<title>Taming events in Silverlight with Reactive Extensions (Rx) and MVVM</title>
		<link>http://feedproxy.google.com/~r/petarvucetin/~3/Yal3xkQcY6w/</link>
		<comments>http://petarvucetin.me/blog/2010/11/taming-events-in-silverlight-with-reactive-extensions-rx-and-mvvm/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 20:12:57 +0000</pubDate>
		<dc:creator>petar</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[Reactive Extensions]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://petarvucetin.me/blog/?p=255</guid>
		<description><![CDATA[After a fun talk last night with my local Bay .NET User Group I needed to fix one of my demos that I did not show last night because I ran out of time (always too much content?). Here is the example of Rx and MVVM in action to tame events generated by text box [...]]]></description>
			<content:encoded><![CDATA[<p>After a fun talk last night with my local <a href="http://www.baynetug.org/DesktopDefault.aspx">Bay .NET User Group</a> I needed to fix one of my demos that I did not show last night because I ran out of time (always too much content?). Here is the example of Rx and MVVM in action to tame events generated by text box in Silverlight.</p>
<p>The demo I wanted to show is centered around two Rx methods. First is the Observable.FromEvent and the second is the ability to throttle the events with Throttle(TimeSpan) extension methods. </p>
<p>What I wanted to do is to use the MVVM pattern with text box TextChanged event and be able to throttle how often the changed text is being sent to a Bing news API (which is very cool and simple) using web request/response.</p>
<p>The route I went uses attached behavior to the text box (as an example). This behavior is a staging place for Rx to convert the textbox textchanged event in the IObservable via Observable.FromEvent extension method . </p>
<p>In my view (XAML) I have attached the RxEventTrigger behavior to a text box (line 20).</p>
<pre class="brush: xml;">&lt;UserControl
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
    xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
    xmlns:i=&quot;clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity&quot;
    xmlns:ei=&quot;clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions&quot;
    xmlns:local=&quot;clr-namespace:WebServiceCalls&quot; xmlns:ee=&quot;http://schemas.microsoft.com/expression/2010/effects&quot; x:Class=&quot;WebServiceCalls.MainPage&quot;
    mc:Ignorable=&quot;d&quot;
    d:DesignHeight=&quot;300&quot; d:DesignWidth=&quot;400&quot;&gt;

    &lt;UserControl.DataContext&gt;
        &lt;local:ViewModel /&gt;
    &lt;/UserControl.DataContext&gt;

    &lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;White&quot;&gt;
        &lt;StackPanel&gt;
            &lt;TextBox x:Name=&quot;Search&quot; Width=&quot;190&quot;  Height=&quot;29&quot; DataContext=&quot;{Binding}&quot; &gt;
                &lt;i:Interaction.Behaviors&gt;
                    &lt;local:RxEventTrigger RxProperty=&quot;{Binding TextChangedSource, Mode=TwoWay}&quot; /&gt;
                &lt;/i:Interaction.Behaviors&gt;
            &lt;/TextBox&gt;
        &lt;/StackPanel&gt;
    &lt;/Grid&gt;
&lt;/UserControl&gt;</pre>
<p>The behavior implementation is pretty standard. Create a class and inherit from Behavior. I am bit cheating here and limiting this behavior to only textbox but you get an idea.</p>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<pre class="brush: csharp;">public class RxEventTrigger : Behavior&lt;TextBox&gt;
{
    public static readonly DependencyProperty RxPropertyProperty =
        DependencyProperty.Register(&quot;RxProperty&quot;, typeof(IObservable&lt;string&gt;),
            typeof(RxEventTrigger), null);

    public IObservable&lt;string&gt; RxProperty
    {
        get { return (IObservable&lt;string&gt;)GetValue(RxPropertyProperty); }
        set { SetValue(RxPropertyProperty, value); }
    }
    protected override void OnAttached()
    {
        this.AssociatedObject.Loaded += AssociatedObject_Loaded;
    }
    void AssociatedObject_Loaded(object sender, RoutedEventArgs e)
    {
        RxProperty = Observable.FromEvent&lt;TextChangedEventHandler, TextChangedEventArgs&gt;(
            h =&gt; new TextChangedEventHandler(h),
            h =&gt; AssociatedObject.TextChanged += h,
            h =&gt; AssociatedObject.TextChanged -= h)

            .Select(t =&gt; ((TextBox)t.Sender).Text)

            .Throttle(TimeSpan.FromMilliseconds(400))

            .SubscribeOnDispatcher();
    }
}</pre>
<p>Line 18 is where we hook into the TextChanged event stream (FromEvent) using Rx, select current text with the projection (Select), throttle user input, so we don’t get every letter they type (Throttle), and finally tell the observable that subscribers should be subscribed on the Dispatcher so we don’t have cross thread issues when the event subscription occurs (+= h, –= h).</p>
<p>The connection between the behavior and the view model happens when we set the RxProperty in the behavior class which is the property we received via binding from the VM that was passed into our view (line 12-14 in the XAML).</p>
<p>Finally our view model will combine the text source and web service calls that will occur every time user stops typing the text.</p>
<pre class="brush: csharp; smart-tabs: false;">public class ViewModel : NotifyPropertyChangedBase
{
    #region fields
    private Repository _repository = new Repository();
    private ObservableCollection&lt;NewsArticle&gt; _newsList;
    private IObservable&lt;string&gt; _textChangedSource;
    #endregion

    public ViewModel()
    {
        NewsList = new ObservableCollection&lt;NewsArticle&gt;();
    }

    public IObservable&lt;string&gt; TextChangedSource
    {
        get { return _textChangedSource; }
        set
        {
            _textChangedSource = value;
            OnPropertyChanged(() =&gt; TextChangedSource);

            Func&lt;IObservable&lt;int&gt;&gt; clearList = () =&gt;
                                      {
                                          NewsList.Clear();
                                          return Observable.Return(0);
                                      };

            var q = from text in _textChangedSource
                    from clear in Observable.Defer(clearList).SubscribeOnDispatcher()
                    from news in _repository.GetNews(text).Take(3).TakeUntil(_textChangedSource)
                    select news;

            q.ObserveOnDispatcher().Subscribe(
                r=&gt; NewsList.Add(r),
                ex=&gt; Debug.WriteLine(ex.Message),
                ()=&gt; Debug.WriteLine(&quot;Complete.&quot;)
                );
        }
    }

    public ObservableCollection&lt;NewsArticle&gt;  NewsList
    {
        get { return _newsList; }
        set
        {
            _newsList = value;
            OnPropertyChanged(() =&gt; NewsList);
        }
    }
}</pre>
<p>Now that we have IObservable for text changes we can combine it with the clearing the NewsList and calling the web service to get 3 articles per user text input all in one LINQ query.</p>
<p>I have introduced a function on the line 22 which clears the list before calling the service. Defer extensions method will call the clearList Func delegate every time new subscription is attached due to text being generated by the text changed event.</p>
<p>I think line 30 is pretty straight forward except the TakeUntil. Take until is acting as a valve that will ignore previous web service results if user has typed some new text into the text box.</p>
<p>For completes here is the GetNews method in the repository:</p>
<pre class="brush: csharp;">public class Repository
{
    public IObservable&lt;NewsArticle&gt; GetNews(string word)
    {
        var url = &quot;http://api.search.live.net/xml.aspx?Appid={0}&amp;sources={1}&amp;query={2}&quot;;

        var completeUri = String.Format(url, &quot;[your api key here]&quot;, &quot;news&quot;, word);

        XNamespace ns = &quot;http://schemas.microsoft.com/LiveSearch/2008/04/XML/news&quot;;

        var q = from v in Observable.Defer(() =&gt; Observable.Return(WebRequest.Create(completeUri)))
                from e in Observable.FromAsyncPattern&lt;WebResponse&gt;(v.BeginGetResponse, v.EndGetResponse)()
                from r in Observable.Return(XDocument.Load(e.GetResponseStream()))
                from t in r.Descendants().Elements(ns + &quot;NewsResult&quot;).ToObservable()
                from i in Observable.Return(t.Descendants(ns + &quot;Title&quot;).First().Value)
                from g in Observable.Return(t.Descendants(ns + &quot;Source&quot;).First().Value)
                from o in Observable.Return(t.Descendants(ns + &quot;Date&quot;).First().Value)
                select new NewsArticle { Headline = i, Source = g, Date = DateTime.Parse(o)};

        return q;
    }

}

public struct NewsArticle
{
    public string Headline { get; set; }
    public string Url { get; set; }
    public string Source { get; set; }
    public DateTime Date { get; set; }
}</pre>

<p><a href="http://feedads.g.doubleclick.net/~a/_T8KSFHlrMC_LXzuSmY3T3dMlak/0/da"><img src="http://feedads.g.doubleclick.net/~a/_T8KSFHlrMC_LXzuSmY3T3dMlak/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_T8KSFHlrMC_LXzuSmY3T3dMlak/1/da"><img src="http://feedads.g.doubleclick.net/~a/_T8KSFHlrMC_LXzuSmY3T3dMlak/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Yal3xkQcY6w:eascyauG4L0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=Yal3xkQcY6w:eascyauG4L0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Yal3xkQcY6w:eascyauG4L0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Yal3xkQcY6w:eascyauG4L0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=Yal3xkQcY6w:eascyauG4L0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Yal3xkQcY6w:eascyauG4L0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Yal3xkQcY6w:eascyauG4L0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=Yal3xkQcY6w:eascyauG4L0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Yal3xkQcY6w:eascyauG4L0:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Yal3xkQcY6w:eascyauG4L0:ZC7T4KBF6Nw"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=ZC7T4KBF6Nw" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Yal3xkQcY6w:eascyauG4L0:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=G79ilh31hkQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/petarvucetin/~4/Yal3xkQcY6w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://petarvucetin.me/blog/2010/11/taming-events-in-silverlight-with-reactive-extensions-rx-and-mvvm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://petarvucetin.me/blog/2010/11/taming-events-in-silverlight-with-reactive-extensions-rx-and-mvvm/</feedburner:origLink></item>
		<item>
		<title>Reactive Extensions</title>
		<link>http://feedproxy.google.com/~r/petarvucetin/~3/1tXQEsk4-24/</link>
		<comments>http://petarvucetin.me/blog/2010/09/reactive-extensions/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 22:25:02 +0000</pubDate>
		<dc:creator>petar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://petarvucetin.me/blog/2010/09/reactive-extensions/</guid>
		<description><![CDATA[Take time to study the Reactive Extensions (Rx) because its a very critical for your tool belt. Rx enables some complex scenarios and all but eliminates lot of +=, –= nonsense (event subscribe / unsubscribe). This is specially important in Silvelright development. Here are the few good resources to get started from my Diigo account. [...]]]></description>
			<content:encoded><![CDATA[<p>Take time to study the Reactive Extensions (Rx) because its a very critical for your tool belt. Rx enables some complex scenarios and all but eliminates lot of +=, –= nonsense (event subscribe / unsubscribe). This is specially important in Silvelright development.</p>
<p>Here are the few good resources to get <a href="http://www.diigo.com/user/petarvucetin/Rx">started</a> from my Diigo account.</p>
<p>If I would to pick out some of the so many ways Rx can help, I would say that choosing appropriate scheduler (e.g. UI thread) to execute or subscribe, creating and manipulating time and consuming asynchronous operations is just a tip of the iceberg.</p>
<p>This is the main page to get the <a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx">Rx</a>. Rx libraries exist for Silverlight, .NET 4 and Javascript.</p>
<p>Go have fun.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/72v9HkFcUp2ovWiOLvXf9Hp1E4M/0/da"><img src="http://feedads.g.doubleclick.net/~a/72v9HkFcUp2ovWiOLvXf9Hp1E4M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/72v9HkFcUp2ovWiOLvXf9Hp1E4M/1/da"><img src="http://feedads.g.doubleclick.net/~a/72v9HkFcUp2ovWiOLvXf9Hp1E4M/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/petarvucetin?a=1tXQEsk4-24:OdurLR-TR6A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=1tXQEsk4-24:OdurLR-TR6A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=1tXQEsk4-24:OdurLR-TR6A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=1tXQEsk4-24:OdurLR-TR6A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=1tXQEsk4-24:OdurLR-TR6A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=1tXQEsk4-24:OdurLR-TR6A:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=1tXQEsk4-24:OdurLR-TR6A:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=1tXQEsk4-24:OdurLR-TR6A:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=1tXQEsk4-24:OdurLR-TR6A:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=1tXQEsk4-24:OdurLR-TR6A:ZC7T4KBF6Nw"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=ZC7T4KBF6Nw" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=1tXQEsk4-24:OdurLR-TR6A:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=G79ilh31hkQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/petarvucetin/~4/1tXQEsk4-24" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://petarvucetin.me/blog/2010/09/reactive-extensions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://petarvucetin.me/blog/2010/09/reactive-extensions/</feedburner:origLink></item>
		<item>
		<title>My Azure Storage</title>
		<link>http://feedproxy.google.com/~r/petarvucetin/~3/kGTqAKqz7YA/</link>
		<comments>http://petarvucetin.me/blog/2010/07/my-azure-storage/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 17:17:37 +0000</pubDate>
		<dc:creator>petar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://petarvucetin.me/blog/2010/07/my-azure-storage/</guid>
		<description><![CDATA[Watching the Cloud Cover episode 17, Steve Marx shows a nice and simple cloud storage management, web based tool to manage Azure Storage https://myazurestorage.com/. At the same time I was playing around with Cloud Storage Studio. I am not sure why these guys are charging $60 bucks for their Storage Studio product.]]></description>
			<content:encoded><![CDATA[<p>Watching the <a href="http://ecn.channel9.msdn.com/o9/ch9/1/8/0/9/5/5/CloudCoverEp17_2MB_ch9.wmv">Cloud Cover episode 17</a>, <a href="http://blog.smarx.com/">Steve Marx</a> shows a nice and simple cloud storage management, web based tool to manage Azure Storage <a href="https://myazurestorage.com/">https://myazurestorage.com/</a>.</p>
<p>At the same time I was playing around with <a href="http://www.cerebrata.com/Products.aspx">Cloud Storage Studio</a>. I am not sure why these guys are charging $60 bucks for their Storage Studio product.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/D6GXXNreJi2zID29nojKW1AhLCM/0/da"><img src="http://feedads.g.doubleclick.net/~a/D6GXXNreJi2zID29nojKW1AhLCM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/D6GXXNreJi2zID29nojKW1AhLCM/1/da"><img src="http://feedads.g.doubleclick.net/~a/D6GXXNreJi2zID29nojKW1AhLCM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/petarvucetin?a=kGTqAKqz7YA:_XLS7o3O38Q:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=kGTqAKqz7YA:_XLS7o3O38Q:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=kGTqAKqz7YA:_XLS7o3O38Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=kGTqAKqz7YA:_XLS7o3O38Q:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=kGTqAKqz7YA:_XLS7o3O38Q:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=kGTqAKqz7YA:_XLS7o3O38Q:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=kGTqAKqz7YA:_XLS7o3O38Q:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=kGTqAKqz7YA:_XLS7o3O38Q:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=kGTqAKqz7YA:_XLS7o3O38Q:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=kGTqAKqz7YA:_XLS7o3O38Q:ZC7T4KBF6Nw"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=ZC7T4KBF6Nw" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=kGTqAKqz7YA:_XLS7o3O38Q:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=G79ilh31hkQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/petarvucetin/~4/kGTqAKqz7YA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://petarvucetin.me/blog/2010/07/my-azure-storage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/1/8/0/9/5/5/CloudCoverEp17_2MB_ch9.wmv" length="552961737" type="video/x-ms-wmv" />
		<feedburner:origLink>http://petarvucetin.me/blog/2010/07/my-azure-storage/</feedburner:origLink></item>
		<item>
		<title>WCF Invalid hexadecimal string format</title>
		<link>http://feedproxy.google.com/~r/petarvucetin/~3/Rshpg8z-LMY/</link>
		<comments>http://petarvucetin.me/blog/2010/05/wcf-invalid-hexadecimal-string-format/#comments</comments>
		<pubDate>Tue, 04 May 2010 14:40:26 +0000</pubDate>
		<dc:creator>petar</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://petarvucetin.me/blog/2010/05/wcf-invalid-hexadecimal-string-format/</guid>
		<description><![CDATA[If you are victim to this exception: “FormatException: Invalid hexadecimal string format” thrown by the WCF you can get rid of it easily. If you have copied the value from the cert manager, notice that there is a space before the 30. This space is invalid character that will not show up in your config [...]]]></description>
			<content:encoded><![CDATA[<p>If you are victim to this exception: “FormatException: Invalid hexadecimal string format” thrown by the WCF you can get rid of it easily. If you have copied the value from the cert manager, notice that there is a space before the 30. </p>
<p><a href="http://petarvucetin.me/blog/wp-content/uploads/2010/05/image.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://petarvucetin.me/blog/wp-content/uploads/2010/05/image_thumb.png" width="419" height="521" /></a></p>
<p>This space is invalid character that will not show up in your config file. </p>
<p><a href="http://petarvucetin.me/blog/wp-content/uploads/2010/05/image1.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://petarvucetin.me/blog/wp-content/uploads/2010/05/image_thumb1.png" width="702" height="209" /></a> </p>
<p>If you paste the same certificate thumbprint in notepad the bad character will be reviled.</p>
<p><a href="http://petarvucetin.me/blog/wp-content/uploads/2010/05/image2.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://petarvucetin.me/blog/wp-content/uploads/2010/05/image_thumb2.png" width="483" height="299" /></a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/X6Yfi2odZ17bRagW3og1HxOVMRo/0/da"><img src="http://feedads.g.doubleclick.net/~a/X6Yfi2odZ17bRagW3og1HxOVMRo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/X6Yfi2odZ17bRagW3og1HxOVMRo/1/da"><img src="http://feedads.g.doubleclick.net/~a/X6Yfi2odZ17bRagW3og1HxOVMRo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Rshpg8z-LMY:O7atQGct8aY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=Rshpg8z-LMY:O7atQGct8aY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Rshpg8z-LMY:O7atQGct8aY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Rshpg8z-LMY:O7atQGct8aY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=Rshpg8z-LMY:O7atQGct8aY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Rshpg8z-LMY:O7atQGct8aY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Rshpg8z-LMY:O7atQGct8aY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=Rshpg8z-LMY:O7atQGct8aY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Rshpg8z-LMY:O7atQGct8aY:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Rshpg8z-LMY:O7atQGct8aY:ZC7T4KBF6Nw"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=ZC7T4KBF6Nw" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=Rshpg8z-LMY:O7atQGct8aY:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=G79ilh31hkQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/petarvucetin/~4/Rshpg8z-LMY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://petarvucetin.me/blog/2010/05/wcf-invalid-hexadecimal-string-format/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://petarvucetin.me/blog/2010/05/wcf-invalid-hexadecimal-string-format/</feedburner:origLink></item>
		<item>
		<title>Visual Studio 2010 – Pin the watched value</title>
		<link>http://feedproxy.google.com/~r/petarvucetin/~3/E1xIoJZVVec/</link>
		<comments>http://petarvucetin.me/blog/2010/04/visual-studio-2010-pin-the-watched-value/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 00:00:00 +0000</pubDate>
		<dc:creator>petar</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://petarvucetin.me/blog/?p=199</guid>
		<description><![CDATA[Another awesomeness from the VS2010 team! When you are debugging your app sometimes its nice to be able to “pin” certain value of the collection. Well, they have done it! You can now pin the row of the variable you are watching. &#160; You can attach a comment to the watched variable! &#160; Unpin from [...]]]></description>
			<content:encoded><![CDATA[<p>Another awesomeness from the VS2010 team! When you are debugging your app sometimes its nice to be able to “pin” certain value of the collection. Well, they have done it! You can now pin the row of the variable you are watching. </p>
<p><a href="http://petarvucetin.me/blog/wp-content/uploads/2010/04/image17.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://petarvucetin.me/blog/wp-content/uploads/2010/04/image_thumb17.png" width="714" height="407" /></a></p>
<p>&#160; You can attach a comment to the watched variable!</p>
<p><a href="http://petarvucetin.me/blog/wp-content/uploads/2010/04/image14.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://petarvucetin.me/blog/wp-content/uploads/2010/04/image_thumb14.png" width="714" height="398" /></a>&#160;</p>
<p>Unpin from source is useful if you switch windows or want to make the window float across the files or even move it out of the window.<a href="http://petarvucetin.me/blog/wp-content/uploads/2010/04/image18.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://petarvucetin.me/blog/wp-content/uploads/2010/04/image_thumb18.png" width="714" height="378" /></a><a href="http://petarvucetin.me/blog/wp-content/uploads/2010/04/image19.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="image" src="http://petarvucetin.me/blog/wp-content/uploads/2010/04/image_thumb19.png" width="714" height="482" /></a>&#160;</p>
<p>Another great feature that has been there for a while is the ObjectId-ing the watched values. Check <a href="http://www.wintellect.com/CS/blogs/jrobbins/archive/2008/04/18/finding-an-object-s-gc-generation-in-the-visual-studio-debugger.aspx">this blog post</a> about how to use ObjectIds.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/SS8TL_9Ty_5l2gJJtocX2Bo_gqM/0/da"><img src="http://feedads.g.doubleclick.net/~a/SS8TL_9Ty_5l2gJJtocX2Bo_gqM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/SS8TL_9Ty_5l2gJJtocX2Bo_gqM/1/da"><img src="http://feedads.g.doubleclick.net/~a/SS8TL_9Ty_5l2gJJtocX2Bo_gqM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/petarvucetin?a=E1xIoJZVVec:n4XvEvTGAeg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=E1xIoJZVVec:n4XvEvTGAeg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=E1xIoJZVVec:n4XvEvTGAeg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=E1xIoJZVVec:n4XvEvTGAeg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=E1xIoJZVVec:n4XvEvTGAeg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=E1xIoJZVVec:n4XvEvTGAeg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=E1xIoJZVVec:n4XvEvTGAeg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/petarvucetin?i=E1xIoJZVVec:n4XvEvTGAeg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=E1xIoJZVVec:n4XvEvTGAeg:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=E1xIoJZVVec:n4XvEvTGAeg:ZC7T4KBF6Nw"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=ZC7T4KBF6Nw" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/petarvucetin?a=E1xIoJZVVec:n4XvEvTGAeg:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/petarvucetin?d=G79ilh31hkQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/petarvucetin/~4/E1xIoJZVVec" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://petarvucetin.me/blog/2010/04/visual-studio-2010-pin-the-watched-value/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://petarvucetin.me/blog/2010/04/visual-studio-2010-pin-the-watched-value/</feedburner:origLink></item>
	</channel>
</rss><!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->

