<?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>OLLI WANG PRODUCTIONS</title>
	<atom:link href="http://olliwang.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://olliwang.com</link>
	<description>A blog about my life and my work</description>
	<lastBuildDate>Wed, 25 Jan 2012 12:13:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='olliwang.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/2acc8cc35283b77aed03ed61c3df2340?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>OLLI WANG PRODUCTIONS</title>
		<link>http://olliwang.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://olliwang.com/osd.xml" title="OLLI WANG PRODUCTIONS" />
	<atom:link rel='hub' href='http://olliwang.com/?pushpress=hub'/>
		<item>
		<title>Golden Shower Tree</title>
		<link>http://olliwang.com/2011/06/20/golden-shower-tree/</link>
		<comments>http://olliwang.com/2011/06/20/golden-shower-tree/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 13:04:11 +0000</pubDate>
		<dc:creator>Olli Wang</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Cassia fistula]]></category>
		<category><![CDATA[golden rain]]></category>
		<category><![CDATA[golden shower tree]]></category>
		<category><![CDATA[nature]]></category>
		<category><![CDATA[scene]]></category>
		<category><![CDATA[summer]]></category>
		<category><![CDATA[Taiwan]]></category>
		<category><![CDATA[trees]]></category>
		<category><![CDATA[yellow]]></category>

		<guid isPermaLink="false">http://olliwang.wordpress.com/2011/06/20/golden-shower-tree/</guid>
		<description><![CDATA[The golden rain in this summer. Filed under: Life, Photography<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=478&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The golden rain in this summer.</p>
<p><a href="http://www.flickr.com/photos/olliwang/5851671585/" title="阿勃勒 by olliwang, on Flickr"><img src="http://farm3.static.flickr.com/2762/5851671585_cb4000f103.jpg" width="332" height="500" alt="阿勃勒"></a></p>
<p><a href="http://www.flickr.com/photos/olliwang/5851670143/" title="阿勃勒 by olliwang, on Flickr"><img src="http://farm6.static.flickr.com/5304/5851670143_fe6a774dbd.jpg" width="500" height="332" alt="阿勃勒"></a></p>
<p><a href="http://www.flickr.com/photos/olliwang/5835748166/" title="DSC02581 by olliwang, on Flickr"><img src="http://farm4.static.flickr.com/3222/5835748166_c35e4e4662.jpg" width="500" height="332" alt="DSC02581"></a></p>
<p><a href="http://www.flickr.com/photos/olliwang/5835749504/" title="DSC02587 by olliwang, on Flickr"><img src="http://farm3.static.flickr.com/2757/5835749504_6702bf6b12.jpg" width="500" height="332" alt="DSC02587"></a></p>
<p><a href="http://www.flickr.com/photos/olliwang/5835197383/" title="DSC02588 by olliwang, on Flickr"><img src="http://farm4.static.flickr.com/3074/5835197383_448e258eb2.jpg" width="500" height="332" alt="DSC02588"></a></p>
<p><a href="http://www.flickr.com/photos/olliwang/5835194095/" title="DSC02576 by olliwang, on Flickr"><img src="http://farm6.static.flickr.com/5075/5835194095_77fbb472f5.jpg" width="332" height="500" alt="DSC02576"></a></p>
<p><a href="http://www.flickr.com/photos/olliwang/5835751460/" title="DSC02594 by olliwang, on Flickr"><img src="http://farm4.static.flickr.com/3629/5835751460_070d5e79fe.jpg" width="500" height="332" alt="DSC02594"></a></p>
<br />Filed under: <a href='http://olliwang.com/category/life/'>Life</a>, <a href='http://olliwang.com/category/photography/'>Photography</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olliwang.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olliwang.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/olliwang.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/olliwang.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/olliwang.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/olliwang.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/olliwang.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/olliwang.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/olliwang.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/olliwang.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/olliwang.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/olliwang.wordpress.com/478/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/olliwang.wordpress.com/478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/olliwang.wordpress.com/478/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=478&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olliwang.com/2011/06/20/golden-shower-tree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a8be03049f6c5fe81fd2e33a697c43ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Olli Wang</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2762/5851671585_cb4000f103.jpg" medium="image">
			<media:title type="html">阿勃勒</media:title>
		</media:content>

		<media:content url="http://farm6.static.flickr.com/5304/5851670143_fe6a774dbd.jpg" medium="image">
			<media:title type="html">阿勃勒</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3222/5835748166_c35e4e4662.jpg" medium="image">
			<media:title type="html">DSC02581</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2757/5835749504_6702bf6b12.jpg" medium="image">
			<media:title type="html">DSC02587</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3074/5835197383_448e258eb2.jpg" medium="image">
			<media:title type="html">DSC02588</media:title>
		</media:content>

		<media:content url="http://farm6.static.flickr.com/5075/5835194095_77fbb472f5.jpg" medium="image">
			<media:title type="html">DSC02576</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3629/5835751460_070d5e79fe.jpg" medium="image">
			<media:title type="html">DSC02594</media:title>
		</media:content>
	</item>
		<item>
		<title>My photo got published in magazines</title>
		<link>http://olliwang.com/2010/06/08/my-photo-got-published-in-magazines/</link>
		<comments>http://olliwang.com/2010/06/08/my-photo-got-published-in-magazines/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 06:39:29 +0000</pubDate>
		<dc:creator>Olli Wang</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://olliwang.com/?p=457</guid>
		<description><![CDATA[It&#8217;s so excited that iPhone 4 was announced this morning. BUT, it&#8217;s even more excited that I just received some magazines from Singapore with my photo published. It&#8217;s really a big shot for me. It&#8217;s so unrealistic and so unbelievable. Seriously? My photo was getting published in international magazines!!! Oh, it&#8217;s true. It&#8217;s really uncommon [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=457&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s so excited that iPhone 4 was announced this morning. BUT, it&#8217;s even more excited that I just received some magazines from Singapore with my photo published. It&#8217;s really a big shot for me. It&#8217;s so unrealistic and so unbelievable. Seriously? My photo was getting published in international magazines!!! Oh, it&#8217;s true.</p>
<p>It&#8217;s really uncommon that I receive an international air mail.<br />
<a href="http://www.flickr.com/photos/olliwang/4680751027/" title="Received magazines from Singapore by olliwang, on Flickr"><img src="http://farm5.static.flickr.com/4043/4680751027_a681ee36b6.jpg" width="500" height="333" alt="Received magazines from Singapore" /></a></p>
<p>And I&#8217;ve never seen an envelope with so many postage stamps. That&#8217;s amazing!<br />
<a href="http://www.flickr.com/photos/olliwang/4680751641/" title="There are a lot of postage stamps by olliwang, on Flickr"><img src="http://farm5.static.flickr.com/4064/4680751641_1037a68c6b.jpg" width="500" height="333" alt="There are a lot of postage stamps" /></a></p>
<p>There are three different kind of publications in the envelope. According to the Wikipedia, Qualatex is the most popular balloon brand among professional twisters.<br />
<a href="http://www.flickr.com/photos/olliwang/4680752173/" title="Magazines from Qualatex by olliwang, on Flickr"><img src="http://farm5.static.flickr.com/4050/4680752173_d665870e34.jpg" width="500" height="333" alt="Magazines from Qualatex" /></a></p>
<p>One of my photo was published on the 2nd page of the Qualatex catalog.<br />
<a href="http://www.flickr.com/photos/olliwang/4680752641/" title="My photo in the magazine by olliwang, on Flickr"><img src="http://farm5.static.flickr.com/4025/4680752641_bca1570ef9.jpg" width="500" height="333" alt="My photo in the magazine" /></a></p>
<p>And the same one was also published in the calendar.<br />
<a href="http://www.flickr.com/photos/olliwang/4681385820/" title="My photo on the calendar by olliwang, on Flickr"><img src="http://farm5.static.flickr.com/4069/4681385820_da550192d8.jpg" width="500" height="333" alt="My photo on the calendar" /></a></p>
<br />Filed under: <a href='http://olliwang.com/category/life/'>Life</a>, <a href='http://olliwang.com/category/photography/'>Photography</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olliwang.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olliwang.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/olliwang.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/olliwang.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/olliwang.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/olliwang.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/olliwang.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/olliwang.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/olliwang.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/olliwang.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/olliwang.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/olliwang.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/olliwang.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/olliwang.wordpress.com/457/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=457&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olliwang.com/2010/06/08/my-photo-got-published-in-magazines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a8be03049f6c5fe81fd2e33a697c43ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Olli Wang</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4043/4680751027_a681ee36b6.jpg" medium="image">
			<media:title type="html">Received magazines from Singapore</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4064/4680751641_1037a68c6b.jpg" medium="image">
			<media:title type="html">There are a lot of postage stamps</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4050/4680752173_d665870e34.jpg" medium="image">
			<media:title type="html">Magazines from Qualatex</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4025/4680752641_bca1570ef9.jpg" medium="image">
			<media:title type="html">My photo in the magazine</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4069/4681385820_da550192d8.jpg" medium="image">
			<media:title type="html">My photo on the calendar</media:title>
		</media:content>
	</item>
		<item>
		<title>New milestone</title>
		<link>http://olliwang.com/2010/05/30/new-milestone/</link>
		<comments>http://olliwang.com/2010/05/30/new-milestone/#comments</comments>
		<pubDate>Sun, 30 May 2010 05:19:55 +0000</pubDate>
		<dc:creator>Olli Wang</dc:creator>
				<category><![CDATA[Ollix]]></category>
		<category><![CDATA[booking]]></category>
		<category><![CDATA[訂票]]></category>
		<category><![CDATA[高鐵]]></category>
		<category><![CDATA[fares]]></category>
		<category><![CDATA[HSR]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod Touch]]></category>
		<category><![CDATA[Taiwan]]></category>
		<category><![CDATA[Taiwan High Speed Rail]]></category>
		<category><![CDATA[train]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[台灣]]></category>
		<category><![CDATA[台灣高鐵]]></category>
		<category><![CDATA[台湾新幹線]]></category>

		<guid isPermaLink="false">http://olliwang.com/?p=444</guid>
		<description><![CDATA[It&#8217;s really excited that Sheri and I will have our first app for iPhone and iPod Touch on the App Store soon. I&#8217;ve been waiting for a long time to see this happening. Years ago, I founded Ollix and became a freelancer while I was a university student. However, I actually don&#8217;t have too much [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=444&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s really excited that Sheri and I will have our first app for iPhone and iPod Touch on the App Store soon. I&#8217;ve been waiting for a long time to see this happening. Years ago, I founded Ollix and became a freelancer while I was a university student. However, I actually don&#8217;t have too much time to do my business because I still need to spend a lot of time for school. Finally, I finished almost all the courses for my master&#8217;s degree, and thanks to many people who support me, now I can put more focus on my business.</p>
<p>Our first iPhone/iPod Touch app targets to people living in Taiwan and people who are going to Taiwan. It&#8217;s designed for the Taiwan High Speed Rail, which is the fastest train in Taiwan, with maximum speed of 300 km/h. The app&#8217;s name varies according to the user&#8217;s locale. In English, it&#8217;s called &#8220;Take Taiwan High Speed Rail&#8221;, in Traditional Chinese, it&#8217;s called &#8220;我要搭高鐵&#8221;, in Simplified Chinese, it&#8217;s called &#8220;搭台湾高铁&#8221;, and in Japanese, it&#8217;s called &#8220;台湾新幹線&#8221;. All these four languages are full supported in this app.</p>
<p>By using this app, you can use your iPhone or iPod Touch to search times and fares offline, book tickets and pay fares online. You can preserve your booking information to avoid typing the same data over again and again, and you can keep your booking history for convenience of picking up tickets. The best part of this app is that, you don&#8217;t need to compromise with browsers at all. All operations can simply be done in this app.</p>
<p>If you are interesting in this app, please visit our official website at <a href="http://www.ollix.com"> http://www.ollix.com</a>. You can follow us on Twitter or become a fan on Facebook for more information, and here are some preview screenshots:</p>
<p><a href="http://olliwang.files.wordpress.com/2010/05/ollix_thsr.png"><img src="http://olliwang.files.wordpress.com/2010/05/ollix_thsr.png?w=500" alt="" title="ollix_thsr"   class="alignnone size-full wp-image-446" /></a></p>
<br />Filed under: <a href='http://olliwang.com/category/ollix/'>Ollix</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olliwang.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olliwang.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/olliwang.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/olliwang.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/olliwang.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/olliwang.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/olliwang.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/olliwang.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/olliwang.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/olliwang.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/olliwang.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/olliwang.wordpress.com/444/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/olliwang.wordpress.com/444/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/olliwang.wordpress.com/444/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=444&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olliwang.com/2010/05/30/new-milestone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a8be03049f6c5fe81fd2e33a697c43ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Olli Wang</media:title>
		</media:content>

		<media:content url="http://olliwang.files.wordpress.com/2010/05/ollix_thsr.png" medium="image">
			<media:title type="html">ollix_thsr</media:title>
		</media:content>
	</item>
		<item>
		<title>An example to extract IPTC data using QMeta</title>
		<link>http://olliwang.com/2010/03/03/an-example-to-extract-iptc-data-using-qmeta/</link>
		<comments>http://olliwang.com/2010/03/03/an-example-to-extract-iptc-data-using-qmeta/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 03:56:42 +0000</pubDate>
		<dc:creator>Olli Wang</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Ollix]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[cplusplus]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[IPTC]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[photograph]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[QMeta]]></category>
		<category><![CDATA[toolkit]]></category>

		<guid isPermaLink="false">http://olliwang.com/?p=433</guid>
		<description><![CDATA[Extracting IPTC data using QMeta is pretty much the same as extracting EXIF data as in my previous post &#8211; Using QMeta to extract Exif data in your Qt applications. So, here I only give you a simple example to extract object name and keywords from a picture. As usual, you can find the full [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=433&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Extracting IPTC data using <a href="http://github.com/ollix/qmeta">QMeta</a> is pretty much the same as extracting EXIF data as in my previous post &#8211; <a href="http://olliwang.com/2010/02/05/using-qmeta-to-extract-exif-data-in-your-qt-applications/">Using QMeta to extract Exif data in your Qt applications</a>. So, here I only give you a simple example to extract object name and keywords from a picture.<br />
<pre class="brush: cpp;">
#include &lt;QtGui&gt;
#include &quot;qmeta/image.h&quot;

int main (int argc, char *argv[])
{
  // Opens an image file. Currently supports only JPEG and TIFF files.
  qmeta::Image image(&quot;path/to/image&quot;);
  // Checks if the specified image is valid.
  if (image.IsValid()) {
    // Checks if IPTC data exists in this image.
    if (image.iptc()) {
      // Reads the object name from IPTC.
      qDebug() &lt;&lt; image.iptc()-&gt;Value(qmeta::Iptc::kObjectName);
      // Reads keywords, note that I use the &quot;Values()&quot; function 
      // here because the &quot;keywords&quot; field is repeatable in IPTC.
      qDebug() &lt;&lt; image.iptc()-&gt;Values(qmeta::Iptc::kKeywords);
    }
  }
  return 0;
}
</pre></p>
<p>As usual, you can find the full list of supported IPTC tags in its <a href="http://github.com/ollix/qmeta/blob/master/src/iptc.h">header file</a>, just check the `enum Tag` type, and that&#8217;s all.</p>
<br />Filed under: <a href='http://olliwang.com/category/programming/c-programming/'>C++</a>, <a href='http://olliwang.com/category/ollix/'>Ollix</a>, <a href='http://olliwang.com/category/qt/'>Qt</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olliwang.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olliwang.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/olliwang.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/olliwang.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/olliwang.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/olliwang.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/olliwang.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/olliwang.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/olliwang.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/olliwang.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/olliwang.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/olliwang.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/olliwang.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/olliwang.wordpress.com/433/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=433&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olliwang.com/2010/03/03/an-example-to-extract-iptc-data-using-qmeta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a8be03049f6c5fe81fd2e33a697c43ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Olli Wang</media:title>
		</media:content>
	</item>
		<item>
		<title>Using QMeta to extract Exif data in your Qt applications</title>
		<link>http://olliwang.com/2010/02/05/using-qmeta-to-extract-exif-data-in-your-qt-applications/</link>
		<comments>http://olliwang.com/2010/02/05/using-qmeta-to-extract-exif-data-in-your-qt-applications/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 17:24:53 +0000</pubDate>
		<dc:creator>Olli Wang</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Ollix]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[cplusplus]]></category>
		<category><![CDATA[exif]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[photograph]]></category>
		<category><![CDATA[QMeta]]></category>
		<category><![CDATA[toolkit]]></category>

		<guid isPermaLink="false">http://olliwang.com/?p=402</guid>
		<description><![CDATA[In the C++ world, there are not too many options to extract Exif data from images. So far, I have found only two considerable libraries, they are libexif in C and Exiv2 in C++, respectively. However, both of them are not easy to be integrated into Qt applications in my opinion. Qt is a great [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=402&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In the C++ world, there are not too many options to extract Exif data from images. So far, I have found only two considerable libraries, they are libexif in C and Exiv2 in C++, respectively. However, both of them are not easy to be integrated into Qt applications in my opinion. </p>
<p>Qt is a great framework for C++ programmers, especially for Qt applications. Unfortunately, there is no built-in metadata support for images. Therefore, I decided to write my own one based on the QtCore library, and it&#8217;s called QMeta. Its goal is to provide the easiest way to manipulate metadata with various metadata standards and image types in Qt applications. And now, it supports reading Exif data from images. In the rest of the article, I&#8217;ll show you how easily you can use QMeta to extract Exif metadata saved in JPEG and TIFF images.</p>
<p>As a note, currently QMeta is at very early state and does not have any official document. Its APIs are not stable as well, which means what I&#8217;ll talk about in this article may be out of date in the future. However, you can always get the latest information about this project at <a href="http://github.com/ollix/qmeta">http://github.com/ollix/qmeta</a>, and I&#8217;ll try to keep its APIs as simple as possible as you will see.</p>
<p>Now let&#8217;s assume that you have a JPEG file and want to know the &#8220;Artist&#8221; value saved in its Exif. You can achieve this using the following code:</p>
<p><pre class="brush: cpp;">
#include &lt;QtGui&gt;
#include &quot;qmeta/exif.h&quot;
#include &quot;qmeta/jpeg.h&quot;

int main (int argc, char *argv[])
{
  qmeta::Jpeg jpeg(&quot;path/to/file&quot;);
  if (jpeg.IsValid()) {
    qDebug() &lt;&lt; &quot;The supplied file is a valid JPEG file&quot;;
    if (jpeg.exif()) {
      qDebug() &lt;&lt; &quot;This file contains Exif information&quot;;
      // Prints something like &quot;Artist: Olli Wang&quot; in your console.
      qDebug() &lt;&lt; &quot;Artist:&quot; &lt;&lt; jpeg.exif()-&gt;Value(qmeta::Exif::kArtist);
    }
  }
  return 0;
}
</pre></p>
<p>See? It&#8217;s really easy to use. The `qmeta::Exif::kArtist` is the Exif Tag that we want to query, and you can find the full list of supported Exif tags at <a href="http://github.com/ollix/qmeta/blob/master/src/exif.h">http://github.com/ollix/qmeta/blob/master/src/exif.h</a> (see the `enum Tag` type). Actually, the code `jpeg.exif()-&gt;Value(qmeta::Exif::kArtist)` returns the value with the ExifData type which inherits the QByteArray class. So, you can use it as a normal QByteArray object, like this:</p>
<p><pre class="brush: cpp;">
qmeta::ExifData value = jpeg.exif()-&gt;Value(qmeta::Exif::kArtist);
qDebug() &lt;&lt; value.data();   // Olli Wang
qDebug() &lt;&lt; value.toHex();  // 4f6c6c692057616e6700
qDebug() &lt;&lt; value.size();   // 10
</pre></p>
<p>However, sometimes it&#8217;s not convient to use QByteArray directly. For example, the image width saved in Exif may use SHORT (a 16-bit unsigned integer) or LONG (a 32-bit unsigned integer) types defined in the Exif specification. If you want to get this value, you may need to do something like this:<br />
<pre class="brush: cpp;">
qmeta::ExifData value = jpeg.exif()-&gt;Value(qmeta::Exif::kImageWidth);
qDebug() &lt;&lt; value.size();   // 2 (2 bytes, which means its type is SHORT)
qDebug() &lt;&lt; value.toHex();  // 0fd0 (represented in hexidecimal)
qDebug() &lt;&lt; value.toHex().toUInt(NULL, 16);  // 4048 (coverted to decimal)
</pre><br />
As you can see, in most case, the value of image width is useless unless converted to integer, and that requires two steps in QByteArray. Fortunately, the actual returned type is ExifData, and it was born to remedy this situation. See the following example.<br />
<pre class="brush: cpp;">
qDebug() &lt;&lt; value.toHex().toUInt(NULL, 16);  // 4048 (the old method)
qDebug() &lt;&lt; value.ToUInt();  // 4048 (same as above, but much more cleaner)
</pre></p>
<p>Currently, the ExifData class does not provide too much fancy work. But in the future, it will provide more useful functions to represent the data, and it can always be subclassed to adapt particular Exif tags. You can find more about ExifData at <a href="http://github.com/ollix/qmeta/blob/master/src/exif_data.cc">http://github.com/ollix/qmeta/blob/master/src/exif_data.cc</a>.</p>
<p>The next example I want to show you is thumbnail. Most digital cameras store pictures with their thumbnails for quick displaying. Let&#8217;s see how it works.<br />
<pre class="brush: cpp;">
// Saves the embeded thumbnail to a new JPEG file.
QByteArray thumbnail = jpeg.Thumbnail();
if (thumbnail.size()) {
    QFile file(&quot;thumbnail.jpg&quot;);
    file.open(QIODevice::WriteOnly);
    file.write(thumbnail);
}
</pre></p>
<p>Once again, it&#8217;s really not a big deal to extract thumbnails using QMeta. The Jpeg::Thumbnail() is a quick access to the thumbnail saved in metadata. It will try to return the thumbnail as QByteArray stored in Exif, IPTC, or XMP. However, currently QMeta only supports Exif.</p>
<p>The Exif metadata can be extracted from both JPEG and TIFF files. Extracting Exif data from TIFF files is just like extracting from JPEG files, the only difference is the class to be instantiated. For example:<br />
<pre class="brush: cpp;">
qmeta::Tiff tiff(&quot;/path/to/file&quot;);
if (tiff.IsValid()) {
    if (tiff.exif()) {
        qmeta::ExifData data = tiff.exif()-&gt;Value(qmeta::Exif::kModel);
        qDebug() &lt;&lt; &quot;Model:&quot; &lt;&lt; data.ToString();  // ex: Model: &quot;DSLR-A350&quot;
}
</pre></p>
<p>Another more interesting example is to let QMeta guess what file type it should be. In this case, you only need to use a general &#8220;Image&#8221; class, and only one header file is required. Take this example:<br />
<pre class="brush: cpp;">
#include &lt;QtGui&gt;
#include &quot;qmeta/image.h&quot;

int main (int argc, char *argv[])
{
  // Opens a JPEG file.
  qmeta::Image jpeg(&quot;path/to/file.jpg&quot;);
  if (jpeg.IsValid()) {
    if (jpeg.exif()) {
      // Do whatever you like with the JPEG file.
    }
  }
  // Opens a JPEG file.
  qmeta::Image tiff(&quot;path/to/file.tif&quot;);
  if (tiff.IsValid()) {
    if (tiff.exif()) {
      // Do whatever you like with the TIFF file.
    }
  }
  return 0;
}
</pre></p>
<p>And&#8230; that&#8217;s it. Currently QMeta only supports the Exif standard but will include IPTC and XMP in the future. I also need to figure out what&#8217;s the best way to store/update metadata stored in the file without destroying other metadata QMeta supports or not. As you know, there are many fields stored with offsets and actually, this is my first project relating to image processing. So, any suggestion or contribution would be appreciated.</p>
<br />Filed under: <a href='http://olliwang.com/category/programming/c-programming/'>C++</a>, <a href='http://olliwang.com/category/ollix/'>Ollix</a>, <a href='http://olliwang.com/category/programming/'>Programming</a>, <a href='http://olliwang.com/category/qt/'>Qt</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olliwang.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olliwang.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/olliwang.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/olliwang.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/olliwang.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/olliwang.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/olliwang.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/olliwang.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/olliwang.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/olliwang.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/olliwang.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/olliwang.wordpress.com/402/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/olliwang.wordpress.com/402/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/olliwang.wordpress.com/402/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=402&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olliwang.com/2010/02/05/using-qmeta-to-extract-exif-data-in-your-qt-applications/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a8be03049f6c5fe81fd2e33a697c43ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Olli Wang</media:title>
		</media:content>
	</item>
		<item>
		<title>Creating thumbnail images in Qt</title>
		<link>http://olliwang.com/2010/01/30/creating-thumbnail-images-in-qt/</link>
		<comments>http://olliwang.com/2010/01/30/creating-thumbnail-images-in-qt/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 07:41:32 +0000</pubDate>
		<dc:creator>Olli Wang</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[cplusplus]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[Qitty]]></category>
		<category><![CDATA[thumbnail]]></category>
		<category><![CDATA[toolkit]]></category>

		<guid isPermaLink="false">http://olliwang.com/?p=382</guid>
		<description><![CDATA[Recently I need to create thumbnail images in one of my Qt applications, so I googled the Internet and found an article called Creating thumbnail preview by Ariya Hidayat. Ariya introduced three methods to create thumbnail images, all of them uses the QImage::scaled() function. Here&#8217;s a quick review of the three methods he introduced respectively. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=382&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I need to create thumbnail images in one of my Qt applications, so I googled the Internet and found an article called <a href="http://labs.trolltech.com/blogs/2009/01/26/creating-thumbnail-preview/">Creating thumbnail preview</a> by Ariya Hidayat. Ariya introduced three methods to create thumbnail images, all of them uses the QImage::scaled() function. Here&#8217;s a quick review of the three methods he introduced respectively.</p>
<p>The first method is using the nearest-neighborhood algorithm as following:<br />
<pre class="brush: cpp;">
QImage image(&quot;/path/to/image&quot;);
QImage thumbnail = image.scaled(200, 200, Qt::KeepAspectRatio, Qt::FastTransformation);
</pre></p>
<p>The second is using the bilinear filtering to get a better quality, but the drawback is that it&#8217;s slower compared to the previous method:<br />
<pre class="brush: cpp;">
QImage image(&quot;/path/to/image&quot;);
QImage thumbnail = image.scaled(200, 200, Qt::KeepAspectRatio, Qt::SmoothTransformation);
</pre></p>
<p>The third is tricky, Ariya mixed the previous two methods as he claimed this method has the similar quality to the second method but is even faster than the first method, and he called this method as &#8220;cheat scaling&#8221;, as following:<br />
<pre class="brush: cpp;">
QImage image(&quot;/path/to/image&quot;);
QImage thumbnail = image.scaled(800, 800, Qt::KeepAspectRatio, Qt::FastTransformation).scaled(200, 200, Qt::KeepAspectRatio, Qt::SmoothTransformation);
</pre></p>
<p>However, after I tried all of these methods, I found that the performance is actually unacceptable even though I used the third method. My original images are usually at size around 4MB, and it spends too much time to create thumbnail images using any of above methods. Therefore, I tried to find other ways to improve the performance, and I did it. The answer is QImageReader class. Here&#8217;s the code I implemented to do the same thing as above:<br />
<pre class="brush: cpp;">
int length = 200;
QImageReader image_reader(&quot;/path/to/image&quot;);
int image_width = image_reader.size().width();
int image_height = image_reader.size().height();
if (image_width &gt; image_height) {
  image_height = static_cast&lt;double&gt;(length) / image_width * image_height;
  image_width = length;
} else if (image_width &lt; image_height) {
  image_width = static_cast&lt;double&gt;(length) / image_height * image_width;
  image_height = length;
} else {
  image_width = length;
  image_height = length;
}
image_reader.setScaledSize(QSize(image_width, image_height));
QImage thumbnail = image_reader.read();
</pre></p>
<p>The code is much longer than using the QImage::scaled() function, but its performance is much better. Here&#8217;s the benchmark I tried to create thumbnail images for 10 jpeg images, and each of them has the size around 4MB.<br />
<img src="http://olliwang.files.wordpress.com/2010/01/qt_thumbnail_benchmark1.png?w=500" alt="Image scaling performance" /></p>
<p>As you can see, all three methods using QImage::scaled() are actually no much difference, but by using the QImageReader class, we got 46% performance improvement than using the Qt::FastTransformation. The algorithm QImageReader::setScaledSize() used for scaling depends on the image format. However, in this experiment, the quality of created thumbnail images are no difference between Qt::SmoothTransformation and cheat scaling and QImageReader methods.</p>
<p>For convenience, I implemented this function in my open source Qitty library. You can find this project at <a href="http://github.com/ollix/qitty">http://github.com/ollix/qitty</a>. To create thumbnail images using this library, you&#8217;ll need to include the header file in your source code:<br />
<pre class="brush: cpp;">
#include &lt;qitty/image.h&gt;
</pre><br />
And use the qitty_utils::SacledImage() function:<br />
<pre class="brush: cpp;">
QImage thumbnail = qitty_utils:ScaledImage(&quot;/path/to/image&quot;, 200);
</pre></p>
<br />Filed under: <a href='http://olliwang.com/category/programming/c-programming/'>C++</a>, <a href='http://olliwang.com/category/programming/'>Programming</a>, <a href='http://olliwang.com/category/qt/'>Qt</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olliwang.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olliwang.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/olliwang.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/olliwang.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/olliwang.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/olliwang.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/olliwang.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/olliwang.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/olliwang.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/olliwang.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/olliwang.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/olliwang.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/olliwang.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/olliwang.wordpress.com/382/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=382&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olliwang.com/2010/01/30/creating-thumbnail-images-in-qt/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a8be03049f6c5fe81fd2e33a697c43ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Olli Wang</media:title>
		</media:content>

		<media:content url="http://olliwang.files.wordpress.com/2010/01/qt_thumbnail_benchmark1.png" medium="image">
			<media:title type="html">Image scaling performance</media:title>
		</media:content>
	</item>
		<item>
		<title>MicroAgent debuted at late 2009</title>
		<link>http://olliwang.com/2009/12/31/microagent-debuted-at-late-2009/</link>
		<comments>http://olliwang.com/2009/12/31/microagent-debuted-at-late-2009/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 11:32:49 +0000</pubDate>
		<dc:creator>Olli Wang</dc:creator>
				<category><![CDATA[Ollix]]></category>
		<category><![CDATA[analyzing]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[auto submission]]></category>
		<category><![CDATA[keywording]]></category>
		<category><![CDATA[microagent]]></category>
		<category><![CDATA[microstock]]></category>
		<category><![CDATA[photograph]]></category>
		<category><![CDATA[photographer]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://olliwang.com/?p=375</guid>
		<description><![CDATA[Yesterday I introduced my new project, MicroAgent, in my data mining class. I designed an algorithm to find relevant keywords, titles, descriptions, and categories for images according to only a few of keywords, and it works pretty well. I think this application would be very useful for all microstock photographers because in my experience, to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=375&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://olliwang.files.wordpress.com/2009/12/screen-shot-2009-12-31-at-12-39-08-pm.png?w=500" alt="" /></p>
<p>Yesterday I introduced my new project, MicroAgent, in my data mining class. I designed an algorithm to find relevant keywords, titles, descriptions, and categories for images according to only a few of keywords, and it works pretty well. I think this application would be very useful for all microstock photographers because in my experience, to submit photos to microstock agencies is always a time consuming mess, as we need to figure out what keywords, titles, descriptions, or categories would best fit our images, and further help us increase the selling rate. </p>
<p> MicroAgent is the perfect solution for you, anyone who want to add metadata to their images would benefit from MicroAgent. However, MicroAgent is still at early state because I&#8217;d like to add more useful features to it (auto submission, statistics, etc). So, it may take a while to publish an official release. In the mean time, any idea or suggestion would be welcomed. By the way, MicroAgent will be available for Windows, Mac OS X, and Linux, so most people could take advantage of it. Just wait and see. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />Posted in Ollix  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olliwang.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olliwang.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/olliwang.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/olliwang.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/olliwang.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/olliwang.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/olliwang.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/olliwang.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/olliwang.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/olliwang.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/olliwang.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/olliwang.wordpress.com/375/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/olliwang.wordpress.com/375/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/olliwang.wordpress.com/375/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=375&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olliwang.com/2009/12/31/microagent-debuted-at-late-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a8be03049f6c5fe81fd2e33a697c43ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Olli Wang</media:title>
		</media:content>

		<media:content url="http://olliwang.files.wordpress.com/2009/12/screen-shot-2009-12-31-at-12-39-08-pm.png" medium="image" />
	</item>
		<item>
		<title>AES Implementation in RPython</title>
		<link>http://olliwang.com/2009/12/20/aes-implementation-in-rpython/</link>
		<comments>http://olliwang.com/2009/12/20/aes-implementation-in-rpython/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 09:30:53 +0000</pubDate>
		<dc:creator>Olli Wang</dc:creator>
				<category><![CDATA[PyPy]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Advanced Encryption Standard]]></category>
		<category><![CDATA[AES]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[CPython]]></category>
		<category><![CDATA[decryption]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[executable]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[implementation]]></category>
		<category><![CDATA[JIT]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Rijndael]]></category>
		<category><![CDATA[RPython]]></category>
		<category><![CDATA[S-box]]></category>

		<guid isPermaLink="false">http://olliwang.com/?p=339</guid>
		<description><![CDATA[I implemented the Advanced Encryption Standard (AES)[4] using Restricted Python (RPython)[1], which is a subset of the standard Python programming language and comes from the PyPy[2] project. By using RPython, we can write our code in high level programming language similar to Python and later be translated to various backends such as C, Java Virtual [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=339&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I implemented the Advanced Encryption Standard (AES)[4] using Restricted Python (RPython)[1], which is a subset of the standard Python programming language and comes from the PyPy[2] project. By using RPython, we can write our code in high level programming language similar to Python and later be translated to various backends such as C, Java Virtual Machine (JVM), or Common Language Infrastructure (CLI). As a result, we can develop our programs very quickly and get the performance similar to the one written in pure C, Java, or C# .NET.</p>
<p>However, RPython is not as powerful as standard CPython, so that’s why it is called “Restricted” Python. There are some restrictions in RPython. For example, you can’t use most Python packages comes from the CPython world because they are not written in RPython. Also, translated code are compiled to executables, not compiled Python modules, neither Python packages. Fortunately, these restrictions are trivial in this simple program because I’m intend to create executables and I don’t need libraries not supported by PyPy. Most importantly, performance matters.</p>
<p>In my experiments, to encrypt and decrypt a file on my iMac (Early 2008), the translated C executable is about 150 times faster than the pure Python code running on top of CPython, and the translated Java bytecode is about 16 times faster. Consequently, RPython should be very useful in case we don’t need serious dependencies. We just need to figure out a better way to integrate it with pure Python code, much like the C extensions for Python.</p>
<p>The AES algorithm implemented in this project is mostly following the AES Tutorial[3] and the Advanced Encryption Standard[4]; the values of Rijndael’s S-box and Inverse S-box are copied from [5]; and the implementation of Rijndael key schedule is following [6].</p>
<p>To test the program, you can use executables put under the bin directory shipped with the <a href="http://github.com/olliwang/raes">source code</a>. There are 4 executables compiled in C, one compiled to Java bytecode as a JAR file (JVM), and one translated to C# and compiled for .NET framework (CLI). Now say that you want to encrypt a file under Mac OS X using the C executable. You can do this by:</p>
<p><pre class="brush: plain;">bin/aes-mac-c  encrypt  mypassword  path_to_input_file  path_to_encrypted_file  </pre></p>
<p>To decrypt the file on a Java Virtual Machine, you can then run:</p>
<p><pre class="brush: plain;">java  -jar  bin/aes-jvm.jar  decrypt  mypassword  path_to_encrypted_file  path_to_decrypted_file  </pre></p>
<p>You can also run the pure Python code on top of CPython or other Python implementation, but you’ll need to get the PyPy’s source code. You can find its repository at their website[2].</p>
<p>Here&#8217;s some benchmarks I made on Snow Leopard, Windows XP, and Gentoo Linux respectively.</p>
<ol>
<li>iMac (Early 2008)
<ul>
<li>Mac OS X 10.6.2 (Snow Leopard)</li>
<li>2.8 GHz Intel Core 2 Duo</li>
<li>4 GB 800 MHz DDR2 SDRAM</li>
<li>GCC version: 4.2.1</li>
<li>CPython version: 2.6.1</li>
<li>Java version: 1.6.0_17 (JVM)</li>
<li>Mono version: 2.6.1 (CLI)</li>
</ul>
<p><img src="http://olliwang.files.wordpress.com/2009/12/rase_snow_leopard.png?w=500" alt="" />
</li>
<li>Windows XP 32-bit
<ul>
<li>Running in VirtualBox on iMac (Early 2008)</li>
<li>1 GB RAM</li>
<li>Microsoft Visual Studio 2008 Express Edition</li>
<li>Java version: 1.6.0_17</li>
<li>CPython version: 2.6.4</li>
</ul>
<p><img src="http://olliwang.files.wordpress.com/2009/12/raes_windows_xp2.png?w=500" alt="" />
</li>
<li>Gentoo Linux 2008 (amd64)
<ul>
<li>AMD Athlon 64 Processor 3500+</li>
<li>2GB DDR 400 SDRAM</li>
<li>GCC version: 4.1.2</li>
<li>Java version: 1.6.0_17</li>
<li>Mono version: 2.4.2.3</li>
<li>CPython version: 2.6.4</li>
</ul>
<p><img src="http://olliwang.files.wordpress.com/2009/12/raes_gentoo_linux3.png?w=500" alt="" />
</li>
</ol>
<p>References:<br />
[1] Restricted Python: <a href="http://codespeak.net/pypy/dist/pypy/doc/coding-guide.html#restricted-python">http://codespeak.net/pypy/dist/pypy/doc/coding-guide.html#restricted-python</a><br />
[2] PyPy: <a href="http://codespeak.net/pypy/">http://codespeak.net/pypy/</a><br />
[3] AES Tutorial: <a href="http://www.progressive-coding.com/tutorial.php"> http://www.progressive-coding.com/tutorial.php</a><br />
[4] Advanced Encryption Standard: <a href="http://en.wikipedia.org/wiki/Advanced_Encryption_Standard">http://en.wikipedia.org/wiki/Advanced_Encryption_Standard</a><br />
[5] Rijndael S-box: <a>http://en.wikipedia.org/wiki/Rijndael_S-box</a><br />
[6] Rijndael key schedule: <a href="http://en.wikipedia.org/wiki/Rijndael_key_schedule">http://en.wikipedia.org/wiki/Rijndael_key_schedule</a></p>
<br />Posted in PyPy, Python  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olliwang.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olliwang.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/olliwang.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/olliwang.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/olliwang.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/olliwang.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/olliwang.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/olliwang.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/olliwang.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/olliwang.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/olliwang.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/olliwang.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/olliwang.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/olliwang.wordpress.com/339/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=339&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olliwang.com/2009/12/20/aes-implementation-in-rpython/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a8be03049f6c5fe81fd2e33a697c43ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Olli Wang</media:title>
		</media:content>

		<media:content url="http://olliwang.files.wordpress.com/2009/12/rase_snow_leopard.png" medium="image" />

		<media:content url="http://olliwang.files.wordpress.com/2009/12/raes_windows_xp2.png" medium="image" />

		<media:content url="http://olliwang.files.wordpress.com/2009/12/raes_gentoo_linux3.png" medium="image" />
	</item>
		<item>
		<title>Make a native Mac App Bundle of Qt Designer with Qt Jambi</title>
		<link>http://olliwang.com/2009/11/01/make-a-native-mac-app-bundle-of-qt-designer-with-qt-jambi/</link>
		<comments>http://olliwang.com/2009/11/01/make-a-native-mac-app-bundle-of-qt-designer-with-qt-jambi/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 05:21:59 +0000</pubDate>
		<dc:creator>Olli Wang</dc:creator>
				<category><![CDATA[Jython]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[App Bundle]]></category>
		<category><![CDATA[bundle]]></category>
		<category><![CDATA[Jump]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[Qt Designer]]></category>
		<category><![CDATA[Qt Jambi]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wrapper]]></category>

		<guid isPermaLink="false">http://olliwang.com/?p=322</guid>
		<description><![CDATA[Qt Designer is an important tool for designing and building graphical user interface from Qt components. However, if you are a Java programmer and want to use Qt Designer with Qt Jambi in Mac, you can&#8217;t simply double-click the Designer app bundle shipped with Qt Jambi SDK. If you do so, you can still invoke [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=322&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Qt Designer is an important tool for designing and building graphical user interface from Qt components. However, if you are a Java programmer and want to use Qt Designer with Qt Jambi in Mac, you can&#8217;t simply double-click the Designer app bundle shipped with Qt Jambi SDK. If you do so, you can still invoke the Designer, but&#8230; with the C++ environments, it&#8217;s useless for Java programmers. Instead, if you want to use Qt Designer with Qt Jambi. You have to start the program from a `designer.sh` script placed in your Qt directory. It&#8217;s pretty annoying because you&#8217;ll need a Terminal to run this script until you turn it off. Also, it&#8217;s not intuitive.</p>
<p>So, I checked the script code and found what it does is simply to set some environment variables and then execute the Designer binary within the Designer app bundle. Therefore, I decided to make a &#8220;real&#8221; app bundle for the Qt Designer with Qt Jambi. It&#8217;s pretty easy to do this job by using <a href="http://opensource.ollix.com/jump">Jump</a>, one of my open source projects. Here&#8217;s the instructions.</p>
<ol>
<li>Go to the `QTDIR/bin` directory in Finder.</li>
<li>Right-click the `Designer` app bundle, select `Show Package Contents`, and it will open a new Finder window.</li>
<li>In the new opened Finder window, go to the `Contents/MacOS` directory, then copy the `Designer` binary back to `QTDIR/bin`.</li>
<li>Now pick a location to start writing our wrapper. I simply make a directory called `designer` in my home directory, then open a Terminal and switch to it.</li>
<li>Back to the new opened Finder window, copy the `Contents/Resources/designer.icns` file to our new created `designer` directory.</li>
<li>Create a Python module named `designer.py` in `designer` directory, and its content looks like this:<br />
<pre class="brush: python;">import os
# Replace this path to your QTDIR
qt_home = '/Users/olliwang/workspace/qtjambi-mac-lgpl-4.5.2_01'

def main():
    os.environ['QTDIR'] = qt_home
    os.environ['DYLD_LIBRARY_PATH'] = os.path.join(qt_home, 'lib')
    os.environ['QT_PLUGIN_PATH'] = os.path.join(qt_home, 'plugins')
    os.environ['PATH'] = os.path.join(qt_home, 'bin')

    classpaths = []
    for filename in os.listdir(qt_home):
        if filename.endswith('.jar'):
            classpath = os.path.join(qt_home, filename)
            classpaths.append(classpath)
    os.environ['CLASSPATH'] = ':'.join(classpaths)
    os.system(os.path.join(qt_home, 'bin/Designer'))</pre></li>
<li>Create a `config.jp` file with following content:<br />
<pre class="brush: bash;">dist_name = Designer
main_entry_point = designer:main
icns = designer.icns</pre></li>
<li>Run `jump app` in your Terminal, and you&#8217;ll see a new created directory called `dist`, our new app bundle is in there.</li>
<li>Copy the created app bundle back to the `QTDIR/bin` directory, now double-click the `Designer` app bundle and everything should work fine. Cheers!</li>
</ol>
<p>I use Python to write this wrapper for easy, you can of course do the same thing in Java. Just remember to modify the `main_entry_point` to the `Main Class` in config file.</p>
<br />Posted in Jython, Programming, Python, Qt  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olliwang.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olliwang.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/olliwang.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/olliwang.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/olliwang.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/olliwang.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/olliwang.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/olliwang.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/olliwang.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/olliwang.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/olliwang.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/olliwang.wordpress.com/322/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/olliwang.wordpress.com/322/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/olliwang.wordpress.com/322/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=322&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olliwang.com/2009/11/01/make-a-native-mac-app-bundle-of-qt-designer-with-qt-jambi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a8be03049f6c5fe81fd2e33a697c43ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Olli Wang</media:title>
		</media:content>
	</item>
		<item>
		<title>My first Carl Zeiss lens &#8211; 16-80mm F3.5-4.5</title>
		<link>http://olliwang.com/2009/10/22/my-first-carl-zeiss-lens-16-80mm-f3-5-4-5/</link>
		<comments>http://olliwang.com/2009/10/22/my-first-carl-zeiss-lens-16-80mm-f3-5-4-5/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 16:38:15 +0000</pubDate>
		<dc:creator>Olli Wang</dc:creator>
				<category><![CDATA[Photography]]></category>
		<category><![CDATA[Stuff]]></category>
		<category><![CDATA[16-80]]></category>
		<category><![CDATA[16-80mm]]></category>
		<category><![CDATA[1680]]></category>
		<category><![CDATA[box]]></category>
		<category><![CDATA[Carl Zeiss]]></category>
		<category><![CDATA[DSLR]]></category>
		<category><![CDATA[F3.5-4.5]]></category>
		<category><![CDATA[lens]]></category>
		<category><![CDATA[lens cap]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[Sony]]></category>
		<category><![CDATA[zoom lens]]></category>

		<guid isPermaLink="false">http://olliwang.com/?p=293</guid>
		<description><![CDATA[OK, I know it&#8217;s been a while, but I received my first Carl Zeiss lens a half month ago. Unfortunately, I didn&#8217;t have too much time to go out and take pictures recently because I&#8217;m a little busy with my new projects. However, I did find a problem with this lens, that is, the focusing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=293&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/olliwang/4010961153/" title="Carl Zeiss 16-80mm F3.5-4.5 by olliwang, on Flickr"><img src="http://farm3.static.flickr.com/2616/4010961153_a3178f82ac.jpg" width="500" height="333" alt="Carl Zeiss 16-80mm F3.5-4.5" /></a></p>
<p>OK, I know it&#8217;s been a while, but I received my first Carl Zeiss lens a half month ago. Unfortunately, I didn&#8217;t have too much time to go out and take pictures recently because I&#8217;m a little busy with my new projects.</p>
<p>However, I did find a problem with this lens, that is, the focusing system doesn&#8217;t work well when using the wide-angle side. The camera will tell you it already focuses but it actually doesn&#8217;t. This occurs when the camera body focuses an object at the shortest length. I tried this with my A350 and new model A550, and three different 16-80mm lenses from three different stores, two of them are even SonyStyle stores, but the result is all the same. You need to step back about 1-5 centimeters to the object you are taking to make sure you won&#8217;t take out-of-focus pictures. I still don&#8217;t know why this happened, neither do the salesclerks.</p>
<p>Besides the only problem I found, this lens is still fine, it has a longer focal length than my previous one. The image quality is sharp from center to edge, and has nice color. More excited, it&#8217;s a Carl Zeiss lens!</p>
<p><a href="http://www.flickr.com/photos/olliwang/4011727416/" title="ZEISS lens cap by olliwang, on Flickr"><img src="http://farm3.static.flickr.com/2576/4011727416_1b1f8bee58.jpg" width="500" height="333" alt="ZEISS lens cap" /></a></p>
<p>I also bought a MC protector with Carl Zeiss T* coating, but I still have no idea about what does &#8220;MC&#8221; mean. Can anyone tell me, please? It would be appreciated.</p>
<p><a href="http://www.flickr.com/photos/olliwang/4010962053/" title="SONY 62mm MC Protector with Carl Zeiss T* Coating by olliwang, on Flickr"><img src="http://farm3.static.flickr.com/2574/4010962053_0259dc923f.jpg" width="333" height="500" alt="SONY 62mm MC Protector with Carl Zeiss T* Coating" /></a></p>
<br />Posted in Photography, Stuff  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/olliwang.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/olliwang.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/olliwang.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/olliwang.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/olliwang.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/olliwang.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/olliwang.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/olliwang.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/olliwang.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/olliwang.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/olliwang.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/olliwang.wordpress.com/293/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/olliwang.wordpress.com/293/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/olliwang.wordpress.com/293/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=olliwang.com&amp;blog=8446045&amp;post=293&amp;subd=olliwang&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://olliwang.com/2009/10/22/my-first-carl-zeiss-lens-16-80mm-f3-5-4-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a8be03049f6c5fe81fd2e33a697c43ec?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Olli Wang</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2616/4010961153_a3178f82ac.jpg" medium="image">
			<media:title type="html">Carl Zeiss 16-80mm F3.5-4.5</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2576/4011727416_1b1f8bee58.jpg" medium="image">
			<media:title type="html">ZEISS lens cap</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2574/4010962053_0259dc923f.jpg" medium="image">
			<media:title type="html">SONY 62mm MC Protector with Carl Zeiss T* Coating</media:title>
		</media:content>
	</item>
	</channel>
</rss>
