<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments for Manuel's Coding Blog</title>
	<atom:link href="http://manuel.bit-fire.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://manuel.bit-fire.com</link>
	<description>...coding, development and everything else</description>
	<lastBuildDate>Sun, 22 Nov 2009 19:59:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Introducing WonderSharper by Manuel</title>
		<link>http://manuel.bit-fire.com/2009/07/26/introducing-wondersharper/comment-page-1/#comment-14946</link>
		<dc:creator>Manuel</dc:creator>
		<pubDate>Sun, 22 Nov 2009 19:59:32 +0000</pubDate>
		<guid isPermaLink="false">http://manuel.bit-fire.com/?p=239#comment-14946</guid>
		<description>I just tested it now and it take 38 seconds on the i7 to compute all three maps on a 50%-scaled input, making use of the above optimizations, thus with an accuracy of 5e-02 on the first map and 1e-02 on the subsequent two maps.
Keep in mind that i&#039;m not able at this time to push all the 4+4 cores at work, it stays at 50/60%, so there is still room for improvement: too bad i can&#039;t remember the exact settings for having the i7 do the same results in 28s, but i remeber i got it by adjusting lambda/alpha coefficients, as you already noticed the processing time roughly doubles as doubling the smoothing scale.
The factory settings of my application are Sm(oothing)/Sh(arpness)/Err(or) this way:

	fine map:   0.1&#124;1.2&#124;5e-02
	mid map:    0.4&#124;1.4&#124;1e-02
	coarse map: 0.5&#124;1.8&#124;1e-02

I also noticed the fine/mid map params are good to be kept the same for most of the images i tried, the coarse params, instead, it seems a lot of different and good-looking variations can be achieved just manipulating its lambda/alpha between the nominal 0.5&#124;1.8 and 0.7&#124;1.7; the time spent on the coarse map will vary a lot between choosing a lambda=0.5&#124;0.7.

I never tried the multigrid approach and unfortunately i don&#039;t think i&#039;ll have the time to work it out soon but given the genericity of the math engine you are working on, you may be very well interested into &quot;edge-avoiding wavelets&quot;, that some sort of second-generation wavelets.
I recall that recently there was a work in the MRA field that depicted how WLS filtering can be done and implemented with wavelets, basically it can be achieved multiscale edge-preserving filtering at computation times which are linear to the number of pixels, avoiding the need for solving large systems of equations: i&#039;ve still not studied the paper [1] yet (there is a lot of stuff going on here!) but Fattal himself states and demonstrates it&#039;s robust enough.


