<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5.1-alpha" -->
<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/"
>

<channel>
	<title>An ASPAjaxWikiBlog Thingy</title>
	<link>http://ajaxwiki.blogsome.com</link>
	<description>Monitoring the development of an AJAX Wikified Blogger</description>
	<pubDate>Thu, 30 Mar 2006 13:10:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.1-alpha</generator>
	<language>en</language>

		<item>
		<title>TiddlyWikiDB</title>
		<link>http://ajaxwiki.blogsome.com/2006/03/27/tiddlywikidb/</link>
		<comments>http://ajaxwiki.blogsome.com/2006/03/27/tiddlywikidb/#comments</comments>
		<pubDate>Mon, 27 Mar 2006 19:40:32 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
		
	<category>Changes</category>
		<guid>http://ajaxwiki.blogsome.com/2006/03/27/tiddlywikidb/</guid>
		<description><![CDATA[	OK, using TW as a UI for TagMe has proved to be a dead herring, or was that a red end?
	Basically I would have to remodel TagMe&#8217;s data er&#8230; model to match that of TW which I don&#8217;t like. I also would start having lots of duplicate code - if TW then&#8230; - so I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[	<p>OK, using TW as a UI for TagMe has proved to be a dead herring, or was that a red end?</p>
	<p>Basically I would have to remodel TagMe&#8217;s data er&#8230; model to match that of TW which I don&#8217;t like. I also would start having lots of duplicate code - if TW then&#8230; - so I&#8217;ve decided to create a simple (don&#8217;t they all start &quot;simple&quot;&#8230;?) database for saving tiddlers and using XMLHttp to load and save tiddlers to an SQL database.</p>
	<p>When &quot;done&quot; is clicked the system saves the tiddler to the database - the direct wikitext and a rendered (wikified) copy is saved for some good reason I forgot.</p>
	<p>So far it&#8217;s peachy but I still have to get the hang of the encoding scheme TW is using (unescapeLineBreaks)&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxwiki.blogsome.com/2006/03/27/tiddlywikidb/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Saving Tiddlers (Ideas)</title>
		<link>http://ajaxwiki.blogsome.com/2006/03/20/saving-tiddlers-ideas/</link>
		<comments>http://ajaxwiki.blogsome.com/2006/03/20/saving-tiddlers-ideas/#comments</comments>
		<pubDate>Mon, 20 Mar 2006 23:10:41 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
		
	<category>Ideas</category>
		<guid>http://ajaxwiki.blogsome.com/2006/03/20/saving-tiddlers-ideas/</guid>
		<description><![CDATA[	It may be necessary to save both the rendered (wikified) and unrendered text when saving a tiddler. The reason is that some tiddlers use plugins but contain no content in their unrendered form. In their rendered form however, they have juicy text and links which:
	
The TagMe search will miss
	Cannot be displayed without the TW engine

	If [...]]]></description>
			<content:encoded><![CDATA[	<p>It may be necessary to save both the rendered (wikified) and unrendered text when saving a tiddler. The reason is that some tiddlers use plugins but contain no content in their unrendered form. In their rendered form however, they have juicy text and links which:</p>
	<ol>
<li>The TagMe search will miss</li>
	<li>Cannot be displayed without the TW engine</li>
</ol>
	<p>If we save the rendered text we will be able to do something that TW can&#8217;t currently do namely, searching the effective contents (rendered text).</p>
	<p><strong>Possible Issues</strong></p>
	<div class="post_body">
<li>Maintaining an up to date rendered version. This is dependant on (possibly) all other tiddlers in the case of the &lt;&lt;list all&gt;&gt; macro.</li>
	<li>Possible &quot;un-rendering&quot; certain parts of the Tiddler so that TagMe can parse them. I&#8217;m thinking of inter-tiddler links for example which should be saved as [[TargetTiddler]] instead of &lt;a href=&quot;javascript;&quot; etc&#8230;&gt;TargetTiddler&lt;/a&gt; so that TagMe can determine backlinks.</li>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxwiki.blogsome.com/2006/03/20/saving-tiddlers-ideas/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Save Tiddler to TagMe</title>
		<link>http://ajaxwiki.blogsome.com/2006/03/15/save-tiddler-to-tagme/</link>
		<comments>http://ajaxwiki.blogsome.com/2006/03/15/save-tiddler-to-tagme/#comments</comments>
		<pubDate>Wed, 15 Mar 2006 22:31:48 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
		
	<category>Planned Features</category>
	<category>Ideas</category>
		<guid>http://ajaxwiki.blogsome.com/2006/03/15/save-tiddler-to-tagme/</guid>
		<description><![CDATA[	OK, saving a single tiddler to TagMe was relatively trivial. Hijacking the TiddlyWiki.prototype.saveTiddler() function and adding the following at the end.
	var TiddlerObj = {subject:tiddler.title, body:tiddler.text, wikiword:tiddler.title, id:title, tags:tiddler.tags}ajax.PostObject(&quot;tagme.asp&quot;, TiddlerObj, &quot;POST&quot;, &quot;action=save&quot;)
	The action &quot;save&quot; is a new action in tagme.asp which basically inserts or updates depending on the existance of the tiddler. It also obtains the [...]]]></description>
			<content:encoded><![CDATA[	<p>OK, saving a single tiddler to TagMe was relatively trivial. Hijacking the TiddlyWiki.prototype.saveTiddler() function and adding the following at the end.</p>
	<p>var TiddlerObj = {subject:tiddler.title, body:tiddler.text, wikiword:tiddler.title, id:title, tags:tiddler.tags}<br />ajax.PostObject(&quot;tagme.asp&quot;, TiddlerObj, &quot;POST&quot;, &quot;action=save&quot;)</p>
	<p>The action &quot;save&quot; is a new action in tagme.asp which basically inserts or updates depending on the existance of the tiddler. It also obtains the id from the wikiword in the parameter id.</p>
	<p>ajax.PostObject is also a new function which simply serializes a simple object as a series of parameters basically resulting in the following post data:<br />subject=MyTiddler&amp;body=Hello+World&amp;wikiword=MyTiddler&amp;id=MyOldTiddlerTitle&amp;tags=Tag1,Tag+2</p>
	<p>Actually in order to get the comma seperated tags we must pass the following as the tags attribute of TiddlerObj:</p>
	<p>tags:tiddler.tags.join(&#8217;,').replace(/[\[\]]/, &quot;&quot;)&nbsp;</p>
	<p>This ensures the TW-style tags (Tag1 [[Tag 2]]) get converted to our CSV Tags.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxwiki.blogsome.com/2006/03/15/save-tiddler-to-tagme/feed/</wfw:commentRss>
	</item>
		<item>
		<title>TiddlyWiki Integration</title>
		<link>http://ajaxwiki.blogsome.com/2006/03/15/tiddlywiki-integration/</link>
		<comments>http://ajaxwiki.blogsome.com/2006/03/15/tiddlywiki-integration/#comments</comments>
		<pubDate>Wed, 15 Mar 2006 12:42:00 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
		
	<category>Ideas</category>
		<guid>http://ajaxwiki.blogsome.com/2006/03/15/tiddlywiki-integration/</guid>
		<description><![CDATA[	I use TiddlyWiki&nbsp;daily because it&#8217;s the leanest, meanest, simplest, most intelligent personal data management system I&#8217;ve ever seen.
	It&#8217;s only drawbacks are the lack of scalability and the lack of content/code seperation. This means, if you have 7 wiki files for managing 7 projects you have to update them all when a TW upgrade is available. [...]]]></description>
			<content:encoded><![CDATA[	<p>I use <a title="TiddlyWiki" href="http://www.tiddlywiki.com/" target="_self">TiddlyWiki</a>&nbsp;daily because it&#8217;s the leanest, meanest, simplest, most intelligent personal data management system I&#8217;ve ever seen.</p>
	<p>It&#8217;s only drawbacks are the lack of scalability and the lack of content/code seperation. This means, if you have 7 wiki files for managing 7 projects you have to update them all when a TW upgrade is available. This is especially difficult if you&#8217;ve customized the code yourself and not always using hijacking plugins (naughty<img title="emoticon" alt="emoticon" src="http://ajaxwiki.blogsome.com/wp-content/plugins/Wysi-Wordpress/plugins/emotions/images/wink.gif" border="0" />).</p>
	<p>Regarding scalability, there&#8217;s only so much you can do with an HTML file where all data is loaded into memory at once. Sometime in the future you will have a performance problem.</p>
	<p>I propose to hijack&nbsp;3 aspects of TiddlyWiki and move all tiddler data to the server&#8217;s database.</p>
	<ol>
<li>
<div>SaveToDiv() -&gt; Don&#8217;t save to HTML, post entry/entries to server</div>
</li>
	<li>
<div>LoadFromDiv() -&gt; Likewise, load all tiddlers (except their main body text) from the server into memory.</div>
</li>
	<li>
<div>Access to the tiddler&#8217;s body (not cached in memory)</div>
</li>
</ol>
	<p>In this way, memory is saved by only loading a tiddlers body (80-90% of the data size) when it is needed.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxwiki.blogsome.com/2006/03/15/tiddlywiki-integration/feed/</wfw:commentRss>
	</item>
		<item>
		<title>First Release</title>
		<link>http://ajaxwiki.blogsome.com/2006/03/13/first-release/</link>
		<comments>http://ajaxwiki.blogsome.com/2006/03/13/first-release/#comments</comments>
		<pubDate>Mon, 13 Mar 2006 23:14:47 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
		
	<category>Release</category>
		<guid>http://ajaxwiki.blogsome.com/2006/03/13/first-release/</guid>
		<description><![CDATA[	OK, please download the first release (v.1.4.1) from HyperUpload. I would appreciate any feedback.
	System Requirements:&nbsp;
	
ASP Web Server (tested in IIS on WinXP)
	SQL Server (tested on Microsoft SQL Server 2000 on WinXP)

]]></description>
			<content:encoded><![CDATA[	<p>OK, please download the first release (v.1.4.1) from <a target="_self" href="http://hyperupload.com/download/997ca684/TagMe_v1.4.1.zip.html">HyperUpload</a>. I would appreciate any feedback.</p>
	<p>System Requirements:&nbsp;</p>
	<ol>
<li>ASP Web Server (tested in IIS on WinXP)</li>
	<li>SQL Server (tested on Microsoft SQL Server 2000 on WinXP)</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ajaxwiki.blogsome.com/2006/03/13/first-release/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Comments</title>
		<link>http://ajaxwiki.blogsome.com/2006/03/12/comments/</link>
		<comments>http://ajaxwiki.blogsome.com/2006/03/12/comments/#comments</comments>
		<pubDate>Sun, 12 Mar 2006 22:00:39 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
		
	<category>Planned Features</category>
		<guid>http://ajaxwiki.blogsome.com/2006/03/12/comments/</guid>
		<description><![CDATA[	What&#8217;s a Blog without comments? With this in mind I&#8217;ve created the [data] table as a generic storage for everything. The view [post] will return all classic posts (data_type=&#8217;p'), while a planned view [comments] will return all comments (data_type=&#8217;c'). 
	The advantage of this is that the search function only has to look in 1 table. [...]]]></description>
			<content:encoded><![CDATA[	<p>What&#8217;s a Blog without comments? With this in mind I&#8217;ve created the [data] table as a generic storage for everything. The view [post] will return all classic posts (data_type=&#8217;p'), while a planned view [comments] will return all comments (data_type=&#8217;c'). </p>
	<p>The advantage of this is that the search function only has to look in 1 table. We could even add further data types for attachments (&#8217;a') and images (&#8217;i') later and still have them taggable and searchable.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxwiki.blogsome.com/2006/03/12/comments/feed/</wfw:commentRss>
	</item>
		<item>
		<title>Back buttons in AJAX</title>
		<link>http://ajaxwiki.blogsome.com/2006/03/07/back-buttons-in-ajax/</link>
		<comments>http://ajaxwiki.blogsome.com/2006/03/07/back-buttons-in-ajax/#comments</comments>
		<pubDate>Tue, 07 Mar 2006 21:57:10 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
		
	<category>General</category>
		<guid>http://ajaxwiki.blogsome.com/2006/03/07/back-buttons-in-ajax/</guid>
		<description><![CDATA[	Any AJAX Application, which does not reload the page will cause grief to the poor user who clicks their back button:
	
They expect the last state to appear
	They won&#8217;t even be on the current page anymore

	The workaround for this is to use several very clever tricks (1 for each browser) to provide a history path. The [...]]]></description>
			<content:encoded><![CDATA[	<p>Any AJAX Application, which does not reload the page will cause grief to the poor user who clicks their back button:</p>
	<ol>
<li>They expect the last state to appear</li>
	<li>They won&#8217;t even be on the current page anymore</li>
</ol>
	<p>The workaround for this is to use several very clever tricks (1 for each browser) to provide a history path. The main aspects are:</p>
	<ol>
<li>Using a hidden IFrame to &quot;fool2 the browser into generating a history</li>
	<li>Saving state in the page&#8217;s hash (#) or fragment anchor</li>
	<li>Reading the state from the hash and updating accordingly</li>
</ol>
	<p>It&#8217;s all rather complicated under the hood but luckily there&#8217;s such a thing as the <a href="http://codinginparadise.org/projects/dhtml_history/README.html" target="_self" title="Really Simple History">Really Simple History</a> which hides the complexity and provides all you need for most cool browsers.</p>
	<p>You still need to call it&#8217;s <strong>dhtmlHistory.add()</strong> method each time your app changes state and remember to add your own listener for catching history changes by the user -&gt; <strong>dhtmlHistory.addListener(myFunc)</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxwiki.blogsome.com/2006/03/07/back-buttons-in-ajax/feed/</wfw:commentRss>
	</item>
		<item>
		<title>What&#8217;s this about an ASPAjaxWikiBlog Thingy?</title>
		<link>http://ajaxwiki.blogsome.com/2006/03/01/welcome/</link>
		<comments>http://ajaxwiki.blogsome.com/2006/03/01/welcome/#comments</comments>
		<pubDate>Wed, 01 Mar 2006 21:32:03 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
		
	<category>General</category>
		<guid>http://ajaxwiki.blogsome.com/2006/03/01/welcome/</guid>
		<description><![CDATA[	Um, it&#8217;s like a cool web application I made (codename TagMe) which tries to offer the functionality of a Blog and a Wiki of course using all the latest technology buzzwords:
	
AJAX
	Wiki
	Blog
	Tagging
	erm ASP?

	It&#8217;s work in progress and I want people to download it, use it and provide feedback.
	The system runs on any ASP-capable server (like IIS) [...]]]></description>
			<content:encoded><![CDATA[	<p>Um, it&#8217;s like a cool web application I made (codename TagMe) which tries to offer the functionality of a Blog and a Wiki of course using all the latest technology buzzwords:</p>
	<ul>
<li>AJAX</li>
	<li>Wiki</li>
	<li>Blog</li>
	<li>Tagging</li>
	<li>erm ASP?</li>
</ul>
	<p>It&#8217;s work in progress and I want people to download it, use it and provide feedback.</p>
	<p>The system runs on any ASP-capable server (like IIS) and uses Microsoft SQL Server as a database. I&#8217;m sure it would work with MS Access too.</p>
	<p>The database is nothing fancy and consists of 2 tables (data and tag).</p>
	<p>The ASP side is also simple and consists of 3 pages:</p>
	<ol>
<li>admin.asp -&nbsp; The page for authors to edit their wiki/blog posts</li>
	<li>index.asp - The page for visitors to view the wiki/blog posts</li>
	<li>tagme.asp - The server side proxy for putting the &quot;X&quot; in AJAX</li>
</ol>
	<p>The client side functionality is in 4 scripts:</p>
	<ol>
<li>tagme.js - The main functionality of managing and viewing posts</li>
	<li>ajax.jsl - Handles the communication with the server (tagme.asp)</li>
	<li>dhtml.js - Some basic DHTML functions</li>
	<li>dhtmlHistory.js - A cool library (aka. TSH) for managing back button behaviour in AJAX apps</li>
</ol>
The app is tested in FireFox 1.5 and IE6 and that&#8217;s good enough for me.
</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxwiki.blogsome.com/2006/03/01/welcome/feed/</wfw:commentRss>
	</item>
	</channel>
</rss>
