<?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>Ivan Zlatev &#187; .NET</title>
	<atom:link href="http://ivanz.com/tag/dotnet/feed/" rel="self" type="application/rss+xml" />
	<link>http://ivanz.com</link>
	<description></description>
	<lastBuildDate>Sat, 05 Jun 2010 16:19:20 +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>PicasaUploader 0.5: Upload videos</title>
		<link>http://ivanz.com/2010/06/05/picasauploader-0-5-upload-videos/</link>
		<comments>http://ivanz.com/2010/06/05/picasauploader-0-5-upload-videos/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 16:19:20 +0000</pubDate>
		<dc:creator>Ivan Zlatev</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PicasaWeb]]></category>

		<guid isPermaLink="false">http://ivanz.com/?p=720</guid>
		<description><![CDATA[I have released version 0.5 of PicasaUploader - the simple PicasaWeb uploader tool. Changes: Add support for uploading videos. Supported files are: .avi, .mpeg, .mpg, .wmv, .3gp, .asf, .mp4, .mov. However PicasaWeb can still reject any of those if it doesn&#8217;t like it. Note also that videos won&#8217;t be playable in the album immediately because [...]]]></description>
			<content:encoded><![CDATA[<p>I have released version 0.5 of <a href="http://ivanz.com/projects/picasauploader/">PicasaUploader </a>- the simple PicasaWeb uploader tool. Changes:</p>
<ul>
<li>Add support for uploading videos.
<ul>
<li>Supported files are: .avi, .mpeg, .mpg, .wmv, .3gp, .asf, .mp4, .mov. However PicasaWeb can still reject any of those if it doesn&#8217;t like it. Note also that videos won&#8217;t be playable in the album immediately because they have to be postprocessed by PicasaWeb.</li>
</ul>
</li>
<li>File size limits: 20MB for photo files and 100MB for video files.</li>
</ul>
<p>Get it <a href="http://ivanz.com/projects/picasauploader/">here</a>.</p>
<div id="attachment_719" class="wp-caption aligncenter" style="width: 310px"><a href="http://ivanz.com/wp-content/uploads/2009/04/video-upload1.png" rel="shadowbox[post-720];player=img;"><img class="size-medium wp-image-719" title="Video Upload" src="http://ivanz.com/wp-content/uploads/2009/04/video-upload1-300x221.png" alt="Video Upload" width="300" height="221" /></a><p class="wp-caption-text">Video Upload</p></div>
]]></content:encoded>
			<wfw:commentRss>http://ivanz.com/2010/06/05/picasauploader-0-5-upload-videos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Three new featurelets for Fluent NHibernate</title>
		<link>http://ivanz.com/2009/12/13/three-new-featurelets-for-fluent-nhibernate/</link>
		<comments>http://ivanz.com/2009/12/13/three-new-featurelets-for-fluent-nhibernate/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 17:58:21 +0000</pubDate>
		<dc:creator>Ivan Zlatev</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Fluent NHibernate]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://ivanz.com/?p=702</guid>
		<description><![CDATA[Lately I have been using Fluent NHibernate and NHibernate respectively for my ORM (Object-Relational Mapping) when working on my top secret pet project. Simply put &#8211; it&#8217;s great. Mapping is done using a fluent C# interface which makes use of lambda expressions for referencing properties instead of strings (check my previous post for more info) [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I have been using <a href="http://fluentnhibernate.org/">Fluent NHibernate</a> and <a href="http://nhforge.org">NHibernate</a> respectively for my ORM (Object-Relational Mapping) when working on my top secret pet project. Simply put &#8211; it&#8217;s great. Mapping is done using a fluent C# interface which makes use of lambda expressions for referencing properties instead of strings (check my <a href="http://ivanz.com/2009/12/04/how-to-avoid-passing-property-names-as-strings-using-c-3-0-expression-trees/">previous post</a> for more info) so the domain model is <strong>safe to refactor</strong> because the mapping will be kept up-to-date too.</p>
<p>I spend some time hacking on Fluent NHibernate to add three little features I needed for my integration unit testing via Fluent NHibernate&#8217;s <em>PersistenceSpecification</em>. They all currently live in my GitHub(also used by Fluent NHibernate) fork <a href="http://github.com/ivanz/fluent-nhibernate">here</a> and have all been submitted upstream. <strong>UPDATE:</strong> The changes are as of now (21.12.2009) officially part of Fluent NHibernate. I can only hope you will find them useful as well.</p>
<h3>PersistenceSpecification: More Informational Error Reporting</h3>
<p>Particularly useful to troubleshoot failing mapping integration unit tests when a property check fails it will print both expected and actual types of the values. Also notice that chained properties (object.PropA.PropB) are now supported as well:</p>
<p style="padding-left: 30px;"><em>For property &#8216;Nutrition.Calories&#8217; expected &#8217;400&#8242; of type &#8216;System.Int32&#8242; but got &#8217;400&#8242; of type &#8216;System.Single&#8217;.</em></p>
<p>instead of:</p>
<p style="padding-left: 30px;"><em>Expected &#8217;400&#8242; but got &#8217;400&#8242; for Property &#8216;NutritionCalories&#8217;</em></p>
<h3>PersistenceSpecification: Entity Components Property Testing</h3>
<p>It is now possible to test entity component properties. For example given this domain model:</p>
<pre class="brush: csharp;">
public class Food
{
    public Food ()
    {
        Nutrition = new NutritionInfo ();
    }

    public virtual NutritionInfo Nutrition { get; protected set }
    public virtual int Id { get; set; }

}

public class NutritionInfo
{
    public virtual float? Fat { get; set; }
}
</pre>
<p>and this mapping:</p>
<pre class="brush: csharp;">
public class FoodMap : ClassMap&lt;Food&gt;
{
    public FoodMap ()
    {
        Id (food =&gt; food.Id)
            .GeneratedBy.Native ();

        Component&lt;NutritionInfo&gt; (food =&gt; food.Nutrition,
            mapping =&gt; {
                mapping.Map (nutrition =&gt; nutrition.Fat)
                    .Nullable ();
            }
        ).Access.BackingField ();
    }
}
</pre>
<p>One can now use this in unit tests:</p>
<pre class="brush: csharp;">
[TestMethod]
public void Food_Mapping ()
{
    new PersistenceSpecification&lt;Food&gt; (Session)
    .CheckProperty (food =&gt; food.Id, 1)
    .CheckProperty (food =&gt; food.Nutrition.Fat, 40f) // &lt;-- This one
    .VerifyTheMappings ();

}
</pre>
<p>Prior to my patch this wasn&#8217;t possible because Fluent Nhibernate <em>PersistenceSpecification</em> did not support chained properties and was trying to set a <em>Fat</em> property on the <em>food</em> object. Note that this is useful only for components and <span style="text-decoration: underline;">not</span> references. For the latter <em>.CheckReference (&#8230;) </em>should be used which will also commit the reference to the Database before doing anything else.</p>
<h3>PersistenceSpecification: IEqualityComparer for Individual Properties</h3>
<p>Given the setup from above it is now possible to set an IEqualityComparer per property, e.g.:</p>
<pre class="brush: csharp;">
[TestMethod]
public void Serving_Mapping ()
{

    new PersistenceSpecification&lt;Food&gt; (Session, new EqualityComparerForAllProperties ())
    .CheckProperty (food =&gt; food.Id, 1)
    .CheckProperty (food =&gt; food.Nutrition.Fat, 40f, FloatEqualityComparer.Instance)
    .VerifyTheMappings ();
}
</pre>
<p>If there is no comparer set for the property it will fall back to using the <em>EqualityComparerForAllProperties</em> and if that is not specified it will just use Object.Equals.</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanz.com/2009/12/13/three-new-featurelets-for-fluent-nhibernate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to avoid passing property names as strings using C# 3.0 Expression Trees</title>
		<link>http://ivanz.com/2009/12/04/how-to-avoid-passing-property-names-as-strings-using-c-3-0-expression-trees/</link>
		<comments>http://ivanz.com/2009/12/04/how-to-avoid-passing-property-names-as-strings-using-c-3-0-expression-trees/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 19:08:20 +0000</pubDate>
		<dc:creator>Ivan Zlatev</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[NHibernate]]></category>

		<guid isPermaLink="false">http://ivanz.com/?p=699</guid>
		<description><![CDATA[Referencing property names via strings is evil. Consider this simplistic example: private int _myProperty; public int MyProperty { get { return _myProperty; } set { _myProperty = value; NotifyPropertyChanged (this, &#34;MyProperty&#34;) } } // Somewhere in a different project or file... private void NotifyPropertyChanged (object sender, string propertyName) { if (propertyName == &#34;MyProperty&#34;) Console.WriteLine (&#34;Property [...]]]></description>
			<content:encoded><![CDATA[<p>Referencing property names via strings is evil. Consider this simplistic example:</p>
<pre class="brush: csharp;">
private int _myProperty;

public int MyProperty
{
    get { return _myProperty; }
    set {
        _myProperty = value;
        NotifyPropertyChanged (this, &quot;MyProperty&quot;)
    }
}

// Somewhere in a different project or file...
private void NotifyPropertyChanged (object sender, string propertyName)
{
    if (propertyName == &quot;MyProperty&quot;)
        Console.WriteLine (&quot;Property Changed&quot;);
}
</pre>
<p>If at some point the property gets renamed the code will compile fine but a bug will be introduced as all those strings that contain the property name will remain unchanged. Evil.</p>
<p>So I have been toying with NHibernate lately and yesterday I was writing some repositories. Let&#8217;s assume that theoretically they look like this:</p>
<pre class="brush: csharp;">
public class Repository &lt;TEntity&gt;
{
    public virtual TEntity FindById (object id)
    {
        ...
    }
}

public class UserRepository : Repository&lt;User&gt;
{
    public IList&lt;User&gt; FindByName (string name)
    {
        // query code
    }

    public IList&lt;User&gt; FindByEmail (string email)
    {
        // query code
    }
}
</pre>
<p>Both <em>FindByName </em>and <em>FindByEmail </em>in <em>UserRepository </em>will in theory contain the same queries but with different parameters. However I don&#8217;t really want to have to write individual queries so I considered a utility method:</p>
<pre class="brush: csharp;">
public class Repository &lt;TEntity&gt;
{
    public virtual TEntity FindById (object id)
    {
        ...
    }

    protected virtual IList&lt;TEntity&gt; FindByProperty (string propertyName, object value)
    {
        string columnName = NHibernateUtil.GetPropertyColumnName&lt;TEntity&gt; (propertyName);

        // Query here, e.g: &quot;SELECT .... WHERE .... columnName = value&quot; , etc.
    }
}

public class UserRepository : Repository&lt;User&gt;
{
    public IList&lt;User&gt; FindByName (string name)
    {
        return base.FindByProperty (&quot;Name&quot;, name);
    }

    public IList&lt;User&gt; FindByEmail (string email)
    {
        return base.FindByProperty (&quot;Email&quot;, email);
    }
}
</pre>
<p>Again this is very bad code and I hated the idea of it, so I sat down and started thinking. I remembered reading somewhere about C# 3.0 Expression Trees so I did some research. When using the special <em>Expression </em>type this seems to tell the compiler to create and expose an AST to us of e.g. a lambda function&#8217;s body, so if we pass a property reference expression we can parse the AST and extract the property name from there.</p>
<p>The theory in practice:</p>
<pre class="brush: csharp;">
public class UserRepository : Repository&lt;User&gt;
{
    public IList&lt;User&gt; FindByName (string name)
    {
        return base.FindByProperty (user =&gt; user.Name, name);
    }

    public IList&lt;User&gt; FindByEmail (string email)
    {
        return base.FindByProperty (user =&gt; user.Email, email);
    }
}

public class Repository &lt;TEntity&gt;
{
    public virtual TEntity FindById (object id)
    {
        ...
    }

    protected virtual IList&lt;TEntity&gt; FindByProperty (Expression&lt;Func&lt;TEntity, object&gt;&gt; propertyRefExpr,
                                                     object value)
    {
        string propertyName = GetPropertyName (propertyRefExpr);

        // Query code
    }

    private string GetPropertyName (Expression propertyRefExpr)
    {
        if (propertyRefExpr == null)
            throw new ArgumentNullException (&quot;propertyRefExpr&quot;, &quot;propertyRefExpr is null.&quot;);

        MemberExpression memberExpr = propertyRefExpr.Body as MemberExpression;
        if (memberExpr == null) {
            UnaryExpression unaryExpr = propertyRefExpr.Body as UnaryExpression;
            if (unaryExpr != null &amp;&amp; unaryExpr.NodeType == ExpressionType.Convert)
                memberExpr = unaryExpr.Operand as MemberExpression;
        }

        if (memberExpr != null &amp;&amp; memberExpr.Member.MemberType == MemberTypes.Property)
            return memberExpr.Member.Name;

        throw new ArgumentException (&quot;No property reference expression was found.&quot;,
                         &quot;propertyRefExpr&quot;);
    }
}
</pre>
<p>Also as a helper class:</p>
<pre class="brush: csharp;">
public static class PropertyUtil
{
    public static string GetPropertyName&lt;TObject&gt; (this TObject type,
                                                   Expression&lt;Func&lt;TObject, object&gt;&gt; propertyRefExpr)
    {
        return GetPropertyNameCore (propertyRefExpr.Body);
    }

    public static string GetName&lt;TObject&gt; (Expression&lt;Func&lt;TObject, object&gt;&gt; propertyRefExpr)
    {
        return GetPropertyNameCore (propertyRefExpr.Body);
    }

    private static string GetPropertyNameCore (Expression propertyRefExpr)
    {
        if (propertyRefExpr == null)
            throw new ArgumentNullException (&quot;propertyRefExpr&quot;, &quot;propertyRefExpr is null.&quot;);

        MemberExpression memberExpr = propertyRefExpr as MemberExpression;
        if (memberExpr == null) {
            UnaryExpression unaryExpr = propertyRefExpr as UnaryExpression;
            if (unaryExpr != null &amp;&amp; unaryExpr.NodeType == ExpressionType.Convert)
                memberExpr = unaryExpr.Operand as MemberExpression;
        }

        if (memberExpr != null &amp;&amp; memberExpr.Member.MemberType == MemberTypes.Property)
            return memberExpr.Member.Name;

        throw new ArgumentException (&quot;No property reference expression was found.&quot;,
                         &quot;propertyRefExpr&quot;);
    }
}
</pre>
<p>As you can see it contains two generic methods that operate either on types:</p>
<pre class="brush: csharp;">
string propertyName = PropertyUtil.GetName&lt;User&gt; (u =&gt; u.Email);
</pre>
<p>or instances:</p>
<pre class="brush: csharp;">
User user = GetUser();
string propertyName = user.GetPropertyName (u =&gt; u.Email);
</pre>
<p>Great, isn&#8217;t it? And safe to refactor.</p>
<p>Of course there is no such thing as a free lunch and the use of expression trees comes at the expense of some performance.</p>
<p>BTW is the font size of the code snippets sufficiently readable or is it too tiny?</p>
<p><strong>UPDATE:</strong> Added support for Convert expressions (implicit/explicit casting)</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanz.com/2009/12/04/how-to-avoid-passing-property-names-as-strings-using-c-3-0-expression-trees/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>HowTo Disable the Unsigned Security Warnings on Windows Mobile</title>
		<link>http://ivanz.com/2009/08/15/howto-disable-the-unsigned-security-warnings-on-windows-mobile/</link>
		<comments>http://ivanz.com/2009/08/15/howto-disable-the-unsigned-security-warnings-on-windows-mobile/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 20:54:05 +0000</pubDate>
		<dc:creator>Ivan Zlatev</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET CF]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://i-nz.net/?p=674</guid>
		<description><![CDATA[The security warnings when deploying unsigned applications from Visual Studio to a real Windows Mobile device can get very annoying. Thankfully they can be disabled with a hack and here is how. Using the Remote Registry Editor supplied with Visual Studio and with the Windows Mobile SDK installed change the following key value from 0 [...]]]></description>
			<content:encoded><![CDATA[<p>The security warnings when deploying unsigned applications from Visual Studio to a real Windows Mobile device can get very annoying. Thankfully they can be disabled with a hack and here is how.</p>
<p>Using the Remote Registry Editor supplied with Visual Studio and with the Windows Mobile SDK installed change the following key value from 0 to 1 (and vise-versa to reset the change)</p>
<pre><code>HKEY_LOCAL_MACHINE\Security\Policies\Policies\0000101a = 1</code></pre>
<p>That&#8217;s it.</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanz.com/2009/08/15/howto-disable-the-unsigned-security-warnings-on-windows-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2008 jQuery IntelliSense Fix</title>
		<link>http://ivanz.com/2009/07/01/visual-studio-2008-jquery-intellisense-fix/</link>
		<comments>http://ivanz.com/2009/07/01/visual-studio-2008-jquery-intellisense-fix/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 21:25:16 +0000</pubDate>
		<dc:creator>Ivan Zlatev</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://i-nz.net/?p=592</guid>
		<description><![CDATA[I am tinkering with ASP.NET MVC and jQuery and making my first baby steps in a whole new horrible world of web development. I found out that the JavaScript IntelliSense in Visual Studio 2008 is broken out of the box. The error is: Warning    2    Error updating JScript IntelliSense: jquery-1.3.2.js: Object doesn't support this property [...]]]></description>
			<content:encoded><![CDATA[<p>I am tinkering with ASP.NET MVC and jQuery and making my first baby steps in a whole new horrible world of web development. I found out that the JavaScript IntelliSense in Visual Studio 2008 is broken out of the box. The error is:</p>
<pre>Warning    2    Error updating JScript IntelliSense: jquery-1.3.2.js:
   Object doesn't support this property or method @ 2173:1</pre>
<p>The fix for Visual Studio 2008 SP1 by Microsoft can be found here:</p>
<p><a href="http://code.msdn.microsoft.com/KB958502">KB958502 &#8211; JScript Editor support for “-vsdoc.js” IntelliSense doc. files</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ivanz.com/2009/07/01/visual-studio-2008-jquery-intellisense-fix/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PicasaUploader 0.3: Batch Image Scaling/Resizing</title>
		<link>http://ivanz.com/2009/06/01/picasauploader-03-batch-image-scalingresizing/</link>
		<comments>http://ivanz.com/2009/06/01/picasauploader-03-batch-image-scalingresizing/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 19:53:57 +0000</pubDate>
		<dc:creator>Ivan Zlatev</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Diary]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PicasaWeb]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://i-nz.net/?p=571</guid>
		<description><![CDATA[I have just released version 0.3 of my PicasaWeb Uploader tool. The new things are: High quality batch image resizing/scaling on the fly prior to upload. Memory usage performance improvements. Get it from (and also for more information): http://i-nz.net/projects/picasauploader]]></description>
			<content:encoded><![CDATA[<p>I have just released version 0.3 of my PicasaWeb Uploader tool. The new things are:</p>
<ul>
<li>High quality batch image resizing/scaling on the fly prior to upload.</li>
<li>Memory usage performance improvements.</li>
</ul>
<p>Get it from (and also for more information): <a href="http://ivanz.com/projects/picasauploader/">http://i-</a><a href="http://ivanz.com/projects/picasauploader/">nz.net/projects/picasauploader</a></p>
<p><a href="http://ivanz.com/projects/picasauploader/"></p>
<div id="attachment_570" class="wp-caption aligncenter" style="width: 533px"></a><a href="http://ivanz.com/wp-content/uploads/2009/06/resize-photos.png" rel="shadowbox[post-571];player=img;"><img class="size-full wp-image-570" title="Photo Resize" src="http://ivanz.com/wp-content/uploads/2009/06/resize-photos.png" alt="Photo Resize" width="523" height="412" /></a><p class="wp-caption-text">Photo Resize</p></div>
]]></content:encoded>
			<wfw:commentRss>http://ivanz.com/2009/06/01/picasauploader-03-batch-image-scalingresizing/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PicasaUploader 0.2: A simple upload tool for PicasaWeb</title>
		<link>http://ivanz.com/2009/05/15/picasauploader-02-a-simple-upload-tool-for-picasaweb/</link>
		<comments>http://ivanz.com/2009/05/15/picasauploader-02-a-simple-upload-tool-for-picasaweb/#comments</comments>
		<pubDate>Fri, 15 May 2009 22:36:43 +0000</pubDate>
		<dc:creator>Ivan Zlatev</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PicasaWeb]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://i-nz.net/?p=558</guid>
		<description><![CDATA[I have just released version 0.2 of my PicasaWeb Uploader tool. The new things are &#8220;Send To&#8221; right-click integration on Windows and username/password saving. Get it from (and also for more information): http://ivanz.com/projects/picasauploader.]]></description>
			<content:encoded><![CDATA[<p>I have just released version 0.2 of my PicasaWeb Uploader tool. The new things are &#8220;<em>Send To</em>&#8221; right-click integration on Windows and username/password saving. Get it from (and also for more information): <a href="http://ivanz.com/projects/picasauploader/">http://ivanz.com/projects/picasauploader</a>.</p>

<a href='http://ivanz.com/wp-content/uploads/2009/05/albums-screenshot1.png' rel='shadowbox[album-558];player=img;' title='albums-screenshot1'><img width="150" height="150" src="http://ivanz.com/wp-content/uploads/2009/05/albums-screenshot1-150x150.png" class="attachment-thumbnail" alt="albums-screenshot1" title="albums-screenshot1" /></a>
<a href='http://ivanz.com/wp-content/uploads/2009/05/photos-screenshot1.png' rel='shadowbox[album-558];player=img;' title='photos-screenshot1'><img width="150" height="150" src="http://ivanz.com/wp-content/uploads/2009/05/photos-screenshot1-150x150.png" class="attachment-thumbnail" alt="photos-screenshot1" title="photos-screenshot1" /></a>
<a href='http://ivanz.com/wp-content/uploads/2009/05/send-to-integration.png' rel='shadowbox[album-558];player=img;' title='send-to-integration'><img width="150" height="150" src="http://ivanz.com/wp-content/uploads/2009/05/send-to-integration-150x150.png" class="attachment-thumbnail" alt="send-to-integration" title="send-to-integration" /></a>

]]></content:encoded>
			<wfw:commentRss>http://ivanz.com/2009/05/15/picasauploader-02-a-simple-upload-tool-for-picasaweb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2008 Team System Database Project Templates for SQL Server 2008</title>
		<link>http://ivanz.com/2009/05/04/visual-studio-2008-team-system-database-project-templates-for-sql-server-2008/</link>
		<comments>http://ivanz.com/2009/05/04/visual-studio-2008-team-system-database-project-templates-for-sql-server-2008/#comments</comments>
		<pubDate>Mon, 04 May 2009 18:20:46 +0000</pubDate>
		<dc:creator>Ivan Zlatev</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://i-nz.net/?p=552</guid>
		<description><![CDATA[The Database templates in Visual Studio 2008 Team System are used to e.g. create automagic test data generation plans which then can be utilized in WebTests using a DataSource binding for a field value and then use the WebTests to create a LoadTest. It&#8217;s absolutely awesome and impressive how this is done in Visual Studio [...]]]></description>
			<content:encoded><![CDATA[<p>The Database templates in Visual Studio 2008 Team System are used to e.g. create automagic test data generation plans which then can be utilized in WebTests using a DataSource binding for a field value and then use the WebTests to create a LoadTest. It&#8217;s absolutely awesome and impressive how this is done in Visual Studio (only available in Team System edition).</p>
<p>The only little problem is that Visual Studio 2008 only ships Database templates for SQL Server 2000 and 2005. The Database templates for SQL Server 2008 are at: <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;displaylang=en">Microsoft® Visual Studio Team System 2008 Database Edition GDR R2</a> and require <a href="http://www.microsoft.com/downloads/details.aspx?familyid=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;displaylang=en">Visual Studio 2008 SP1</a>.</p>
<p>A screencast on how to generate test data for a database at: <a href="http://msdn.microsoft.com/en-us/teamsystem/cc501309.aspx">How Do I: Generate Test Data using Visual Studio Team System Database Edition?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ivanz.com/2009/05/04/visual-studio-2008-team-system-database-project-templates-for-sql-server-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PicasaUploader &#8211; a simple uploader tool for Google&#8217;s PicasaWeb</title>
		<link>http://ivanz.com/2009/05/01/picasauploader-a-simple-uploader-tool-for-googles-picasaweb/</link>
		<comments>http://ivanz.com/2009/05/01/picasauploader-a-simple-uploader-tool-for-googles-picasaweb/#comments</comments>
		<pubDate>Fri, 01 May 2009 00:11:16 +0000</pubDate>
		<dc:creator>Ivan Zlatev</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://i-nz.net/?p=515</guid>
		<description><![CDATA[I finally decided to make the tool I use to upload photos to Google&#8217;s PicasaWeb online gallery public. PicasaUploader is a simple tool for uploading photos to Google&#8217;s PicasaWeb online gallery. It provides the following functionality: Browse and select an album or create a new one Browse and select/remove photos to upload Duplicate photos handling [...]]]></description>
			<content:encoded><![CDATA[<p>I finally decided to make the tool I use to upload photos to <a href="http://picasaweb.google.com">Google&#8217;s PicasaWeb</a> online gallery public.</p>
<p><strong>PicasaUploader</strong> is a simple tool for uploading photos to Google&#8217;s PicasaWeb online gallery. It provides the following functionality:</p>
<ul>
<li>Browse and select an album or create a new one</li>
<li>Browse and select/remove photos to upload</li>
<li>Duplicate photos handling &#8211; Skip/Replace/Upload</li>
<li>Error handling &#8211; if something goes wrong during the upload you will be asked if you want to retry.</li>
</ul>
<p>The project&#8217;s web page and downloads are here &#8211; <a href="http://ivanz.com/projects/picasauploader/">PicasaUploader on the Web</a>. It&#8217;s written in C# and the source code/bug tracker are hosted on GitHub at <a href="http://github.com/ivanz/PicasaUploader">http://github.com/ivanz/PicasaUploader</a>.</p>

<a href='http://ivanz.com/wp-content/uploads/2009/05/albums-screenshot.png' rel='shadowbox[album-515];player=img;' title='Album Browser and Album Creation'><img width="150" height="150" src="http://ivanz.com/wp-content/uploads/2009/05/albums-screenshot-150x150.png" class="attachment-thumbnail" alt="Album Browser and Album Creation" title="Album Browser and Album Creation" /></a>
<a href='http://ivanz.com/wp-content/uploads/2009/05/photos-screenshot.png' rel='shadowbox[album-515];player=img;' title='Uploading Photos and Duplicate Photos'><img width="150" height="150" src="http://ivanz.com/wp-content/uploads/2009/05/photos-screenshot-150x150.png" class="attachment-thumbnail" alt="Uploading Photos and Duplicate Photos" title="Uploading Photos and Duplicate Photos" /></a>
<a href='http://ivanz.com/wp-content/uploads/2009/05/error-handling-screenshot.png' rel='shadowbox[album-515];player=img;' title='Error Handling during Upload'><img width="150" height="150" src="http://ivanz.com/wp-content/uploads/2009/05/error-handling-screenshot-150x150.png" class="attachment-thumbnail" alt="Error Handling during Upload" title="Error Handling during Upload" /></a>

]]></content:encoded>
			<wfw:commentRss>http://ivanz.com/2009/05/01/picasauploader-a-simple-uploader-tool-for-googles-picasaweb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DataGridView revamp for Mono 2.4 &#8211; Data Binding and more</title>
		<link>http://ivanz.com/2009/01/15/datagridview-revamp/</link>
		<comments>http://ivanz.com/2009/01/15/datagridview-revamp/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 00:50:15 +0000</pubDate>
		<dc:creator>Ivan Zlatev</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[DataGridView]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://i-nz.net/?p=258</guid>
		<description><![CDATA[In December I developed a simple student registration system, where I utilized DataGridView, BindingSources  and the WinForms DataBinding all over the place (developed fully in Visual Studio 2008). Then I ran it only to discover that it was utterly broken on Mono, which pushed me to get down and do some work. Ladies and Gentlemen, [...]]]></description>
			<content:encoded><![CDATA[<p>In December I developed a simple student registration system, where I utilized DataGridView, BindingSources  and the WinForms DataBinding all over the place (developed fully in Visual Studio 2008). Then I ran it only to discover that it was utterly broken on Mono, which pushed me to get down and do some work.</p>
<p>Ladies and Gentlemen, with ~70 commits, 20+ officially filed bugzilla bugs fixed and many dozens of such that weren&#8217;t filed and discovered by extensive interactive testing of various test samples and my own application I have revamped the DataGridView and various pieces of DataBinding in Mono&#8217;s Windows Forms implementation. Your DataGridView applications should work out of the box (mine does <img src='http://ivanz.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). Those fixes will be part of the Mono 2.4 release for which we will be branching this month.</p>
<p>Be nice and test your applications with Subversion HEAD or Mono 2.4 branch once it is available (<a href="http://mono-project.com/Compiling_Mono">http://mono-project.com/Compiling_Mono</a>) and in case you find any problems be nice and report them to us (<a href="http://mono-project.com/Bugs">http://mono-project.com/Bugs</a>), so that we can fix them for Mono 2.4.</p>
<p>Ciao!</p>
<div id="attachment_269" class="wp-caption aligncenter" style="width: 310px"><a href="http://ivanz.com/wp-content/uploads/2009/01/screenshot-student-administration-system.png" rel="shadowbox[post-258];player=img;"><img class="size-medium wp-image-269" title="screenshot-student-administration-system" src="http://ivanz.com/wp-content/uploads/2009/01/screenshot-student-administration-system-300x270.png" alt="DataGridView SVN HEAD caught in action" width="300" height="270" /></a><p class="wp-caption-text">DataGridView SVN HEAD caught in action</p></div>
]]></content:encoded>
			<wfw:commentRss>http://ivanz.com/2009/01/15/datagridview-revamp/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>
