<?xml version='1.0' encoding='iso-8859-1'?><rss version='0.91'><channel><title>kile ^ stravaganza</title><link>http://kile.stravaganza.org</link><description>kile articles</description><language>en-us</language><copyright>copyright 2010 kile ^ stravaganza</copyright><item><title>Javascript spikeball</title><link>http://kile.stravaganza.org/blog/post/javascript-3d-spikeball</link><description>&lt;p&gt;Few days ago I was speaking with &lt;a href=&quot;http://mrdoob.com/&quot;&gt;mrdoob&lt;/a&gt; about 3d engines and he showed me one of the projects he's working on: &lt;a href=&quot;http://github.com/mrdoob/three.js&quot;&gt;three.js&lt;/a&gt; it's a javascript framework to be able to use the browser canvas to paint 3D stuff :)&lt;/p&gt;
&lt;p&gt;Its sounded funny: 3D... optimization... it's looks &quot;just&quot; like other demoscene plataform.&lt;/p&gt;
&lt;p&gt;So I'm trying to help to improve it and while getting use of the js syntax and so on, here you have a little test I've made (just click on it):&lt;/p&gt;
&lt;a href=&quot;http://kile.stravaganza.org/lab/js/spikeball&quot;&gt;&lt;img src=&quot;images/blog/spikeball.jpg&quot;/&gt;&lt;/a&gt;
&lt;p&gt;Btw, the effect is based on the code of one of our &lt;a href=&quot;http://www.stravaganza.org&quot;&gt;Stravaganza&lt;/a&gt; productions: &lt;a href=&quot;http://www.pouet.net/prod.php?which=7086&quot;&gt;This way&lt;/a&gt; (64kb version also available &lt;a href=&quot;http://www.pouet.net/prod.php?which=16676&quot;&gt;here&lt;/a&gt;)
</description><pubDate>Sun, 16 May 2010 17:19:11 -0700</pubDate></item><item><title>SOMVis first release</title><link>http://kile.stravaganza.org/blog/post/somvis_released</link><description>&lt;p&gt;I've just uploaded a little program for SOM visualization of data sets. You can check it &lt;a href=&quot;project/somvis&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;a href=&quot;project/somvis&quot;&gt;&lt;img src=&quot;images/blog/somvis_gui.jpg&quot;/&gt;&lt;/a&gt;
</description><pubDate>Sun, 20 Dec 2009 04:24:29 -0800</pubDate></item><item><title>GLSL code stringify</title><link>http://kile.stravaganza.org/blog/post/glsl_code_stringify</link><description>&lt;p&gt;I just started few weeks ago with GLSL and I was trying to find the best way to include shader code into my intro.&lt;/p&gt;
&lt;p&gt;I found out many ways, the two following ways were easy to use just having a little text converter, but hard to manage changes because you always mistake while entering the separators:
&lt;pre&gt;
GLchar* vs=&quot;void main(void)&quot;
&quot;{&quot;
&quot;gl_TexCoord[0] = gl_MultiTexCoord0;&quot;
&quot;gl_Position = ftransform();&quot;
&quot;}&quot;;
&lt;/pre&gt;
This one is even harder to read:
&lt;pre&gt;
GLchar *vs_test =&quot;void main()\r\
{\r\
gl_Position = ftransform();\r\
}&quot;;
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
But finally, I found a much simpler and good looking way to &lt;em&gt;stringify&lt;/em&gt; the shader:
&lt;/p&gt;
&lt;pre&gt;
#define STRINGIFY(A)  #A