------------
[1] Raanan Fattal, &quot;Edge-Avoiding Wavelets and their Applications&quot; (&lt;a href=&quot;http://www.cs.huji.ac.il/~raananf/projects/eaw/index.html&quot; rel=&quot;nofollow&quot;&gt;http://www.cs.huji.ac.il/~raananf/projects/eaw/index.html&lt;/a&gt;)</description>
		<content:encoded><![CDATA[<p>I just tested it now and it take 38 seconds on the i7 to compute all three maps on a 50%-scaled input, making use of the above optimizations, thus with an accuracy of 5e-02 on the first map and 1e-02 on the subsequent two maps.<br />
Keep in mind that i&#8217;m not able at this time to push all the 4+4 cores at work, it stays at 50/60%, so there is still room for improvement: too bad i can&#8217;t remember the exact settings for having the i7 do the same results in 28s, but i remeber i got it by adjusting lambda/alpha coefficients, as you already noticed the processing time roughly doubles as doubling the smoothing scale.<br />
The factory settings of my application are Sm(oothing)/Sh(arpness)/Err(or) this way:</p>
<p>	fine map:   0.1|1.2|5e-02<br />
	mid map:    0.4|1.4|1e-02<br />
	coarse map: 0.5|1.8|1e-02</p>
<p>I also noticed the fine/mid map params are good to be kept the same for most of the images i tried, the coarse params, instead, it seems a lot of different and good-looking variations can be achieved just manipulating its lambda/alpha between the nominal 0.5|1.8 and 0.7|1.7; the time spent on the coarse map will vary a lot between choosing a lambda=0.5|0.7.</p>
<p>I never tried the multigrid approach and unfortunately i don&#8217;t think i&#8217;ll have the time to work it out soon but given the genericity of the math engine you are working on, you may be very well interested into &#8220;edge-avoiding wavelets&#8221;, that some sort of second-generation wavelets.<br />
I recall that recently there was a work in the MRA field that depicted how WLS filtering can be done and implemented with wavelets, basically it can be achieved multiscale edge-preserving filtering at computation times which are linear to the number of pixels, avoiding the need for solving large systems of equations: i&#8217;ve still not studied the paper [1] yet (there is a lot of stuff going on here!) but Fattal himself states and demonstrates it&#8217;s robust enough.</p>
<p>&#8212;&#8212;&#8212;&#8212;<br />
[1] Raanan Fattal, &#8220;Edge-Avoiding Wavelets and their Applications&#8221; (<a href="http://www.cs.huji.ac.il/~raananf/projects/eaw/index.html" rel="nofollow">http://www.cs.huji.ac.il/~raananf/projects/eaw/index.html</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Introducing WonderSharper by algorithm_implementer</title>
		<link>http://manuel.bit-fire.com/2009/07/26/introducing-wondersharper/comment-page-1/#comment-14945</link>
		<dc:creator>algorithm_implementer</dc:creator>
		<pubDate>Sun, 22 Nov 2009 19:10:21 +0000</pubDate>
		<guid isPermaLink="false">http://manuel.bit-fire.com/?p=239#comment-14945</guid>
		<description>Hi Manuel,

thanks for the detailed and open sharing of your ideas. This is very well appreciated !

I too have been in the process of developing something similar in the context of an image segmentation engine which essentially boils down to the same system of equations to solve.
Your results for 21 Megapixels:
 
&gt; 28 seconds on the i7

are impressive (I assume that this is the time needed to compute all three maps to an solver accuracy of 1e-02).

How much of smoothing (lamnda parameter) do you use for the &quot;coarsest&quot; grained level ?  
The main problem seems to be the fact that processing time increases not only with image resolution alone but also (and even more rapidly) with increasing smoothness factor.

However, in order to achive a complete scale space decomposition, it is desirable to have a very strongly smoothed version at the coarsest level (i.e. nearly as smooth as the completely smoothed, i.e. constant image )
In my experience the processing time roughly doubles with a doubling of the smoothing scale ... 

The typical approach to solve such problems with the slowly converging low-frequency errors would be to use some multigrid variant of the linear solver.
However, after having experiemented a lot with multigrid solvers (adapting the restriction/prolongation operators, algebraic multigrid etc.) there seems to be no significant speed up compared with a well tuned single-grid conjugate gradient solver....

So did you too experiment with the multigrid approach and if so, how did the results turn out ?</description>
		<content:encoded><![CDATA[<p>Hi Manuel,</p>
<p>thanks for the detailed and open sharing of your ideas. This is very well appreciated !</p>
<p>I too have been in the process of developing something similar in the context of an image segmentation engine which essentially boils down to the same system of equations to solve.<br />
Your results for 21 Megapixels:</p>
<p>&gt; 28 seconds on the i7</p>
<p>are impressive (I assume that this is the time needed to compute all three maps to an solver accuracy of 1e-02).</p>
<p>How much of smoothing (lamnda parameter) do you use for the &#8220;coarsest&#8221; grained level ?<br />
The main problem seems to be the fact that processing time increases not only with image resolution alone but also (and even more rapidly) with increasing smoothness factor.</p>
<p>However, in order to achive a complete scale space decomposition, it is desirable to have a very strongly smoothed version at the coarsest level (i.e. nearly as smooth as the completely smoothed, i.e. constant image )<br />
In my experience the processing time roughly doubles with a doubling of the smoothing scale &#8230; </p>
<p>The typical approach to solve such problems with the slowly converging low-frequency errors would be to use some multigrid variant of the linear solver.<br />
However, after having experiemented a lot with multigrid solvers (adapting the restriction/prolongation operators, algebraic multigrid etc.) there seems to be no significant speed up compared with a well tuned single-grid conjugate gradient solver&#8230;.</p>
<p>So did you too experiment with the multigrid approach and if so, how did the results turn out ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Introducing WonderSharper by Manuel</title>
		<link>http://manuel.bit-fire.com/2009/07/26/introducing-wondersharper/comment-page-1/#comment-14941</link>
		<dc:creator>Manuel</dc:creator>
		<pubDate>Sun, 22 Nov 2009 15:21:15 +0000</pubDate>
		<guid isPermaLink="false">http://manuel.bit-fire.com/?p=239#comment-14941</guid>
		<description>Hi,

    thank you for your interest and for writing me: indeed, finding a fast AND reliable solver has been a lot of work since that paper, as you noticed, just remarks something about a &quot;Fast approximate solution&quot; [1], however, i  remember that computing a Cholesky factorization and using that as a preconditioner it was taking more processing time and memory resources than a slightly modified version of a conjugate gradient solver.
I rewrote the CG solver on the lines of OpenTissue&#039;s one in order to be able to 1) parallelize as much computions as possible on multiple cores (i&#039;m still working on it) and 2) to maximize vector/sparse_matrix elements access efficiency, rewriting the &quot;axpy_prod&quot; Boost::ublas [2] helper to address non-zero diagonal elements via an ad-hoc lookup table exploiting the symmetric nature of A, saving a whole lot of memory.

Another interesting &quot;experimental&quot; optimization trick i found out while experimenting, but that has to be used carefully since it directly affect the resulting WLS maps, is built around the fact we need to generate three maps, from the most to the least detailed: the constraint here is to compute the maps in a least-to-most coarse direction, that is, the first map you compute is the &quot;fine&quot;, then the &quot;mid&quot; and then the &quot;coarse&quot;: once the &quot;fine&quot; has been computed we can use the resulting map as a &quot;preconditioning vector&quot; for the subsequent map by converting the &quot;fine&quot; matrix to a vector and using it as the &quot;x&quot; vector for the subsequent &quot;mid&quot; calculation; then repeat the process by using the resulting &quot;mid&quot; wls map as the &quot;preconditioning vector&quot; for the subsequent &quot;coarse&quot; map.
Since this approach accumulate some error terms, i modified the exit condition of the CG to be bound to the error term itself, so that the solver has no more n-iterations to perform but instead has to reach a decent error threshold before exiting: this ensure every generated map has no more than a well-defined error threshold not differing much from other maps.
Although this technique works well in most cases, it still can produce some artifacts if error threshold values are taken to the extreme or the previous maps have been generated with a larger error threshold: usually, computing the &quot;fine&quot; map with a target error threshold of 5e-02 and the subsequent maps with a target error threshold of 1e-02 gives good results without sacrifying much of the details.
The pros: faster on single/dual core processors with as much as 1/1.5gig ram available (4 mins on a p4 2.2ghz for a 21Mpixels, 28 seconds on the i7, Linux 32 and 64 respectively)
The cons: maps need to be generated in series, thus no parallel map generation can be performed (but detecting a powerful machine isn&#039;t difficult so switching between these methods at runtime can be done and proposed to the user).

The last optimization trick that can speed up things *a lot* is to compute the WLS on a scaled resolution input image, and use that concept coupled with a UI slider (ie, &quot;Overall quality&quot;): the idea is to have a min/max going from 50-to-100% of the original resolution and use the scaled resolution image for computing the WLS; the important thing here is to always &quot;linearly interpolate&quot; to compute the scaled resolution image otherwise interpolation artifact (avg, grid, bicubic) may appear strongly in the final tonemapped result (*not* in the wls map).

As a sidenote, i think Intel Math Kernel libraries [4] could be able to solve the linear system (eq. 5) [3] without having to resort to the tricks i&#039;ve mentioned, as well as saturating all cores and minimizing the overhead: however i&#039;ve really never tried the MKL so you may want to give it a try.
My goal wasn&#039;t at all to compete with their or other existing implementations, but instead just to have a look to the beauty of computational photography, it&#039;s intricacies and it&#039;s implications in the photography retouching process.

Hope it helps,
Regards,
Manuel

------------
[1] Dani Lischinski et. al, &quot;Interactive Local Adjustment of Tonal Values&quot;
[2] Boost&#039;s Basic Linear Algebra can be found at http://www.boost.org/doc/libs/1_41_0/libs/numeric/ublas/doc/index.htm
[3] Dani Lischinski et. al, &quot;Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation&quot;
[4] Intel Math Kernel libraries can be found at http://software.intel.com/en-us/intel-mkl/</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>    thank you for your interest and for writing me: indeed, finding a fast AND reliable solver has been a lot of work since that paper, as you noticed, just remarks something about a &#8220;Fast approximate solution&#8221; [1], however, i  remember that computing a Cholesky factorization and using that as a preconditioner it was taking more processing time and memory resources than a slightly modified version of a conjugate gradient solver.<br />
I rewrote the CG solver on the lines of OpenTissue&#8217;s one in order to be able to 1) parallelize as much computions as possible on multiple cores (i&#8217;m still working on it) and 2) to maximize vector/sparse_matrix elements access efficiency, rewriting the &#8220;axpy_prod&#8221; Boost::ublas [2] helper to address non-zero diagonal elements via an ad-hoc lookup table exploiting the symmetric nature of A, saving a whole lot of memory.</p>
<p>Another interesting &#8220;experimental&#8221; optimization trick i found out while experimenting, but that has to be used carefully since it directly affect the resulting WLS maps, is built around the fact we need to generate three maps, from the most to the least detailed: the constraint here is to compute the maps in a least-to-most coarse direction, that is, the first map you compute is the &#8220;fine&#8221;, then the &#8220;mid&#8221; and then the &#8220;coarse&#8221;: once the &#8220;fine&#8221; has been computed we can use the resulting map as a &#8220;preconditioning vector&#8221; for the subsequent map by converting the &#8220;fine&#8221; matrix to a vector and using it as the &#8220;x&#8221; vector for the subsequent &#8220;mid&#8221; calculation; then repeat the process by using the resulting &#8220;mid&#8221; wls map as the &#8220;preconditioning vector&#8221; for the subsequent &#8220;coarse&#8221; map.<br />
Since this approach accumulate some error terms, i modified the exit condition of the CG to be bound to the error term itself, so that the solver has no more n-iterations to perform but instead has to reach a decent error threshold before exiting: this ensure every generated map has no more than a well-defined error threshold not differing much from other maps.<br />
Although this technique works well in most cases, it still can produce some artifacts if error threshold values are taken to the extreme or the previous maps have been generated with a larger error threshold: usually, computing the &#8220;fine&#8221; map with a target error threshold of 5e-02 and the subsequent maps with a target error threshold of 1e-02 gives good results without sacrifying much of the details.<br />
The pros: faster on single/dual core processors with as much as 1/1.5gig ram available (4 mins on a p4 2.2ghz for a 21Mpixels, 28 seconds on the i7, Linux 32 and 64 respectively)<br />
The cons: maps need to be generated in series, thus no parallel map generation can be performed (but detecting a powerful machine isn&#8217;t difficult so switching between these methods at runtime can be done and proposed to the user).</p>
<p>The last optimization trick that can speed up things *a lot* is to compute the WLS on a scaled resolution input image, and use that concept coupled with a UI slider (ie, &#8220;Overall quality&#8221;): the idea is to have a min/max going from 50-to-100% of the original resolution and use the scaled resolution image for computing the WLS; the important thing here is to always &#8220;linearly interpolate&#8221; to compute the scaled resolution image otherwise interpolation artifact (avg, grid, bicubic) may appear strongly in the final tonemapped result (*not* in the wls map).</p>
<p>As a sidenote, i think Intel Math Kernel libraries [4] could be able to solve the linear system (eq. 5) [3] without having to resort to the tricks i&#8217;ve mentioned, as well as saturating all cores and minimizing the overhead: however i&#8217;ve really never tried the MKL so you may want to give it a try.<br />
My goal wasn&#8217;t at all to compete with their or other existing implementations, but instead just to have a look to the beauty of computational photography, it&#8217;s intricacies and it&#8217;s implications in the photography retouching process.</p>
<p>Hope it helps,<br />
Regards,<br />
Manuel</p>
<p>&#8212;&#8212;&#8212;&#8212;<br />
[1] Dani Lischinski et. al, &#8220;Interactive Local Adjustment of Tonal Values&#8221;<br />
[2] Boost&#8217;s Basic Linear Algebra can be found at <a href="http://www.boost.org/doc/libs/1_41_0/libs/numeric/ublas/doc/index.htm" rel="nofollow">http://www.boost.org/doc/libs/1_41_0/libs/numeric/ublas/doc/index.htm</a><br />
[3] Dani Lischinski et. al, &#8220;Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation&#8221;<br />
[4] Intel Math Kernel libraries can be found at <a href="http://software.intel.com/en-us/intel-mkl/" rel="nofollow">http://software.intel.com/en-us/intel-mkl/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Introducing WonderSharper by algorithm_implementer</title>
		<link>http://manuel.bit-fire.com/2009/07/26/introducing-wondersharper/comment-page-1/#comment-14927</link>
		<dc:creator>algorithm_implementer</dc:creator>
		<pubDate>Sat, 21 Nov 2009 19:42:05 +0000</pubDate>
		<guid isPermaLink="false">http://manuel.bit-fire.com/?p=239#comment-14927</guid>
		<description>Very interesting work.

But how did you implement the solver for the large sparse linear system of equations

(I+L)*u=g 

that makes the very heart of the algorithm.

Unfortunately, the authors of the paper don&#039;t give much details about this interesting and by far most difficult to implement aspect of the algorithmt.

Efficient solvers have been described for similar PDE/poisson/laplace type of equations (Gradient domain HDR compression, Poisson inpainting technique etc.).

However in the case of Fattal&#039;s WLS algorithm we have an inhomogeneous poisson equation (i.e. the matrix coefficients are not fixed but dependent on the pixel location) which is much mor difficult to devise
a fast AND reliable solver for.  
Most approaches are heuristic nature and/or come with many knobs&amp;parameters (both of which is especially undesirable in commercial applications)

The only hint that Fattal et. al give in the paper is a short remark that they use a similar solver than  Lischinski et. al in their paper [1].
However, that solver seems to rely on a preconditioned conjugate gradient scheme, i.e. a classical single-grid iterative solver whose run time may be barely sufficient for &quot;100x600ish&quot; kind of image resolutions but seems infeasible for true multi-megapixel images where a true multigrid scheme would be necessary. However, the literature about multigrid methods for inhomogeneuos poisson equations (contrary to the homogeneous case) is very scant and it does not seem that there exists a solver that is

1. fast enough for the kind of multi-megapixel multi-scale responsive feedback
2. reliable, robust and parameter free

So it would be great if you could share some details about the implementation approach that you have found to this problem.

--------------------
[1] Dani Lischinski &quot;Interactive Local Adjustment of Tonal Values&quot;</description>
		<content:encoded><![CDATA[<p>Very interesting work.</p>
<p>But how did you implement the solver for the large sparse linear system of equations</p>
<p>(I+L)*u=g </p>
<p>that makes the very heart of the algorithm.</p>
<p>Unfortunately, the authors of the paper don&#8217;t give much details about this interesting and by far most difficult to implement aspect of the algorithmt.</p>
<p>Efficient solvers have been described for similar PDE/poisson/laplace type of equations (Gradient domain HDR compression, Poisson inpainting technique etc.).</p>
<p>However in the case of Fattal&#8217;s WLS algorithm we have an inhomogeneous poisson equation (i.e. the matrix coefficients are not fixed but dependent on the pixel location) which is much mor difficult to devise<br />
a fast AND reliable solver for.<br />
Most approaches are heuristic nature and/or come with many knobs&amp;parameters (both of which is especially undesirable in commercial applications)</p>
<p>The only hint that Fattal et. al give in the paper is a short remark that they use a similar solver than  Lischinski et. al in their paper [1].<br />
However, that solver seems to rely on a preconditioned conjugate gradient scheme, i.e. a classical single-grid iterative solver whose run time may be barely sufficient for &#8220;100&#215;600ish&#8221; kind of image resolutions but seems infeasible for true multi-megapixel images where a true multigrid scheme would be necessary. However, the literature about multigrid methods for inhomogeneuos poisson equations (contrary to the homogeneous case) is very scant and it does not seem that there exists a solver that is</p>
<p>1. fast enough for the kind of multi-megapixel multi-scale responsive feedback<br />
2. reliable, robust and parameter free</p>
<p>So it would be great if you could share some details about the implementation approach that you have found to this problem.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
[1] Dani Lischinski &#8220;Interactive Local Adjustment of Tonal Values&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on pocketSand v0.8.3 by Manuel</title>
		<link>http://manuel.bit-fire.com/2006/11/15/pocketsand-v083/comment-page-2/#comment-14813</link>
		<dc:creator>Manuel</dc:creator>
		<pubDate>Sun, 01 Nov 2009 22:10:41 +0000</pubDate>
		<guid isPermaLink="false">http://manuel.bit-fire.com/2006/11/15/pocketsand-v083/#comment-14813</guid>
		<description>@bobdaduck
pocketSand has been developed by using a cross-platform framework that&#039;s not intended to be released, thus the game code could be really of little use.
Anyway i&#039;m currently considering opensourcing both the framework, pocketSand and some other things i coded with it, i doubt i&#039;ll have time to maintain this software anymore.</description>
		<content:encoded><![CDATA[<p>@bobdaduck<br />
pocketSand has been developed by using a cross-platform framework that&#8217;s not intended to be released, thus the game code could be really of little use.<br />
Anyway i&#8217;m currently considering opensourcing both the framework, pocketSand and some other things i coded with it, i doubt i&#8217;ll have time to maintain this software anymore.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on pocketSand v0.8.3 by bobdaduck</title>
		<link>http://manuel.bit-fire.com/2006/11/15/pocketsand-v083/comment-page-2/#comment-14812</link>
		<dc:creator>bobdaduck</dc:creator>
		<pubDate>Sun, 01 Nov 2009 19:58:38 +0000</pubDate>
		<guid isPermaLink="false">http://manuel.bit-fire.com/2006/11/15/pocketsand-v083/#comment-14812</guid>
		<description>So.  Best game ever, development has stopped.  I recommend making it open source.  This would mean someone would grab it and continue development, and we would all be happy to see that.  It would also mean that there would suddenly be more then one pocketsand game out there for windows mobile.</description>
		<content:encoded><![CDATA[<p>So.  Best game ever, development has stopped.  I recommend making it open source.  This would mean someone would grab it and continue development, and we would all be happy to see that.  It would also mean that there would suddenly be more then one pocketsand game out there for windows mobile.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Introducing WonderSharper by Davide Barranca</title>
		<link>http://manuel.bit-fire.com/2009/07/26/introducing-wondersharper/comment-page-1/#comment-14479</link>
		<dc:creator>Davide Barranca</dc:creator>
		<pubDate>Wed, 16 Sep 2009 20:04:11 +0000</pubDate>
		<guid isPermaLink="false">http://manuel.bit-fire.com/?p=239#comment-14479</guid>
		<description>Hi Manuel,
nice to see that your developing has gone that far!
I&#039;m looking forward to read more about it - please let me know if you&#039;re in need of beta testing on Mac ;-))
Ciao e buon lavoro,

Davide</description>
		<content:encoded><![CDATA[<p>Hi Manuel,<br />
nice to see that your developing has gone that far!<br />
I&#8217;m looking forward to read more about it &#8211; please let me know if you&#8217;re in need of beta testing on Mac ;-))<br />
Ciao e buon lavoro,</p>
<p>Davide</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on pocketSand v0.8.3 by Kane3162</title>
		<link>http://manuel.bit-fire.com/2006/11/15/pocketsand-v083/comment-page-2/#comment-13826</link>
		<dc:creator>Kane3162</dc:creator>
		<pubDate>Wed, 05 Aug 2009 21:25:37 +0000</pubDate>
		<guid isPermaLink="false">http://manuel.bit-fire.com/2006/11/15/pocketsand-v083/#comment-13826</guid>
		<description>I also would love to see this updated and more options added, I know on some web versions you can stop certain sands from falling (i normally stop salt) thus freeing up resources for more complex contraptions (way to much time put into playing this but I love it on my HTC Titan and HTC Rapheal (Sprint Mogul/TouchPro)</description>
		<content:encoded><![CDATA[<p>I also would love to see this updated and more options added, I know on some web versions you can stop certain sands from falling (i normally stop salt) thus freeing up resources for more complex contraptions (way to much time put into playing this but I love it on my HTC Titan and HTC Rapheal (Sprint Mogul/TouchPro)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Introducing WonderSharper by Manuel</title>
		<link>http://manuel.bit-fire.com/2009/07/26/introducing-wondersharper/comment-page-1/#comment-13789</link>
		<dc:creator>Manuel</dc:creator>
		<pubDate>Mon, 03 Aug 2009 08:14:11 +0000</pubDate>
		<guid isPermaLink="false">http://manuel.bit-fire.com/?p=239#comment-13789</guid>
		<description>Thank you Mike, i&#039;ll let you know for sure!</description>
		<content:encoded><![CDATA[<p>Thank you Mike, i&#8217;ll let you know for sure!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Introducing WonderSharper by Mike Bedford</title>
		<link>http://manuel.bit-fire.com/2009/07/26/introducing-wondersharper/comment-page-1/#comment-13786</link>
		<dc:creator>Mike Bedford</dc:creator>
		<pubDate>Mon, 03 Aug 2009 01:03:48 +0000</pubDate>
		<guid isPermaLink="false">http://manuel.bit-fire.com/?p=239#comment-13786</guid>
		<description>Manuel, very interesting! Please let me know when you have a review copy ready and I&#039;ll take a look.</description>
		<content:encoded><![CDATA[<p>Manuel, very interesting! Please let me know when you have a review copy ready and I&#8217;ll take a look.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
