<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sinkpoint</title>
	<atom:link href="http://sinkpoint.railsplayground.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://sinkpoint.railsplayground.net</link>
	<description></description>
	<lastBuildDate>Mon, 16 Apr 2012 18:06:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>SQLite Index is essential</title>
		<link>http://sinkpoint.railsplayground.net/sqlite-index-is-essential/</link>
		<comments>http://sinkpoint.railsplayground.net/sqlite-index-is-essential/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 17:58:30 +0000</pubDate>
		<dc:creator>sinkpoint</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://sinkpoint.railsplayground.net/?p=223</guid>
		<description><![CDATA[Here&#8217;s something that is so obvious that I can&#8217;t believe no one is screaming about it. Create and use indexes on tables are an absolutely essential part of SQLite utilization on android. I came across this when I had to optimize the loading time for over 10,000 stops across 300+ directions on 177 routes, and [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s something that is so obvious that I can&#8217;t believe no one is screaming about it.</p>
<p>Create and use indexes on tables are an absolutely essential part of SQLite utilization on android.</p>
<p>I came across this when I had to optimize the loading time for over 10,000 stops across 300+ directions on 177 routes, and god knows how many GPS points for drawing each route in NextTTC. Slow loading times was not obvious when the relationships are not complex and can be referenced by the primary key. However the NextBus data for TTC decided that each stop/direction/route should be uniquely identified by a string tag rather than an integer ID, making join queries a slow and dreary affair.</p>
<p>The problem is compounded by the fact that SQLite implementation on Android 2.1 (and presumably earlier, I could be wrong; This is tested with HTC Magic, but there are <a href="https://groups.google.com/group/android-developers/browse_thread/thread/dac28b9c61c037b8?pli=1#" target="_blank">reports</a> of this happening on HTC Hero) is an ungodly abomination that hangs Cursor.moveToNext() until time immortal whenever a JOIN statement is used. Therefore, for compatibility with earlier devices, JOIN statements in SQL queries should not be used at all (!). Even then, database performance on older devices like the Magic is horrendously slow.</p>
<p>The solution is to create indices for the tables involved in these queries. For example stop.tag is often used for reference from other tables, but is not the primary key, so an index should be created on it by using CREATE INDEX tagx ON stop(tag). There&#8217;s no need to use tagx in any of the existing queries, SQLite will take care of the changes on its own, and the performance is now blazing fast even on HTC Magic.</p>
<p>I now won&#8217;t leave home without Indices in tables.</p>
]]></content:encoded>
			<wfw:commentRss>http://sinkpoint.railsplayground.net/sqlite-index-is-essential/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Next TTC</title>
		<link>http://sinkpoint.railsplayground.net/next-ttc/</link>
		<comments>http://sinkpoint.railsplayground.net/next-ttc/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 20:24:23 +0000</pubDate>
		<dc:creator>sinkpoint</dc:creator>
				<category><![CDATA[Android Apps]]></category>

		<guid isPermaLink="false">http://www.sinkpoint.com/?p=168</guid>
		<description><![CDATA[Tired of missing TTC street cars? NextTTC uses the Toronto Transit Commission's next available vehicle real time data to inquire about TTC arrival times.]]></description>
			<content:encoded><![CDATA[<p><a href="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/screenshot1.png"><img class="alignleft size-thumbnail wp-image-209" title="nextTTC_screenshot1" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/screenshot1-84x150.png" alt="" width="84" height="150" /></a>NextTTC uses the Toronto Transit Commission&#8217;s next available vehicle real time data to inquire about TTC arrival times.<br />
You can get arrival information from the transit stop numbers found at each stop location, without the cost of sending a SMS.<br />
Save commonly used stops, and check current vehicle locations on Google maps.<br />
Never be frustrated with TTC again!</p>
<h3>Features</h3>
<ul>
<li>Real time access to TTC arrival time</li>
<li>Save frequent stops for fast look ups.</li>
<li>Browse TTC stops on Google maps</li>
<li>Map real time streetcar vehicle GPS locations</li>
</ul>
<h3>Download</h3>
<div><a href="http://play.google.com/store/apps/details?id=com.sinkpoint.nextTTC"><br />
<img src="http://www.android.com/images/brand/get_it_on_play_logo_large.png" alt="Get it on Google Play" /><br />
</a>
</div>
<h3>Screenshots</h3>
<div>

<a href='http://sinkpoint.railsplayground.net/next-ttc/logo_256/' title='nextTTC_logo'><img width="150" height="150" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/logo_256-150x150.png" class="attachment-thumbnail" alt="nextTTC_logo" title="nextTTC_logo" /></a>
<a href='http://sinkpoint.railsplayground.net/next-ttc/screenshot1/' title='nextTTC_screenshot1'><img width="84" height="150" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/screenshot1-84x150.png" class="attachment-thumbnail" alt="nextTTC_screenshot1" title="nextTTC_screenshot1" /></a>
<a href='http://sinkpoint.railsplayground.net/next-ttc/screenshot2/' title='nextTTC_screenshot2'><img width="84" height="150" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/screenshot2-84x150.png" class="attachment-thumbnail" alt="nextTTC_screenshot2" title="nextTTC_screenshot2" /></a>
<a href='http://sinkpoint.railsplayground.net/next-ttc/screenshot4/' title='screenshot4'><img width="84" height="150" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/screenshot4-84x150.png" class="attachment-thumbnail" alt="screenshot4" title="screenshot4" /></a>
<a href='http://sinkpoint.railsplayground.net/next-ttc/screenshot8/' title='screenshot8'><img width="90" height="150" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/screenshot8-90x150.png" class="attachment-thumbnail" alt="screenshot8" title="screenshot8" /></a>

</div>
]]></content:encoded>
			<wfw:commentRss>http://sinkpoint.railsplayground.net/next-ttc/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Pagination, deep sort, and HABTM</title>
		<link>http://sinkpoint.railsplayground.net/cakephp-pagination-deep-sort-and-habtm/</link>
		<comments>http://sinkpoint.railsplayground.net/cakephp-pagination-deep-sort-and-habtm/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 22:04:48 +0000</pubDate>
		<dc:creator>sinkpoint</dc:creator>
				<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[habtm]]></category>

		<guid isPermaLink="false">http://www.sinkpoint.com/?p=156</guid>
		<description><![CDATA[Here's a problem that had me scratching my head for hours.

Creating views with HABTM relationships should be a bread-and-butter task in any web application. So you'd think Cakephp has made the workflow as intuitive as possible, but what a headache.]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a problem that had me scratching my head for hours.</p>
<p>Creating views with HABTM relationships should be a  bread-and-butter task in any web application. So you&#8217;d think <a href="http://cakephp.org/">Cakephp</a> has made the workflow as intuitive as possible, but what a headache.</p>
<p>The standard method of HABTM queries in the <a href="http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM">documentation</a> seems intuitive enough at first glance. And this is the approach I&#8217;ve used for a while.</p>
<pre class="brush:php">$this-&gt;Recipe-&gt;bindModel(array('hasOne' =&gt; array('RecipesTag')));
$this-&gt;Recipe-&gt;find('all', array(
'fields' =&gt; array('Recipe.*'),
'conditions'=&gt;array('RecipesTag.tag_id'=&gt;124) // id of Dessert
));</pre>
<p>That is until I needed to be able to sort the resulting table by the deeper associations with pagination. In which case something like:</p>
<pre class="brush:php">$paginator-&gt;sort('Condition','Disorder.condition_id');</pre>
<p>Where Disorder is a deep associated table two levels down, is going to return the error that the column Disorder.condition cannot be found.</p>
<p>The problem is that the table disorders is not part of FROM in the statement generated by Cakephp. Forcing a <code>$Model-&gt;recursive = 2</code> does nothing.</p>
<p>The standard solution is elusive enough that a search on Stackoverflow shows people repeating the same incorrect recommendations over and over again. The most elegant solution would&#8217;ve been to use <a href="http://book.cakephp.org/view/1323/Containable">Containable</a>, but its &#8220;conditions&#8221; filter returns tuplets with empty results. Apperantly it&#8217;s a <a href="http://groups.google.com/group/cake-php/browse_thread/thread/f649c3b2c74bc8e2">deliberate design decision</a>. We are supposed to filter out the empty tuplets ourselves. This is all fine and dandy, except that will cause problem with the pagination page counter!</p>
<p>The recommendation is to use on-the-fly associations. But honestly, why should I relearn a completely different set of of abstraction just to do something I can do so much faster with regular SQL queries?</p>
<p>The solution I came up with is to manually state <a href="http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM#!/view/1047/Joining-tables">my own joins</a>. Not very flashy, but it gets the job done, and $paginator-&gt;sort() works the way one would expect.</p>
<p>Here&#8217;s some code:</p>
<pre class="brush:php">		$this-&gt;Project-&gt;Patient-&gt;recursive = -1;

		$this-&gt;paginate['Patient']['joins'] = array(
				array(
					'table' =&gt; 'patients_projects',
					'alias' =&gt; 'PatientsProject',
					'type' =&gt; 'inner',
					'conditions' =&gt; array('Patient.id = PatientsProject.patient_id')
				),
				array(
					'table' =&gt; 'projects',
					'alias' =&gt; 'Project',
					'type' =&gt; 'inner',
					'conditions' =&gt; array('PatientsProject.project_id = Project.id')
				),
				array(
					'table' =&gt; 'disorders',
					'alias' =&gt; 'Disorder',
					'type' =&gt; 'left outer',
					'conditions' =&gt; array('Patient.id = Disorder.patient_id')
				),
				array(
					'table' =&gt; 'conditions',
					'alias' =&gt; 'Condition',
					'type' =&gt; 'left outer',
					'conditions' =&gt; array('Condition.id = Disorder.condition_id')
				)
			);
		$options = array('PatientsProject.project_id' =&gt; $id);
		$this-&gt;set('patients', $this-&gt;paginate('Patient', $options));</pre>
<p>And in the view, you can sort as thus:</p>
<pre class="brush:php">sort('firstName'); ?&gt;
sort('lastName'); ?&gt;
sort('gender'); ?&gt;
sort('age','birthday'); ?&gt;
sort('Condition','Disorder.condition_id');?&gt;
sort('hemisphere','Disorder.hemisphere'); ?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://sinkpoint.railsplayground.net/cakephp-pagination-deep-sort-and-habtm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fix Camera.setPreview() crash</title>
		<link>http://sinkpoint.railsplayground.net/fix-camera-setpreview-crash/</link>
		<comments>http://sinkpoint.railsplayground.net/fix-camera-setpreview-crash/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 21:01:20 +0000</pubDate>
		<dc:creator>sinkpoint</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.sinkpoint.com/?p=145</guid>
		<description><![CDATA[I was playing around with the camera capabilities in one of my apps when I encountered repeated crashes with error on my HTC Magic:

It seems that when the screen orientation changed, the reported preview dimension did not synchronize with the new rotated screen size. I tried many different approaches to ensure that the dimension was was properly set, to no avail.

There is a report of the issue <a href="http://code.google.com/p/android/issues/detail?id=7909">here</a>. It seems to be an issue with API version 7 (android 2.1 update) on HTC phones. The solution is to simply not call the Camera.setPreview().]]></description>
			<content:encoded><![CDATA[<p>I was playing around with the camera capabilities in one of my apps when I encountered repeated crashes with error on my HTC Magic:</p>
<pre>java.lang.RuntimeException: startPreview
failed at android.hardware.Camera.startPreview(Native Method)</pre>
<p>It seems that when the screen orientation changed, the reported preview dimension did not synchronize with the new rotated screen size. I tried many different approaches to ensure that the dimension was was properly set, to no avail.</p>
<p>There is a report of the issue <a href="http://code.google.com/p/android/issues/detail?id=7909">here</a>. It seems to be an issue with API version 7 (android 2.1 update) on HTC phones. The solution is to simply not call the Camera.setPreview().</p>
<p>So a working ( albeit a bit hacky ) solution would be:</p>
<pre class="brush:java;tab-size:4" >
private void startCamera(int width, int height) {
	if ( _isPreview == true )
	{
		camera.stopPreview();
	}

	Camera.Parameters params = camera.getParameters();
	// * Should set the preview size, but crashes on android 2.1
	// removing it make it work
	// http://code.google.com/p/android/issues/detail?id=7909
	//
	//params.setPreviewSize(width, height);
	params.setPictureFormat(PixelFormat.JPEG);
	camera.setParameters(params);
	camera.startPreview();
	_isPreview = true;
}

protected void onPause() {
	super.onPause();
	stopCamera();
	_paused = true;
}

private void stopCamera() {
	if ( camera != null )
	{
		camera.stopPreview();
		camera.release();
		camera = null;
		_isPreview = false;
	}
}
</pre>
<p>If you absolutely must set a preview size. I heard from the grapevines that calling Camera.stopPreview() before setting the preview size should fix the problem. But I already tried this and it doesn&#8217;t seem to work. However reloading the Camera object may be another approach. I have not tried it yet, let me know if it works.</p>
]]></content:encoded>
			<wfw:commentRss>http://sinkpoint.railsplayground.net/fix-camera-setpreview-crash/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sword of King Yue</title>
		<link>http://sinkpoint.railsplayground.net/sword-of-king-yue/</link>
		<comments>http://sinkpoint.railsplayground.net/sword-of-king-yue/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 07:33:43 +0000</pubDate>
		<dc:creator>sinkpoint</dc:creator>
				<category><![CDATA[Oblivion]]></category>
		<category><![CDATA[mod]]></category>

		<guid isPermaLink="false">http://www.sinkpoint.com/?p=135</guid>
		<description><![CDATA[This mod adds a new weapon: YueWang Jian &#8212; A single handed blade that is created after the real weapon that was excavated in China in the 1960s. Here&#8217;s a short description of the weapon: Bronze weapon of King Goujian (ruled 496-465 BC) of the State of Yue of the Warring States Period. The 8 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sinkpoint.com/wordpress/wp-content/uploads/3657-1-1208879134_cr.jpg"><img class="alignright size-thumbnail wp-image-117" title="yuewang_sample" src="http://www.sinkpoint.com/wordpress/wp-content/uploads/3657-1-1208879134_cr-75x150.jpg" alt="" width="75" height="150" /></a>This mod adds a new weapon: YueWang Jian &#8212; A single handed blade that is created after the real weapon<br />
that was excavated in China in the 1960s.</p>
<p>Here&#8217;s a short description of the weapon:</p>
<p>Bronze  weapon of King Goujian (ruled 496-465 BC) of the State of Yue of  the  Warring States Period. The 8 archaic Chinese characters of gold  inlay on  the sword state: &#8220;Sword made for King Goujian of Yue, for his  personal  use.&#8221;</p>
<p><a href="http://www.sinkpoint.com/wordpress/wp-content/uploads/goujian.jpg"><img class="size-thumbnail wp-image-137 alignleft" title="goujian" src="http://www.sinkpoint.com/wordpress/wp-content/uploads/goujian-66x150.jpg" alt="" width="66" height="150" /></a>One hypothesis speculates that this distal-tapered sword  was made by  coating a bronze alloy layer (with a very high tin content)  all over a  typical bronze sword, after which the careful scraping or  removal of  the outer coating in geometric lines was done to reveal the  underlying  surface, thereby creating the look of tortoise shell-shaped  geometric  patterns on the sword. Others speculate that the sword was  cast and  then work-finished, exhibiting a sophisticated method of  laminated  construction yet to be understood.</p>
<p>What&#8217;s amazing about  the weapon was that the sophisticated  anti-corrosive coating prevented  it rusting even after being buried  underground for more than 2000 years!  The blade was razer sharp when it  was excavated, and is a great example  of the zenith of Chinese bronze  weapon worksmanship.</p>
<h3>Mod details</h3>
<p>I  made the weapon&#8217;s weight to be identical to that of an Iron  Longsword,  and to have a damage <a href="http://www.sinkpoint.com/wordpress/wp-content/uploads/3657-4-1246148189.jpg"><img class="alignright size-thumbnail wp-image-118" title="yuewang_screenshot" src="http://www.sinkpoint.com/wordpress/wp-content/uploads/3657-4-1246148189-150x120.jpg" alt="" width="150" height="120" /></a>slightly higher than a Steel Longsword.</p>
<p>It  can be found in the weapons chest in Weynon Priory, as well as in  the  resting chamber of the West Hall in Cloud Ruler Temple.</p>
<p>Update 1.1</p>
<p>Added a new generic bronze sword. The new weapon,  called &#8220;Warring States Bronze Sword&#8221;, can be found in the old locations  were the 1.0 Yuewang jian was placed &#8212; weapons chest in Weynon Priory,  as well as in the resting chamber of the West Hall in Cloud Ruler  Temple. It can also be found in weapon shops, as will as a loot.</p>
<p>It has the same stats as the 1.0 Yuewang jian:</p>
<p>Weight: 18<br />
Value: 368<br />
Health: 200<br />
Damage: 15</p>
<p>The original Yuewang jian is now a relic. It can be found in the treasure room in the Pale Pass ruin (Bruma relic hunt quest). It has been renamed to the more historically accurate name of &#8220;Jian of King Goujian&#8221;.</p>
<p>It&#8217;s stats has been upgraded to just a little better than an Ebony longsword:</p>
<p>Weight: 20<br />
Value: 1800<br />
Health: 600<br />
Damage: 23</p>
<p>*Note  that the new mod file might not be compatible with the old one, if your  weapon disappears from your inventory, go back to their original  locations to get them.</p>
<h1><a href="http://www.tesnexus.com/downloads/file.php?id=3657">Download</a></h1>
<h3>Installation</h3>
<p>Extract the content of the files to the Oblivion/Data directory. The paths should be preserved.</p>
]]></content:encoded>
			<wfw:commentRss>http://sinkpoint.railsplayground.net/sword-of-king-yue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Suburban Life</title>
		<link>http://sinkpoint.railsplayground.net/more-suburban-life/</link>
		<comments>http://sinkpoint.railsplayground.net/more-suburban-life/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 07:06:31 +0000</pubDate>
		<dc:creator>sinkpoint</dc:creator>
				<category><![CDATA[Oblivion]]></category>
		<category><![CDATA[mod]]></category>

		<guid isPermaLink="false">http://www.sinkpoint.com/?p=127</guid>
		<description><![CDATA[More Suburban Life aims to add more civilizations surrounding cultural centers to create a better illusion of a prosperous empire. The entire Weye area is revamped. A market, tavern and a few homes are added to the area. 8 NPCs are added with their own schedules and relationships. Some voice overs are added as well. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sinkpoint.com/wordpress/wp-content/uploads/MSL1.jpg"><img class="alignright size-thumbnail wp-image-122" title="suburban05" src="http://www.sinkpoint.com/wordpress/wp-content/uploads/MSL1-150x112.jpg" alt="" width="150" height="112" /></a>More Suburban Life aims to add more civilizations surrounding cultural  centers to create a better illusion of a prosperous empire.</p>
<p>The entire Weye area is revamped. A market, tavern  and a few  homes are added to the area. 8 NPCs are added with their own  schedules  and relationships. Some voice overs are added as well.</p>
<h1><a href="http://www.tesnexus.com/downloads/file.php?id=16823" target="_blank">Download</a></h1>
<h2>Screenshots</h2>
<p><a href="http://www.sinkpoint.com/wordpress/wp-content/uploads/MSL2.jpg"><img class="alignleft size-thumbnail wp-image-123" title="suburban06" src="http://www.sinkpoint.com/wordpress/wp-content/uploads/MSL2-150x112.jpg" alt="" width="150" height="112" /></a><a href="http://www.sinkpoint.com/wordpress/wp-content/uploads/16823-3-1210746754.jpg"><img class="alignleft size-thumbnail wp-image-121" title="suburban03" src="http://www.sinkpoint.com/wordpress/wp-content/uploads/16823-3-1210746754-150x120.jpg" alt="" width="150" height="120" /></a><a href="http://www.sinkpoint.com/wordpress/wp-content/uploads/16823-1-1210746693.jpg"><img class="alignleft size-thumbnail wp-image-120" title="suburban02" src="http://www.sinkpoint.com/wordpress/wp-content/uploads/16823-1-1210746693-150x120.jpg" alt="" width="150" height="120" /></a><a href="http://www.sinkpoint.com/wordpress/wp-content/uploads/16823-2-1210746694.jpg"><img class="alignleft size-thumbnail wp-image-119" title="suburban01" src="http://www.sinkpoint.com/wordpress/wp-content/uploads/16823-2-1210746694-150x120.jpg" alt="" width="150" height="120" /></a></p>
<h3>Version History</h3>
<p>1.01<br />
A possible conflict with Thief&#8217;s Guild quest is fixed.</p>
<p>1.0<br />
Finished expanding Weye.</p>
<p>0.1<br />
Expanded the Wawnet Inn exterior that&#8217;s right outside the Talos bridge.</p>
]]></content:encoded>
			<wfw:commentRss>http://sinkpoint.railsplayground.net/more-suburban-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oblivion Martial Arts</title>
		<link>http://sinkpoint.railsplayground.net/oblivion-martial-arts/</link>
		<comments>http://sinkpoint.railsplayground.net/oblivion-martial-arts/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 06:58:07 +0000</pubDate>
		<dc:creator>sinkpoint</dc:creator>
				<category><![CDATA[Oblivion]]></category>
		<category><![CDATA[mod]]></category>

		<guid isPermaLink="false">http://www.sinkpoint.com/?p=116</guid>
		<description><![CDATA[This is an animation replacement mod for Elder Scrolls: Oblivion. It aims to completely replace the boring hand-to-hand animation with more exiting martial art moves.]]></description>
			<content:encoded><![CDATA[<p>This is an animation replacement mod for Elder Scrolls: Oblivion. It aims to completely replace the boring hand-to-hand animation with more exiting martial art moves.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/ziHDE9NOaZ0&amp;hl=en" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/ziHDE9NOaZ0&amp;hl=en" wmode="transparent"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/PtHK3GpZDzI&amp;hl=en" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/PtHK3GpZDzI&amp;hl=en" wmode="transparent"></embed></object></p>
<h3>Animations replaced:</h3>
<p>Right and left hooks<br />
stationary power attack -&gt; hard cross<br />
forward power attack -&gt; advancing side kick<br />
backward power attack -&gt; spinning low sweep.<br />
blocking<br />
block attack -&gt; flying left elbow<br />
stationary power skill -&gt; strong back fist.<br />
forward power attack skill -&gt; flying spining back kick</p>
<p><strong>*Note</strong><br />
armors with leg meshes will be needed to see legs in 1st person view.<br />
If default views are preferred, remove the corresponding .kf files in Data/meshes/characters/_1stperson</p>
<h1><a href="http://www.tesnexus.com/downloads/file.php?id=16746">Download</a></h1>
<h3>Installation</h3>
<p>Extract to the Oblivion/Data directory.</p>
<p>If you want to try the 1st person animations, copy the files in the<br />
Sinkpoint_1stperson folder to meshes/characters/_1stperson/</p>
<p>Be warned that they are currently problematic and will exhibit mesh<br />
clipping.</p>
<h3>Version History</h3>
<p>1.0</p>
<ul>
<li>Redone all 1st person animations. Problem with mesh clipping should be fixed.</li>
<li>All handtohand animations are now replaced.</li>
</ul>
<p>0.2</p>
<ul>
<li>All stances are more squared, eliminating problem with shoulder mesh distortion.</li>
<li>Animations tweaked, no more sliding feet and position jumping.</li>
<li>Added new animation for block attack-&gt; flying left elbow</li>
<li>Tweaked strong back fist animation to be more dynamic.</li>
<li>Tweaked timing on left hook to be a little faster.</li>
<li>Tweaked forward jumping distance for flying spinning back kick.</li>
<li>1st person animations are now not installed by default.</li>
</ul>
<p>0.1</p>
<p>first release. Added these animations:</p>
<ul>
<li>Right and left hooks</li>
<li>stationary power attack -&gt; hard cross</li>
<li>forward power attack -&gt; advancing side kick</li>
<li>blocking</li>
<li>block attack -&gt; strong back fist.</li>
<li>stationary power skill -&gt; strong back fist.</li>
<li>forward power attack skill -&gt; advancing spining back kick</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://sinkpoint.railsplayground.net/oblivion-martial-arts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>HIIT IT Workout Timer</title>
		<link>http://sinkpoint.railsplayground.net/hiit-it-workout-timer/</link>
		<comments>http://sinkpoint.railsplayground.net/hiit-it-workout-timer/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 20:06:11 +0000</pubDate>
		<dc:creator>sinkpoint</dc:creator>
				<category><![CDATA[Android Apps]]></category>
		<category><![CDATA[app]]></category>

		<guid isPermaLink="false">http://localhost/spwordpress/?p=27</guid>
		<description><![CDATA[Needs a workout timer that can switch between completely different workout sets effortlessly?
HIIT IT Pro is the best High intensity interval training (HIIT) timer on android for serious training.]]></description>
			<content:encoded><![CDATA[<p><a href="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/v10_02.png"><img class="alignleft size-thumbnail wp-image-218" title="v10_02" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/v10_02-100x150.png" alt="" width="100" height="150" /></a>The Best workout timer on android. With auto voice alerts.<br />
Create unique workouts!</p>
<p>Needs a workout timer that can switch between completely different workout sets effortlessly?<br />
HIIT IT Pro is the best High intensity interval training (HIIT) timer on android for serious training.<br />
Ideal for weights, HIIT, tabata, martial arts, MMA, weight loss, and more.<br />
All of your needs can be met with the customizable intervals that can be reordered, and each with its own unique alarm.</p>
<p>Automatic voice alerts helps to notify you of the interval progression.<br />
HIIT IT Pro is the ultimate timer to create unique workouts.</p>
<h3>Download</h3>
<h4>HIIT IT Pro</h4>
<p><a href="http://play.google.com/store/apps/details?id=com.sinkpoint.timerpro"> <img src="http://www.android.com/images/brand/get_it_on_play_logo_large.png" alt="Get it on Google Play" /></a></p>
<h4>HIIT IT Lite</h4>
<p><a href="http://play.google.com/store/apps/details?id=com.sinkpoint.timer"> <img src="http://www.android.com/images/brand/android_app_on_play_logo_large.png" alt="Android app on Google Play" /></a></p>
<h3></h3>
<h3>Features</h3>
<ul>
<li>Profile support</li>
<li>customize intervals</li>
<li>customize colors</li>
<li>customize alerts</li>
<li>customize auto voice settings</li>
</ul>
<h3>Screenshots</h3>
<div>

<a href='http://sinkpoint.railsplayground.net/hiit-it-workout-timer/workout_pro_256/' title='workout_pro_256'><img width="150" height="150" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/workout_pro_256-150x150.png" class="attachment-thumbnail" alt="workout_pro_256" title="workout_pro_256" /></a>
<a href='http://sinkpoint.railsplayground.net/hiit-it-workout-timer/v10_02/' title='v10_02'><img width="100" height="150" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/v10_02-100x150.png" class="attachment-thumbnail" alt="v10_02" title="v10_02" /></a>
<a href='http://sinkpoint.railsplayground.net/hiit-it-workout-timer/v10_03/' title='v10_03'><img width="100" height="150" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/v10_03-100x150.png" class="attachment-thumbnail" alt="v10_03" title="v10_03" /></a>
<a href='http://sinkpoint.railsplayground.net/hiit-it-workout-timer/v10_04/' title='v10_04'><img width="100" height="150" src="http://sinkpoint.railsplayground.net/wordpress/wp-content/uploads/v10_04-100x150.png" class="attachment-thumbnail" alt="v10_04" title="v10_04" /></a>

</div>
]]></content:encoded>
			<wfw:commentRss>http://sinkpoint.railsplayground.net/hiit-it-workout-timer/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Coloured volumetric shadows with Mental Ray</title>
		<link>http://sinkpoint.railsplayground.net/coloured-volumetric-shadows-with-mental-ray-2/</link>
		<comments>http://sinkpoint.railsplayground.net/coloured-volumetric-shadows-with-mental-ray-2/#comments</comments>
		<pubDate>Mon, 12 Jun 2006 14:27:00 +0000</pubDate>
		<dc:creator>sinkpoint</dc:creator>
				<category><![CDATA[Maya]]></category>
		<category><![CDATA[rendering]]></category>

		<guid isPermaLink="false">http://localhost/spwordpress/archives/86</guid>
		<description><![CDATA[Here is a good tutorial on how to set up volumetric lights with Mental Ray. 
It's important to note that the shadow colour is affected by the _transparency_ attribute of the shadowing object's shader, rather than the _colour_ attribute. This has cost me a lot of headaches to figure out.]]></description>
			<content:encoded><![CDATA[<p>Here is a good tutorial on how to set up volumetric lights with Mental Ray:<br />
<a href="http://www.jhavna.net/main.php?page=scatter/">http://www.jhavna.net/main.php?page=scatter/</a></p>
<p>It&#8217;s important to note that the shadow colour is affected by the _transparency_ attribute of the shadowing object&#8217;s shader, rather than the _colour_ attribute. This has cost me a lot of headaches to figure out.</p>
]]></content:encoded>
			<wfw:commentRss>http://sinkpoint.railsplayground.net/coloured-volumetric-shadows-with-mental-ray-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Indexing into MFnMesh::getBinormals?</title>
		<link>http://sinkpoint.railsplayground.net/indexing-into-mfnmeshgetbinormals-2/</link>
		<comments>http://sinkpoint.railsplayground.net/indexing-into-mfnmeshgetbinormals-2/#comments</comments>
		<pubDate>Thu, 23 Mar 2006 15:36:00 +0000</pubDate>
		<dc:creator>sinkpoint</dc:creator>
				<category><![CDATA[Maya]]></category>
		<category><![CDATA[API]]></category>

		<guid isPermaLink="false">http://localhost/spwordpress/archives/85</guid>
		<description><![CDATA[Category: API MFnMesh::getBinormals dumps a mesh&#8217;s binormals into a MFloatVectorArray, but its length is different from getNormals&#8216;. How do you index into this array? You can&#8217;t. There&#8217;s one binormal for each vertex-face pair. So if a vertex is shared by 4 faces, then it will have 4 binormals. getBinormals will go through all the vertices [...]]]></description>
			<content:encoded><![CDATA[<p class="category">Category: API</p>
<p><span style="font-size:85%;"><span style="font-family: courier new;">MFnMesh::getBinormals</span></span> dumps a mesh&#8217;s binormals into a <span style="font-size:85%;"><span style="font-family: courier new;">MFloatVectorArray</span></span>, but its length is different from <span style="font-size:85%;"><span style="font-family: courier new;">getNormals</span></span>&#8216;. How do you index into this array? You can&#8217;t. There&#8217;s one binormal for each vertex-face pair. So if a vertex is shared by 4 faces, then it will have 4 binormals. <span style="font-size:85%;"><span style="font-family: courier new;">getBinormals</span></span> will go through all the vertices in the mesh in order, and output all their binormals in this long one-dimensional array. Therefore there is no way to index into this array without knowing the mesh&#8217;s topology beforehand.</p>
<p>Use <span style="font-size:85%;"><span style="font-family: courier new;">getFaceVertexBinormals</span></span> instead.</p>
<p>Then what&#8217;s the purpose for this function? It can be handy to be use it to dump all the binormal data to a file for exporting.</p>
<p>The samething goes for <span style="font-size:85%;"><span style="font-family: courier new;">getTangents</span></span>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sinkpoint.railsplayground.net/indexing-into-mfnmeshgetbinormals-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