GLchar* vs_blur=STRINGIFY(
void main()
{
	gl_TexCoord[0] = gl_MultiTexCoord0;
	gl_Position = ftransform();
});
&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;http://gcc.gnu.org/onlinedocs/cpp/Stringification.html&quot;&gt;More info&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 05 Aug 2009 20:29:41 -0700</pubDate></item><item><title>WIP #1 Geosphere</title><link>http://kile.stravaganza.org/blog/post/wip1_geosphere</link><description>&lt;p&gt;I love tri-geospheres, Aren't they lovely?&lt;/p&gt;
&lt;img src=&quot;images/blog/wip1_geosphere.jpg&quot;/&gt;
</description><pubDate>Wed, 05 Aug 2009 20:19:59 -0700</pubDate></item><item><title>KFold cross validation implementation in C++</title><link>http://kile.stravaganza.org/blog/post/k-fold-cross-validation-implementation-in-cpp</link><description>&lt;p&gt;While working with neuronal or bayesian network for diagnosis one of the most important thing you need to do is to choose correctly the &lt;a href=&quot;http://en.wikipedia.org/wiki/Training_set&quot;&gt;trainning&lt;/a&gt; and the &lt;a href=&quot;http://en.wikipedia.org/wiki/Test_set&quot;&gt;testing&lt;/a&gt; sets. &lt;/p&gt;
&lt;p&gt;I've just made a little implementation of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Cross-validation_(statistics)&quot;&gt;K-fold cross validation technique&lt;/a&gt; in C++ because after looking for it I couldn't found anything on that language.&lt;/p&gt;
&lt;p&gt;I hope it will be useful for you, you can find it &lt;a href=&quot;project/kfold-cross-validation&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 17 May 2009 11:45:50 -0700</pubDate></item><item><title>Compiler options for small executables</title><link>http://kile.stravaganza.org/blog/post/compiler-options-for-small-executables</link><description>&lt;p&gt;Yesterday I installed VS 2008 to try to get my things working on it. It gaves me a lot of errors while trying to compile my introsystem but after a while I got it working&lt;/p&gt;
&lt;p&gt;The problem on that point was that after generate the final .exe file, it didn't work with &lt;a href=&quot;http://www.farbrausch.de/~fg/kkrunchy&quot;&gt;kkrunchy (from ryg)&lt;/a&gt; compressor giving me the following error:&lt;/p&gt;
&lt;pre&gt;
- ERROR: files with exports or tls data are not supported
&lt;/pre&gt;
&lt;p&gt;I started to go throw all the options of the compiler/link again and luckily I got it working.&lt;/p&gt;
&lt;p&gt;Here you can see the options I've used. I just included the ones I've changed from the original template that VS generate for a simple Win32 project&lt;/p&gt;
&lt;p&gt;You can grab the base project source from &lt;a class=&quot;download&quot; href=&quot;download/64kbase.zip&quot;&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;ul class=&quot;simple_list&quot;&gt;
&lt;li&gt;&lt;strong&gt;C/C++&lt;/strong&gt;
	&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;General:&lt;/strong&gt;
		&lt;ul&gt;
		&lt;li&gt;Debug information format: &lt;strong&gt;Disabled&lt;/strong&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;

	&lt;li&gt;&lt;strong&gt;Optimization:&lt;/strong&gt;
		&lt;ul&gt;
		&lt;li&gt;Optimization: &lt;strong&gt;Maximize Speed (/O2)&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;Inline Functions Expansion: &lt;strong&gt;Only _inline (/Ob1)&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;Enable Intrinsics Functions: &lt;strong&gt;Yes (/Oi)&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;Favor size or speed: &lt;strong&gt;Favor Fast Code (/Ot)&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;Omit Frame Pointers: &lt;strong&gt;Yes (/Oy)&lt;/strong&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	
	&lt;li&gt;&lt;strong&gt;Code generation:&lt;/strong&gt;
		&lt;ul&gt;
			&lt;li&gt;Runtime Library: &lt;strong&gt;Multi-threaded DLL (/MD)&lt;/strong&gt;&lt;/li&gt;
			&lt;li&gt;Struct member alignment: &lt;strong&gt;1 Byte (/Zp1)&lt;/strong&gt;&lt;/li&gt;
			&lt;li&gt;Buffer security Check: &lt;strong&gt;No (/GS-)&lt;/strong&gt;&lt;/li&gt;
			&lt;li&gt;Floating point model: &lt;strong&gt;Fast (/fp:fast)&lt;/strong&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	
	&lt;li&gt;&lt;strong&gt;Language:&lt;/strong&gt;
		&lt;ul&gt;
			&lt;li&gt;Enable Run-Time Type Info: &lt;strong&gt;NO (/GR-)&lt;/strong&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;

	&lt;li&gt;&lt;strong&gt;Advanced:&lt;/strong&gt;
		&lt;ul&gt;
			&lt;li&gt;Calling convention: &lt;strong&gt;__fastcall (/Gr)&lt;/strong&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	
	&lt;li&gt;&lt;strong&gt;Command line:&lt;/strong&gt;
		&lt;ul&gt;
			&lt;li&gt;Additional options: &lt;strong&gt;/QIfist&lt;/strong&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;/ul&gt;
