<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Goldin, the Junior</title>
	<atom:link href="http://evgenyg.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://evgenyg.wordpress.com</link>
	<description>args.foreach( println )</description>
	<lastBuildDate>Fri, 11 Nov 2011 16:55:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='evgenyg.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/19d6de59632216c5d7f88f8aa63f50be?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Goldin, the Junior</title>
		<link>http://evgenyg.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://evgenyg.wordpress.com/osd.xml" title="Goldin, the Junior" />
	<atom:link rel='hub' href='http://evgenyg.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Moving this blog to &#8220;evgeny-goldin.com&#8221;</title>
		<link>http://evgenyg.wordpress.com/2010/06/27/moving-this-blog-to-evgeny-goldin-com/</link>
		<comments>http://evgenyg.wordpress.com/2010/06/27/moving-this-blog-to-evgeny-goldin-com/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 23:10:04 +0000</pubDate>
		<dc:creator>Evgeny Goldin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://evgenyg.wordpress.com/?p=1414</guid>
		<description><![CDATA[This blog has moved to a new address: http://evgeny-goldin.com/blog/ Two new posts are available already: Groovy 1.7.3: AnnoMojo + GroovyMojo! Backup techniques. Saving my life. See you there!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1414&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This blog has moved to a new address: <a href="http://evgeny-goldin.com/blog/"><strong><code>http://evgeny-goldin.com/blog/</code></strong></a></p>
<p>Two new posts are available already:</p>
<ul>
<li><a href="http://evgeny-goldin.com/blog/2010/06/27/annomojo-groovymojo/">Groovy 1.7.3: AnnoMojo + GroovyMojo!</a></li>
<li><a href="http://evgeny-goldin.com/blog/2010/06/26/backup-techniques/">Backup techniques. Saving my life.</a></li>
</ul>
<p>See you there!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/evgenyg.wordpress.com/1414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/evgenyg.wordpress.com/1414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/evgenyg.wordpress.com/1414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/evgenyg.wordpress.com/1414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/evgenyg.wordpress.com/1414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/evgenyg.wordpress.com/1414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/evgenyg.wordpress.com/1414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/evgenyg.wordpress.com/1414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/evgenyg.wordpress.com/1414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/evgenyg.wordpress.com/1414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/evgenyg.wordpress.com/1414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/evgenyg.wordpress.com/1414/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/evgenyg.wordpress.com/1414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/evgenyg.wordpress.com/1414/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1414&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://evgenyg.wordpress.com/2010/06/27/moving-this-blog-to-evgeny-goldin-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8769b1ed68930f7adee6b6ed3425f2e?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">evgenyg</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Technology User Group in Tel Aviv</title>
		<link>http://evgenyg.wordpress.com/2010/05/18/google-technology-user-group-tel-aviv/</link>
		<comments>http://evgenyg.wordpress.com/2010/05/18/google-technology-user-group-tel-aviv/#comments</comments>
		<pubDate>Mon, 17 May 2010 22:14:04 +0000</pubDate>
		<dc:creator>Evgeny Goldin</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[tel-aviv]]></category>

		<guid isPermaLink="false">http://evgenyg.wordpress.com/?p=1326</guid>
		<description><![CDATA[GTUG TLV took place today in Google Tel-Aviv offices. I visited Haifa and New-York offices in the past but never been in Tel-Aviv one so it was nice to see it for the first time, of course. It was somewhat surprising but the office is not that fancy, as other people may think of it. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1326&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://tlv.gtugs.org/"><strong>GTUG TLV</strong></a> took place today in Google Tel-Aviv offices. I visited <a href="http://jpsinteractive.org/blog/jt/2008-8-15-what-i-learned-google-haifa">Haifa</a> and <a href="http://www.labnol.org/internet/video-tour-of-google-office-in-new-york/5395/">New-York</a> offices in the past but never been in Tel-Aviv one so it was nice to see it for the first time, of course.</p>
<p>It was somewhat surprising but the office is not that fancy, as other people may think of it. I mean, it&#8217;s totally fine and you get some nice colored walls painted in Google colors. I couldn&#8217;t see the whole office so who knows what was left but from what I saw it was just a normal office. The kitchen is Ok, two pool tables next to it and a medium-size conference room where the event actually took place. I was told once it&#8217;s a temporal location and Google Tel-Aviv would move into its own campus in Tel-Aviv university. So it may explain the lack of usual luxury you get to see in other offices.</p>
<p>But a bird&#8217;s-eye view on Tel-Aviv is truly fascinating:</p>
<p><a href="http://img412.imageshack.us/img412/3803/17052010761.jpg"><img src="http://evgenyg.files.wordpress.com/2010/05/17052010761.png?w=630&#038;h=472" alt="" title="Tel-Aviv" width="630" height="472" class="aligncenter size-full wp-image-1383"></a></p>
<p>Anyway, it wasn&#8217;t the office we came to see today, of course.</p>
<p>I stayed for three sessions:</p>
<ul>
<li><a href="http://www.slideshare.net/zohararad/javascript-design-patterns-4137305">&#8220;Javascript Design Patterns&#8221;</a> (<a href="http://www.youtube.com/user/gtugs#p/c/FD5DE5973026FBC1/1/XWEgqPDpUZ4">video</a>)</li>
<li><a href="http://docs.google.com/present/view?id=dcsfjdbv_384cv55xdcw">&#8220;Android 101&#8243;</a> (<a href="http://www.youtube.com/user/gtugs#p/c/FD5DE5973026FBC1/3/wcIsUWPJ7hQ">video</a>)</li>
<li><a href="http://www.9folds.com/portfolio/presentation/">&#8220;Django AppEngine based platform building site&#8221;</a> (<a href="http://www.youtube.com/user/gtugs#p/c/FD5DE5973026FBC1/2/P3XLGcXKTjE">video</a>)</li>
</ul>
<p>Unfortunately, I left earlier thinking I&#8217;m only missing the Python part (I&#8217;m less interested in) and forgot there&#8217;s <a href="http://docs.google.com/present/view?id=df7t3sm2_279gz595kgc">&#8220;An introduction to Google Closure&#8221;</a> (<a href="http://www.youtube.com/user/gtugs#p/a/u/0/zCsnlitOD5A">video</a>) which I really wanted to hear. Shame on me!</p>
<p><strong>1.</strong></p>
<p>The following JavaScript patterns were nicely presented by Zohar Arad:</p>
<p><strong><u>Singleton</u></strong>:</p>
<p>I don&#8217;t think there&#8217;s a need to elaborate on it <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  It&#8217;s just <code><strong>Something.getInstance()</strong></code>, as usual.</p>
<p><strong><u>Module</u></strong>:</p>
<p>A re-usable and self-containable unit that can be instantiated and used for performing certain tasks.</p>
<p><pre class="brush: jscript;">
var Module   = function( o ) { .. }; // A general function for converting object to module
var MyModule = new Module({ .. });   // Specifying module's definition
var m        = new MyModule();       // Instantiating the module, start using &quot;m&quot;
</pre></p>
<p><strong><u>Engine</u></strong></p>
<p>Callable unit that implements unique internal logic, exposing uniform API to consumers, similarly to <a href="http://en.wikipedia.org/wiki/Facade_pattern">Facade</a>. It is used mostly in various browsers, implementing differently a certain functionality, like <a href="http://dev.w3.org/html5/websockets/">Web Sockets</a> that was given as an example. So we implement IE engine, Firefox engine, Chrome engine, and Opera engine and override certain methods.</p>
<p><strong><u>Event-Driven</u></strong></p>
<p>Allows not to call some other unit directly but posts DOM events using commonly known names to which other party responds, since it has a listener registered. Used heavily in Flash to JavaScript communication, freeing from a need to know JavaScript method names and being forced to recompile Flash each time JS code is refactored. Putting a layer of isolation between them loosens the coupling a bit as there are no direct calls any more, one technology just fires events for another one. All major JS frameworks support customized event names like <code><strong>'SomethingHappenedEvent'</strong></code> and here we assume event names won&#8217;t be changing as frequently as method names. </p>
<p>We had a comment from the audience about an importance of detaching event listeners on <code><strong>unload</strong></code> to clean up the references and prevent memory leaks that otherwise may be catastrophic, especially in Flash. And this kind of &#8220;unregistering&#8221; better be done automatically.</p>
<p><strong><u>Templates</u></strong></p>
<p>Adding lots of HTML to the page is better done by creating large String snippets rather than by manipulating DOM. When creating them, <a href="http://plugins.jquery.com/project/jquerytemplate">various</a> <a href="http://www.prototypejs.org/api/template">templating</a> <a href="http://www.extjs.com/deploy/dev/docs/?class=Ext.Template">techniques</a> and syntaxes can be used. Naturally, when implementing it manually, ReGex-es are somewhat slower than a simpler String operations.</p>
<p>Btw, here&#8217;s the pattern to iterate through object properties, only those it actually owns:</p>
<p><pre class="brush: jscript;">
for ( prop in o )
{
    if ( o.hasOwnProperty( prop ))
    {
        var j = o[ prop ];
        ...
    }
}
</pre></p>
<p>Being Groovyst in my heart I was dying to replace it with something like:</p>
<p><pre class="brush: groovy;">
for ( j in o.findAll{ o.hasOwnProperty( it ) }.collect{ o[ it ] })
{
    ...
}
</pre></p>
<p><strong>2.</strong></p>
<p>Second presentation, <a href="http://docs.google.com/present/view?id=dcsfjdbv_384cv55xdcw"><strong>&#8220;Android 101&#8243;</strong></a> by <a href="http://www.droidsecurity.com/about.html">Dror Shalev</a> from <a href="http://www.droidsecurity.com/"><strong>DroidSecurity</strong></a> was a killer! I always said you need two things to make a successful presentation: the material itself should be rock-solid and interesting, of course. But you also need a presenter who&#8217;s making a show out of it. When those two meet together .. well, that&#8217;s what people remember later for years, I believe. And that&#8217;s exactly what Dror demonstrated us today. </p>
<p>It was very interesting to hear how hackable Linux, Dalvik VM and Android are and how important it is to have a decent &#8220;antivirus-like&#8221; application on each Android phone. The problem is that neither of applications available in <a href="http://www.android.com/market/"><strong>Android Market</strong></a> is checked by someone. It&#8217;s a free world for everybody. Bad things may (and do) happen if malicious software is installed. Now, DroidSecurity solution doesn&#8217;t scan files , it can&#8217;t, but it analyzes what&#8217;s happening and what&#8217;s running on the phone, communicating with company servers. To see it in the market, go to <a href="http://www.android.com/market/"><strong>&#8220;Top Free/Paid&#8221;</strong></a>, choose &#8220;Communication&#8221; category and scroll down to &#8220;antivirus free&#8221; or &#8220;Antivirus Pro&#8221; (too bad it&#8217;s impossible to provide a direct link .. hmm, somebody?)</p>
<p>We were also told there&#8217;s an <a href="http://iandroid.co.il/"><strong>iAndroid</strong></a> community for Android developers in Israel.</p>
<p><strong>3.</strong></p>
<p>Third presentation, <a href="http://www.9folds.com/portfolio/presentation/"><strong>&#8220;Django AppEngine based platform building site&#8221;</strong></a> was about <a href="http://www.9folds.com/"><strong>9Folds</strong></a>, a CMS engine built by Alon Burg for quick Web sites creation using Django templates and AppEngine-deployed .. eeeh, engine. I&#8217;m not experienced with Django so I could less appreciate the beauty of it but Alon mentioned some nice AppEngine caching techniques. He&#8217;s also using a rather clever trick to upload template files to a &#8220;live&#8221; site: pushes them to a public GitHub repo where they&#8217;re downloaded from by an application code. What a brilliant idea, browser upload, be it Flash or not, doesn&#8217;t come close to <a href="http://www.kernel.org/pub/software/scm/git/docs/git-push.html"><strong><code>"git push"</code></strong></a>, of course.</p>
<p>Alon has also mentioned <a href="http://varnish-cache.org/">Varnish</a>, a <a href="http://varnish-cache.org/wiki/VarnishFeatures">&#8220;high-performance HTTP accelerator&#8221;</a>.</p>
<p>Take a look on 9Folds <a href="http://www.9folds.com/portfolio/gallery/">gallery</a> or browse <a href="http://en.narayanworld.com/">Narayan World</a> to see how results look like.</p>
<p>So .. It was a very intense evening and I didn&#8217;t even see it all!<br />
Many thanks to Omri for organizing and running this event! </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/evgenyg.wordpress.com/1326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/evgenyg.wordpress.com/1326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/evgenyg.wordpress.com/1326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/evgenyg.wordpress.com/1326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/evgenyg.wordpress.com/1326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/evgenyg.wordpress.com/1326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/evgenyg.wordpress.com/1326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/evgenyg.wordpress.com/1326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/evgenyg.wordpress.com/1326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/evgenyg.wordpress.com/1326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/evgenyg.wordpress.com/1326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/evgenyg.wordpress.com/1326/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/evgenyg.wordpress.com/1326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/evgenyg.wordpress.com/1326/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1326&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://evgenyg.wordpress.com/2010/05/18/google-technology-user-group-tel-aviv/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8769b1ed68930f7adee6b6ed3425f2e?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">evgenyg</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/05/17052010761.png" medium="image">
			<media:title type="html">Tel-Aviv</media:title>
		</media:content>
	</item>
		<item>
		<title>Artifactory Online &#8211; the case of distributing Groovy++</title>
		<link>http://evgenyg.wordpress.com/2010/05/05/artifactory-online-groovypp/</link>
		<comments>http://evgenyg.wordpress.com/2010/05/05/artifactory-online-groovypp/#comments</comments>
		<pubDate>Tue, 04 May 2010 23:31:16 +0000</pubDate>
		<dc:creator>Evgeny Goldin</dc:creator>
				<category><![CDATA[Artifactory]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>

		<guid isPermaLink="false">http://evgenyg.wordpress.com/?p=1222</guid>
		<description><![CDATA[After working with open source Artifactory version and thoroughly exploring it&#8217;s add-ons I knew it would come a moment to put my hands on its cloud solution &#8211; Artifactory Online. It just made sense to &#8220;close the loop&#8221; this way .. Тhe moment I&#8217;ve heard about online instance, running 24&#215;7 without having to take care [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1222&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After working with <a href="http://evgenyg.wordpress.com/2010/01/09/artifactory-upgrade/">open source</a> Artifactory version and thoroughly <a href="http://evgenyg.wordpress.com/2010/03/08/artifactory-power-pack/">exploring</a> it&#8217;s <a href="http://www.jfrog.org/addons.php">add-ons</a> I knew it would come a moment to put my hands on its cloud solution &#8211; <a href="http://www.jfrog.org/art-online.php"><b>Artifactory Online</b></a>. It just made sense to &#8220;close the loop&#8221; this way .. Тhe moment I&#8217;ve heard about online instance, running 24&#215;7 without having to take care of <i>anything</i> &#8211; it sounded really, really nice. </p>
<p>I can&#8217;t say we spend a lot of time administering our open source version in Thomson Reuters. Quite the opposite &#8211; I only need to take it down for upgrades from time to time. But it still takes us a machine. A <a href="http://www.microsoft.com/windowsserver2008/en/us/hyperv-main.aspx">virtual one</a>, of course but still &#8211; that&#8217;s CPU and memory that could be well spent somewhere else. So having online instance not only gives a peace of mind freeing everybody from taking care of one more server and one more <a href="http://wiki.jfrog.org/confluence/display/RTF/Changing+the+Default+Storage">database</a> &#8211; it frees some hardware resources as well. </p>
<p>Well, a beauty of cloud computing, when it works. And Artifactory certainly does!</p>
<p>But my first use of Artifactory Online was for slightly different purpose &#8211; <a href="http://code.google.com/p/groovypptest/wiki/Maven">Maven support</a> for the <a href="http://code.google.com/p/groovypptest/"><b>Groovy++</b></a> project. There was a clear need to host Groovy++ binaries in a public Maven repo. </p>
<p>What options are available today?</p>
<ul>
<li> <a href="http://nexus.sonatype.org/oss-repository-hosting.html">OSS repository hosting</a> from Sonatype.<br />
It&#8217;s a good free solution but like any other free solution it only provides you so much: if you don&#8217;t mind being at mercy of other people with certain demands about how your POMs should look like &#8211; then it&#8217;s a good way to go. But I&#8217;d prefer my personal repository, where I can configure it the way I want without sharing it with other projects and asking favors. Also, bear in mind you get no security whatsoever &#8211; all your binaries would be open to everybody, anytime. And it only works for open-source projects which can be another showstopper. </li>
<p>&nbsp;</p>
<li> Another option is to host a public Apache or nginx server and just make the files available following Maven&#8217;s naming conventions, like it&#8217;s done on <a href="http://repo1.maven.org/maven2/"><b><code>"repo1"</code></b></a>. Not to mention the lack of security (again) &#8211; this kind of storage can be fragile to files corruptions: after all it&#8217;s just a dumb files storage, not an intelligent repo manager. You can&#8217;t use Maven to deploy artifacts and it provides no additional services, like <a href="http://groovypp.artifactoryonline.com/groovypp/libs-releases/">virtual repos</a>, <a href="http://groovypp.artifactoryonline.com/groovypp/webapp/gavcsearch.html">artifacts searching</a> or usage statistics.</li>
<p>&nbsp;</p>
<li> Public hosting of open-source Nexus or Artifactory &#8211; it&#8217;s much better and we can finally protect it the way we want. But we still need to pay for hosting, memory usage, bandwidth usage and we now need to install and administer it on top of everything else. And <a href="http://narkisr.com/blog/2010/e71a88687bef0c9e4db04f8191272638">put some extra protection</a>, may be.</li>
<p>&nbsp;</p>
<li> Artifactory Online. The best way to go, if you ask me. Not only it provides a cloud-based 24&#215;7 running Artifactory instance, but it does so with <a href="http://www.jfrog.org/addons.php"><b><u>all add-ons installed</u></b></a>, so you really get it the &#8216;Full Monty&#8217;! It solves our original problem, to host binaries in a public Maven repo, but it doesn&#8217;t stop there, as I&#8217;ll show shortly &#8211; running a private Artifactory instance brings other advantages to your projects.</li>
</ul>
<p>We&#8217;ve settled with last option, meet <a href="http://groovypp.artifactoryonline.com/"><code><strong>http://groovypp.artifactoryonline.com/</strong></code></a>!<br />
The initial setup went very fast as there were very few things to take care of, actually:</p>
<ol>
<li>
<a href="https://secure.artifactoryonline.com/registration/registration.html">Registration</a>
</li>
<p>&nbsp;</p>
<li>
Creating deployment user and <code><b>"settings.xml"</b></code>. The fact that Artifactory provides a way to <a href="http://www.parleys.com/#id=1895&amp;st=5&amp;sl=7">generate new &#8220;settings.xml&#8221;</a> (skip to <code>00:10:40</code>) and <a href="http://www.parleys.com/#st=5&amp;id=1895&amp;sl=7">store an encrypted passwords</a> (<code>00:11:55</code>) comes in very handy:</p>
<p><pre class="brush: xml;">
&lt;servers&gt;
    &lt;server&gt;
        &lt;id&gt;groovypp&lt;/id&gt;
        &lt;username&gt;username&lt;/username&gt;
        &lt;password&gt;\{ABAeqq\}pIcMooZ8G/2Y2drgC99SDw==&lt;/password&gt; &lt;!-- Sample --&gt;
    &lt;/server&gt;
&lt;/servers&gt;
</pre>
</li>
<li>
Instructing Maven about new repositories:</p>
<p><pre class="brush: xml;">
&lt;properties&gt;
    &lt;repo&gt;http://groovypp.artifactoryonline.com/groovypp&lt;/repo&gt;
&lt;/properties&gt;

&lt;distributionmanagement&gt;
    &lt;repository&gt;
        &lt;id&gt;libs-releases-local&lt;/id&gt;
        &lt;url&gt;${repo}/libs-releases-local&lt;/url&gt;
    &lt;/repository&gt;
&lt;/distributionmanagement&gt;

&lt;repositories&gt;
    &lt;repository&gt;
        &lt;id&gt;libs-releases&lt;/id&gt;
        &lt;url&gt;${repo}/libs-releases&lt;/url&gt;
    &lt;/repository&gt;
&lt;/repositories&gt;

&lt;pluginrepositories&gt;
    &lt;pluginrepository&gt;
        &lt;id&gt;plugins-releases&lt;/id&gt;
        &lt;url&gt;${repo}/plugins-releases&lt;/url&gt;
    &lt;/pluginrepository&gt;
&lt;/pluginrepositories&gt;
</pre>
</li>
</ol>
<p>As you see, we&#8217;re using new repo not only for <code>&lt;distributionManagement&gt;</code> but as our only Maven repository.<br />
From now on we only talk to <a href="http://groovypp.artifactoryonline.com/groovypp/libs-releases/"><b><code>groovypp.artifactoryonline.com/groovypp/libs-releases</code></b></a>.<br />
This is <a href="http://wiki.jfrog.org/confluence/display/RTF/Virtual+Repositories">&#8220;virtual repository&#8221;</a>, a &#8220;gateway&#8221; Maven will connect to for retrieving <i>any</i> 3-rd party library. I can now add additional Maven repositories by editing it in Artifactory, there&#8217;s no need to update the POM any more when new external repos are added to the project.</p>
<p>After this quick setup I ran it for the first time. I was expecting somewhat slower performance than the one we have in the office where Artifactory is running on the same network. After all, we&#8217;re talking here about remote repository running somewhere across the ocean:</p>
<p><img src="http://evgenyg.files.wordpress.com/2010/05/visualtraceroute.png?w=630&#038;h=431" alt="" title="VisualTraceRoute" width="630" height="431" class="aligncenter size-full wp-image-1224"></p>
<p>But the download was pretty fast. It depends on the bandwidth, of course but I can&#8217;t say that significantly more distant repository has slowed me down. UI was very response and Maven&#8217;s filling of empty local repo was fast enough as not to notice any significant difference. Good!</p>
<p><a href="http://code.google.com/p/groovypptest/"><b>Groovy++</b></a> project is now happily using Artifactory Online for several months and releases, you&#8217;re always welcome to <a href="http://groovypp.artifactoryonline.com/groovypp/libs-releases-local/org/mbte/groovypp/groovypp-all/0.2.4/groovypp-all-0.2.4.jar">download</a> the latest version manually or <a href="http://code.google.com/p/groovypptest/wiki/Maven">give it a try</a> with Maven.</p>
<p>What else can I say about running a private repo like that?</p>
<p>I think the main beauty of it is being able to &#8220;go public&#8221; in matter of minutes. No setups, no worries &#8211; you have your very own binaries storage, intelligent and secured that can be used for any purpose. That&#8217;s right, Artifactory can serve any binaries, not necessarily Maven&#8217;s artifacts. So one can store there practically anything and then secure or backup it safely. </p>
<p>Makes me think of <a href="http://www.android.com/market/">various</a> App Store <a href="http://www.apple.com/iphone/apps-for-iphone/">services</a> where people publish their Android / iPhone applications and enjoy the ride. That&#8217;s good, I believe &#8220;going public&#8221; should be easy for anyone today &#8211; this way creativity meets no entry barriers!</p>
<p>I only have a single request to Artifactory developers &#8211; an option to create aliases to existing repo. This would allow to reuse the same repository for different projects or purposes: <code>http://projectA.artifactoryonline.com/</code> and <code>http://projectB.artifactoryonline.com/</code> will point to the same Artifactory instance but will be used by different people.</p>
<p>Overall, a very pleasant experience!<br />
Exactly what I was expecting &#8211; can&#8217;t help it but these guys never disappoint <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/evgenyg.wordpress.com/1222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/evgenyg.wordpress.com/1222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/evgenyg.wordpress.com/1222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/evgenyg.wordpress.com/1222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/evgenyg.wordpress.com/1222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/evgenyg.wordpress.com/1222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/evgenyg.wordpress.com/1222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/evgenyg.wordpress.com/1222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/evgenyg.wordpress.com/1222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/evgenyg.wordpress.com/1222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/evgenyg.wordpress.com/1222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/evgenyg.wordpress.com/1222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/evgenyg.wordpress.com/1222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/evgenyg.wordpress.com/1222/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1222&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://evgenyg.wordpress.com/2010/05/05/artifactory-online-groovypp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8769b1ed68930f7adee6b6ed3425f2e?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">evgenyg</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/05/visualtraceroute.png" medium="image">
			<media:title type="html">VisualTraceRoute</media:title>
		</media:content>
	</item>
		<item>
		<title>&#8220;I&#8217;ll send them an e-mail&#8221; &#8211; do you really believe it&#8217;s enough?</title>
		<link>http://evgenyg.wordpress.com/2010/05/01/sending-mail-and-verbal-communication/</link>
		<comments>http://evgenyg.wordpress.com/2010/05/01/sending-mail-and-verbal-communication/#comments</comments>
		<pubDate>Sat, 01 May 2010 18:42:00 +0000</pubDate>
		<dc:creator>Evgeny Goldin</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[talking]]></category>

		<guid isPermaLink="false">http://evgenyg.wordpress.com/?p=1139</guid>
		<description><![CDATA[In my career I used to work as CM engineer many times. It so happens I just love dealing with builds. When you&#8217;re a CM engineer &#8211; you usually get to change many things around: how builds work, where&#8217;s the main POM, how jobs are configured in Hudson and when they&#8217;re scheduled to run. Lots [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1139&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In my career I used to work as CM engineer many times. It so happens I just <i>love</i> dealing with builds.</p>
<p>When you&#8217;re a CM engineer &#8211; you usually get to change many things around: how builds work, where&#8217;s the main POM, how jobs are configured in Hudson and when they&#8217;re scheduled to run.<br />
Lots and lots of things.</p>
<p>What happens when other people need to be informed about those changes?<br />
Or they actually need to do something about it ? </p>
<p>For example, when our <a href="http://evgenyg.wordpress.com/2010/03/08/artifactory-power-pack/">Artifactory</a> instance has moved to a new server &#8211; all developers had to update their <b><code>"settings.xml"</code></b>. Technically, this situation brings no issues &#8211; it doesn&#8217;t take a lot to make the move, the time is only spent for exporting the data and importing it back. But it&#8217;s still very tricky as lots of people are involved now: when old Artifactory instance is shut down &#8211; lots of builds will fail if <b><code>"settings.xml"</code></b> isn&#8217;t updated.</p>
<p>So I&#8217;ll just send the new file by e-mail, right? <b>Wrong.</b><br />
Many people think e-mails is the best way to &#8220;let people know&#8221; but, unfortunately, in many offices it doesn&#8217;t work that way.</p>
<p>Mails can be ignored so easily. </p>
<p>Take a look at average user&#8217;s &#8220;Inbox&#8221; &#8211; how many unread mails will you see there? 10, 50, 300? I usually keep my &#8220;Inbox&#8221; empty &#8211; all incoming mails are filtered into relevant folders so when I get to the office in the morning I see the overall picture right away: 3 mails from my boss, 5 mails from our group, 2 mails from QA, etc. Very few mails are usually left in &#8220;Inbox&#8221; and it allows me to know what&#8217;s &#8220;unread&#8221; right now so I can easily decide who do I ignore or start with first. I try not to have any unread mails by the end of the day so that my counter drops to zero when I go home. </p>
<p>But many other people have an &#8220;Inbox&#8221; full of all last year&#8217;s e-mails and when they see &#8220;30 unread messages&#8221; &#8211; they don&#8217;t really know what&#8217;s there until they go over all of them, one-by-one. And when they do read the message &#8211; they can choose to ignore it or misunderstand the importance of the change.</p>
<p>That&#8217;s life and and we can talk endlessly about how educating people about time or mail management will help .. Fortunately, there&#8217;s a simpler way &#8211; we can talk to them.</p>
<p>In our place, it only takes an hour or two to step into all rooms, announce the change and get the feedbacks. And it works much, much better as people now get to talk back. I let them know there&#8217;s an e-mail sent, I make sure the importance of the change is clear and, of course, I try to listen to what they have to say.</p>
<p>When I was first suggested to go room by room and talk to people I was wondering how come such a waste of time can be of any use. After all, it&#8217;s all written nicely in mail or Wiki &#8211; why bother then? But after doing it once I&#8217;ve felt how much difference does it actually make. How much information and attention I had back from people.</p>
<p>We can schedule a meeting for the whole group, of course! Whatever works. The main idea is simple &#8211; there&#8217;s no replacement to the talking. I came to believe it&#8217;s the combination of published information (that can always be referenced later) and verbal communication that provides the best way to &#8220;let people know&#8221; and ask for their cooperation.</p>
<p>And it also makes everyone involved feel much better along the way!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/evgenyg.wordpress.com/1139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/evgenyg.wordpress.com/1139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/evgenyg.wordpress.com/1139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/evgenyg.wordpress.com/1139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/evgenyg.wordpress.com/1139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/evgenyg.wordpress.com/1139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/evgenyg.wordpress.com/1139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/evgenyg.wordpress.com/1139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/evgenyg.wordpress.com/1139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/evgenyg.wordpress.com/1139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/evgenyg.wordpress.com/1139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/evgenyg.wordpress.com/1139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/evgenyg.wordpress.com/1139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/evgenyg.wordpress.com/1139/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1139&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://evgenyg.wordpress.com/2010/05/01/sending-mail-and-verbal-communication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8769b1ed68930f7adee6b6ed3425f2e?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">evgenyg</media:title>
		</media:content>
	</item>
		<item>
		<title>Uploading files &#8211; multipart HTTP POST and Apache HttpClient</title>
		<link>http://evgenyg.wordpress.com/2010/05/01/uploading-files-multipart-post-apache/</link>
		<comments>http://evgenyg.wordpress.com/2010/05/01/uploading-files-multipart-post-apache/#comments</comments>
		<pubDate>Sat, 01 May 2010 15:18:44 +0000</pubDate>
		<dc:creator>Evgeny Goldin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[file-upload]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[multipart]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://evgenyg.wordpress.com/?p=1054</guid>
		<description><![CDATA[I had to implement a files transferring mechanism where one machine was sending files to another using "multipart/form-data" POST request. It can be done using Apache&#8217;s Commons FileUpload and HttpClient. The receiving part was an easy one: We parse an incoming request with ServletFileUpload and get a list of FileItems in return. Each FileItem is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1054&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I had to implement a files transferring mechanism where one machine was sending files to another using <strong><code>"multipart/form-data"</code></strong> POST request. It can be done using Apache&#8217;s <a href="http://commons.apache.org/fileupload/"><strong><code>Commons FileUpload</code></strong></a> and <a href="http://hc.apache.org/httpcomponents-client/"><strong><code>HttpClient</code></strong></a>.</p>
<p>The receiving part was an easy one:</p>
<p><pre class="brush: xml;">
&lt;dependency&gt;
    &lt;groupid&gt;commons-fileupload&lt;/groupid&gt;
    &lt;artifactid&gt;commons-fileupload&lt;/artifactid&gt;
    &lt;version&gt;1.2.1&lt;/version&gt;
&lt;/dependency&gt;
</pre></p>
<p>We parse an incoming request with <a href="http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/servlet/ServletFileUpload.html"><strong><code>ServletFileUpload</code></strong></a> and get a list of <a href="http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/FileItem.html"><strong><code>FileItem</code></strong></a><strong><code>s</code></strong> in return. Each <strong><code>FileItem</code></strong> is either form&#8217;s input field or a file uploaded:<br />
<pre class="brush: java;">
if ( ServletFileUpload.isMultipartContent( request ))
{
    List&lt;fileitem&gt; fileItems = 
        new ServletFileUpload( new DiskFileItemFactory( 1024 * 1024, DIR )).
        parseRequest( request );

    for ( FileItem item : fileItems )
    {
        String fieldName = item.getFieldName();

        if ( item.isFormField()) { item.getString()      } // Form's input field
        else                     { item.getInputStream() } // File uploaded
    }
}
</pre></p>
<p>In our case, we use <a href="http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/disk/DiskFileItemFactory.html"><strong><code>DiskFileItemFactory</code></strong></a> to store files larger than 1Mb in a temporary <code>DIR</code>. After reading file&#8217;s <strong><code>InputStream</code></strong> and storing the data in a proper storage &#8211; we need to delete the temporary copy: <a href="http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/FileItem.html#delete()"><strong><code>item.delete()</code></strong></a>.</p>
<p>It&#8217;s the sending part that came out to be a bit trickier. Initially, I was using a simple HTML form:<br />
<pre class="brush: xml;">
&lt;form action=&quot;http://localhost&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&gt;
    &lt;input type=&quot;file&quot; name=&quot;file&quot;&gt;
    &lt;input type=&quot;text&quot; name=&quot;paramName&quot;&gt;
    &lt;input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Upload File&quot;&gt;
&lt;/form&gt;
</pre></p>
<p>But then I&#8217;ve switched back to Java and assumed <a href="http://hc.apache.org/httpcomponents-client/"><strong><code>HttpClient</code></strong></a> will do the job. </p>
<p><pre class="brush: xml;">
&lt;dependency&gt;
    &lt;groupid&gt;org.apache.httpcomponents&lt;/groupid&gt;
    &lt;artifactid&gt;httpclient&lt;/artifactid&gt;
    &lt;version&gt;4.0.1&lt;/version&gt;
&lt;/dependency&gt;
</pre></p>
<p>Eventually, it did but it took me some time to figure out <em>how</em>. The problem with <code>HttpClient</code> is that it provides a nice <a href="http://hc.apache.org/httpcomponents-client/tutorial/html/">tutorial</a> and various usage <a href="http://hc.apache.org/httpcomponents-client/examples.html">examples</a> but none of them actually mentions a word about uploading files! </p>
<p>I&#8217;ve figured out I need to <a href="http://hc.apache.org/httpcomponents-client/httpclient/apidocs/org/apache/http/client/methods/HttpEntityEnclosingRequestBase.html#setEntity(org.apache.http.HttpEntity)">set</a> an instance of <a href="http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/HttpEntity.html"><strong><code>HttpEntity</code></strong></a> to request but it seemed like it&#8217;s going to be either a <a href="http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/entity/StringEntity.html"><strong><code>StringEntity</code></strong></a> or <a href="http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/entity/FileEntity.html"><strong><code>FileEntity</code></strong></a> but not both. How come ?! Why is it so hard to send a usual POST request with String and file parameters?</p>
<p>Ok, it&#8217;s Google time.</p>
<p><a href="http://www.theserverside.com/news/1365153/HttpClient-and-FileUpload">Some</a> <a href="http://www.java-tips.org/other-api-tips/httpclient/how-to-use-multipart-post-method-for-uploading.html">examples</a> and <a href="http://hc.apache.org/httpclient-3.x/methods/multipartpost.html">documentation</a> were referring to an outdated version when <code>HttpClient</code> was part of Apache Commons and, therefore, were of no use for me &#8211; the API has changed dramatically. Until I&#8217;ve found <a href="http://radomirml.com/2009/02/13/file-upload-with-httpcomponents-successor-of-commons-httpclient"><strong>this example</strong></a> that finally saved my day. Radomir, thank you!</p>
<p>The solution is to use an additional Apache component &#8211; <a href="http://hc.apache.org/httpcomponents-client/httpmime/">HttpMime</a>:<br />
<pre class="brush: xml;">
&lt;dependency&gt;
    &lt;groupid&gt;org.apache.httpcomponents&lt;/groupid&gt;
    &lt;artifactid&gt;httpclient&lt;/artifactid&gt;
    &lt;version&gt;4.0.1&lt;/version&gt;
&lt;/dependency&gt;

&lt;dependency&gt;
    &lt;groupid&gt;org.apache.httpcomponents&lt;/groupid&gt;
    &lt;artifactid&gt;httpmime&lt;/artifactid&gt;
    &lt;version&gt;4.0.1&lt;/version&gt;
&lt;/dependency&gt;
</pre></p>
<p>and then we finally get to use a magical <a href="http://hc.apache.org/httpcomponents-client/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html"><strong><code>MultipartEntity</code></strong></a>:<br />
<pre class="brush: java;">
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);

HttpPost        post   = new HttpPost( url );
MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );

// For File parameters
entity.addPart( paramName, new FileBody((( File ) paramValue ), &quot;application/zip&quot; ));

// For usual String parameters
entity.addPart( paramName, new StringBody( paramValue.toString(), &quot;text/plain&quot;, 
                                           Charset.forName( &quot;UTF-8&quot; )));

post.setEntity( entity );

// Here we go!
String response = EntityUtils.toString( client.execute( post ).getEntity(), &quot;UTF-8&quot; );

client.getConnectionManager().shutdown();
</pre></p>
<p>Note the use of <a href="http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/util/EntityUtils.html"><strong><code>EntityUtils</code></strong></a> for reading the response.</p>
<p>That&#8217;s it.</p>
<p>I only wish library authors were providing better support and examples for more common cases like files uploading in our case. I mean, come on, when people get to use <code>HttpClient</code> they either want to send a usual request or upload a file, same thing they do with browser. Am I wrong here?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/evgenyg.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/evgenyg.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/evgenyg.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/evgenyg.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/evgenyg.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/evgenyg.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/evgenyg.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/evgenyg.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/evgenyg.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/evgenyg.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/evgenyg.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/evgenyg.wordpress.com/1054/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/evgenyg.wordpress.com/1054/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/evgenyg.wordpress.com/1054/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1054&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://evgenyg.wordpress.com/2010/05/01/uploading-files-multipart-post-apache/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8769b1ed68930f7adee6b6ed3425f2e?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">evgenyg</media:title>
		</media:content>
	</item>
		<item>
		<title>Groovy++ goes APL 2.0!</title>
		<link>http://evgenyg.wordpress.com/2010/04/19/groovypp-goes-open-source/</link>
		<comments>http://evgenyg.wordpress.com/2010/04/19/groovypp-goes-open-source/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 09:28:32 +0000</pubDate>
		<dc:creator>Evgeny Goldin</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[groovypp]]></category>

		<guid isPermaLink="false">http://evgenyg.wordpress.com/?p=1033</guid>
		<description><![CDATA[Groovy++ goes APL 2.0! This is obviously great news to Groovy/Groovy++ community.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1033&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://groups.google.com/group/groovyplusplus/browse_thread/thread/c839e7cce4c89bf7"><strong>Groovy++ goes APL 2.0</strong></a>!</p>
<p>This is obviously great news to Groovy/Groovy++ community.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/evgenyg.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/evgenyg.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/evgenyg.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/evgenyg.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/evgenyg.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/evgenyg.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/evgenyg.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/evgenyg.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/evgenyg.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/evgenyg.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/evgenyg.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/evgenyg.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/evgenyg.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/evgenyg.wordpress.com/1033/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=1033&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://evgenyg.wordpress.com/2010/04/19/groovypp-goes-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8769b1ed68930f7adee6b6ed3425f2e?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">evgenyg</media:title>
		</media:content>
	</item>
		<item>
		<title>10 Online Tools for Superb Productivity</title>
		<link>http://evgenyg.wordpress.com/2010/04/17/10-online-productivity-tools/</link>
		<comments>http://evgenyg.wordpress.com/2010/04/17/10-online-productivity-tools/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 03:48:11 +0000</pubDate>
		<dc:creator>Evgeny Goldin</dc:creator>
				<category><![CDATA[GTD]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[hootsuite]]></category>
		<category><![CDATA[mindomo]]></category>
		<category><![CDATA[productive]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[zoho]]></category>

		<guid isPermaLink="false">http://evgenyg.wordpress.com/?p=871</guid>
		<description><![CDATA[I love being productive. I love it to the point where I actually hate being slowed down by an application or a resource. I don&#8217;t mind waiting but only for a good reason. Anything that makes me stare at the screen doing absolutely nothing will usually drive me into searching for a faster replacement right [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=871&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I love being productive. </p>
<p>I love it to the point where I actually hate being slowed down by an application or a resource. I don&#8217;t mind waiting but only for a good reason. Anything that makes me stare at the screen doing absolutely nothing will usually drive me into searching for a faster replacement right away.</p>
<p>&#8220;Being productive&#8221; starts from &#8220;working fast&#8221; and &#8220;using the best tools&#8221; for me. So my favorite on-line tools is what I would like to write about today. Had I written this review several years ago &#8211; most definitely, I would have talked about &#8220;10 Windows Application for Superb Productivity&#8221;. But Web is where I/we spend most of the time today so it makes more sense to talk about Web applications rather than various Windows tweaks. </p>
<p><strong>1. <a href="http://www.google.com/chrome">Google Chrome</a></strong></p>
<p><a href="http://google-chrome-browser.com/technically-speaking-what-makes-google-chrome-fast-part-ii"><img border="0" src="http://evgenyg.files.wordpress.com/2010/04/google-chrome.png?w=630&#038;h=399" alt="" title="What makes Google Chrome fast?" width="630" height="399" class="aligncenter size-full wp-image-879"></a></p>
<p>Obviously, living on the Web starts with a browser. Like many others, I was a devoted Firefox user <a href="http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox">for the last 5 years</a>. After all,  it was the only choice that actually made sense on Windows. When Chrome has initially come out &#8211; I wasn&#8217;t impressed much but lot&#8217;s of things have changed since then.</p>
<p>So .. why Chrome today? For one reason, mostly &#8211; <strong><a href="http://blog.chromium.org/2009/12/technically-speaking-what-makes-google.html">it&#8217;s</a> <a href="http://google-chrome-browser.com/technically-speaking-what-makes-google-chrome-fast-part-ii">fast</a></strong> and I&#8217;ve mentioned already how working fast is important to me. Chrome&#8217;s start-up time is light-years ahead of Firefox and no restart is required when extensions are (un)installed. Those two factors add up to a tremendous speed-ups when working on-line, as I wait much less now.</p>
<p><strong>2. <a href="http://delicious.com/">delicious</a></strong></p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/delicious2.png?w=630&#038;h=415" alt="" title="delicious" width="630" height="415" class="aligncenter size-full wp-image-921"></p>
<p>Keeping bookmarks online is an old idea and being able to tag them isn&#8217;t novel as well. Today I use delicious as my main storage of everything I ever read and find it useful for later reference. <a href="http://delicious.com/evgenyg/car">Cars</a>, <a href="http://delicious.com/evgenyg/tablet">tablet PCs</a>, <a href="http://delicious.com/evgenyg/video">video sessions</a> and <a href="http://delicious.com/evgenyg/travel">travelling</a> &#8211; it&#8217;s all there, anytime, anywhere. </p>
<p>Using browser&#8217;s <a href="http://evgenyg.wordpress.com/2010/01/09/keyworded-searches/">keyworded searches</a> I access a tag by typing <code>"d tag"</code> (<code>"d tag1 tag2"</code> for <a href="http://delicious.com/evgenyg/artifactory%20video">combination</a>) and search delicious with <code>"ds search"</code> &#8211; it works amazingly fast allowing me to pull almost anything from my last year of browsing in a matter of seconds. This <code>"d(s) something"</code> thing is what I believe I type the most in browser&#8217;s address bar today.</p>
<p>With it&#8217;s <a href="https://chrome.google.com/extensions/detail/lnejbeiilmbliffhdepeobjemekgdnok">Chrome extension</a> being supported in Chrome Dev channel (finally!) &#8211; I now enjoy it even more. But I still keep <a href="http://delicious.com/help/bookmarklets">bookmarklet</a> around, it&#8217;s in the left side of my bookmarks bar so I use either extension&#8217;s button or a bookmarklet to add a link, whichever my mouse is closer to. </p>
<p><strong>3. <a href="http://writer.zoho.com/">Zoho Writer</a></strong></p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/zoho-writer.png?w=630&#038;h=415" alt="" title="Zoho Writer" width="630" height="415" class="aligncenter size-full wp-image-894"></p>
<p>Working online means keeping notes and documents. Zoho Writer is my #1 application of choice now &#8211; it&#8217;s fast and it looks really great. Ironically, I have heard of it when Microsoft&#8217;s &#8220;<a href="http://fakeoffice.org/">fake Office</a>&#8221; has made its way into a blogosphere. So, yes, this &#8220;fake Office&#8221; works pretty well for me now &#8211; all my private summaries, notes and drafts are there.</p>
<p>I only wish:</p>
<ul>
<li>I could export all documents at once, as a backup copy.<br />&nbsp;<br />&#160;&#160;&#160;Whatever they say &#8211; I never trust &#8220;the cloud&#8221; completely, making a backup copies even<br />&#160;&#160;&#160;of my <a href="http://www.gmail-backup.com/">Gmail account</a>.<br />&nbsp;</li>
<li>&#8220;Google Sign In&#8221; would sign me in <em>transparently</em>.<br />&nbsp;<br />&#160;&#160;&#160;After opening &#8220;<strong><a href="http://writer.zoho.com/">writer.zoho.com</a></strong>&#8221; I&#8217;m forced to click a <strong>&#8220;G&#8221;</strong> button to enter. This extra &#8220;G&#8221;<br />&nbsp;&nbsp;&nbsp;click may sound not as a big deal to many but when one gets used to &#8220;Remember me&#8221;<br />&nbsp;&nbsp;&nbsp;allowing to access resources and documents with a single click &#8211; this extra delay is quite<br />&#160;&#160;&#160;painful, actually.<br />&nbsp;<br />&#160;&#160;&#160;It really defeats the way I believe the Web should work &#8211; one single click to get me &#8220;in&#8221;.
</li>
</ul>
<p><strong>4. <a href="http://notebook.zoho.com/">Zoho Notebook</a></strong></p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/zoho-notebook.png?w=630&#038;h=418" alt="" title="Zoho Notebook" width="630" height="418" class="aligncenter size-full wp-image-909"></p>
<p>It&#8217;s not hard to get lost in all my Zoho documents and sadly, I still don&#8217;t get its way of tagging. But I now use Zoho Notebook as a way to organize related docs as &#8220;books&#8221;, grouping them together. I can edit them in Writer or Notebook, it doesn&#8217;t matter. But working in Notebook is significantly slower, though. </p>
<p>Of course, it&#8217;s intended for <a href="http://office.microsoft.com/en-us/onenote/default.aspx">OneNote</a>-like documents but I mostly use it as my &#8220;tagging&#8221; mechanism. A real OneNote is something I use a lot in the office. </p>
<p><strong>5. <a href="http://mindomo.com/">Mindomo</a></strong></p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/mindomo.png?w=630&#038;h=418" alt="" title="Mindomo" width="630" height="418" class="aligncenter size-full wp-image-912"></p>
<p>After getting used to on-line mode of working it doesn&#8217;t come natural to install any desktop <a href="http://en.wikipedia.org/wiki/Mind_map">mind-mapping</a> application, like <a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page">FreeMind</a>. Searching for online solution brought me to Mindomo and I have to tell you .. it&#8217;s <em>beautiful</em>. </p>
<p>Surprisingly, it&#8217;s way, way better than <a href="http://www.mindmeister.com/">mindmeister</a> that I&#8217;ve heard of so much recently. </p>
<p>Too bad it suffers from the same &#8220;Sign in with Google&#8221; extra click, as Zoho does. How come there&#8217;s no &#8220;Remember me&#8221; option for those case?!</p>
<p><strong>6. <a href="https://www.dropbox.com">Dropbox</a></strong></p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/dropbox.png?w=630&#038;h=418" alt="" title="Dropbox" width="630" height="418" class="aligncenter size-full wp-image-923"></p>
<p>Keeping files online is pretty standard today, but lot&#8217;s of applications have failed on delivering a good upload process, relying on browser&#8217;s capability to upload files. Trying to upload a bigger file usually resulted in broken connections and lot&#8217;s of frustration. Few resources cared to provide desktop &#8220;uploader&#8221; dealing with slow and unreliable networks. </p>
<p><a href="http://www.yousendit.com"><strong>YouSendIt</strong></a> has <a href="http://www.yousendit.com/cms/standalone-app">one</a> and it&#8217;s excellent, I was using it a lot for a number of years. But free YouSendIt version doesn&#8217;t keep files forever while Dropbox does. Also, Dropbox has a native service installed, monitoring and syncing a certain folder: all I need to do in order to upload a file to the cloud and sync it with all my machines is to copy it to <code>"e:/Data/Dropbox/My Dropbox"</code>. That&#8217;s it! After copying a file at home I find it available on my office machine when I get there.</p>
<p>Can it be any simpler than that?!</p>
<p>I even use Dropbox for transferring files from <a href="http://evgenyg.wordpress.com/2010/04/11/moving-virtualbox-disk/">virtual</a> to hosting machines until I get to making <a href="http://www.virtualbox.org/wiki/VirtualBox">&#8220;shared folder&#8221;</a> work.</p>
<p><strong>7. <a href="http://hootsuite.com">HootSuite</a></strong></p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/hootsuite.png?w=630&#038;h=441" alt="" title="HootSuite" width="630" height="441" class="aligncenter size-full wp-image-930"></p>
<p>Twitter is my <a href="http://www.dzone.com/links/so_why_twitter_how_does_it_actually_help_me_today_.html">main source</a> of new information. Keeping an eye on what&#8217;s happening is a real &#8220;must&#8221; today. But being able to do so in <a href="http://evgenyg.files.wordpress.com/2010/04/hootsuite2.png">4 columns</a> is an awesome thing!</p>
<p><strong>8. Chrome &#8211; <a href="http://www.chromeextensions.org/social-communications/sendlink/">SendLink</a></strong></p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/sendlink.png?w=630&#038;h=441" alt="" title="SendLink" width="630" height="441" class="aligncenter size-full wp-image-934"></p>
<p>I can send a <a href="http://evgenyg.wordpress.com/2009/12/25/gmail-the-link/">quick mail</a> containing current link with two clicks only (you do remember I always count clicks, right?), without having to actually type or copy anything. That&#8217;s fast.</p>
<p><strong>9. Chrome &#8211; <a href="http://goo.gl/PiyX">goo.gl URL Shortener</a></strong></p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/googl.png?w=630&#038;h=440" alt="" title="goo.gl URL Shortener" width="630" height="440" class="aligncenter size-full wp-image-936"></p>
<p>Another &#8220;one-click&#8221; favorite: URL shortened is copied to the clipboard when I hit extension&#8217;s button. Dropbox can be improved when doing the same &#8211; it&#8217;s a two-step process there:</p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/dropbox-1.png?w=630&#038;h=351" alt="" title="" width="630" height="351" class="aligncenter size-full wp-image-1000"><br />
<img src="http://evgenyg.files.wordpress.com/2010/04/dropbox-2.png?w=630&#038;h=277" alt="" title="" width="630" height="277" class="aligncenter size-full wp-image-1001"></p>
<p>Immediate <a href="https://chrome.google.com/extensions/img/iblijlcdoidgdpfknkckljiocdbnlagk/1267978487.31/screenshot_big/14001">social sharing</a> and <a href="https://chrome.google.com/extensions/img/iblijlcdoidgdpfknkckljiocdbnlagk/1267978487.31/screenshot_big/15001">keyboard shortcuts</a> are available.</p>
<p>Less is more and it&#8217;s nice to see how Googlers count clicks as well. I guess it&#8217;s bad we can&#8217;t go down any further from one click. Zero clicks! How about that ? <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>10. Chrome &#8211; <a href="https://chrome.google.com/extensions/detail/hmjgiljbchaijjckmejcedlebigkolpm">Tweetings</a></strong></p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/tweetings.png?w=630&#038;h=595" alt="" title="Tweetings" width="630" height="595" class="aligncenter size-full wp-image-1003"></p>
<p>While HootSuite is great for reading Twits &#8211; I use Tweetings for posting them. It&#8217;s quick and it remembers the text entered even if I switch the tab to grab a shortened URL. It changes color to notify me on Twitter &#8220;mentions&#8221; and &#8220;replies&#8221;, what a great little handy cute tool.</p>
<p>Update:<br />
<strong>11. Online dictionaries: <a href="http://lingvo.yandex.ru/en">Yandex</a> and <a href="http://dictionary.reference.com/">Dictionary</a></strong></p>
<p>It would be not fair to leave out on-line translators. As previously, keyworded searches are my friends here.</p>
<p><code>"tr anything"</code>:</p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/yandex.png?w=630&#038;h=433" alt="" title="Yandex" width="630" height="433" class="aligncenter size-full wp-image-1005"></p>
<p><code>"dic make"</code>:</p>
<p><img src="http://evgenyg.files.wordpress.com/2010/04/dictionary.png?w=630&#038;h=433" alt="" title="Dictionary" width="630" height="433" class="aligncenter size-full wp-image-1006"></p>
<p>That&#8217;s it!<br />
Those were my 10 most favorite online tools making &#8220;living on the Web&#8221; very enjoyable and productive.</p>
<p>What are yours? I would love to hear.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/evgenyg.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/evgenyg.wordpress.com/871/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/evgenyg.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/evgenyg.wordpress.com/871/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/evgenyg.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/evgenyg.wordpress.com/871/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/evgenyg.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/evgenyg.wordpress.com/871/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/evgenyg.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/evgenyg.wordpress.com/871/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/evgenyg.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/evgenyg.wordpress.com/871/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/evgenyg.wordpress.com/871/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/evgenyg.wordpress.com/871/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=871&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://evgenyg.wordpress.com/2010/04/17/10-online-productivity-tools/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8769b1ed68930f7adee6b6ed3425f2e?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">evgenyg</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/google-chrome.png" medium="image">
			<media:title type="html">What makes Google Chrome fast?</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/delicious2.png" medium="image">
			<media:title type="html">delicious</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/zoho-writer.png" medium="image">
			<media:title type="html">Zoho Writer</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/zoho-notebook.png" medium="image">
			<media:title type="html">Zoho Notebook</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/mindomo.png" medium="image">
			<media:title type="html">Mindomo</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/dropbox.png" medium="image">
			<media:title type="html">Dropbox</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/hootsuite.png" medium="image">
			<media:title type="html">HootSuite</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/sendlink.png" medium="image">
			<media:title type="html">SendLink</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/googl.png" medium="image">
			<media:title type="html">goo.gl URL Shortener</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/dropbox-1.png" medium="image" />

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/dropbox-2.png" medium="image" />

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/tweetings.png" medium="image">
			<media:title type="html">Tweetings</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/yandex.png" medium="image">
			<media:title type="html">Yandex</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/dictionary.png" medium="image">
			<media:title type="html">Dictionary</media:title>
		</media:content>
	</item>
		<item>
		<title>Moving VirtualBox Disk</title>
		<link>http://evgenyg.wordpress.com/2010/04/11/moving-virtualbox-disk/</link>
		<comments>http://evgenyg.wordpress.com/2010/04/11/moving-virtualbox-disk/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 18:58:46 +0000</pubDate>
		<dc:creator>Evgeny Goldin</dc:creator>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://evgenyg.wordpress.com/?p=856</guid>
		<description><![CDATA[For some reason I couldn&#8217;t find a way to move VirtualBox disk to another location: The solution was to update "c:/Users/MyUser/.VirtualBox/VirtualBox.xml":<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=856&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For some reason I couldn&#8217;t find a way to move VirtualBox disk to another location:</p>
<p><a href="http://evgenyg.files.wordpress.com/2010/04/virtualbox1.png"><img src="http://evgenyg.files.wordpress.com/2010/04/virtualbox1.png?w=636&#038;h=498" alt="" title="VirtualBox" width="636" height="498" class="aligncenter size-full wp-image-862"></a></p>
<p>The solution was to update <code><strong>"c:/Users/MyUser/.VirtualBox/VirtualBox.xml"</strong></code>:</p>
<p><a href="http://evgenyg.files.wordpress.com/2010/04/virtualbox-xml.png"><img src="http://evgenyg.files.wordpress.com/2010/04/virtualbox-xml1.png?w=630&#038;h=246" alt="" title="VirtualBox.xml" width="630" height="246" class="aligncenter size-full wp-image-867"></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/evgenyg.wordpress.com/856/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/evgenyg.wordpress.com/856/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/evgenyg.wordpress.com/856/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/evgenyg.wordpress.com/856/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/evgenyg.wordpress.com/856/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/evgenyg.wordpress.com/856/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/evgenyg.wordpress.com/856/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/evgenyg.wordpress.com/856/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/evgenyg.wordpress.com/856/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/evgenyg.wordpress.com/856/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/evgenyg.wordpress.com/856/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/evgenyg.wordpress.com/856/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/evgenyg.wordpress.com/856/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/evgenyg.wordpress.com/856/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=856&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://evgenyg.wordpress.com/2010/04/11/moving-virtualbox-disk/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8769b1ed68930f7adee6b6ed3425f2e?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">evgenyg</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/virtualbox1.png" medium="image">
			<media:title type="html">VirtualBox</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/04/virtualbox-xml1.png" medium="image">
			<media:title type="html">VirtualBox.xml</media:title>
		</media:content>
	</item>
		<item>
		<title>Git Internals &#8211; a diagram</title>
		<link>http://evgenyg.wordpress.com/2010/03/31/git-internals/</link>
		<comments>http://evgenyg.wordpress.com/2010/03/31/git-internals/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 22:00:56 +0000</pubDate>
		<dc:creator>Evgeny Goldin</dc:creator>
				<category><![CDATA[Git]]></category>

		<guid isPermaLink="false">http://evgenyg.wordpress.com/?p=840</guid>
		<description><![CDATA[A beautiful diagram from Git Internals: Highly recommended! Both PDF and screencast are really good.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=840&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A beautiful diagram from <a href="http://peepcode.com/products/git-internals-pdf"><strong>Git Internals</strong></a>:</p>
<p><a href="http://peepcode.com/products/git-internals-pdf"><img border="0" src="http://evgenyg.files.wordpress.com/2010/03/git.png?w=627&#038;h=637" alt="" title="Git Internals" width="627" height="637" class="aligncenter size-full wp-image-839"></a></p>
<p>Highly recommended! Both <a href="http://peepcode.com/products/git-internals-pdf">PDF</a> and <a href="http://peepcode.com/products/git">screencast</a> are really good.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/evgenyg.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/evgenyg.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/evgenyg.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/evgenyg.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/evgenyg.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/evgenyg.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/evgenyg.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/evgenyg.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/evgenyg.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/evgenyg.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/evgenyg.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/evgenyg.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/evgenyg.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/evgenyg.wordpress.com/840/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=840&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://evgenyg.wordpress.com/2010/03/31/git-internals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8769b1ed68930f7adee6b6ed3425f2e?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">evgenyg</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/03/git.png" medium="image">
			<media:title type="html">Git Internals</media:title>
		</media:content>
	</item>
		<item>
		<title>Hudson: Git and Maven plugins</title>
		<link>http://evgenyg.wordpress.com/2010/03/27/hudson-git-maven/</link>
		<comments>http://evgenyg.wordpress.com/2010/03/27/hudson-git-maven/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 16:46:32 +0000</pubDate>
		<dc:creator>Evgeny Goldin</dc:creator>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://evgenyg.wordpress.com/?p=802</guid>
		<description><![CDATA[Suddenly, something went wrong .. A usual Hudson job pulling sources from Git repository started to fail with NPE: What ?! But it worked half an hour ago. Hmm, that&#8217;s interesting &#8230; After re-installing Hudson from scratch, installing it locally on my machine, going back and forward with versions, creating simple jobs doing absolutely nothing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=802&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Suddenly, something went wrong .. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
A usual Hudson job pulling sources from Git repository started to fail with NPE:</p>
<p><pre class="brush: java;">
Parsing POMs
[nexttags-CI] $ c:\Winny\java\jdk1.6.0_18\/bin/java -Xmx1024m -XX:MaxPermSize=512m -cp c:\dev\hudson-slave\maven-agent.jar;C:\Winny\java\apache-maven-2.2.1\boot\classworlds-1.1.jar hudson.maven.agent.Main C:\Winny\java\apache-maven-2.2.1 C:\dev\hudson-slave\slave.jar c:\dev\hudson-slave\maven-interceptor.jar 3841 c:\dev\hudson-slave\maven2.1-interceptor.jar
&lt;===[HUDSON REMOTING CAPACITY]===&gt;channel started
channel stopped
ERROR: Processing failed due to a bug in the code. Please report this to users@hudson.dev.java.net
java.lang.NullPointerException
	at java.util.Hashtable.put(Hashtable.java:394)
	at java.util.Hashtable.putAll(Hashtable.java:466)
	at hudson.maven.MavenBuilder.call(MavenBuilder.java:156)
	at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:688)
	at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:632)
	at hudson.remoting.UserRequest.perform(UserRequest.java:114)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:270)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
</pre></p>
<p>What ?! But it worked half an hour ago. Hmm, that&#8217;s interesting &#8230;</p>
<p>After re-installing Hudson from scratch, installing it locally on my machine, going back and forward with versions, creating simple jobs doing absolutely nothing except pulling sources from various Git projects and running <code>"mvn clean"</code> .. I still couldn&#8217;t git rid of this error.</p>
<p>Well, it was clearly time for some debugging and .. <a href="http://dl.dropbox.com/u/4820835/hudson-maven-git-NPE/debugger.png">here we go</a>!</p>
<p>For some reason Git plugin started to pass <code><strong>null</strong></code> value for <code><strong>GIT_BRANCH</strong></code> environment variable.<br />
This caused Maven plugin to fail in <a href="http://fisheye.hudson-ci.org/browse/Hudson/tags/hudson-1_352/maven-plugin/src/main/java/hudson/maven/MavenBuilder.java?r=28799#l156"><strong><code>System.getProperties().putAll(systemProps)</code></strong></a> call.</p>
<p>The solution was to use <strong><code>"master"</code></strong> as default Git branch instead of <strong><code>"**"</code></strong> or empty String:<br />
<img src="http://evgenyg.files.wordpress.com/2010/03/hudson-config2.png?w=570&#038;h=326" alt="" title="Hudson Config" width="570" height="326" class="aligncenter size-full wp-image-826"></p>
<p>My versions were: Hudson <strong><code>v1.352</code></strong>, Git plugin <strong><code>v0.8.1</code></strong></p>
<p>P.S<br />
Some Hudson <a href="http://delicious.com/evgenyg/hudson">links</a>:</p>
<ul>
<li><a href="https://hudson.dev.java.net/svn/hudson/">SVN repo</a> (user: &#8220;guest&#8221;, empty password)</li>
<li>Various <a href="http://wiki.hudson-ci.org/display/HUDSON/Source%20code">ways</a> to get and view Hudson sources</li>
<li>Hudson <a href="http://hudson-ci.org/download/">downloads</a> &#8211; application itself and plugins, all versions</li>
<li>Hudson Git <a href="http://wiki.hudson-ci.org/display/HUDSON/Git+Plugin">plugin</a></li>
<li><a href="http://www.wakaleo.com/books/continuous-integration-with-hudson-the-book">&#8220;Continuous Integration with Hudson&#8221;</a> &#8211; book in progress</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/evgenyg.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/evgenyg.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/evgenyg.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/evgenyg.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/evgenyg.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/evgenyg.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/evgenyg.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/evgenyg.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/evgenyg.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/evgenyg.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/evgenyg.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/evgenyg.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/evgenyg.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/evgenyg.wordpress.com/802/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=evgenyg.wordpress.com&amp;blog=8347551&amp;post=802&amp;subd=evgenyg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://evgenyg.wordpress.com/2010/03/27/hudson-git-maven/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8769b1ed68930f7adee6b6ed3425f2e?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">evgenyg</media:title>
		</media:content>

		<media:content url="http://evgenyg.files.wordpress.com/2010/03/hudson-config2.png" medium="image">
			<media:title type="html">Hudson Config</media:title>
		</media:content>
	</item>
	</channel>
</rss>
