<?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>TOKI WOKI. Blog &#187; Dev</title>
	<atom:link href="http://toki-woki.net/blog/cat/dev/feed" rel="self" type="application/rss+xml" />
	<link>http://toki-woki.net/blog</link>
	<description>Visual, music, dev...</description>
	<lastBuildDate>Thu, 18 Mar 2010 21:41:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Shortcodes for Drupal</title>
		<link>http://toki-woki.net/blog/p1699-shortcodes-for-drupal</link>
		<comments>http://toki-woki.net/blog/p1699-shortcodes-for-drupal#comments</comments>
		<pubDate>Thu, 18 Mar 2010 21:41:51 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[gray]]></category>
		<category><![CDATA[illustrator]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1699</guid>
		<description><![CDATA[Wordpress' Shortcode API is a really cool thing, and since I'm working on a Drupal site these days I've been looking for something similar. Unfortunately I couldn't find anything... There are some implementations out there but the ones I found and tested always come pre-bundled with specific tags and don't always provide an extensible and [...]]]></description>
			<content:encoded><![CDATA[<p>Wordpress' <a href="http://codex.wordpress.org/Shortcode_API">Shortcode API</a> is a really cool thing, and since I'm working on a Drupal site these days I've been looking for something similar. Unfortunately I couldn't find anything... There are some implementations <a href="http://drupal.org/project/video_filter">out there</a> but the ones I found and tested always come pre-bundled with specific tags and don't always provide an extensible and stable logic.</p>
<p>So I made mine!</p>
<p style="text-align: center;"><img class="size-full wp-image-1700 aligncenter" title="Shortcodes for Drupal" src="http://toki-woki.net/blog/wp-content/uploads/2010/03/shortcodes-drupal.gif" alt="" width="300" height="370" /></p>
<p><span id="more-1699"></span>Most of my work simply consisted in copying/pasting the code in WordPress' <a href="http://core.trac.wordpress.org/browser/trunk/wp-includes/shortcodes.php">shortcodes.php</a> and binding it into a Drupal filter. Easy enough.</p>
<p>Now if you want to use it, you have to:</p>
<ol>
<li><a href="http://toki-woki.net/blog/wp-content/uploads/2010/03/shortcodes-0.1.zip">Get the module</a></li>
<li>Add it to your "modules" directory</li>
<li>Enable it</li>
<li>Add it to one of your setup's filter bundle</li>
<li>Write your own module where you'd implement one or more Shortcodes (<em>via</em> add_shortcode) and make sure you add "dependencies[] = shortcodes" in your .info file</li>
</ol>
<p>You might experience a nasty "Call to undefined function <em>add_shortcode</em>". If so, you have to change you module implementation's weight, either directly in your database, or thanks to the cool <a href="http://drupal.org/project/util">Utility</a> module. Set it to 10 and you're set!</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#1f1f1f; color:#d3d3d3'>#1f1f1f &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1699-shortcodes-for-drupal/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIR: ELS slow?</title>
		<link>http://toki-woki.net/blog/p1614-encryptedlocalstore-slow</link>
		<comments>http://toki-woki.net/blog/p1614-encryptedlocalstore-slow#comments</comments>
		<pubDate>Tue, 26 Jan 2010 21:41:22 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[as]]></category>
		<category><![CDATA[blue]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1614</guid>
		<description><![CDATA[This post is a techy one, so if you don't write AIR apps or if you think this wouldn't be enough to show off during coffee break I recommend something funnier.
Working on a big fat AIR app (more than 400 Mb) I noticed something quite strange: using EncryptedLocalStore get/setItem methods happened to be slow, I [...]]]></description>
			<content:encoded><![CDATA[<p>This post is a techy one, so if you don't write AIR apps or if you think this wouldn't be enough to show off during coffee break I recommend <a href="http://www.dailymotion.com/video/xbv4gr">something funnier</a>.<span id="more-1614"></span></p>
<p>Working on a big fat AIR app (more than 400 Mb) I noticed something quite strange: using <a href="http://livedocs.adobe.com/flex/3/langref/flash/data/EncryptedLocalStore.html">EncryptedLocalStore</a> get/setItem methods happened to be slow, I mean very slow, but like, slow as hell (like 5 to 10 seconds per call) but only after launching the app, and not after. Something that I never noticed before ; neither with other AIR apps, nor for this one before I added its heavy content... And the tricky part is that it only occurred with a compiled app, but not within ADL.</p>
<p>I googled a bit and found <a href="http://groups.google.com/group/air-tight/browse_thread/thread/6e71bc21adb06e46/955f696cfd2e51d0">this thread</a> which is mainly about the stronglyBound parameter for setItem, but its last post by <a href="http://blogs.adobe.com/simplicity/">Oliver Goldman</a> rang my bell:</p>
<blockquote><p>The first time ELS is accessed the application's signature needs to be verified, regardless of whether or not stronglyBound is set. If stronglyBound is set, then the signature is re-verified as the application is running. Either way, it's expensive if you have a big application.</p></blockquote>
<p>Small app: fast, fat app: slow as hell. Lesson learned...</p>
<p>And this is true both for Flash and HTML/JS AIR apps. So if you don't need your data to be encrypted I highly recommend using <a href="http://livedocs.adobe.com/flex/3/langref/flash/net/SharedObject.html">SharedObject</a> (or <a href="http://blog.crankybit.com/notes-adobe-air-local-data-storage-options/">else</a>) instead. As far as I'm concerned the first calls dropped from 5/10 seconds to a few milliseconds.</p>
<p>Bingo.</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#100040; color:#c4b4f4'>#100040 &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1614-encryptedlocalstore-slow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weecast Player</title>
		<link>http://toki-woki.net/blog/p1560-weecast-player</link>
		<comments>http://toki-woki.net/blog/p1560-weecast-player#comments</comments>
		<pubDate>Sat, 23 Jan 2010 14:20:04 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[as]]></category>
		<category><![CDATA[blue]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[mxml]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1560</guid>
		<description><![CDATA[During the last couple of months I've been working on a free AIR app for a French community-based site called Weecast. Its purpose is to allow users to submit and/or buy screencasts about your favorite apps and languages (mostly Adobe's and Microsoft's, but also 3D ones', OS's and more).
Introducing the Weecast Player!
The app allows you [...]]]></description>
			<content:encoded><![CDATA[<p>During the last couple of months I've been working on a free AIR app for a French community-based site called <a href="http://www.weecast.fr/">Weecast</a>. Its purpose is to allow users to submit and/or buy screencasts about your favorite apps and languages (mostly Adobe's and Microsoft's, but also 3D ones', OS's and more).</p>
<p>Introducing the <a href="http://www.weecast.fr/player-video">Weecast Player</a>!</p>
<p><a class="img" href="http://www.weecast.fr/player-video"><img class="aligncenter size-full wp-image-1585" title="Weecast Player" src="http://toki-woki.net/blog/wp-content/uploads/2010/01/weecast-official.png" alt="" width="559" height="381" /></a>The app allows you to browse your videos, watch them (4 view modes), search for more, drop comments and stars... I think that's called an RIA, right? There's also an offline mode, so you can access all your stuff anytime.<span id="more-1560"></span></p>
<p>All of this is made in Flex+AIR. The visual identity was made by Weecast ; thanks for the PNGs, folks!</p>
<p>By the way, some parts of it are actually <a href="http://code.google.com/u/quentin.t/">OpenSource</a>, including:</p>
<ul>
<li>Miscellaneous <a href="http://code.google.com/p/adobe-air-util/">AIR utilities</a></li>
<li>The infamous <a href="http://code.google.com/p/as3-bits/source/browse/trunk/FlexGradientText/src/net/tw/flex/controls/GradientLabel.as">GradientLabel</a> (for Flex)</li>
<li><a href="http://code.google.com/p/as3-bits/source/browse/trunk/DynClass/src/net/tw/util/Dynam.as">Dynam.ize</a> and <a href="http://code.google.com/p/as3-bits/source/browse/trunk/BaseObject/src/net/tw/util/air/BaseObject.as">BaseObject</a>, for working with synchronous SQLite databases</li>
</ul>
<p>If you don't know Weecast yet I highly recommend you go visit <a href="http://www.weecast.fr/">their site</a>, grab <a href="http://www.weecast.fr/inscription">an account</a> and the <a href="http://www.weecast.fr/player-video">player</a>, enjoy <a href="http://www.weecast.fr/tuto-gratuit.htm">free videos</a>, and then buy some! Now if you don't understand French... Well, learn it!</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#1f212a; color:#d3d5de'>#1f212a &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1560-weecast-player/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meebo Cleaner</title>
		<link>http://toki-woki.net/blog/p1479-meebo-cleaner</link>
		<comments>http://toki-woki.net/blog/p1479-meebo-cleaner#comments</comments>
		<pubDate>Tue, 15 Dec 2009 13:51:28 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[meebo]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[white]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1479</guid>
		<description><![CDATA[Using Google Chrome? Using Meebo? Annoyed by the ad at the bottom and the blog window when you log in?
I just wrote and published my first Chrome Extension - Meebo Cleaner, to clean that up!
Pretty simple code, nothing revolutionary here. Go get it and let me know what you think, or if you have suggestions/ideas...

Post [...]]]></description>
			<content:encoded><![CDATA[<p>Using <a href="http://www.google.com/chrome">Google Chrome</a>? Using <a href="http://www.meebo.com/">Meebo</a>? Annoyed by the ad at the bottom and the blog window when you log in?</p>
<p>I just wrote and published my first Chrome Extension - <a href="https://chrome.google.com/extensions/detail/kmcmomgbhgjfflaoanonjkcccnlmeham">Meebo Cleaner</a>, to clean that up!</p>
<p>Pretty simple code, nothing revolutionary here. Go get it and let me know what you think, or if you have suggestions/ideas...</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#ffffff; color:#4b4b4b'>#ffffff &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1479-meebo-cleaner/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paper</title>
		<link>http://toki-woki.net/blog/p1375-paper</link>
		<comments>http://toki-woki.net/blog/p1375-paper#comments</comments>
		<pubDate>Sat, 28 Nov 2009 16:59:26 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[swfaddress]]></category>
		<category><![CDATA[white]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1375</guid>
		<description><![CDATA[Introducing my latest project: TW Paper, a simple iPhone/iPod touch wallpaper gallery+collection.

A little bit of JavaScript and some Photoshop/CSS trickery to present a growing collection of images designed for your favorite piece of technology!
The page also works on iPhone/iPod touch but looks a little different for better usability. Just tap+hold on the image to save [...]]]></description>
			<content:encoded><![CDATA[<p>Introducing my latest project: <a href="http://toki-woki.net/p/paper/">TW Paper</a>, a simple iPhone/iPod touch wallpaper gallery+collection.</p>
<p style="text-align: center;"><a class="img" href="http://toki-woki.net/p/paper/"><img title="Paper" src="http://toki-woki.net/blog/wp-content/uploads/2009/11/paper-blog-post.jpg" alt="paper-blog-post" width="482" height="782" /></a><span id="more-1375"></span></p>
<p>A little bit of JavaScript and some Photoshop/CSS trickery to present a growing collection of images designed for your favorite piece of technology!</p>
<p>The page also works on iPhone/iPod touch but looks a little different for better usability. Just tap+hold on the image to save it.</p>
<p style="text-align: center; background-color:#101a27;padding:20px"><img class="aligncenter" title="iPhone screenshot" src="http://toki-woki.net/blog/wp-content/uploads/2009/11/iphone-screenshot.jpg" alt="Paper on iPhone" width="320" height="480" /></p>
<p>Expect the gallery to evolve, with new images and <a href="http://toki-woki.net/kwot/">quotes</a>!</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#ffffff; color:#4b4b4b'>#ffffff &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1375-paper/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scroll Clock</title>
		<link>http://toki-woki.net/blog/p1351-scroll-clock</link>
		<comments>http://toki-woki.net/blog/p1351-scroll-clock#comments</comments>
		<pubDate>Wed, 18 Nov 2009 15:32:34 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[white]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1351</guid>
		<description><![CDATA[I played with MooTools a bit and did that. Useless, opensource, nerdy.

I also set up a gallery, so if you've got nice scrollbars that aren't here yet, send' em right away!

Post color: #ffffff &#x25a0;]]></description>
			<content:encoded><![CDATA[<p>I played with MooTools a bit and <a href="http://toki-woki.net/p/scroll-clock/">did that</a>. Useless, <a href="http://toki-woki.net/p/scroll-clock/script.js">opensource</a>, nerdy.</p>
<p style="text-align: center;"><a class="img" href="http://toki-woki.net/p/scroll-clock/"><img class="aligncenter" title="Scroll Clock" src="http://toki-woki.net/blog/wp-content/uploads/2009/11/scroll-clock.gif" alt="Scroll Clock" width="365" height="336" /></a></p>
<p>I also set up <a href="http://toki-woki.net/p/scroll-clock/gallery/">a gallery</a>, so if you've got nice scrollbars that aren't here yet, send' em right away!</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#ffffff; color:#4b4b4b'>#ffffff &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1351-scroll-clock/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>BaseObject</title>
		<link>http://toki-woki.net/blog/p1313-baseobject</link>
		<comments>http://toki-woki.net/blog/p1313-baseobject#comments</comments>
		<pubDate>Fri, 06 Nov 2009 14:12:13 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[blue]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[sqlite]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1313</guid>
		<description><![CDATA[I was talking about it, here it is!
This class will come in handy every time you work with synchronous SQLite databases in an AIR project. It's a real-world implementation of the Dynam.ize utility I presented earlier... I will show you an example of how to work with it, with simple sub-classes. Let's go!
First things first.
I [...]]]></description>
			<content:encoded><![CDATA[<p>I was talking about it, here it is!</p>
<p>This class will come in handy every time you work with synchronous SQLite databases in an AIR project. It's a real-world implementation of the Dynam.ize utility I presented earlier... I will show you an example of how to work with it, with simple sub-classes. Let's go!<span id="more-1313"></span></p>
<h3>First things first.</h3>
<p>I need to open my database and provide that connection to BaseObect:</p>
<pre class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> sqlCon:SQLConnection=<span style="color: #000000; font-weight: bold;">new</span> SQLConnection<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
sqlCon.<span style="color: #006600;">open</span><span style="color: #66cc66;">&#40;</span>File.<span style="color: #006600;">applicationDirectory</span>.<span style="color: #006600;">resolvePath</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'data.sqlite'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
BaseObject.<span style="color: #006600;">defaultConnection</span>=sqlCon;</pre>
<h3>We need clients!</h3>
<p>Now, let's consider a database with a "client" table (pretty creative, right?), those clients have a name, a URL and a gender (male/female), and of course, an ID. So we have a "client" table with 4 fields: id, name, url, male (which is a Boolean: true=male, false=female).</p>
<p>I have mapped a BaseObject sub-class to this table (I will show you how in a few moments), so I can now create a new client in a pretty simple fashion:</p>
<pre class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> myClient:Client=Client.<span style="color: #006600;">create</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span><span style="color: #0066CC;">name</span>:<span style="color: #ff0000;">'Joe'</span>, <span style="color: #0066CC;">url</span>:<span style="color: #ff0000;">'http://www.yep.com'</span>, male:<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>Cool, I now have a Client instance I can work with and a line has been added in my "client" table. What if I wanted to change its name? Easy.</p>
<pre class="actionscript">myClient.<span style="color: #006600;">setName</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Mark'</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>The "name" field has been updated. Let's check that.</p>
<pre class="actionscript"><span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>myClient.<span style="color: #006600;">getName</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>Traces "Mark"? Good. OK, what about updating the URL and name at the same time? Two queries? Nope!</p>
<pre class="actionscript">myClient.<span style="color: #006600;">update</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span><span style="color: #0066CC;">name</span>:<span style="color: #ff0000;">'Jack'</span>, <span style="color: #0066CC;">url</span>:<span style="color: #ff0000;">'http://www.yo.net'</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>Now let's grab a client via his ID.</p>
<pre class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> c1:Client=Client.<span style="color: #006600;">getFromID</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>Simple. But what if I wanted to grab more than one client, fox example what if I wanted all male clients?</p>
<pre class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> males:<span style="color: #0066CC;">Array</span>=Client.<span style="color: #006600;">getFromQuery</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'SELECT * FROM client WHERE male=@male'</span>, <span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'@male'</span>:<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>You can now loop through this array and interact with the Client instances it contains...</p>
<h3>What's the trick?</h3>
<p>Nothing too hard to understand. Client is a sub-class of BaseObject that simply exposes some of its static and instance methods (getFromID, getFromQuery, create, update and so on). It also casts BaseObject return values to the right type: Client. For example, this is how getFromID works:</p>
<pre class="actionscript"><span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> getFromID<span style="color: #66cc66;">&#40;</span>id:uint<span style="color: #66cc66;">&#41;</span>:Client <span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">return</span> BaseObject._getFromID<span style="color: #66cc66;">&#40;</span>getTableData<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, id<span style="color: #66cc66;">&#41;</span> as Client;
<span style="color: #66cc66;">&#125;</span></pre>
<p>Now you might wonder what this getTableData method is. Well it returns data about the table to which Client is bound to, like that:</p>
<pre class="actionscript"><span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> getTableData<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:TableData <span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!_tableData<span style="color: #66cc66;">&#41;</span> _tableData=<span style="color: #000000; font-weight: bold;">new</span> TableData<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'client'</span>, Client, <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'name'</span>, <span style="color: #ff0000;">'url'</span>, <span style="color: #ff0000;">'male'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #b1b100;">return</span> _tableData;
<span style="color: #66cc66;">&#125;</span></pre>
<p>See? We define the table name (client), the current class (Client) and the fields we need to handle (name, url and male)... That's it.</p>
<h3>Our clients bought cars...</h3>
<p>That's right, so we should have a "car" table, right? With id, name, brand, clientID and purchaseDate we should be good. Its TableData would look like that:</p>
<pre class="actionscript"> <span style="color: #000000; font-weight: bold;">new</span> TableData<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'car'</span>, Car, <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'name'</span>, <span style="color: #ff0000;">'brand'</span>, <span style="color: #ff0000;">'clientID'</span>, <span style="color: #ff0000;">'purchaseDate'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>Note: I didn't list id as BaseObject supposes there's always an id field.</p>
<p>OK, so our clients bought cars, and we'd like to know who bought what. Let's write a method in Client to do that:</p>
<pre class="actionscript"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getCars<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Array</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">return</span> Car.<span style="color: #006600;">getFromQuery</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'SELECT * FROM car WHERE clientID=@id'</span>, <span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'@id'</span>:id<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p>That works, cool. But we can do better, we could cache this Array so we don't query every time we need it ; there's a technique for that:</p>
<pre class="actionscript"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getCars<span style="color: #66cc66;">&#40;</span>force:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Array</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #66cc66;">&#40;</span>hasCache<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'cars'</span><span style="color: #66cc66;">&#41;</span> &amp;&amp; !force<span style="color: #66cc66;">&#41;</span> ?
		getCache<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'cars'</span><span style="color: #66cc66;">&#41;</span> :
		setCache<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'cars'</span>, Car.<span style="color: #006600;">getFromQuery</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'SELECT * FROM car WHERE clientID=@id'</span>, <span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">'@id'</span>:id<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p>Done. Optimized.</p>
<p>We can now see which cars our first client bought:</p>
<pre class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> c1cars:<span style="color: #0066CC;">Array</span>=c1.<span style="color: #006600;">getCars</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>We could also implement the opposite: retrieving a Client form a Car instance:</p>
<pre class="actionscript"><span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getClient<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:Client <span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">return</span> Client.<span style="color: #006600;">getFromID</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>.<span style="color: #006600;">getClientID</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p>Notice how I used getClientID? This refers to the table's clientID field and returns it.</p>
<h3>That's a wrap.</h3>
<p>Well that's pretty much it, I think I covered the basics!</p>
<p>If you want to play with it, get the <a href="http://code.google.com/p/as3-bits/source/browse/trunk/BaseObject/src/net/tw/util/air/BaseObject.as">class</a>/<a href="http://code.google.com/p/as3-bits/source/browse/trunk/BaseObject/">demo project</a> and tell me what you think. I've bundled Client, Car and some example uses...</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#bcdeff; color:#082a4b'>#bcdeff &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1313-baseobject/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynam.ize</title>
		<link>http://toki-woki.net/blog/p1298-dynam-ize</link>
		<comments>http://toki-woki.net/blog/p1298-dynam-ize#comments</comments>
		<pubDate>Wed, 04 Nov 2009 12:23:39 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[orange]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1298</guid>
		<description><![CDATA[Still while working on this app I was talking about earlier I realized I was quite used to working with PHP classes' Magic Methods, and more precisely the way it handles overloading. Those lovely __get, __set and __call methods are called whenever you try to access a property/method that is not explicitly defined, making your class dynamic. Of [...]]]></description>
			<content:encoded><![CDATA[<p>Still while working on this app I was talking about earlier I realized I was quite used to working with PHP classes' <a href="http://www.php.net/manual/language.oop5.magic.php">Magic Methods</a>, and more precisely the way it handles <a href="http://www.php.net/manual/language.oop5.overloading.php">overloading</a>. Those lovely <em>__get</em>, <em>__set</em> and <em>__call</em> methods are called whenever you try to access a property/method that is not explicitly defined, making your class dynamic. Of course you don't need this all the time, and it might even be dangerous, but it some cases that's simply perfect.</p>
<p>You can do that with AS3 if you extend <a href="http://livedocs.adobe.com/flex/3/langref/flash/utils/Proxy.html">flash.utils.Proxy</a>, cool. But wait, no! Not cool! What if I wanted to extend something else? Nah, let's find something else...<span id="more-1298"></span></p>
<p>I came up with the idea of dynamically creating getter and setter functions on a class instance for predefined properties. Now those aren't <strong>really </strong>getters and setters but let me show you what it looks like so you understand better... Here's an example:</p>
<pre class="actionscript">package <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> net.<span style="color: #006600;">tw</span>.<span style="color: #006600;">util</span>.<span style="color: #006600;">Dynam</span>;
	<span style="color: #808080; font-style: italic;">// This is my class, that has to be dynamic</span>
	<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">dynamic</span> <span style="color: #000000; font-weight: bold;">class</span> DynClass <span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">// This Array will be used to store the properties' values...</span>
		protected <span style="color: #000000; font-weight: bold;">var</span> _data:<span style="color: #0066CC;">Array</span>=<span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> DynClass<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">// In the constructor I call the Dynam.ize method on this, so it builds the getters and setters for the supplied properties</span>
			Dynam.<span style="color: #006600;">ize</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, <span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'abc'</span>, <span style="color: #ff0000;">'def'</span>, <span style="color: #ff0000;">'ghi'</span><span style="color: #66cc66;">&#93;</span>, getter, setter<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #808080; font-style: italic;">// Here are the functions that will be called when I try to get or set one of the properties I listed in Dynam.ize</span>
		protected <span style="color: #000000; font-weight: bold;">function</span> getter<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">key</span>:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:* <span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">return</span> _data<span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">key</span><span style="color: #66cc66;">&#93;</span>;
		<span style="color: #66cc66;">&#125;</span>
		protected <span style="color: #000000; font-weight: bold;">function</span> setter<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">key</span>:<span style="color: #0066CC;">String</span>, v:*<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			_data<span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">key</span><span style="color: #66cc66;">&#93;</span>=v;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre>
<p>Now let's instantiate this class and play with it:</p>
<pre class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> dc:DynClass=<span style="color: #000000; font-weight: bold;">new</span> DynClass<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>We can call getAbc() or setAbc() on it:</p>
<pre class="actionscript">dc.<span style="color: #006600;">setAbc</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'my value'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'get abc'</span>, dc.<span style="color: #006600;">getAbc</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>Everything should be OK. It would work the same with get/setDef and get/setGhi... This example might not seem very useful but you could do anything within the getters and setters ; for example access SharedObjects, sending data to a server and so on...</p>
<p>Find <a href="http://code.google.com/p/as3-bits/source/browse/trunk/DynClass/src/net/tw/util/Dynam.as">the class</a> and a demo project on <a href="http://code.google.com/p/as3-bits/source/browse/trunk/DynClass/src/">as3-bits</a>!</p>
<p>Coming up next: my implementation of this concept for AIR's SQLite databases!</p>
<p>Thoughts?</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#ffdb90; color:#4b2700'>#ffdb90 &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1298-dynam-ize/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex &#8211; GradientLabel</title>
		<link>http://toki-woki.net/blog/p1261-flex-gradient-label</link>
		<comments>http://toki-woki.net/blog/p1261-flex-gradient-label#comments</comments>
		<pubDate>Mon, 02 Nov 2009 12:00:06 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[blue]]></category>
		<category><![CDATA[component]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[mxml]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1261</guid>
		<description><![CDATA[If you've ever wondered whether it's possible to apply a gradient on a Flex Label, well it is ; but that's not very straight forward... As I'm working on a app that requires this kind of glitter I decided to try and see what could be done.
I started with a basic ActionScript project (no Flex involved) and [...]]]></description>
			<content:encoded><![CDATA[<p>If you've ever wondered whether it's possible to apply a gradient on a Flex Label, well it is ; but that's not very straight forward... As I'm working on a app that requires this kind of glitter I decided to try and see what could be done.</p>
<p>I started with a basic ActionScript project (no Flex involved) and <a href="http://code.google.com/p/as3-bits/source/browse/trunk/GradientText/src/net/tw/text/GradientText.as">came up with this</a>. Quite functional, could probably be optimized but my goal was actually a Flex component and I knew that was technically feasible. I then simply extended Flex's Label class and basically copied/pasted the logic into it. Just had to figure out which event to listen to and I was good to go...</p>
<p>Here's a demo app for your playing pleasure.</p>
<object width="560" height="240">
	<param name="movie" value="http://as3-bits.googlecode.com/svn/trunk/FlexGradientText/bin-release/FlexGradientText.swf"></param>
	<embed src="http://as3-bits.googlecode.com/svn/trunk/FlexGradientText/bin-release/FlexGradientText.swf" type="application/x-shockwave-flash" width="560" height="240"></embed>
</object>
<noembed>[http://as3-bits.googlecode.com/svn/trunk/FlexGradientText/bin-release/FlexGradientText.swf]</noembed>
<p><small>You may notice that in this example I embed the font so it looks nicer, but this is not mandatory...</small></p>
<p>All this is opensource (<a href="http://code.google.com/p/as3-bits/source/browse/trunk/FlexGradientText/src/net/tw/flex/controls/GradientLabel.as">class</a>+<a href="http://code.google.com/p/as3-bits/source/browse/trunk/FlexGradientText/">project</a>) and you can grab it at my brand new Google Code dump: <a href="http://code.google.com/p/as3-bits/">as3-bits</a>. Help yourself.</p>
<p>As always, feedback welcome.</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#343545; color:#e8e9f9'>#343545 &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1261-flex-gradient-label/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash+iPhone!</title>
		<link>http://toki-woki.net/blog/p1229-flash-iphone</link>
		<comments>http://toki-woki.net/blog/p1229-flash-iphone#comments</comments>
		<pubDate>Mon, 05 Oct 2009 19:06:49 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[red]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1229</guid>
		<description><![CDATA[Quick news, good news. Developing for the Apple iPhone using Flash is now possible, hell! Read more here and there.
Expect me to build stuff with it!

Post color: #661010 &#x25a0;]]></description>
			<content:encoded><![CDATA[<p>Quick news, good news. <a href="http://www.adobe.com/devnet/logged_in/abansod_iphone.html">Developing for the Apple iPhone using Flash</a> is now possible, hell! Read more <a href="http://labs.adobe.com/wiki/index.php/Applications_for_iPhone:Developer_FAQ">here</a> and <a href="http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/">there</a>.</p>
<p>Expect me to build stuff with it!</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#661010; color:#ffc4c4'>#661010 &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1229-flash-iphone/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ébruiter²</title>
		<link>http://toki-woki.net/blog/p1212-ebruiter-2</link>
		<comments>http://toki-woki.net/blog/p1212-ebruiter-2#comments</comments>
		<pubDate>Mon, 05 Oct 2009 18:12:35 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[boks]]></category>
		<category><![CDATA[fr]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[white]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1212</guid>
		<description><![CDATA[Hop, je viens de payer des nouveaux habits à Ébruiter (le blog qui parle de musique à ceux qui ont des oreilles) qui ne se plaisait plus dans son premier ensemble... Grid system, bien sûr. Toujours WordPress, avec un thème maison (merci Boks et Greg) et des hacks par-ci par-là.

Et puisque finalement j'aime bien le concept, [...]]]></description>
			<content:encoded><![CDATA[<p>Hop, je viens de payer des nouveaux habits à <a href="http://toki-woki.net/ebruiter/">Ébruiter</a> (le blog qui parle de musique à ceux qui ont des oreilles) qui ne se plaisait plus dans son <a href="http://toki-woki.net/blog/p218-ebruiter">premier ensemble</a>... Grid system, bien sûr. Toujours WordPress, avec un thème maison (merci <a href="http://toki-woki.net/p/Boks/">Boks</a> et Greg) et des hacks par-ci par-là.</p>
<p><a class="img" href="http://toki-woki.net/ebruiter/"><img class="aligncenter size-full wp-image-1220" title="Ebruiter²" src="http://toki-woki.net/blog/wp-content/uploads/2009/10/ebruiter2.jpg" alt="Ebruiter²" width="534" height="53" /></a></p>
<p>Et puisque finalement j'aime bien le concept, je vais essayer de reprendre l'habitude de poster des trucs. Ça va être super.</p>
<p>Chope <a href="http://toki-woki.net/ebruiter/feed">le flux</a>, poto !</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#ffffff; color:#4b4b4b'>#ffffff &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1212-ebruiter-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FileWatch</title>
		<link>http://toki-woki.net/blog/p1156-filewatch</link>
		<comments>http://toki-woki.net/blog/p1156-filewatch#comments</comments>
		<pubDate>Thu, 01 Oct 2009 13:20:39 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[gray]]></category>
		<category><![CDATA[illustrator]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1156</guid>
		<description><![CDATA[I wanted to try Flex 4 with a "real life" project so I wrote this little thing. Rough draft.

The app will allow you to monitor files changes: select a text file and you'll be prompted when it's updated. Basic. By the way, did I say "rough draft" before?
Everything in it is OpenSource, from the Illustrator [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to try Flex 4 with a "real life" project so I wrote this little thing. Rough draft.</p>
<p><img class="aligncenter size-full wp-image-1157" title="FileWatch" src="http://toki-woki.net/blog/wp-content/uploads/2009/09/fw-ss.jpg" alt="FileWatch" width="560" height="304" /></p>
<p>The app will allow you to monitor files changes: select a text file and you'll be prompted when it's updated. Basic. By the way, did I say "rough draft" before?</p>
<p>Everything in it is OpenSource, from the Illustrator files to the MXML and CSS stuff, so <a href="http://code.google.com/p/air-filewatch/">play with it</a>! For those who only want the .air, <a href="http://air-filewatch.googlecode.com/svn/trunk/FileWatch.air">here it is</a>.<span id="more-1156"></span></p>
<h3>Now, why is it cool?</h3>
<ul>
<li>Build with the brand new Flex 4 (Gumbo) framework</li>
<li>Uses a home-brewed IconButton class, because Gumbo doesn't provide any</li>
<li>Uses the new Spark custom skins logic (on Button, ScrollBar and more...)</li>
<li>Uses the new states' logic and transitions</li>
<li>Based on <a href="http://code.google.com/p/as3corelib/">as3corelib</a>'s FileMonitor class</li>
<li>Shows you how to build a multi-instance AIR app</li>
<li>Contains Illustrator/Photoshop UI files</li>
</ul>
<h3>And why is it not that cool?</h3>
<ul>
<li>Probably still buggy, wait for updates!</li>
<li>Flex 4 is not done yet, so the code might break at any time</li>
<li>No icons yet</li>
<li>No or very few comments</li>
<li>Pretty useless app!</li>
</ul>
<p>If you're trying to learn Flex/Flex 4 or wondering what's new in it and how to use it you should definitively give it a go...</p>
<p>Have questions? Drop'em!</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#5c5c5c; color:#ffffff'>#5c5c5c &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1156-filewatch/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Snips2</title>
		<link>http://toki-woki.net/blog/p1073-snips-2</link>
		<comments>http://toki-woki.net/blog/p1073-snips-2#comments</comments>
		<pubDate>Sun, 06 Sep 2009 17:38:01 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[by]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[purple]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1073</guid>
		<description><![CDATA[Remember my first and only WordPress plugin? Well it just got better.

Snips 2.0 is basically Snips rewritten from scratch, updated to fit WordPress' Shortcode API. Let's see how good it is...
Tired of having to copy paste nasty HTML code from sites such as YouTube, Vimeo and so on? Looking for a way to insert recurrent [...]]]></description>
			<content:encoded><![CDATA[<p>Remember my first and only WordPress plugin? Well it just got better.</p>
<p style="text-align: center;"><a class="img" href="http://wordpress.org/extend/plugins/snips/"><img class="size-full wp-image-1076 aligncenter" title="Snips2" src="http://toki-woki.net/blog/wp-content/uploads/2009/09/snips2.jpg" alt="Snips2" width="560" height="225" /></a></p>
<p>Snips 2.0 is basically <a href="http://toki-woki.net/blog/p67-snips-wordpress-snippet-plugin">Snips</a> rewritten from scratch, updated to fit WordPress' <a href="http://codex.wordpress.org/Shortcode_API">Shortcode API</a>. Let's see how good it is...<span id="more-1073"></span></p>
<p>Tired of having to copy paste nasty HTML code from sites such as YouTube, Vimeo and so on? Looking for a way to insert recurrent content in your posts without having to type it every time? Would like to be able to inject parameters in these snippets? Well, now you can.</p>
<p>Just install Snips and use the bundled shortcodes or create/edit your own!</p>
<p>Each Snip is a combination of a <strong>name</strong>, a <strong>model </strong>and optional <strong>parameters</strong>. The name defines the shortcode tag you will be able to use, the model is the content that will replace your shortcode calls and the parameters (that look like #the-parameter# in the model) are portions of the model that can change from a call to an other. Those parameters can have default values or can be left empty and then become mandatory.</p>
<p>All of this can be edited via a simple UI, found under Settings &gt; Snips... Here's screenshot:</p>
<p style="text-align: center;"><img class="size-full wp-image-1078 aligncenter" title="Snips2 screenshot" src="http://toki-woki.net/blog/wp-content/uploads/2009/09/snips2-screenshot.jpg" alt="Snips2 screenshot" width="560" height="394" /></p>
<p><strong>For those that used Snips' first version:</strong> (0.2) everything should be OK, the previous syntax will work ; but I recommend using the new one and the corresponding updated model files (ex: yt becomes yt2). Also, the #up# parameter (used in <strong>mp3 </strong>and <strong>swf</strong> snips) has to be set manually to your blog's upload path.</p>
<p>If you use it and find bugs, please let me know! This is the first time I use jQuery behavior (for the parameters' detection in the Settings page) so it could act a little weird.</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#542D70; color:#ffe1ff'>#542D70 &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1073-snips-2/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TWPlaylist</title>
		<link>http://toki-woki.net/blog/p1035-twplaylist</link>
		<comments>http://toki-woki.net/blog/p1035-twplaylist#comments</comments>
		<pubDate>Sat, 29 Aug 2009 15:44:52 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[gray]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=1035</guid>
		<description><![CDATA[I wanted to do this for quite some time: a place that logs tracks I listen to.

Introducing TWPlaylist! Thanks to Twitter and a Winamp Plugin, all tracks that I listen to (at work) are stored on a dummy account (if you know a plugin that does the same for iTunes, please let me know). And [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to do this for quite some time: a place that logs tracks I listen to.</p>
<p style="text-align: center;"><a class="img" href="http://toki-woki.net/p/TWPlaylist/"><img class="aligncenter" title="TWPlaylist" src="http://toki-woki.net/blog/wp-content/uploads/2009/08/twplaylist.gif" alt="TWPlaylist" width="560" height="156" /></a></p>
<p>Introducing <a href="http://toki-woki.net/p/TWPlaylist/">TWPlaylist</a>! Thanks to Twitter and a <a href="http://www.winamp.com/plugins/details/221831">Winamp Plugin</a>, all tracks that I listen to (at work) are stored on <a href="http://twitter.com/twplaylist">a dummy account</a> (if you know a plugin that does the same for iTunes, please let me know). And to keep things nice and smooth, I set up <a href="http://toki-woki.net/p/TWPlaylist/">a quick page</a> that pulls this data and displays it thanks to some AJAX magic... Tracks link to a <a href="http://www.discogs.com/">Discogs</a> search page to find more about them.</p>
<p><span id="more-1035"></span>As you can read the project page's bottom, everything I wrote is opensource. HTML, <a href="http://toki-woki.net/p/playlist/style.css">CSS</a> and <a href="http://toki-woki.net/p/playlist/playlist.js">JS</a> ; help yourself. Nothing too fancy, but it could prevent you from wasting time... By the way, the code should be self-explanatory, but if it's not I can help.</p>
<p>You will probably notice the some tracks' data look weird, in fact the Winamp plugin chokes on special characters such as "&amp;" and accented letters... I hope this gets fixed one day.</p>
<p>I've never been a big fan of Twitter as I think most user don't use it the way it should be used, for example by having private discussions or retweeting too much. However it's a pretty interesting platform for experimentation and art projects. What do you think?</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#666666; color:#ffffff'>#666666 &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p1035-twplaylist/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Vote for Boks!</title>
		<link>http://toki-woki.net/blog/p987-vote-for-boks</link>
		<comments>http://toki-woki.net/blog/p987-vote-for-boks#comments</comments>
		<pubDate>Tue, 18 Aug 2009 18:15:58 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Off topic]]></category>
		<category><![CDATA[red]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=987</guid>
		<description><![CDATA[Big news.
Boks is running for Best RIA of 2009 on InsideRIA, please vote for it!
The top apps will be presented at Adobe MAX 2009... Needless to say I'd be delighted to be a part of it. Of course this is going to be hard, as the competitors are tough ones but hey, let's try!
Update: I've updated the app [...]]]></description>
			<content:encoded><![CDATA[<p>Big news.</p>
<p><a href="http://toki-woki.net/p/Boks/">Boks</a> is running for Best RIA of 2009 on InsideRIA, please <a href="http://oreillynet.com/insideria/polls/234.csp">vote for it</a>!</p>
<p>The top apps will be presented at <a href="http://max.adobe.com/">Adobe MAX 2009</a>... Needless to say I'd be delighted to be a part of it. Of course this is going to be hard, as the competitors are tough ones but hey, let's try!</p>
<p>Update: I've updated the app with a shameless call-to-action button. Damn, I'm weak.</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#8a0000; color:#ffb4b4'>#8a0000 &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p987-vote-for-boks/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>eduMonkey</title>
		<link>http://toki-woki.net/blog/p820-edumonkey</link>
		<comments>http://toki-woki.net/blog/p820-edumonkey#comments</comments>
		<pubDate>Tue, 07 Jul 2009 18:32:13 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[blue]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[link]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=820</guid>
		<description><![CDATA[My first iPhone app is finally online!

eduMonkey is an iPhone version of an old toy that we (at eduMedia) love and first converted to a Flash simulation...
The (free) app is both an addition and a multiplication table ; giving you (in the hands of the monkey) the result of the operation between 2 numbers (under [...]]]></description>
			<content:encoded><![CDATA[<p>My first iPhone app is <a href="http://www.edumedia-sciences.com/eduMonkey">finally online</a>!</p>
<p style="text-align: center;"><a href="http://www.edumedia-sciences.com/eduMonkey" class="img"><img class="aligncenter" title="eduMonkey" src="http://toki-woki.net/blog/wp-content/uploads/2009/07/eduMonkey-2.jpg" alt="eduMonkey" width="414" height="770" /></a></p>
<p><span id="more-820"></span>eduMonkey is an iPhone version of <a href="http://vimeo.com/3149012">an old toy</a> that we (at <a href="http://www.edumedia-sciences.com/">eduMedia</a>) love and first converted to a <a href="http://www.edumedia-sciences.com/en/a572-consul-the-educated-monkey">Flash simulation</a>...</p>
<p>The (free) app is both an addition and a multiplication table ; giving you (in the hands of the monkey) the result of the operation between 2 numbers (under the feet). Simply drag the feet and see the result. Nothing too crazy but hey, it's my first app!</p>
<p><a href="http://www.edumedia-sciences.com/eduMonkey">Go get it</a>, fool!</p>
<p style="text-align: center;"><img class="aligncenter" title="eduMonkey Credits" src="http://toki-woki.net/blog/wp-content/uploads/2009/07/eduMonkey-3.jpg" alt="eduMonkey Credits" width="414" height="770" /></p>
<p>Show it to your teacher, talk about it to your pals, have fun with it and share thoughts... Because I love feedback.</p>
<p>By the way, I discovered this toy <a href="http://www.cuartoderecha.com/2052/">via Cuarto Derecha</a>, thanks buddies!</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#7e98b1; color:#000000'>#7e98b1 &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p820-edumonkey/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back on tracks!</title>
		<link>http://toki-woki.net/blog/p593-back-on-tracks</link>
		<comments>http://toki-woki.net/blog/p593-back-on-tracks#comments</comments>
		<pubDate>Sat, 06 Jun 2009 17:00:25 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Link dump]]></category>
		<category><![CDATA[Off topic]]></category>
		<category><![CDATA[blue]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[red]]></category>
		<category><![CDATA[white]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=593</guid>
		<description><![CDATA[Hi there!
I've been quiet for some time because my laptop died without warning... But happily I'm back with a brand new one (with Vista, ouch!) and just took time to enhance this blog a bit!
First of all I've updated the theme's code so the HTML output is cleaner. Nobody cares, but I do.
Then, I've developed [...]]]></description>
			<content:encoded><![CDATA[<p>Hi there!</p>
<p>I've been quiet for some time because my laptop died without warning... But happily I'm back with a brand new one (with Vista, ouch!) and just took time to enhance this blog a bit!</p>
<p>First of all I've updated the theme's code so the HTML output is cleaner. Nobody cares, but I do.</p>
<p>Then, I've developed a functionality that will allow me (and others?) to make this blog more active: <a href="http://toki-woki.net/blog/cat/link-dump">Link dump</a>. It's still empty for the moment, but don't worry it should fill quite quick!</p>
<p>Basically it allows me to only post links and mysterious titles... No extra words, no image, just a simple link. Click at your own risks.</p>
<p>These links will also pop in your feed reader and to make them look different their title will be prefixed with a funny ∗ character. This is also true for the blog, here's how it will look like:</p>
<p><img class="aligncenter" title="Link dump preview" src="http://toki-woki.net/blog/wp-content/uploads/2009/05/ld-preview.gif" alt="Link dump preview" width="560" height="280" />You'll still be able to comment on the links like you do on regular posts...</p>
<p>Glad to be back!</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#fe0002; color:#ffb4b6'>#fe0002 &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p593-back-on-tracks/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Boks &#8212; A Visual Grid Editor</title>
		<link>http://toki-woki.net/blog/p547-boks-a-visual-grid-editor</link>
		<comments>http://toki-woki.net/blog/p547-boks-a-visual-grid-editor#comments</comments>
		<pubDate>Sun, 29 Mar 2009 17:23:13 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[illustrator]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[typo]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[white]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=547</guid>
		<description><![CDATA[
Introducing Boks, my latest and most ambitious AIR app to this day!
Do you design web pages? Do you write HTML and CSS? Ever heard about the Grid System and Blueprint CSS? Thought it was a pain to implement? Think again, fool!
Boks is some kind of WYSIWYG to help you setup a grid and baseline rhythm, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a class="img" href="http://toki-woki.net/p/Boks/"><img class="aligncenter" title="Boks" src="http://toki-woki.net/p/Boks/css/asset/logo.gif" alt="" width="350" height="418" /></a></p>
<p>Introducing <a href="http://toki-woki.net/p/Boks/">Boks</a>, my latest and most ambitious <strong>AIR app </strong>to this day!</p>
<p>Do you design <strong>web pages</strong>? Do you write <strong>HTML and CSS</strong>? Ever heard about the <a href="http://www.thegridsystem.org/">Grid System</a> and <a href="http://www.blueprintcss.org/">Blueprint CSS</a>? Thought it was a pain to implement? <strong>Think again</strong>, fool!<span id="more-547"></span></p>
<p>Boks is some kind of <strong>WYSIWYG</strong> to help you <strong>setup a grid </strong>and <strong>baseline rhythm</strong>, build and fill <strong>your layout </strong>and export all this to HTML and CSS in no time.</p>
<p>Got your own CSS style already? No problemo, <a href="http://toki-woki.net/p/Boks/">Boks</a> can use them and eventually <strong>merge and compress </strong>them within a single "screen.css". Your styles use images? Simply point to your asset directory and it will be <strong>included </strong>too! Afraid of breaking the baseline rhythm with you randomly sized images? Just select the "<strong>Add JS to fix baselines</strong>" option and you're good to go!</p>
<p>Enough. Just <a href="http://toki-woki.net/p/Boks/">go grab it</a> (or just have a look at the lovely screenshots) and send feedback!</p>
<p>Apr 01, 2009: <strong>Update!</strong> I've done some wacky <a href="http://toki-woki.net/p/Boks/help.html">video screencasts</a> that can help you understand everything about Boks, go and have a look! <em>Yes, the sound is not perfect.</em></p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#ffffff; color:#4b4b4b'>#ffffff &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p547-boks-a-visual-grid-editor/feed</wfw:commentRss>
		<slash:comments>198</slash:comments>
		</item>
		<item>
		<title>Kwot</title>
		<link>http://toki-woki.net/blog/p379-kwot</link>
		<comments>http://toki-woki.net/blog/p379-kwot#comments</comments>
		<pubDate>Sat, 13 Dec 2008 20:55:05 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[as]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[illustrator]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[red]]></category>
		<category><![CDATA[typo]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=379</guid>
		<description><![CDATA[
A new project is online! It's called Kwot, and it allows you to share and store your favorite quotes.
The UI is quite minimalistic, with focus on simplicity. Navigate through quotes with your mouse wheel, your keyboard's left and right arrow or the mini timeline at the bottom. Add a quote by clicking on the plus button at [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center; "><a class="img" href="http://toki-woki.net/kwot/"><img class="aligncenter" title="TW Kwot" src="http://toki-woki.net/kwot/banner.jpg" alt="" width="519" height="135" /></a></p>
<p>A new <a href="http://toki-woki.net/p/">project</a> is online! It's called <a href="http://toki-woki.net/kwot/">Kwot</a>, and it allows you to share and store your favorite quotes.</p>
<p>The UI is quite minimalistic, with focus on simplicity. <strong>Navigate through quotes </strong>with your mouse wheel, your keyboard's left and right arrow or the mini timeline at the bottom. <strong>Add a quote </strong>by clicking on the plus button at the bottom right hand corner. If you don't pick any color they'll be automatically chosen via a magic algorithm! Another magic algorithm will rotate your quote in 3D space. But don't worry you will preview that in real-time, ha!</p>
<p>I might add user (login) support, language tagging, an RSS feed and stuff like that but don't expect that too soon, holidays are coming!</p>
<p>If you don't have the Flash plugin or if you visit the site on an iPhone the site will look quite different but everything will remain!</p>
<p><span id="more-379"></span></p>
<p>A few things I used in case you wonder: <a href="http://www.asual.com/swfaddress/">swfaddress</a> (you will love <a href="http://toki-woki.net/kwot/#/q/15">deep-linking</a>!), <a href="http://www.gskinner.com/libraries/gtween/">GTween</a>, <a href="http://www.flashdevelop.org/">FlashDevelop</a>, <a href="http://www.amfphp.org/">AMFPHP</a>, the <a href="https://developer.apple.com/webapps/docs/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/chapter_4_section_6.html">viewport width attribute</a>... Oh, and by the way, the font face is called <a href="http://www.houseind.com/index.php?page=showfont&amp;id=18">Neutra</a>.</p>
<p>Add some quotes and drop feedback!</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#941c0c; color:#ffd0c0'>#941c0c &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p379-kwot/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>eduMedia &#8216;08</title>
		<link>http://toki-woki.net/blog/p352-edumedia-08</link>
		<comments>http://toki-woki.net/blog/p352-edumedia-08#comments</comments>
		<pubDate>Mon, 10 Nov 2008 14:50:06 +0000</pubDate>
		<dc:creator>Quentin T</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[illustrator]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[preview]]></category>
		<category><![CDATA[white]]></category>

		<guid isPermaLink="false">http://toki-woki.net/blog/?p=352</guid>
		<description><![CDATA[We have just updated our site!
We've been working on this new version for about 9 months and now it's here. The URL hasn't changed, but the site has!
Let me show you what's new...

Before/After
The site used to be designed for 800×600 screens, it is now for 1024×[anything], so the UI is wider and not as high [...]]]></description>
			<content:encoded><![CDATA[<p>We have just updated our site!</p>
<p>We've been working on this new version for about 9 months and now it's here. The URL <a href="http://www.edumedia-sciences.com/">hasn't changed</a>, but the site has!</p>
<p>Let me show you what's new...</p>
<p><span id="more-352"></span></p>
<h3>Before/After</h3>
<p>The site used to be designed for 800×600 screens, it is now for 1024×[anything], so the UI is wider and not as high as it used to be.</p>
<p style="text-align: center;"><img class="aligncenter" title="Our new homepage" src="http://toki-woki.net/blog/wp-content/uploads/2008/11/home-new.jpg" alt="" /></p>
<p>First thing you can notice: the blocks holding the thumbnails have been through a diet! Many UI elements have been removed for cleaner and simpler navigation. Here's a quick comparison:</p>
<p style="text-align: center;"><img class="aligncenter" title="Thumbnail comparison" src="http://toki-woki.net/blog/wp-content/uploads/2008/11/tn-comp.jpg" alt="" /></p>
<p>All of the buttons have been removed but the functionalities are still here, they've just moved to a more logical place. Also, the cross that indicated that you where not logged and had only partial access to the simulation is not here anymore. This limitation is now shown with semi-transparency of the thumbnail and its holder (not present in this screenshot).</p>
<p>The login form (at the top of every page) is now hidden and accessible via a click on the "Log in" link. No extra click, though: your cursor will jump in the field automatically.</p>
<p>You now have a direct access to our tree at the bottom left of the <a href="http://www.edumedia-sciences.com/">homepage</a>, faster! You can also search, with suggestions!</p>
<p style="text-align: center;"><img class="aligncenter" title="Hoime tree and search" src="http://toki-woki.net/blog/wp-content/uploads/2008/11/home-tree.jpg" alt="" /></p>
<p>We worked on icons to illustrate the header's menu items.</p>
<p style="text-align: center;"><img class="aligncenter" title="Header icons" src="http://toki-woki.net/blog/wp-content/uploads/2008/11/header-icons.jpg" alt="" /></p>
<h4>On to the browse page!</h4>
<p style="text-align: center;"><img class="aligncenter" title="Our new browse page" src="http://toki-woki.net/blog/wp-content/uploads/2008/11/browse-new.jpg" alt="" /></p>
<p>Not much to say here, simpler, clearer, nicer. The RSS feed is clearly shown and you can subscribe to our newsletter, this is new!</p>
<p>We used to have a 3×3 grid of thumbnails, we now have a 5×2 one. That's less pages to browse in some cases!</p>
<h4>The media page</h4>
<p>It used to be a popup... Nasty. We all decided to avoid it and go for <a href="http://www.edumedia-sciences.com/en/a398-organs-of-the-human-body">a regular page</a>.</p>
<p style="text-align: center;"><img class="aligncenter" title="Our new media page" src="http://toki-woki.net/blog/wp-content/uploads/2008/11/media-new.jpg" alt="" /></p>
<p>The big new thing here are the price buttons. We used to be quite shy about our commercial activity. We now fully admit it, which is a good thing!</p>
<p>You can notice the "age bar", allowing you to know who the simulation is intended for. Another new thing is the suggestor: simply click on it and you'll be suggested similar simulations.</p>
<p>Again, icons. In the tool box:</p>
<p style="text-align: center;"><img class="aligncenter" title="Tool box" src="http://toki-woki.net/blog/wp-content/uploads/2008/11/tools.jpg" alt="" /></p>
<p>Every other page has changed, but I'll let you go and see that on your own! The biggest reworks have been the <a href="http://www.edumedia-sciences.com/en/subscribe">subscription</a> or the "<a href="http://www.edumedia-sciences.com/en/c1-about">about us</a>", if you're interested.</p>
<h3>Our simulations</h3>
<p>Not only did we change the UI of the site, we also redesigned our simulations!</p>
<p>Switching from a dual color theme (blue for light simulations, orange for dark ones) to a single an more universal gray one. Every component has been rethinked, here's what what they look like:</p>
<p style="text-align: center;"><img class="aligncenter" title="Components" src="http://toki-woki.net/blog/wp-content/uploads/2008/11/compo.jpg" alt="" /></p>
<h3>A technical point of view</h3>
<p>Of course to end up with this UI and functionalities, you need some lines of code. Here's what lies behind the site you see when browsing:</p>
<ul>
<li><a href="http://www.php.net/">PHP5</a>: my favorite back end language, in its last stable version,</li>
<li><a href="http://www.postgresql.org/">PostgreSQL</a>: I've always preferred it to its more famous friend MySQL,</li>
<li><a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets">CSS</a>, lots of them. With <a href="http://meyerweb.com/">Eric Meyer</a>'s <a href="http://meyerweb.com/eric/tools/css/reset/">reset</a>,</li>
<li><a href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, based on the nicest lib: <a href="http://mootools.net/">MooTools</a> (for Ajax and visual effects),</li>
<li><a href="http://code.google.com/p/swfobject/">swfobject</a>, to embed Flash files the right way,</li>
<li>TwinHelix's <a href="http://www.twinhelix.com/css/iepngfix/">PNG fix</a>. Because we love 24 bits transparency but some browsers don't.</li>
<li>A pimped out version of the <a href="http://phplayersmenu.sourceforge.net/">PHP Layers Menu System</a>, for the tree,</li>
<li><a href="http://www.amfphp.org/">AMFPHP</a>, for Flash remoting in PHP,</li>
<li>ActionScript 3 and <a href="http://www.adobe.com/products/flash/">Flash</a>, to make things move!</li>
</ul>
<p>And to write those lines of code, you'd better have good tools! Here's what we used:</p>
<ul>
<li><a href="http://www.eclipse.org/pdt/">Eclispe PDT</a>. Because Dreamweaver is no good,</li>
<li>We plugged <a href="http://andrei.gmxhome.de/filesync/">FileSync</a> and <a href="https://louisville.edu/web/docs/howto/webdav/netdrive">NetDrive</a> in it, for quick upload to our test server. Nice.</li>
<li><a href="http://en.wikipedia.org/wiki/Subversion_(software)">SVN</a> via <a href="http://subclipse.tigris.org/">Subclipse</a> and <a href="http://tortoisesvn.tigris.org/">Tortoise SVN</a>, for good team sync,</li>
<li><a href="http://www.getfirebug.com/">Firebug</a>, the best Firefox debugging plugin.</li>
<li><a href="http://chrispederick.com/work/web-developer/">WebDeveloper</a>, Firebug's best friend,</li>
<li><a href="http://www.flashdevelop.org/">FlashDevelop</a>, because nobody likes Flash's IDE editor, especially for long AS2/AS3 classes...</li>
</ul>
<p>Of course we also used Illustrator and Photoshop, for the graphics.</p>
<h3>Clap, clap!</h3>
<p>Heads up to the team, I think (and hope) we did a great job!</p>
<p>As always, if you've got feedback please drop it there or on the site's <a href="http://www.edumedia-sciences.com/en/c6-contact">dedicated page</a>. We love feedback.</p>

<p><small>Post color: <span style='padding-left:2px; padding-right:2px; background-color:#ffffff; color:#4b4b4b'>#ffffff &#x25a0;</span></small></p>]]></content:encoded>
			<wfw:commentRss>http://toki-woki.net/blog/p352-edumedia-08/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