&lt;/li&gt;	
&lt;br/&gt;
&lt;li&gt;&lt;strong&gt;Linker&lt;/strong&gt;
	&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Input:&lt;/strong&gt;&lt;ul&gt;
			&lt;li&gt;Ignore all default libraries: &lt;strong&gt;Yes (/NODEFAULTLIB)&lt;/strong&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;	
	
	&lt;li&gt;&lt;strong&gt;Manifest file:&lt;/strong&gt;&lt;ul&gt;
			&lt;li&gt;Generate Manifest: &lt;strong&gt;No&lt;/strong&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;	

	&lt;li&gt;&lt;strong&gt;Debugging:&lt;/strong&gt;&lt;ul&gt;
		&lt;li&gt;Generate Debug Info: &lt;strong&gt;No&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;Generate map file: &lt;strong&gt;Yes (/MAP)&lt;/strong&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;	
	
	&lt;li&gt;&lt;strong&gt;Optimization:&lt;/strong&gt;&lt;ul&gt;
		&lt;li&gt;Optimize for Windows98: &lt;strong&gt;No (/OPT:NOWIN98)&lt;/strong&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;	

	&lt;li&gt;&lt;strong&gt;Advanced:&lt;/strong&gt;&lt;ul&gt;
	&lt;li&gt;Base Address: &lt;strong&gt;0x6000000&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;Randomize Base Address: &lt;strong&gt;Disable Image Randomization (/DYNAMICBASE:NO)&lt;/strong&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;	
	&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Sun, 22 Mar 2009 20:22:09 -0700</pubDate></item><item><title>My graphics card died</title><link>http://kile.stravaganza.org/blog/post/my-graphics-card-died</link><description>&lt;p&gt;It's looks like my graphics card didn't like my proposal about go back to coding so she just decided to crash :)&lt;/p&gt;
&lt;p&gt;It started to happens while loading some GPU Gems demos, and at first I thought it was just some drivers issue, but I downgraded them and it didn't go out&lt;/p&gt;
&lt;p&gt;So looking throw the web I just found a nice tool called &lt;a href=&quot;http://www.techpowerup.com/atitool/&quot;&gt;ATI Tool&lt;/a&gt;, and yes, in despite of the name of the tool it works with Nvidia cards too.&lt;/p&gt;
&lt;p&gt;After running the &lt;em&gt;artifacts test&lt;/em&gt; on my 9800GTX+ for around 2 mins. I got the following results&lt;/p&gt;
&lt;img src=&quot;images/blog/artifacts.jpg&quot;/&gt;
&lt;p&gt;Lucky me, because I didn't throw my old 6600, so I can still use my computer until I'll get it back from the RMA&lt;/p&gt;</description><pubDate>Sun, 22 Mar 2009 18:33:33 -0700</pubDate></item><item><title>Render passes</title><link>http://kile.stravaganza.org/blog/post/render-passes</link><description>&lt;p&gt;After coming back to my old code, arrange hundred versions of the same files, and being able to compile some of my past project I could finally started again coding some modifications to my old 64kb Introsystem.&lt;/p&gt;
&lt;p&gt;One of the things that gaves me many headaches was the material manager. And of course it couldn't resist to come back to me :D.&lt;br/&gt;
&lt;p&gt;During all this time a lot of things have changed related to the treatment of the materials, shaders, render passes and so on. So I decided to spend few days asking &lt;a href=&quot;http://ithaqua.stravaganza.org&quot;&gt;my&lt;/a&gt; &lt;a href=&quot;http://www.rgba.org/r3d/&quot;&gt;dear&lt;/a&gt; &lt;a href=&quot;http://www.blackpawn.com/&quot;&gt;friends&lt;/a&gt; and making draft on papers about how to manage that problem.&lt;/p&gt;
&lt;p&gt;Having in mind that it will be used in 64kb intro I needed to have the feet on the ground and try to keep it simple&lt;/p&gt;
&lt;p&gt;So here is it my first draft.
&lt;div class=&quot;article_shot&quot;&gt;&lt;img src=&quot;images/blog/renderpasses.png&quot;/&gt;&lt;/div&gt;

