<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>thyncology</title>
	
	<link>http://www.thynctank.com</link>
	<description>The Science of Thynctank.</description>
	<pubDate>Thu, 13 Nov 2008 10:26:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/thyncology" type="application/rss+xml" /><item>
		<title>JazzRecord on Github, Plans to Nativize</title>
		<link>http://feeds.feedburner.com/~r/thyncology/~3/451667752/</link>
		<comments>http://www.thynctank.com/javascript/2008/11/jazzrecord-on-github-plans-to-nativize/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 10:26:35 +0000</pubDate>
		<dc:creator>thynctank</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[change]]></category>

		<category><![CDATA[git]]></category>

		<category><![CDATA[jazzrecord]]></category>

		<category><![CDATA[jstorm]]></category>

		<category><![CDATA[orm]]></category>

		<category><![CDATA[scm]]></category>

		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://www.thynctank.com/?p=137</guid>
		<description><![CDATA[JazzRecord master repo is now officially hosted at Github. It&#8217;s available here.

Jesse and I have started to play with git and will be resuming moving forward with testing and refactoring things for the time being.

A short ways down the road, however, there will be a somewhat large change where I&#8217;ll be converting JazzRecord to be [...]]]></description>
			<content:encoded><![CDATA[<p>JazzRecord master repo is now officially hosted at Github. It&#8217;s <a href="http://github.com/thynctank/jazzrecord/tree/master">available here</a>.</p>

<p>Jesse and I have started to play with git and will be resuming moving forward with testing and refactoring things for the time being.</p>

<p>A short ways down the road, however, there will be a somewhat large change where I&#8217;ll be converting JazzRecord to be an independent library not based in MooTools. The reasoning is basically that with no dependency, more users will be inclined to accept it and move on with their app creation.</p>

<p>I&#8217;ve been in contact today with Uriel Kats, developer of another JavaScript ORM, <a href="http://www.urielkatz.com/archive/detail/introducing-jstorm/">JStORM</a>. JStORM has similar syntax for some of it, but he tells me his is rooted in Django whereas my library is rooted in ActiveRecord. We&#8217;ve both expressed interest in learning from one another. I&#8217;m <em>certain</em> to borrow some ideas from his code! He&#8217;s got JOINs implemented already, for one, a major stumbling block for me! His code is also pretty terse and easy to read.</p>

<p>If you come from Django and are looking for ORM in JS, perhaps you&#8217;d better take a look at JStORM!</p>

<p>If you&#8217;re down with ActiveRecord, hang around. We&#8217;ve got some cool stuff coming still.</p>
<img src="http://feeds.feedburner.com/~r/thyncology/~4/451667752" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thynctank.com/javascript/2008/11/jazzrecord-on-github-plans-to-nativize/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.thynctank.com/javascript/2008/11/jazzrecord-on-github-plans-to-nativize/</feedburner:origLink></item>
		<item>
		<title>ThyncRecord is now JazzRecord</title>
		<link>http://feeds.feedburner.com/~r/thyncology/~3/447430477/</link>
		<comments>http://www.thynctank.com/javascript/2008/11/thyncrecord-is-now-jazzrecord/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 14:38:24 +0000</pubDate>
		<dc:creator>thynctank</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[activerecord]]></category>

		<category><![CDATA[adobe air]]></category>

		<category><![CDATA[gears]]></category>

		<category><![CDATA[jazzrecord]]></category>

		<category><![CDATA[orm]]></category>

		<guid isPermaLink="false">http://www.thynctank.com/?p=130</guid>
		<description><![CDATA[Just to be clear, the library I have been working on under the working title ThyncRecord I&#8217;ve now re-dubbed JazzRecord.

JazzRecord.org is now up, with a working, not quite up-to-date version of the library to work with. There&#8217;s also a live demo for tooling around w/ Gears, JazzRecord, and Firebug.

We will be switching to Github soonish, [...]]]></description>
			<content:encoded><![CDATA[<p>Just to be clear, the library I have been working on under the working title <em>ThyncRecord</em> I&#8217;ve now re-dubbed <em>JazzRecord</em>.</p>

<p><a href="http://www.jazzrecord.org/" title="JazzRecord is ActiveRecord for JavaScript">JazzRecord.org</a> is now up, with a working, not quite up-to-date version of the library to work with. There&#8217;s also a live demo for tooling around w/ Gears, JazzRecord, and Firebug.</p>

<p>We will be switching to <a href="http://www.github.com">Github</a> soonish, and will probably link there directly for the nightly copy. We&#8217;ve still got to work out our versioning/release process.</p>

<p>As well, we&#8217;ve made several changes of note since I last blogged:</p>

<ul>
<li><p><strong>Validation is solid</strong>: The previous concept of having a single <code>validate()</code> method has been replaced with three optional methods: <code>validateAtCreate()</code>, <code>validateAtUpdate()</code>, and <code>validateAtSave()</code>. These are run prior to initial record insertion or updating respectively for the first two, and on any save for the last. Almost all ActiveRecord validation methods have been ported over for use in these user-defined methods.</p>

<p>The <em>Record.errors</em> array contains any errors generated during the save process, or a direct call to <code>isValid()</code>.</p></li>
<li><p>Improper data is coerced into the correct type prior to saving the record, as in ActiveRecord. What this means is that, though the data might not be <em>meaningful</em>, it is at least valid in terms of the schema.</p></li>
<li><p>We&#8217;ve begun adding support for &#8220;dirty records&#8221; and will be supporting a good portion of the Rails 2.1 capabilities in this vein.</p></li>
<li><p>Autolinking and unlinking of associations is coming along. So far, <em>hasOne</em> and <em>belongsTo</em> associations are supported. We hope to have all 4 association types supported within a week.</p>

<p>Basically, you can assign a record object directly to the named association property of a base record, and when the base record is saved it will rewrite its foreign key with the ID of the newly-associated record. It also works the other way round (assigning the foreign key property manually will cause the associated record to load after saving the base record).</p>

<p>Taking it one step further, if you reassign a <em>hasOne</em> relationship so that it points to a new record, the original record which belonged to the base record will have its foreign key deleted and the new record will have it assigned in its place.</p>

<p>Similarly, deleting a named association property (or, again, the associated foreign key) or setting it to null will unlink the two records by whichever means is necessary, given the association type. For instance, in a <em>belongsTo</em> relationship, the record which belongs to another record will have its foreign key deleted.</p>

<p>The <em>hasMany</em> and <em>hasAndBelongsToMany</em> association types will soon behave as expected, but a little more infrastructure needs to be added before <em>hasMany</em> will work. Removing an item from the array of &#8220;many&#8221; returned for the associated collection of records will cause that record&#8217;s foreign key (corresponding to the base record&#8217;s ID) to be deleted.</p></li>
<li><p>Have begun writing automated test scripts using <a href="http://jania.pe.kr/aw/moin.cgi/JSSpec">JSSpec</a>, and will be building them out extensively over the next few days so we can truly claim it&#8217;s been tested and is solid.</p></li>
</ul>

<p>This all goes a long way to making JazzRecord closer to being feature-complete and ready for action.</p>
<img src="http://feeds.feedburner.com/~r/thyncology/~4/447430477" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thynctank.com/javascript/2008/11/thyncrecord-is-now-jazzrecord/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.thynctank.com/javascript/2008/11/thyncrecord-is-now-jazzrecord/</feedburner:origLink></item>
		<item>
		<title>ThyncRecord Updates, New Developers</title>
		<link>http://feeds.feedburner.com/~r/thyncology/~3/419265901/</link>
		<comments>http://www.thynctank.com/javascript/2008/10/thyncrecord-updates-new-developers/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 07:13:56 +0000</pubDate>
		<dc:creator>thynctank</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[activerecord]]></category>

		<category><![CDATA[adobe air]]></category>

		<category><![CDATA[air]]></category>

		<category><![CDATA[gears]]></category>

		<category><![CDATA[google gears]]></category>

		<category><![CDATA[jazzrecord]]></category>

		<category><![CDATA[mootools]]></category>

		<category><![CDATA[orm]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[thyncrecord]]></category>

		<guid isPermaLink="false">http://www.thynctank.com/?p=113</guid>
		<description><![CDATA[So there&#8217;ve been some pretty quick lightning rounds of additions to ThyncRecord over the last few days. Partially I attribute this to my hitting a groove, but a lot of it comes from adding a couple new developers to the fold: David and Jesse.

Both David and Jesse are fairly new to JavaScript, new to MooTools, [...]]]></description>
			<content:encoded><![CDATA[<p>So there&#8217;ve been some pretty quick lightning rounds of additions to ThyncRecord over the last few days. Partially I attribute this to my hitting a groove, but a lot of it comes from adding a couple new developers to the fold: David and Jesse.</p>

<p>Both David and Jesse are fairly new to JavaScript, new to MooTools, and have had no previous part in working with this project. David has had some learning experience with Rails/ActiveRecord and that helps in understanding usage of TR tremendously. Jesse has been studying programming in his spare time for the past year or so, and has caught on very quickly.</p>

<p>David is working on rounding out our <em>Migration</em> capabilities, filling in the holes sqlite leaves us with in terms of modifying columns and adding some additional functionality after that. He also improved the <em>find()</em> method on <em>Model</em> so it can accept arrays as in ActiveRecord.</p>

<p>Jesse has so far contributed to adding support for a few new storage datatypes and is in the process of wiring up validations for said types. He has also worked on some of the automigration code.</p>

<p>Tonight and last night I added a lot of code myself:
<ol>
    <li> Fixtures are now fully supported, including mapping tables. Automigrations will now create tables (also including mapping tables for N:N relationships) and load all data presented in fixtures.</li>
    <li>Added <em>AssociationLoader</em> class. This is useful for loading data post-preloading. More on this below.</li>
    <li>Added event-handling to Record objects. This can be configured in Model declarations or added after instantiation of a Record object.</li>
    <li>Wired up Jesse&#8217;s main validation methods to Record.save and added user-configurable validate function to Model constructor.</li>
    <li>Wired up Jesse&#8217;s new datatypes to Record save/initialize methods.</li>
</ol>
Code samples will be presented over the next few days so you can see how fixtures and models are defined. Manual migrations aren&#8217;t well-defined yet and so we&#8217;ll leave that to a later date when they are. I&#8217;d rather talk at length about each of these topics as a separate post.</p>

<p>Preloading happens when a Record object is first created after a call to <em>Model.find</em> or similar method. ThyncRecord only loads associated data to a configurable depth, which can also be overridden in the <em>find</em> call itself. If deeper data is needed, simply calling <em>recordObject.load(&#8221;associationName&#8221;)</em> will fill the target association with the correct data. I basically implemented this as a replacement for dynamic loading of properties in ActiveRecord, since JavaScript has no accessor methods which act like properties. (though ActionScript does, and I just came across similar syntax in Mozilla&#8217;s JS 1.5 documentation&#8230;)</p>

<p>I&#8217;m really excited by how much progress we&#8217;re making, and looking forward to releasing it all shortly. I can see it as being a boon to AIR developers and Gears-heads alike.</p>

<p><span style="text-decoration: line-through;">Quick question: Is the name ThyncRecord ridiculous? If so, what are some kick-ass names the good folks of the Interwebs would like to bestow on this project?</span></p>

<p>[EDIT: ThyncRecord is now JazzRecord and will be available for download from <a title="JazzRecord - Mmm Mmm Good!" href="http://www.jazzrecord.org/">www.jazzrecord.org</a> starting 10/21/08]</p>
<img src="http://feeds.feedburner.com/~r/thyncology/~4/419265901" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thynctank.com/javascript/2008/10/thyncrecord-updates-new-developers/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.thynctank.com/javascript/2008/10/thyncrecord-updates-new-developers/</feedburner:origLink></item>
		<item>
		<title>Thoughts on ThyncRecord</title>
		<link>http://feeds.feedburner.com/~r/thyncology/~3/382971011/</link>
		<comments>http://www.thynctank.com/javascript/2008/09/thoughts-on-thyncrecord/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 05:27:20 +0000</pubDate>
		<dc:creator>thynctank</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Ruby &amp; Rails]]></category>

		<category><![CDATA[activerecord]]></category>

		<category><![CDATA[adobe air]]></category>

		<category><![CDATA[air]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[jazzrecord]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[sql]]></category>

		<category><![CDATA[sqlite]]></category>

		<category><![CDATA[thyncrecord]]></category>

		<guid isPermaLink="false">http://www.thynctank.com/?p=94</guid>
		<description><![CDATA[This is a reposting of an email I sent Frank Lee, who I&#8217;ve tapped to help out in building optimized queries for ThyncRecord. Just figured I&#8217;d share.

&#8220;Because of [JavaScript's prototype-based inheritance vs normal OOP], there is no proper concept of class methods and instance methods. (I don&#8217;t believe moo has implemented such a feature yet, [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_95" class="wp-caption aligncenter" style="width: 509px"><a href="http://www.thynctank.com/wp/wp-content/uploads/2008/09/thyncrecord-diagram.png"><img class="size-full wp-image-95" title="thyncrecord-diagram" src="http://www.thynctank.com/wp/wp-content/uploads/2008/09/thyncrecord-diagram.png" alt="Control Diagram for ThyncRecord" width="499" height="386" /></a><p class="wp-caption-text">Control Diagram for ThyncRecord</p></div></p>

<p>This is a reposting of an email I sent Frank Lee, who I&#8217;ve tapped to help out in building optimized queries for ThyncRecord. Just figured I&#8217;d share.</p>

<p>&#8220;Because of [JavaScript's prototype-based inheritance vs normal OOP], there is no proper concept of class methods and instance methods. (I don&#8217;t believe moo has implemented such a feature yet, though it may in the future&#8230;) So, whereas in ActiveRecord&#8217;s Ruby implementation we have a model class which returns instances of itself when queried using class methods, I&#8217;ve had to invoke a second class called Record, which is a mostly dumb object with a few key methods (save, destroy, reload) and access to associated records within the database. To accomplish this, we need to preload data as deep as seems reasonable to obtain quickly and map it out to dynamically-generated objects which are then assigned to the associated properties.</p>

<p>To generate the SQL for a query, it is necessary to examine a particular model&#8217;s associations and the associated models&#8217; associations, recursively until we reach the appropriately-defined depth. It is of course also necessary to know the data type for each column of the currently-being-built object, It is most important to know upon save, preventing improper types being stored in the db, formatting the query strings appropriately with quotes or without, outputting error messaging, etc. Likewise validation rules may output similar error messaging, as defined by the user of the library via regex. (may implement add&#8217;l validation in the future)</p>

<p>Associations which can be defined should include at a minimum: belongs<em>to and has</em>one, which are essentially the same thing but seen from different perspectives; has<em>many, which maps an array of the associated model&#8217;s Records to a plural property name on the root Record object; and has</em>and<em>belongs</em>to_many, which will map an array of associated Records from either end. Determining where to cutoff preloading of these properties is a significant decision to make still. Preventing circular references, etc may be important.</p>

<p>Data types need further fleshing out as well, I currently have only been dealing with number and text, since SQLite does little to prevent storing improper types in the db. (it does, however, provide some base functions which may be used to provide some additional validation beyond application-level if we thought it was necessary) Likewise, JavaScript makes type checking harder than it is in most languages. We certainly should at a minimum include a date type of some kind, I believe SQLite has another built-in function for current timestamp, etc&#8230;</p>

<p>An example of ThyncRecord usage would be storing various users&#8217; payment info. We might define a User model and a PaymentMethod model, where the User has<em>many PaymentMethods, and a PaymentMethod belongs</em>to a User. All of this is accomplished declaratively (along with defining all columns and add&#8217;l validation). Schema is created by means of migrations or model declarations alone. (I may also implement the Rails concept of fixtures which will load data directly into the db from formatted text, in this case JSON) A call to return the second payment type for user 3 might be:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> payment_meth <span style="color: #339933;">=</span> User.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">3</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">payment_methods</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>;</pre></div></div>


<p>Let&#8217;s also presume that this new object is assigned an ID of 543, (it&#8217;s record 543 in the payment_methods table) though the user needs not know of this. You might then update the billing address (a text field) of this payment method (we can assume it&#8217;s a credit card, perhaps):</p>


<div class="wp_syntax"><div class="code"><pre class="javascript javascript" style="font-family:monospace;">payment_meth.<span style="color: #660066;">billing_address</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;123 Some Place, Sometown, ZZ 90876&quot;</span>;
payment_meth.<span style="color: #660066;">save</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;</pre></div></div>


<p>Calling save will first verify that some data has changed from the initially-loaded state, and if it has it will pass over into the validation process for any sub-objects first, then on to the current Record. In this case we have no sub-objects, only a text field to worry about. It should write out something like</p>


<div class="wp_syntax"><div class="code"><pre class="sql sql" style="font-family:monospace;"><span style="color: #ff0000;">&quot;UPDATE payment_methods SET billing_address='123 Some Place, Sometown, ZZ 90876' WHERE id=543&quot;</span>;</pre></div></div>


<p>The Record object passes back the updated data to its corresponding Model (all Records contain a key to the master models hash stored in ThyncRecord for the purposes of navigating through associations).&#8221;</p>

<p>Anybody w/ questions or who feels like contributing, feel free to email me (<a href='mailto:&#116;&#104;&#121;&#110;&#99;&#116;&#97;&#110;&#107;&#64;&#116;&#104;&#121;&#110;&#99;&#116;&#97;&#110;&#107;&#46;&#99;&#111;&#109;'>&#116;&#104;&#121;&#110;&#99;&#116;&#97;&#110;&#107;&#64;&#116;&#104;&#121;&#110;&#99;&#116;&#97;&#110;&#107;&#46;&#99;&#111;&#109;</a>).</p>

<p>[EDIT: ThyncRecord is now JazzRecord and will be available for download from <a title="JazzRecord - Mmm Mmm Good!" href="http://www.jazzrecord.org/">www.jazzrecord.org</a> starting 10/21/08]</p>
<img src="http://feeds.feedburner.com/~r/thyncology/~4/382971011" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thynctank.com/javascript/2008/09/thoughts-on-thyncrecord/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.thynctank.com/javascript/2008/09/thoughts-on-thyncrecord/</feedburner:origLink></item>
		<item>
		<title>AIR, MooTools, ThyncRecord</title>
		<link>http://feeds.feedburner.com/~r/thyncology/~3/361810224/</link>
		<comments>http://www.thynctank.com/javascript/2008/08/air-mootools-thyncrecord/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 10:02:57 +0000</pubDate>
		<dc:creator>thynctank</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[activerecord]]></category>

		<category><![CDATA[adobe air]]></category>

		<category><![CDATA[air]]></category>

		<category><![CDATA[google gears]]></category>

		<category><![CDATA[jazzrecord]]></category>

		<category><![CDATA[mootools]]></category>

		<category><![CDATA[oop]]></category>

		<category><![CDATA[sqlite]]></category>

		<category><![CDATA[thyncrecord]]></category>

		<guid isPermaLink="false">http://www.thynctank.com/javascript/2008/08/air-mootools-thyncrecord/</guid>
		<description><![CDATA[Threeish updates:

I&#8217;ve recently begun using Adobe AIR (specifically using JavaScript) and am really excited about it. Have had a friend install an unsigned demo of some of my interface code and he said it worked great! This code is for a scalable/syncable task manager I&#8217;ve set aside until I can get some more database-centric groundwork [...]]]></description>
			<content:encoded><![CDATA[<p>Threeish updates:</p>

<p>I&#8217;ve recently begun using <a title="Breathe In, Breathe Out..." href="http://www.adobe.com/products/air/">Adobe AIR</a> (specifically using JavaScript) and am really excited about it. Have had a friend install an unsigned demo of some of my interface code and he said it worked great! This code is for a scalable/syncable task manager I&#8217;ve set aside until I can get some more database-centric groundwork done. This app has me excited for my own personal use as well as the possibility of widespread use by Windows and Mac users. For a great reference after wading through some intro material, check the <strong><a title="Free Adobe AIR books!" href="http://www.tostring.org/">free PDF</a></strong> of Adobe AIR for JavaScript Developers Pocketguide, which Adobe has kindly released into the wild.</p>

<p>Almost all of my current personal work involves <strong><a title="Moooo!" href="http://www.mootools.net" target="_self">MooTools</a> 1.2</strong>, and I love the Class-building capabilities. Having not written a great deal of OOP stuff with 1.1 I can&#8217;t compare, but the <strong>Options and Chaining stuff are very exciting</strong>, as are Element storage and Hashes. I&#8217;m currently using Options all over, may use Chaining, and am using Hash as well as Element storage in the task manager project. <strong>String methods like <a title="substitute, beeyatch!" href="http://docs.mootools.net/Native/String#String:substitute">substitute()</a> and <a title="Clean as a whistle!" href="http://docs.mootools.net/Native/String#String:clean">clean()</a> are a welcome addition!</strong> So are many of the core functions like $random and $extend. $extend, in particular, makes up for not having a directly-overridden Object class.</p>

<p>The aforementioned db groundwork, which I&#8217;ve dubbed <strong>ThyncRecord</strong>, is seeing a lot of progress. I&#8217;m about 300 lines into it and don&#8217;t foresee it going much beyond 700 at this point, even though at various times I&#8217;ve thought it would be much heavier. Have yet to test performance but I&#8217;ve already got some ideas for clearing bottlenecks, mostly involving custom events for asyncrhonous loading if necessary. I currently have a default limit to how deep the recursion can get for loading associated model data into a record, and this can be overridden as necessary.</p>

<p><a title="Simpltry - just TRY and pronounce it!" href="http://www.simpltry.com/">Schlueter</a> gave me the idea of <strong>abstracting the code out to be useful to Google Gears</strong> code as well, which I may take a look at once I&#8217;m happy with how things work using AIR&#8217;s SQLite. It <strong>shouldn&#8217;t be too much trouble working with another project as long as it&#8217;s SQLite</strong> as well.</p>

<p>Finishing up Association handling, adding in validation and implementing a migration system are next up for ThyncRecord. What I have so far is pretty polished and organized, though it&#8217;s taken several revisions and lots of meditative car rides to get it where it is now. It currently <strong>responds as similarly to ActiveRecord as is possible within JavaScript</strong>. Almost all options for finders are available in ThyncRecord, and currently <strong>belongs_to associations work fine. HM and HABTM are next.</strong></p>

<p>I look forward to releasing ThyncRecord for public consumption once it&#8217;s ready, and welcome comments or questions in the meantime. Again, it primarily targets the AIR crowd but will eventually work in other environments as well. It requires MooTools 1.2 to work, and I&#8217;ll release full documentation and requirements once it&#8217;s good to go.</p>

<p>On a side note, <a href="http://www.ridecharge.com/">RideCharge</a> is looking for a QA Specialist. The ideal candidate can write automated tests in addition to normal QA activity. If you have any more questions contact <a href='mailto:&#116;&#104;&#121;&#110;&#99;&#116;&#97;&#110;&#107;&#64;&#116;&#104;&#121;&#110;&#99;&#116;&#97;&#110;&#107;&#46;&#99;&#111;&#109;'>&#116;&#104;&#121;&#110;&#99;&#116;&#97;&#110;&#107;&#64;&#116;&#104;&#121;&#110;&#99;&#116;&#97;&#110;&#107;&#46;&#99;&#111;&#109;</a> or <a href='mailto:&#99;&#97;&#114;&#101;&#101;&#114;&#115;&#64;&#114;&#105;&#100;&#101;&#99;&#104;&#97;&#114;&#103;&#101;&#46;&#99;&#111;&#109;'>&#99;&#97;&#114;&#101;&#101;&#114;&#115;&#64;&#114;&#105;&#100;&#101;&#99;&#104;&#97;&#114;&#103;&#101;&#46;&#99;&#111;&#109;</a>.</p>

<p>P.S. - the Gracefully Degrading Widgets articles <em>will </em>continue eventually!</p>

<p>[EDIT: ThyncRecord is now JazzRecord and will be available for download from <a title="JazzRecord - Mmm Mmm Good!" href="http://www.jazzrecord.org">www.jazzrecord.org</a> starting 10/21/08]</p>
<img src="http://feeds.feedburner.com/~r/thyncology/~4/361810224" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thynctank.com/javascript/2008/08/air-mootools-thyncrecord/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.thynctank.com/javascript/2008/08/air-mootools-thyncrecord/</feedburner:origLink></item>
	</channel>
</rss>