&lt;p&gt;The main class is &lt;strong&gt;Scene&lt;/strong&gt; were you store all the nodes. After loading the objects you just add the passes you need for each material on each group of objects using &lt;em&gt;addPass&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;During rendering, you should call on each frame &lt;em&gt;update&lt;/em&gt; to compute the transformation matrix for each node.&lt;/p&gt;
&lt;p&gt;Right after compute the matrices you could call &lt;em&gt;render&lt;/em&gt; function that will iterate throw all the passes for the scene:&lt;/p&gt;

&lt;pre class=&quot;cpp&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;void&lt;/span&gt; Scene&lt;span style=&quot;color: rgb(0, 128, 128);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 238, 255);&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;{&lt;/span&gt;
	setGlobalState&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
	setWorldTransformation&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;
	
	for&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;iPass&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 221);&quot;&gt;0&lt;/span&gt;;iPass&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;&lt;&lt;/span&gt;passesList.&lt;span style=&quot;color: rgb(0, 238, 255);&quot;&gt;Count&lt;/span&gt;;iPass&lt;span style=&quot;color: rgb(0, 0, 64);&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;
		passesList&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;[&lt;/span&gt;iPass&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;]&lt;/span&gt;.&lt;span style=&quot;color: rgb(0, 238, 255);&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;

	restoreWorldTransformation&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
	restoreGlobalState&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;In the &lt;em&gt;Pass::Render()&lt;/em&gt; function we should just activate the current render context (Usually just a camera, or a render to texture object), following by the call to apply the selected material:

&lt;pre class=&quot;cpp&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;void&lt;/span&gt; Pass&lt;span style=&quot;color: rgb(0, 128, 128);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 238, 255);&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;{&lt;/span&gt;
	renderContext&lt;span style=&quot;color: rgb(0, 0, 64);&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;&gt;&lt;/span&gt;activate&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
	material&lt;span style=&quot;color: rgb(0, 0, 64);&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;&gt;&lt;/span&gt;applyMaterial&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;objectList,sceneID&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Finally the &lt;em&gt;ApplyMaterial&lt;/em&gt; function do all the passes for each state and shader program to the selected objects passed by parameter &lt;em&gt;(We're assuming a scene manager singleton)&lt;/em&gt;:&lt;/p&gt;

&lt;pre class=&quot;cpp&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;void&lt;/span&gt; Material&lt;span style=&quot;color: rgb(0, 128, 128);&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 238, 255);&quot;&gt;applyMaterial&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;objectList&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;]&lt;/span&gt; objList, &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;int&lt;/span&gt; sceneID&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;{&lt;/span&gt;
	&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;int&lt;/span&gt; iPass&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 221);&quot;&gt;0&lt;/span&gt;;iPass&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;&lt;&lt;/span&gt;numPasses;iPass&lt;span style=&quot;color: rgb(0, 0, 64);&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;
	&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;{&lt;/span&gt;
		loadPrograms&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;iPass&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
		setStates&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;iPass&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
		vprogram&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;=&lt;/span&gt;getVProgram&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;iPass&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
		pprogram&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;=&lt;/span&gt;getPProgram&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;iPass&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;

		&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;int&lt;/span&gt; iText&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 221);&quot;&gt;0&lt;/span&gt;;iText&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;&lt;&lt;/span&gt;numTextures;iText&lt;span style=&quot;color: rgb(0, 0, 64);&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;
		loadTextures&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;iPass,iText&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
		
		vprogram&lt;span style=&quot;color: rgb(0, 0, 64);&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;&gt;&lt;/span&gt;activate&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
		pprogram&lt;span style=&quot;color: rgb(0, 0, 64);&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;&gt;&lt;/span&gt;activate&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
		
		&lt;span style=&quot;color: rgb(102, 102, 102);&quot;&gt;// Get the scene from singleton and &lt;/span&gt;
		&lt;span style=&quot;color: rgb(102, 102, 102);&quot;&gt;// render the selected objects&lt;/span&gt;
		SCENE_MANAGER.&lt;span style=&quot;color: rgb(0, 238, 255);&quot;&gt;Get&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;sceneID&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 64);&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;&gt;&lt;/span&gt;renderSelected&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;objList&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
		
		&lt;span style=&quot;color: rgb(102, 102, 102);&quot;&gt;// Disable everything&lt;/span&gt;
		vprogram&lt;span style=&quot;color: rgb(0, 0, 64);&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;&gt;&lt;/span&gt;deactivate&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
		pprogram&lt;span style=&quot;color: rgb(0, 0, 64);&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 128);&quot;&gt;&gt;&lt;/span&gt;deactivate&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
		unloadTextures&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
		restoreStates&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;(&lt;/span&gt;iPass&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;)&lt;/span&gt;;
	&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;}&lt;/span&gt;
&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Note also that in the last code you could use something like &lt;em&gt;setCurrentPass(iPass)&lt;/em&gt; on each iteration instead of call all the methods with this parameter. I just left it like that to make it clear that those functions are dependents on the pass&lt;/p&gt;
&lt;p&gt;That's all for today. I'll try to implement it during next days. I'll let you know how is going :) &lt;em&gt;(Give me luck)&lt;/em&gt;&lt;/p&gt;
</description><pubDate>Fri, 20 Mar 2009 02:15:01 -0700</pubDate></item><item><title>Hello world, once again :)</title><link>http://kile.stravaganza.org/blog/post/hello-world-once-again</link><description>It has been long time since I wrote my last line of demoscene related code. But this has changed today! :)&lt;br/&gt;
Well I just opened a Visual Studio project and start to drop few lines...&lt;br/&gt;
Maybe It's just that I've felt bad all this time because I started so many projects, &lt;a href=&quot;project/ksynth&quot;&gt;so&lt;/a&gt; &lt;a href=&quot;project/ktexgen&quot;&gt;many&lt;/a&gt; &lt;a href=&quot;project/3dstudiomax-tools&quot;&gt;tools&lt;/a&gt;, and they just got stuck somewhere.&lt;br/&gt;
But right now I just got a little power and I'll try to get something back from all of them.&lt;br/&gt;
I hope it will push back &lt;a href=&quot;http://ithaqua.stravaganza.org&quot;&gt;someone&lt;/a&gt; &lt;a href=&quot;http://www.paulotromp.com&quot;&gt;else&lt;/a&gt; &lt;a href=&quot;www.ricardocabello.com&quot;&gt;once&lt;/a&gt; &lt;a href=&quot;http://wonder.stravaganza.org&quot;&gt;again&lt;/a&gt; &lt;a href=&quot;http://josss.scenesp.org&quot;&gt;at&lt;/a&gt; &lt;a href=&quot;http://herotyc.scenesp.org&quot;&gt;least&lt;/a&gt; &lt;a href=&quot;www.rgba.org/r3d/&quot;&gt;for&lt;/a&gt; one more time, since we had many things to say that remain &lt;em&gt;unsaid&lt;/em&gt; :P. &lt;br&gt;
Yes... I know it's not very good time for scene, and we're getting older, but it still could be funny :)&lt;br/&gt;&lt;br/&gt;
&lt;img src=&quot;images/blog/helloworld.jpg&quot;/&gt;
&lt;br/&gt;
&lt;em&gt;PS: Anyway... you know... it will go slow :P&lt;/em&gt;</description><pubDate>Thu, 12 Mar 2009 00:48:01 -0700</pubDate></item><item><title>Give me your IP</title><link>http://kile.stravaganza.org/blog/post/give-me-your-ip</link><description>&lt;p&gt;When you need to give support to a computer user the best way is to create a remote connection to his computer.&lt;/p&gt;
&lt;p&gt;I usually use &lt;a href=&quot;http://www.realvnc.com/&quot;&gt;vnc&lt;/a&gt;, but even having it installed on the final user, it could be so hard to explain how to find out the IP to create the connection.&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;...Close to the clock in the bottom right it should be an VNC icon, please put the mouse over for a while and they'll appear some numbers...&lt;/em&gt;&lt;br/&gt;
&lt;em&gt;...Ok go to the Start menu, click &quot;Run&quot; and after write &quot;cmd&quot; in the textbox. It will appear a black screen, type &quot;ipconfig&quot; and click enter, now copy the numbers...&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
It's easy to imagine how people with low level in computers could be lost when you ask them to do those tasks. &lt;/p&gt;
&lt;p&gt;So I just wanted to create a page where you could simply watch your IP without advertisement or funny stuff that could disturb the user. It's just a simple &lt;em&gt;$_SERVER['REMOTE_ADDR']&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;But many times I need to help my parents throw messenger and I just wanted to make it even easier for them so I just created a simple page where you can just copy a generated URL and paste to them.&lt;/p&gt;
&lt;p&gt;They'll click and it will appear on their screen just the text &quot;OK!&quot;, after that you could click on &quot;Get the IP!&quot; button (AJAX Coming soon :)) and you'll get their IP address.&lt;/p&gt;
&lt;p&gt;Simple but quite effective and effortless :)&lt;/p&gt;
&lt;p&gt;You can see and use it &lt;a href=&quot;http://kile.stravaganza.org/works/givemeyourip&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 25 Feb 2009 20:08:50 -0800</pubDate></item><item><title>Signs</title><link>http://kile.stravaganza.org/blog/post/signs-short-film</link><description>Really nice short film about communication and love :)&lt;br/&gt;&lt;br/&gt;
&lt;object width=&quot;480&quot; height=&quot;295&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/uy0HNWto0UY&amp;hl=es&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/uy0HNWto0UY&amp;hl=es&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;480&quot; height=&quot;295&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</description><pubDate>Mon, 23 Feb 2009 19:11:40 -0800</pubDate></item><item><title>Easy way to send mails with attachments on Linux </title><link>http://kile.stravaganza.org/blog/post/easy_way_to_send_mails_with_attachments_on_linux </link><description>&lt;p&gt;
At job usually I need to create scripts to send mail with logs for example while creating a backup.
After looking for some email clients I found &lt;a href=&quot;http://en.wikipedia.org/wiki/Mutt_(e-mail_client)&quot;&gt;Mutt&lt;/a&gt; that looked really easy to use and to install.
First of all you should now that Mutt it's a &lt;a href=&quot;http://en.wikipedia.org/wiki/E-mail_client&quot;&gt;Mail User Agent (MUA)&lt;/a&gt; it means you should have already one &lt;a href=&quot;http://en.wikipedia.org/wiki/Mail_transfer_agent&quot;&gt;Mail transfer agent (MTA)&lt;/a&gt; installed correctly (To let Mutt use the &lt;em&gt;sendmail&lt;/em&gt; command).
So there we go..., first we install like usually:
&lt;/p&gt;
&lt;pre&gt;
$ sudo apt-get install mutt
&lt;/pre&gt;
&lt;p&gt;
The most configuration changes that we would make is to change the default mail to show while sending the mails, as by default it will show the name of our server.
This can be edit in the file &lt;em&gt;/etc/mutt/Muttrc&lt;/em&gt;:
&lt;/p&gt;
&lt;pre&gt;
$ sudo nano /etc/mutt/Muttrc
&lt;/pre&gt;
&lt;p&gt;
And we add the following lines:
&lt;/p&gt;
&lt;pre&gt;
set realname=&quot;Username to show&quot;
set from=&quot;username@host&quot;
set use_from=yes
&lt;/pre&gt;
&lt;p&gt;
If you want to use this service with different users in the same server, you should create a copy of the configuration file for each user as following:
&lt;/p&gt;
&lt;pre&gt;
$ cp /etc/mutt/Muttrc ~/.muttrc
&lt;/pre&gt;

&lt;p&gt;
We're ready to send our first test:
&lt;/p&gt;
&lt;pre&gt;
mutt -s &quot;Test mail&quot; -a /srv/test.tgz destination@testmail.com &lt; /tmp/mailmessage.txt
&lt;/pre&gt;

&lt;p&gt;
If everything works good we can start to use it into our bash scripts for monitoring tasks such as backups. Here a small piece of script that I use in my backups:
&lt;/p&gt;
&lt;pre&gt;
destMail=destinationMail@destinationDomain.com

attachment=/srv/scripts/backup.log

dateFormat=$(date +&quot;%a, %e/%m/%Y %T&quot;)
subject=&quot;Backup server ($dateFormat)&quot;

mailcontent=$(cat &lt;&lt;?
	Log - Server backup   
)

echo &quot;$mailcontent&quot; &gt; /srv/scripts/msg.tmp
echo &gt;&gt; /srv/scripts/msg.tmp

mutt -s &quot;$subject&quot; -a &quot;$attachment&quot; &quot;$destMail&quot; &lt; /srv/scripts/msg.tmp
rm /srv/scripts/msg.tmp
&lt;/pre&gt;</description><pubDate>Thu, 22 Jan 2009 19:33:13 -0800</pubDate></item><item><title>calendar template 2009</title><link>http://kile.stravaganza.org/blog/post/photoshop_calendar_template_2009</link><description>I've just finished a calendar for 2009. I've included both, complete calendar in PNG files and PSD template so you can modify it and make your own design.&lt;br/&gt;&lt;br/&gt;
&lt;a href=&quot;project/calendar_template_2009&quot;&gt;&lt;img src=&quot;images/blog/table_calendar09.jpg&quot;/&gt;&lt;/a&gt;&lt;br/&gt;
You can grab it &lt;a href=&quot;project/calendar_template_2009&quot;&gt;here&lt;/a&gt; </description><pubDate>Sat, 03 Jan 2009 15:44:14 -0800</pubDate></item><item><title>Wishes for new year</title><link>http://kile.stravaganza.org/blog/post/wishes_for_new_year_2009</link><description>It has been two months without writing anything in here. It was a very busy &amp; stress period and even if not over, I hope at least it will go decreasing in the next months.&lt;br/&gt;
I've many nice news for this new year, and looks very promising in both personal and professional ways.&lt;br/&gt;
I really believe that detailed planning of your whole year life period won't work at the end and aims like, &lt;em&gt;&quot;I'll keep fit, I'll study more, I'll join English lessons, I'll learn how to do {put something here},...&quot;&lt;/em&gt; and even more when you're not in a somehow stable situation, about job, place to live, studies, etc.
&lt;br/&gt;&lt;br/&gt;
But I believe it's good to take a time to think about what you would like to be after a while and put you some real and interesting objectives taking into considerations your position and your current abilities to reach them.
&lt;br/&gt;&lt;br/&gt;
I think due to my &lt;em&gt;IT &amp; engineer education&lt;/em&gt; I'ts very hard for me not to try to plan everything like in a real project instead of just leave them to start and end by &lt;em&gt;themselves&lt;/em&gt;.&lt;br/&gt;
But I'll give a try, I will take only few ones. I just wish to help somehow to start &lt;em&gt;them&lt;/em&gt; and let's see how is going :)&lt;br/&gt;&lt;br/&gt;
I'll take time to show my progress here :)</description><pubDate>Fri, 02 Jan 2009 17:40:49 -0800</pubDate></item><item><title>Open source world conference '08 (II)</title><link>http://kile.stravaganza.org/blog/post/open-source-world-conference-2008-2</link><description>&lt;p&gt;Yesterday was the last day of the OSWC and I could assist to the &quot;Vision of the gurus&quot; conference. &lt;/p&gt;
&lt;p&gt;The &lt;em&gt;guest stars&lt;/em&gt; for this speech were &lt;a href=&quot;http://en.wikipedia.org/wiki/Bdale_Garbee&quot;&gt;Bdale Garbee&lt;/a&gt; (Hewlett-Packard), &lt;a href=&quot;http://ooo-speak.blogspot.com/&quot;&gt;Su&amp;aacute;rez-Potts&lt;/a&gt; (Openoffice.org &amp; SUN), &lt;a href=&quot;http://www.cyrius.com/&quot;&gt;Martin Michlmayr&lt;/a&gt; (Debian) y &lt;a href=&quot;http://sacha.labourey.com&quot;&gt;Sacha Labourey&lt;/a&gt; (Red Hat), moderated by &lt;a href=&quot;http://www.francispisani.net&quot;&gt;Francis Pisani&lt;/a&gt; (El Pa&amp;iacute;s, Le Monde).&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://sacha.labourey.com&quot;&gt;Sacha Labourey&lt;/a&gt; introduced the speech with a question: &lt;strong&gt;&lt;em&gt;Who is taking the real benefits from opensource? the companies or the final users?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And I think it's true that users usually doesn't care so much about what they're using as long as it works. They just look for something, download it (many times not just free software) and give it a try. If after a while they find something wrong on it they just change it without thinking about the chance to change something in it.
&lt;/p&gt;
&lt;p&gt;
Around the companies there're still the same thoughts. You start to use one product (Which you've already paid for) and after some time you notice that you need new features. But after checking the roadmap of your software provider you'll be lucky if it appear before one year.&lt;/p&gt;
&lt;p&gt;
What to do? Just sit down and wait, or take another company product (Paying again of course).
Maybe some companies just think that it's hard to maintain code from others. But even if it's not true there're also many others alternatives such as ask an external company specialized in opensource to develop a new custom feature for the software you're using. &lt;/p&gt;
&lt;p&gt;In this way Sacha Labourey paid attention to the importance educating the companies about the &lt;strong&gt;&lt;em&gt;correct way to pay for the software&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Bdale_Garbee&quot;&gt;Bdale Garbee&lt;/a&gt; spoke about the importance that the companies should put into the development of this kind of software, but he also pointed out that &lt;a href=&quot;http://en.wikipedia.org/wiki/Free_and_open_source_software&quot;&gt;FLOSS&lt;/a&gt; it isn't a commercial model so it won't make a company to be successful by itself.&lt;/p&gt;
&lt;p&gt;He spoke also about the lack of usability of some GUIs in opensource. According to this he also mentioned that his young daughter without being IT-related has been taking part in some opensource conferences discussing about this topic. Taking this example he empathized that we need to &lt;strong&gt;include all the sectors of the population in the FLOSS world&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.cyrius.com/&quot;&gt;Martin Michlmayr&lt;/a&gt; commented how surprising was for him the first day that there were so many young people in the conference. He focused that even if there's a huge community over there, as this event shows, the people doesn't know yet how to use opensource properly. They &lt;strong&gt;should learn to give something back to the community&lt;/strong&gt; instead of just &lt;em&gt;take and use&lt;/em&gt;. He joked about that they're getting old, but then he asked who will replace them when they'll start to be less active and then nobody laughed in the auditorium :)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ooo-speak.blogspot.com/&quot;&gt;Su&amp;aacute;rez-Potts&lt;/a&gt; was speaking about sustainability, not just about FLOSS but about our world, arguing how bad is monopoly in every aspect of this life, because that destroys freedom and innovation.&lt;/p&gt;
&lt;p&gt;
At the end he read a manifest that he was writing during the OSWC. It's was really nice and you can &lt;a href=http://ooo-speak.blogspot.com/2008/10/malaga-manifesto-2008-10-22.html&gt;read it completely on his blog&lt;/a&gt;, but I would like to quote few lines:&lt;/p&gt;
&lt;em&gt;
&lt;ul class=&quot;simple_list&quot;&gt;
&lt;li&gt;&lt;strong&gt;Do today what can be done tomorrow and the day after, or planning for the future in every act.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do things in the consciousness of the others&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do what you can now, and don't wait for some sign, revolution, spectacle or catastrophe.&lt;/strong&gt;
We have the tools to act, we have the sense, and we all know what has to be done. I want communities of freedom, based on the principles of individual freedom and responsibility and acting in conjunction with others. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
...as the M&amp;aacute;laga conference shows, &lt;strong&gt;the world is connected&lt;/strong&gt;
&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;So keep this in mind:&lt;br/&gt;
&lt;strong&gt;Don't wait for google to tell you what you've to do next just think what to do, and do it now!&lt;/strong&gt;&lt;/p&gt;
&lt;/em&gt;</description><pubDate>Fri, 24 Oct 2008 01:45:45 -0700</pubDate></item></channel></rss>