<?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>ThomasTsoi.com &#187; Software</title>
	<atom:link href="http://www.thomastsoi.com/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thomastsoi.com</link>
	<description>My World, My Rules.</description>
	<lastBuildDate>Fri, 29 Apr 2011 09:46:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CJK-AutoTagger</title>
		<link>http://www.thomastsoi.com/software/cjk-autotagger/</link>
		<comments>http://www.thomastsoi.com/software/cjk-autotagger/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 20:05:19 +0000</pubDate>
		<dc:creator>Thomas Tsoi</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[WordPress Plugins]]></category>
		<category><![CDATA[Chinese]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Japanese]]></category>
		<category><![CDATA[Korean]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[language code]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.thomastsoi.com/?p=550</guid>
		<description><![CDATA[CJK-AutoTagger Automatically wraps CJK characters in your site with <span lang=""></span> tags, so that you can style them separately. You can choose what to <span>-wrap (refer to the screen shot) and what language code to use.]]></description>
			<content:encoded><![CDATA[<h3>Description</h3>
<p>Do you often mix Latin letters and Chinese, Japanese or Korean (CJK) characters in the same post or in the title? Did you find it difficult to style both types of characters satisfactorily using the same CSS style?</p>
<p>CJK-AutoTagger Automatically wraps CJK characters in your site with &lt;span lang=&#8221;"&gt;&lt;/span&gt; tags, so that you can style them separately. You can choose what to &lt;span&gt;-wrap (refer to the screen shot) and what language code to use.</p>
<p>To style CJK and non-CJK (usually Latin) characters separately, follow the example below:</p>
<div style="margin: 10px; width: 500px; font: 12px Courier New; background: #ffffcc; color: #000; border: orange 1px dashed; padding: 15px;"><span style="color: green;">// Style non-CJK characters</span><br />
<strong>#content</strong> {<br />
  <span style="color: blue;">font-family</span>: Arial, Verdana;<br />
  <span style="color: blue;">font-size</span>: 12px;<br />
  }<br />
<span style="color: green;">// Style CJK characters</span><br />
<strong>#content:lang(zh-HK)</strong> {<br />
  <span style="color: blue;">font-family</span>: <span style="color: red;">&#8220;Microsoft JhengHei&#8221;</span>, <span style="color: red;">&#8220;MingLiu&#8221;</span>;<br />
  <span style="color: blue;">font-size</span>: 14px;<br />
  }</div>
<p>For more information on styling with language codes, check out <a href="http://www.w3.org/International/questions/qa-css-lang">this reference from W3C</a>.</p>
<div>
<h3>Advanced Usage</h3>
<p><strong>For advanced users:</strong> to auto-detect and &lt;span&gt;-wrap your custom strings in templates, use the following function:</p>
<div style="margin: 10px; width: 500px; font: 12px Courier New; background: #ffffcc; color: #000; border: orange 1px dashed; padding: 15px;"><span style="color: black; font-style: italic;">string</span> <span style="font: 12px Courier New; color: blue; font-weight: bold;">cjk_autotagger</span>( string <span style="color: black; font-style: italic;">$string</span> [, string <span style="color: black; font-style: italic;">$lang_code</span> ] )</div>
</div>
<div>
<p><strong>Example:</strong></p>
<div style="margin: 10px; width: 500px; font: 12px Courier New; background: #ffffcc; color: #000; border: orange 1px dashed; padding: 15px;">echo <span style="font: 12px Courier New; color: blue; font-weight: bold;">cjk_autotagger</span>(<span style="color: black;">$str</span>, <span style="color: red;">&#8220;zh-HK&#8221;</span>);</div>
</div>
<h3>Installation</h3>
<ol>
<li>Upload the directory cjk-autotagger to the /wp-content/plugins/ directory</li>
<li>Activate the plugin through the &#8216;Plugins&#8217; menu in WordPress</li>
<li>Configure your plugin on the CJK-AutoTagger setting page under Settings</li>
</ol>
<h3>Screenshots</h3>
<p>CJK-AutoTagger Setting page.</p>
<p><img class="alignnone size-full wp-image-551" title="screenshot1" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/screenshot1.png" alt="" width="580" height="727" /></p>
<h3><a href="http://downloads.wordpress.org/plugin/cjk-autotagger.zip" id="download">Download</a> (46 downloads)</h3>

<!--EOC-->
]]></content:encoded>
			<wfw:commentRss>http://www.thomastsoi.com/software/cjk-autotagger/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WP-Referrers</title>
		<link>http://www.thomastsoi.com/software/wp-referrers/</link>
		<comments>http://www.thomastsoi.com/software/wp-referrers/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 04:20:18 +0000</pubDate>
		<dc:creator>Thomas Tsoi</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[WordPress Plugins]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[referrer]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.thomastsoi.com/?p=59</guid>
		<description><![CDATA[You can now get all the information about how people arrive at your site. WP-Referrers tracks all the referrals leading to your site, organize and neatly present them in a number of ways. To start with, you can check out the lastest referrers to your site. You can view the referrers by the referrer URL or by the local page referred to. In addition, WP-Referrers also recognizes referrals from major search engines. You can see how many hits you get from each search engine, and what keywords people use to get to your site.]]></description>
			<content:encoded><![CDATA[<h2>Description</h2>
<p>You can now get all the information about how people arrive at your site. WP-Referrers tracks all the referrals leading to your site, organize and neatly present them in a number of ways. To start with, you can check out the lastest referrers to your site. You can view the referrers by the referrer URL or by the local page referred to. In addition, WP-Referrers also recognizes referrals from major search engines. You can see how many hits you get from each search engine, and what keywords people use to get to your site.</p>
<h2>Installation</h2>
<div id="_mcePaste">
<ol>
<li>Upload the directory `wp-referrers` to the `/wp-content/plugins/` directory</li>
<li>Activate the plugin through the &#8216;Plugins&#8217; menu in WordPress</li>
<li>Done. WP_Referrers will take care of the rest.</li>
</ol>
</div>
<h2>Screenshots</h2>
<p><a href="http://www.thomastsoi.com/wp-content/uploads/2010/03/screenshot-1.png"><img class="aligncenter size-full wp-image-74" title="screenshot-1" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/screenshot-1.png" alt="" width="617" height="450" /></a></p>
<p><a href="http://www.thomastsoi.com/wp-content/uploads/2010/03/screenshot-2.png"><img class="aligncenter size-full wp-image-75" title="screenshot-2" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/screenshot-2.png" alt="" width="617" height="437" /></a></p>
<h3><a href="http://downloads.wordpress.org/plugin/wp-referrers.zip" id="download">Download</a> (1,638 downloads)</h3>

<!--EOC-->
]]></content:encoded>
			<wfw:commentRss>http://www.thomastsoi.com/software/wp-referrers/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Computer Languages</title>
		<link>http://www.thomastsoi.com/software/complang/</link>
		<comments>http://www.thomastsoi.com/software/complang/#comments</comments>
		<pubDate>Tue, 25 Mar 2008 16:25:04 +0000</pubDate>
		<dc:creator>Thomas Tsoi</dc:creator>
				<category><![CDATA[Facebook Applications]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[computer language]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.thomastsoi.com/?p=531</guid>
		<description><![CDATA[Tell others what computer languages you know and ask for help from or just share with other programmers in our forums.]]></description>
			<content:encoded><![CDATA[<p>Tell others what computer languages you know and ask for help from or just share with other programmers in our forums.</p>
<h3><a href="http://www.facebook.com/apps/application.php?id=5200575781">View</a></h3>

<!--EOC-->
]]></content:encoded>
			<wfw:commentRss>http://www.thomastsoi.com/software/complang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tongues</title>
		<link>http://www.thomastsoi.com/software/tongues/</link>
		<comments>http://www.thomastsoi.com/software/tongues/#comments</comments>
		<pubDate>Tue, 25 Mar 2008 16:22:56 +0000</pubDate>
		<dc:creator>Thomas Tsoi</dc:creator>
				<category><![CDATA[Facebook Applications]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[language]]></category>

		<guid isPermaLink="false">http://www.thomastsoi.com/?p=529</guid>
		<description><![CDATA[Tongues lets you tell others what languages you can speak and have learnt. You can even meet friends who speak the same languages as you do through Tongues.]]></description>
			<content:encoded><![CDATA[<p>Tongues lets you tell others what languages you can speak and have learnt. You can even meet friends who speak the same languages as you do through Tongues.</p>
<h3><a href="http://www.facebook.com/apps/application.php?id=5051903587">View</a></h3>

<!--EOC-->
]]></content:encoded>
			<wfw:commentRss>http://www.thomastsoi.com/software/tongues/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fonoguru</title>
		<link>http://www.thomastsoi.com/software/fonoguru/</link>
		<comments>http://www.thomastsoi.com/software/fonoguru/#comments</comments>
		<pubDate>Tue, 27 Mar 2007 05:53:52 +0000</pubDate>
		<dc:creator>Thomas Tsoi</dc:creator>
				<category><![CDATA[PHP Scripts]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[IPA]]></category>
		<category><![CDATA[phonetics]]></category>
		<category><![CDATA[phonology]]></category>

		<guid isPermaLink="false">http://www.thomastsoi.com/?p=555</guid>
		<description><![CDATA[Let Fonoguru solve your phonology assignment! Simply input a set of phonetic data, and click a button, Fonoguru will automagically determine whether two or more phones are separate phonemes or allophones of the same phoneme, and state the conditioning environment for you.]]></description>
			<content:encoded><![CDATA[
<script language="JavaScript">

////////////////////////////////////////////////////////////////////
// Javascript from Randy L. Taylor
var globalCursorPos = 0; // global variabe to keep track of where the cursor was

//sets the global variable to keep track of the cursor position
function setCursorPos() {
	if (navigator.appName == "Microsoft Internet Explorer") {
		globalCursorPos = getCursorPos(document.fonoguru.input);
	}
}

//This function returns the index of the cursor location in
//the value of the input text element
//It is important to make sure that the sWeirdString variable contains
//a set of characters that will not be encountered normally in your
//text
function getCursorPos(textElement) {
	if (navigator.appName == "Microsoft Internet Explorer") {

		//save off the current value to restore it later,
		var sOldText = textElement.value;

		//create a range object and save off it's text
		var objRange = document.selection.createRange();
		var sOldRange = objRange.text;

		//set this string to a small string that will not normally be encountered
		var sWeirdString = '#%~';

		//insert the weirdstring where the cursor is at
		objRange.text = sOldRange + sWeirdString;
		objRange.moveStart('character', (0 - sOldRange.length - sWeirdString.length));

		//save off the new string with the weirdstring in it
		var sNewText = textElement.value;

		//set the actual text value back to how it was
		objRange.text = sOldRange;

		//look through the new string we saved off and find the location of
		//the weirdstring that was inserted and return that value
		for (i=0; i <= sNewText.length; i++) {
			var sTemp = sNewText.substring(i, i + sWeirdString.length);
			if (sTemp == sWeirdString) {
				var cursorPos = (i - sOldRange.length);
				return cursorPos;
			}
		}
	}
}

//this function inserts the input string into the textarea
//where the cursor was at
function insertString(stringToInsert) {
	isDigraph = false;
	for (i=0; i<diacritics.length; i++)
		if (stringToInsert == diacritics[i]) isDigraph = true;

	if (navigator.appName == "Microsoft Internet Explorer") {
		if (globalCursorPos > 0 || !isDigraph) {
			lastIsDigraph = false;
			for (i=0; i<diacritics.length; i++)
				if (document.fonoguru.input.value.charAt(globalCursorPos-1) == diacritics[i]) lastIsDigraph = true;

			if (!lastIsDigraph || !isDigraph) {
					var firstPart = document.fonoguru.input.value.substring(0, globalCursorPos);
					var secondPart = document.fonoguru.input.value.substring(globalCursorPos, document.fonoguru.input.value.length);
					document.fonoguru.input.value = firstPart + stringToInsert + secondPart;
					globalCursorPos += stringToInsert.length;
			}
		}
	}
	else {
		lastIsDigraph = false;
		for (i=0; i<diacritics.length; i++)
			if (document.fonoguru.input.value.charAt(document.fonoguru.input.value.length-1) == diacritics[i]) lastIsDigraph = true;

		if (!lastIsDigraph || !isDigraph) {
			document.fonoguru.input.value = document.fonoguru.input.value + stringToInsert;
		}
	}

}
// End set cursor
////////////////////////////////////////////////////////////////////

var diacritics = new Array("'", "’", ":", "ː", "̥", "̤", "̪", "̬", "̰", "̺", "ʰ", "̼", "̻", "̹", "ʷ", "̃", "̜", "ʲ", "ⁿ", "̟", "ˠ", "ˡ", "̠", "ˤ", "̚", "̈", "̴", "̽", "̝", "̩", "̞", "̯", "̘", "˞", "̙");


function updateList(frm) {
	chars = new Array();
	
	if (frm.input.value.match(/[ \[\]\{\}\$\^\*\.\+\?\-\(\)]/)) {
		alert("The data contains illegal characters, they will be automatically removed.");
		frm.input.value = frm.input.value.replace(/[ \[\]\{\}\$\^\*\.\+\?\-\(\)]/g, "");
	}
	
	if (frm.replace.checked == true) {
		frm.input.value = frm.input.value.replace(/g/g, "ɡ");
		frm.input.value = frm.input.value.replace(/B/g, "ʙ");
		frm.input.value = frm.input.value.replace(/G/g, "ɢ");
		frm.input.value = frm.input.value.replace(/N/g, "ɴ");
		frm.input.value = frm.input.value.replace(/R/g, "ʀ");
		frm.input.value = frm.input.value.replace(/ː/g, ":");
		frm.input.value = frm.input.value.replace(/’/g, "'");
	}
	
	if (frm.digraph.checked == true) {
		frm.input.value = frm.input.value.replace(/ts/g, "ʦ");
		frm.input.value = frm.input.value.replace(/dz/g, "ʣ");
		frm.input.value = frm.input.value.replace(/tʃ/g, "ʧ");
		frm.input.value = frm.input.value.replace(/dʒ/g, "ʤ");
	 }
	 
	text = frm.input.value;
	text = text.replace(/[\n\r ]/g, "");

	while (text.length > 0) {
		numGraph = 1;
		for (i=0; i<diacritics.length; i++) {
			if (text.charAt(1) == diacritics[i]) numGraph = 2;
			}

		chars.push(text.substr(0, numGraph));
		regex = text.substr(0, numGraph) + "+(?!["+ diacritics.join("") +"])";
		text = text.replace(new RegExp(regex, "g"), "");
		}

	chars.sort();

	for (i=frm.phone1.options.length-1;i>=0;i--) {
		frm.phone1.options[i] = null;
		frm.phone2.options[i] = null;
		frm.phone3.options[i] = null;
		frm.phone4.options[i] = null;
		frm.phone5.options[i] = null;
		}
	
	frm.phone1.options[0] = new Option("", "", false, false);
	frm.phone2.options[0] = new Option("", "", false, false);
	frm.phone3.options[0] = new Option("", "", false, false);
	frm.phone4.options[0] = new Option("", "", false, false);
	frm.phone5.options[0] = new Option("", "", false, false);

	for (i=0;i<chars.length;i++) {
		frm.phone1.options[i+1] = new Option(chars[i], chars[i], false, false);
		frm.phone2.options[i+1] = new Option(chars[i], chars[i], false, false);
		frm.phone3.options[i+1] = new Option(chars[i], chars[i], false, false);
		frm.phone4.options[i+1] = new Option(chars[i], chars[i], false, false);
		frm.phone5.options[i+1] = new Option(chars[i], chars[i], false, false);
		}
	}

function insert(symbol) {
	insertString(symbol);
	updateList(document.fonoguru);
	return false;
	}

function highlightRange(num) {
	color = 'gold';
	orig_color = 'white';
		
	if (num < 0) {
		minus1.style.color = orig_color;
		minus2.style.color = orig_color;
		minus3.style.color = orig_color;
		minus4.style.color = orig_color;
		
		minus1.style.color = color;
		if (num < -1) minus2.style.color = color;
		if (num < -2) minus3.style.color = color;
		if (num < -3) minus4.style.color = color;
		}
	else {
		plus1.style.color = orig_color;
		plus2.style.color = orig_color;
		plus3.style.color = orig_color;
		plus4.style.color = orig_color;
		
		plus1.style.color = color;
		if (num > 1) plus2.style.color = color;
		if (num > 2) plus3.style.color = color;
		if (num > 3) plus4.style.color = color;
		}
	}

function dehighlightRange() {
	color = 'gold';
	orig_color = 'white';
	
	num = document.fonoguru.from.value;
	minus1.style.color = orig_color;
	minus2.style.color = orig_color;
	minus3.style.color = orig_color;
	minus4.style.color = orig_color;
	minus1.style.color = color;
	if (num < -1) minus2.style.color = color;
	if (num < -2) minus3.style.color = color;
	if (num < -3) minus4.style.color = color;

	num = document.fonoguru.to.value;
	plus1.style.color = orig_color;
	plus2.style.color = orig_color;
	plus3.style.color = orig_color;
	plus4.style.color = orig_color;
	plus1.style.color = color;
	if (num > 1) plus2.style.color = color;
	if (num > 2) plus3.style.color = color;
	if (num > 3) plus4.style.color = color;
	}

function setRange(num) {
	if (num < 0) {
		document.fonoguru.from.value = num;
		}
	else {
		document.fonoguru.to.value = num;
		}
	}


function loadData(frm) {
	data = frm.data.options[frm.data.selectedIndex].value;
	
	var e = document.createElement("script");
	e.src = "/wp-content/custom/fonoguru/load_data.php?"+data;
	e.type="text/javascript";
	document.getElementsByTagName("head")[0].appendChild(e);
	
	}

</script>

<style>
#fonoguru {
	font: 8pt Verdana; 
	width: 900px;
	height: 550px; 
	padding: 20px; 
	border: 4px solid #0d1c3c;
	background-color: #38435B;
	background-image: url(/wp-content/custom/fonoguru/images/fonoguru-bg.jpg);	
	background-repeat: no-repeat;
	background-position: right top;
}
#fonoguru span.text {font: bold 8pt Verdana; color: black;}
#fonoguru span.title {font: bold 8pt Verdana; color: white}
#fonoguru table {border-collapse: collapse !important;}
#fonoguru td {border: 0px;}
#fonoguru .ipacell {
	border: 1px solid black !important;
	vertical-align: middle;
	}
#fonoguru .ipacell td {
	vertical-align: middle;
	}
#fonoguru td.ipa  {
	width: 20px; 
	cursor: pointer; 
	text-align: center; 
	padding: 0px; 
	color: white; 
	background-color: transparent;
	font-size: 12pt; 
	font-family: "Doulos SIL", "TITUS Cyberbit Basic", "Gentium", "Junicode", "Cardo", "Aborigonal Serif", "Arial Unicode MS"
}
#fonoguru td.ipa:hover  {
	color: black; 
	background-color: gold;
}

#fonoguru td.enter  {
	cursor: pointer; 
	color: white; 
	background-color: transparent;
}
#fonoguru td.enter:hover  {
	color: black; 
	background-color: gold;
}

#fonoguru td.emptyipa  {width: 20px; padding: 0px; color: white; font-size: 12pt; font-family: "Doulos SIL", "TITUS Cyberbit Basic", "Gentium", "Junicode", "Cardo", "Aborigonal Serif", "Arial Unicode MS"}
#fonoguru a {text-decoration: none; color: white}

#panel {
	float: left;
	width: 214px;
	height: 520px;
	background-image: url(/wp-content/custom/fonoguru/images/fonoguru-panel.jpg);	
	background-repeat: no-repeat;
	margin: 0px;
}
#buttons {
	float: left;
	width: 160px;
	height: 520px;
	margin: 0px;
}
#chart {
	float: left;
	width: 526px;	
	height: 520px;
	margin: 0px;
}

#submitimage {
	background-image: url(/wp-content/custom/fonoguru/images/fonoguru_15.gif);
	width: 105px;
	height: 110px;
	cursor: pointer;
}
#submitimage:hover {
	background-image: url(/wp-content/custom/fonoguru/images/fonoguru_15-over.gif);
}

#panel textarea {
	margin: 60px 0px 0px 25px;
}

#buttons #choice {
	margin-top:50px;	
}

#buttons #choice .phone_select {
	display: block;
	height:	40px;
	background-image: url(/wp-content/custom/fonoguru/images/fonoguru-phone.jpg);	
	background-repeat: no-repeat;
	background-position: 0px 0px;
	padding-left: 30px;
	padding-top: 10px;
}



</style>

<div id="fonoguru">

<form action="/software/feed/" method=post name="fonoguru">

	<div id="fono">
		<div id="panel"><textarea name="input" onChange="updateList(this.form); setCursorPos()" onClick="setCursorPos()" style="border: 1px solid #1F2633; background-color: transparent; color: white; font: 10pt Doulos SIL; width: 172px; height: 420px; scrollbar-face-color:#405176; scrollbar-track-color:#66738E; scrollbar-arrow-color:#000000; scrollbar-shadow-color:#222222; scrollbar-dark-shadow-color:#000000; scrollbar-3dlight-color:#627295; scrollbar-highlight-color:#8291B0"></textarea></div>	
		<div id="buttons">
			<div id="choice">
			<div class="phone_select"><span class=text>phone 1:&nbsp;</span><select name=phone1 style="background-color: #66738E; width: 40px; font: 10pt Doulos SIL"></select></div>
			<div class="phone_select"><span class=text>phone 2:&nbsp;</span><select name=phone2 style="background-color: #66738E; width: 40px; font: 10pt Doulos SIL"></select></div>
			<div class="phone_select"><span class=text>phone 3:&nbsp;</span><select name=phone3 style="background-color: #66738E; width: 40px; font: 10pt Doulos SIL"></select></div>
			<div class="phone_select"><span class=text>phone 4:&nbsp;</span><select name=phone4 style="background-color: #66738E; width: 40px; font: 10pt Doulos SIL"></select></div>
			<div class="phone_select"><span class=text>phone 5:&nbsp;</span><select name=phone5 style="background-color: #66738E; width: 40px; font: 10pt Doulos SIL"></select></div>
			</div>
		
			<div style="margin: 20px 0px 20px 20px;">
			<span style="font: bold 8pt Verdana; color: white">search range:</span><br />
			<span style="font: bold 8pt Arial; cursor: pointer; color: white"><span id=minus4 onMouseOver="highlightRange(-4);" onMouseOut="dehighlightRange();" onClick="setRange(-4);">@ </span><span id=minus3 onMouseOver="highlightRange(-3);" onMouseOut="dehighlightRange();" onClick="setRange(-3);">@ </span><span id=minus2 onMouseOver="highlightRange(-2);" onMouseOut="dehighlightRange();" onClick="setRange(-2);">@ </span><span id=minus1 onMouseOver="highlightRange(-1);" onMouseOut="dehighlightRange();" onClick="setRange(-1);">@ </span><span style="color: gold">_</span><span id=plus1 onMouseOver="highlightRange(+1);" onMouseOut="dehighlightRange();" onClick="setRange(+1);"> @</span><span id=plus2 onMouseOver="highlightRange(+2);" onMouseOut="dehighlightRange();" onClick="setRange(+2);"> @</span><span id=plus3 onMouseOver="highlightRange(+3);" onMouseOut="dehighlightRange();" onClick="setRange(+3);"> @</span><span id=plus4 onMouseOver="highlightRange(+4);" onMouseOut="dehighlightRange();" onClick="setRange(+4);"> @</span></span>
			</div>
				
			<div id="submitimage" name="button" onClick="document.fonoguru.submit();"></div>
		</div>	
		<div id="chart">
			<div align=right>
			<img SRC="/wp-content/custom/fonoguru/images/guru1.gif" width=27 height=48>
			<img SRC="/wp-content/custom/fonoguru/images/guru2.gif" width=27 height=48>
			<img SRC="/wp-content/custom/fonoguru/images/guru3.gif" width=27 height=48>
			<img SRC="/wp-content/custom/fonoguru/images/guru4.gif" width=27 height=48>
			<img SRC="/wp-content/custom/fonoguru/images/guru5.gif" width=27 height=48>
			<img SRC="/wp-content/custom/fonoguru/images/guru6.gif" width=27 height=48>
			<img SRC="/wp-content/custom/fonoguru/images/guru7.gif" width=27 height=48>
			</div>
			
			<table border=0 cellspacing=0>
			<tr>
			<td valign=top style="padding: 5px 10px">
				<span class="title">pulmonic consonants</span>
				<table>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('p');" title="voiceless bilabial plosive">p</td><td class=ipa onClick="insert('b');" title="voiced bilabial plosive">b</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('t');" title="voiceless alveolar plosive">t</td><td class=ipa onClick="insert('d');" title="voiced aveolar plosive">d</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʈ');" title="voiceless retroflex plosive">ʈ</td><td class=ipa onClick="insert('ɖ');" title="voiced retroflex plosive">ɖ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('c');" title="voiceless palatal plosive">c</td><td class=ipa onClick="insert('ɟ');" title="voiced palatal plosive">ɟ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('k');" title="voiceless velar plosive">k</td><td class=ipa onClick="insert('ɡ');" title="voiced velar plosive">ɡ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('q');" title="voiceless uvular plosive">q</td><td class=ipa onClick="insert('ɢ');" title="voiced uvular plosive">ɢ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʔ');" title="voiceless glottal plosive">ʔ</td><td class=emptyipa></td></tr></table></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɸ');" title="voiceless bilabial fricative">ɸ</td><td class=ipa onClick="insert('β');" title="voiced bilabial fricative">β</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('f');" title="voiceless labiodental fricative">f</td><td class=ipa onClick="insert('v');" title="voiced labiodental fricative">v</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('θ');" title="voiceless interdental fricative">θ</td><td class=ipa onClick="insert('ð');" title="voiced interdental fricative">ð</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('s');" title="voiceless alveolar fricative">s</td><td class=ipa onClick="insert('z');" title="voiced alveolar fricative">z</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʃ');" title="voiceless postalveolar fricative">ʃ</td><td class=ipa onClick="insert('ʒ');" title="voiced postalveolar fricative">ʒ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʂ');" title="voiceless retroflex fricative">ʂ</td><td class=ipa onClick="insert('ʐ');" title="voiced retroflex fricative">ʐ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ç');" title="voiceless palatal fricative">ç</td><td class=ipa onClick="insert('ʝ');" title="voiced palatal fricative">ʝ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('x');" title="voiceless velar fricative">x</td><td class=ipa onClick="insert('ɣ');" title="voiced velar fricative">ɣ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('χ');" title="voiceless uvular fricative">χ</td><td class=ipa onClick="insert('ʁ');" title="voiced uvular fricative">ʁ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ħ');" title="voiceless pharyngeal fricative">ħ</td><td class=ipa onClick="insert('ʕ');" title="voiced pharyngeal fricative">ʕ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('h');" title="voiceless glottal fricative">h</td><td class=ipa onClick="insert('ɦ');" title="voiced glottal fricative">ɦ</td></tr></table></td>
				</tr>
				<tr>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʦ');" title="voiceless alveolar affricate">ʦ</td><td class=ipa onClick="insert('ʣ');" title="voiced alveolar affricate">ʣ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʧ');" title="voiceless postalveolar affricate">ʧ</td><td class=ipa onClick="insert('ʤ');" title="voiced postalveolar affricate">ʤ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('m');" title="bilabial nasal">m</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɱ');" title="labiodental nasal">ɱ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('n');" title="alveolar nasal">n</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɳ');" title="retroflex nasal">ɳ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɲ');" title="palatal nasal">ɲ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ŋ');" title="velar nasal">ŋ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɴ');" title="uvular nasal">ɴ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ʙ');" title="bilabial trill">ʙ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('r');" title="alveolar trill">r</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ʀ');" title="uvular trill">ʀ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
				</tr>
				<tr>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɾ');" title="alveolar tap">ɾ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɽ');" title="retroflex tap">ɽ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
				</tr>
				<tr>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɬ');" title="voiceless alveolar lateral fricative">ɬ</td><td class=ipa onClick="insert('ɮ');" title="voiced alveolar lateral fricative">ɮ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʍ');" title="voiceless labio-velar approximant">ʍ</td><td class=ipa onClick="insert('w');" title="labio-velar approximant">w</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ʋ');" title="labiodental approximant">ʋ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɹ');" title="alveolar approximant">ɹ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɻ');" title="retroflex approximant">ɻ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('j');" title="palatal approximant">j</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɰ');" title="velar approximant">ɰ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
				</tr>
				<tr>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('l');" title="alveolar lateral approximant">l</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɭ');" title="retroflex lateral approximant">ɭ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ʎ');" title="palatal lateral approximant">ʎ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ʟ');" title="velar lateral approximant">ʟ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
				</tr>
				</table>
			
				<br />
				
				<span class="title">non-pulmonic consonants</span>
				<table>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʘ');" title="bilabial click">ʘ</td><td class=ipa onClick="insert('ǀ');" title="dental click">ǀ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ǃ');" title="(post)alveolar click">ǃ</td><td class=ipa onClick="insert('ǂ');" title="palatal alveolar click">ǂ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ǁ');" title="alveolar lateral click">ǁ</td><td class=emptyipa></td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa>&nbsp;</td><td class=emptyipa>&nbsp;</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɓ');" title="bilabial implosive">ɓ</td><td class=ipa onClick="insert('ɗ');" title="dental / aveolar implosive">ɗ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʄ');" title="palatal implosive">ʄ</td><td class=ipa onClick="insert('ɠ');" title="velar implosive">ɠ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʛ');" title="uvular implosive">ʛ</td><td class=emptyipa></td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa>&nbsp;</td><td class=emptyipa>&nbsp;</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('p\'');" title="bilabial ejective">p'</td><td class=ipa onClick="insert('t\'');" title="dental / alveolar ejective">t'</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('k\'');" title="velar ejective">k'</td><td class=ipa onClick="insert('s\'');" title="alveolar fricative ejective">s'</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa>&nbsp;</td><td class=emptyipa>&nbsp;</td></tr></table></td>
				</tr>
				</table>
				
				

				<p style="font: 10pt Trebuchet MS; color: white">
				<span title="checking this will trigger the following automatic replacements: &#10;g -> ɡ &#10;B -> ʙ &#10;G -> ɢ &#10;N -> ɴ &#10;R -> ʀ"><input type=checkbox name=replace id=replace checked><label for=replace> automatically replace common letters with their IPA equivalents</label></span><br />
				<span title="checking this will trigger the following automatic replacements: &#10;ts -> ʣ &#10;tʃ -> ʦ &#10;dz -> ʧ &#10;dʒ -> ʤ"><input type=checkbox name=digraph id=digraph checked><label for=digraph> treat the digraphs <span face="Doulos SIL">ts</span>, <span face="Doulos SIL">tʃ</span>, <span face="Doulos SIL">dz</span> and <span face="Doulos SIL">dʒ</span> as affricates</label></span><br />
				<span title="this will show the relation between the different phones, identify contrastive pairs if any, and try to give an analysis on the phones and their respective allophones"><input type=checkbox name=report id=report checked value=on><label for=report> show full analysis report</label> (see Note 2)</span>
				</p>
				
			
			</td>
			<td valign=top style="padding: 5px 10px">

				<span class="title">vowels</span>
				<table>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('i');" title="close front unrounded vowel">i</td><td class=ipa onClick="insert('y');" title="close front rounded vowel">y</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɨ');" title="close central unrounded vowel">ɨ</td><td class=ipa onClick="insert('ʉ');" title="close central rounded vowel">ʉ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɯ');" title="close back unrounded vowel">ɯ</td><td class=ipa onClick="insert('u');" title="close back rounded vowel">u</td></tr></table></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɪ');" title="near-close near-front unrounded vowel">ɪ</td><td class=ipa onClick="insert('ʏ');" title="near-close near-front rounded vowel">ʏ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ʊ');" title="near-close near-back rounded vowel">ʊ</td></tr></table></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('e');" title="close-mid front unrounded vowel">e</td><td class=ipa onClick="insert('ø');" title="close-mid front rounded vowel">ø</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɘ');" title="close-mid central unrounded vowel">ɘ</td><td class=ipa onClick="insert('ɵ');" title="close-mid central rounded vowel">ɵ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɤ');" title="close-mid back unrounded vowel">ɤ</td><td class=ipa onClick="insert('o');" title="close-mid back rounded vowel">o</td></tr></table></td>
				</tr>
				<tr>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ə');" title="mid central vowel">ə</td></tr></table></td>
					<td class="ipacell"></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɛ');" title="open-mid front unrounded vowel">ɛ</td><td class=ipa onClick="insert('œ');" title="open-mid front rounded vowel">œ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɜ');" title="open-mid central unrounded vowel">ɜ</td><td class=ipa onClick="insert('ɞ');" title="open-mid central rounded vowel">ɞ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʌ');" title="open-mid back unrounded vowel">ʌ</td><td class=ipa onClick="insert('ɔ');" title="open-mid back rounded vowel">ɔ</td></tr></table></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('æ');" title="near-open front unrounded vowel">æ</td><td class=emptyipa></td></tr></table></td>
					<td class="ipacell"><table><tr><td class=emptyipa></td><td class=ipa onClick="insert('ɐ');" title="near-open central vowel">ɐ</td></tr></table></td>
					<td class="ipacell"></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('a');" title="open front unrounded vowel">a</td><td class=ipa onClick="insert('ɶ');" title="open front rounded vowel">ɶ</td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ɑ');" title="open back unrounded vowel">ɑ</td><td class=ipa onClick="insert('ɒ');" title="open back rounded vowel">ɒ</td></tr></table></td>
				</tr>
				</table>
				
				<br />
				

				<span class="title">diacritics</span>
				<table>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('̥');" title="voiceless">◌̥</td><td class=ipa onClick="insert('̬');" title="voiced">◌̬</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('̤');" title="breathy voiced">◌̤</td><td class=ipa onClick="insert('̰');" title="creaky voiced">◌̰</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('̩');" title="syllabic">◌̩</td><td class=ipa onClick="insert('̃');" title="nasalized">◌̃</td></tr></table></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ʷ');" title="labialized">ʷ</td><td class=ipa onClick="insert('ʲ');" title="palatalized">ʲ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('ˠ');" title="velarized">ˠ</td><td class=ipa onClick="insert('ˤ');" title="pharyngealized">ˤ</td></tr></table></td>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert('̴');" title="velarized or pharyngealized">◌̴</td><td class=ipa onClick="insert('ʰ');" title="aspirated">ʰ</td></tr></table></td>
				</tr>
				<tr>
					<td class="ipacell"><table><tr><td class=ipa onClick="insert(':');" title="long">:</td><td class=emptyipa></td></tr></table></td>
					<td class="ipacell"></td>
					<td class="ipacell"></td>
				</tr>
				</table>
				<br />
				
				<table>
				<tr>
					<td class="ipacell"><table><tr><td class=enter width=126 height=25 style="font: bold 8pt verdana;" align=center onClick="insert('\n');" title="ENTER key">enter ←</td></tr></table></td>
				</tr>
				</table>
				
			</td>
			</tr>
			</table>
				
				
			<div style="float: right;">
				<a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&#038;item_id=DoulosSIL_download" target="_new" style="color: white; text-decoration: underline; font: 12pt Times New Roman">Download Doulos SIL (IPA font)</a>
				<img SRC="/wp-content/custom/fonoguru/images/fotoguru.gif" align=middle width=48 height=48>
			</div>
		</div>	
	</div>



	<div style="width: 100%; float: left; padding: 0px 15px">
		<select name=data style="background-color: #66738E; color: white; width:200px; font: 8pt Verdana">
			<option value="burmese">Burmese</option>
			<option value="canadianfrench">Canadian French</option>
			<option value="german">German</option>
			<option value="greek">Greek</option>
			<option value="hypothetical1">Hypothetical Language I</option>
			<option value="kimatuumbi">Kimatuumbi</option>
			<option value="korean">Korean</option>
			<option value="oldenglish">Old English</option>
			<option value="persian">Persian</option>
			<option value="russian">Russian</option>
			<option value="spanish">Spanish</option>
		</select>
		<input type=button value="load data sample" style="font: bold 8pt Verdana; color: #313B54" onClick="loadData(this.form)">
	</div>
			

	<input type=hidden name="to" value="+1">
	<input type=hidden name="from" value="-1">
	<input type=hidden name="fono_action" value="go">

	</form>
				
</div>


<p><b>Instruction:</b> Type in your data set in the text box on the left, one word on each line, or alternatively test Fonoguru with the sample data by choosing a sample data set and clicking on the “load data” button below the text box. The pull-down menus on the right will then be filled up automatically with all the phones found in the set of data. Choose the phone or phones you want to analyze, then click on “analyze data”, the environment will be presented to you in no time. It’s that easy! </p>

<p><b>Note 1:</b> You must first install the IPA font (Doulos SIL) before using Fonoguru. Follow the link above. </p>

<p><b>Note 2:</b> The analysis on phonemes and allophones is still very primitive, so study hard on your phonology to make your own judgement! </p>

	
	
<script language="JavaScript">
updateList(document.fonoguru);
dehighlightRange();
document.fonoguru.input.focus();
</script>


<div class="clear"></div>
<!--EOC-->
]]></content:encoded>
			<wfw:commentRss>http://www.thomastsoi.com/software/fonoguru/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Italiamo</title>
		<link>http://www.thomastsoi.com/software/italiamo/</link>
		<comments>http://www.thomastsoi.com/software/italiamo/#comments</comments>
		<pubDate>Mon, 15 May 2006 15:39:03 +0000</pubDate>
		<dc:creator>Thomas Tsoi</dc:creator>
				<category><![CDATA[Mobile Applications]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[dictionary]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[Italian]]></category>

		<guid isPermaLink="false">http://www.thomastsoi.com/?p=502</guid>
		<description><![CDATA[Italiamo! is a very handy Italian-English dictionary and a Hangman game in Italian. The dictionary contains 9000+ words, with entries listed under their grammatical categories, which is especially useful for learners. You can also switch between the dictionary and the game easily, and when each round is done, the game will tell you the correct answer and the meaning of the word, so you can play the game to improve your Italian! Download this to your smartphone now and make your Italian learning more interesting!]]></description>
			<content:encoded><![CDATA[<h3>Description</h3>
<p>Italiamo! is a very handy Italian-English dictionary and a Hangman game in Italian. The dictionary contains 9000+ words, with entries listed under their grammatical categories, which is especially useful for learners. You can also switch between the dictionary and the game easily, and when each round is done, the game will tell you the correct answer and the meaning of the word, so you can play the game to improve your Italian! Download this to your smartphone now and make your Italian learning more interesting!</p>
<h3>Supported Mobile Phones</h3>
<p>This software should work on all smartphones which support an application size of 64K+ with a minimum resolution of 176&#215;208, but currently only Nokia 6680 has been tested. Please let me know if you have tried it on other models and found that it works. Thank you.</p>
<h3>Installation</h3>
<p>Download the zip file, extract both the JAR and JAD files, use the Application Installer of your Nokia&#8217;s PC Suite (or the software provided by your phone vendor) to install the application.</p>
<h3>Screenshot</h3>
<p><img class="size-full wp-image-503" title="italiamo01" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/italiamo01.gif" alt="" width="176" height="208" /> <img class="size-full wp-image-504" title="italiamo02" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/italiamo02.gif" alt="" width="176" height="208" /> <img class="size-full wp-image-505" title="italiamo03" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/italiamo03.gif" alt="" width="176" height="208" /><br />
<img class="size-full wp-image-506" title="italiamo04" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/italiamo04.gif" alt="" width="176" height="208" /> <img class="size-full wp-image-507" title="italiamo05" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/italiamo05.gif" alt="" width="176" height="208" /> <img class="size-full wp-image-508" title="italiamo06" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/italiamo06.gif" alt="" width="176" height="208" /></p>
<h3><a id="download" href="http://www.thomastsoi.com/downloads/italiamo.zip" title="Downloaded 20 times">Download</a> (161.79 KB)</h3>

<!--EOC-->
]]></content:encoded>
			<wfw:commentRss>http://www.thomastsoi.com/software/italiamo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPAChart</title>
		<link>http://www.thomastsoi.com/software/ipachart/</link>
		<comments>http://www.thomastsoi.com/software/ipachart/#comments</comments>
		<pubDate>Fri, 26 Aug 2005 14:35:50 +0000</pubDate>
		<dc:creator>Thomas Tsoi</dc:creator>
				<category><![CDATA[Mobile Applications]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows Applications]]></category>
		<category><![CDATA[IPA]]></category>
		<category><![CDATA[linguistics]]></category>
		<category><![CDATA[phonetics]]></category>

		<guid isPermaLink="false">http://www.thomastsoi.com/?p=457</guid>
		<description><![CDATA[A neat utility for revising the International Phonetic Alphabet (IPA), or simply use it as a reference tool. You can even listen to the pronunciations of the symbols in the charts of Pulmonic Consonant and Vowel.

]]></description>
			<content:encoded><![CDATA[<p><big></big></p>
<h3>Description</h3>
<p>A neat utility for revising the International Phonetic Alphabet (IPA), or simply use it as a reference tool. You can even listen to the pronunciations of the symbols in the charts of Pulmonic Consonant and Vowel.</p>
<h3>Supported Mobile Phones</h3>
<p>This game should work on all smartphones which support an application size of 64K+, but currently only Nokia 6680 has been tested. Please let me know if you have tried it on other models and found that it works. Thank you.</p>
<h3>Installation</h3>
<p>Download the zip file, extract both the JAR and JAD files, use the Application Installer of your Nokia&#8217;s PC Suite (or the software provided by your phone vendor) to install the application.</p>
<h3>Screenshot</h3>
<p><img class="alignnone size-full wp-image-458" title="ipachart01" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/ipachart01.gif" alt="" width="176" height="208" /> <img class="alignnone size-full wp-image-459" title="ipachart02" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/ipachart02.gif" alt="" width="176" height="208" /> <img class="alignnone size-full wp-image-460" title="ipachart03" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/ipachart03.gif" alt="" width="176" height="208" /><br />
<img class="alignnone size-full wp-image-461" title="ipachart04" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/ipachart04.gif" alt="" width="176" height="208" /> <img class="alignnone size-full wp-image-462" title="ipachart05" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/ipachart05.gif" alt="" width="176" height="208" /></p>
<h3><a id="download" href="http://www.thomastsoi.com/downloads/IPAChart.zip" title="Downloaded 23 times">Download</a> (400.44 KB)</h3>

<!--EOC-->
]]></content:encoded>
			<wfw:commentRss>http://www.thomastsoi.com/software/ipachart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AstroJewel</title>
		<link>http://www.thomastsoi.com/software/astrojewel/</link>
		<comments>http://www.thomastsoi.com/software/astrojewel/#comments</comments>
		<pubDate>Thu, 11 Aug 2005 14:40:54 +0000</pubDate>
		<dc:creator>Thomas Tsoi</dc:creator>
				<category><![CDATA[Mobile Applications]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[astronomy]]></category>
		<category><![CDATA[game]]></category>

		<guid isPermaLink="false">http://www.thomastsoi.com/?p=469</guid>
		<description><![CDATA[My first trial in mobile programming. The classic Jewel game with the planets as "jewels".]]></description>
			<content:encoded><![CDATA[<h3>Description</h3>
<p>My first trial in mobile programming. The classic Jewel game with the planets as &#8220;jewels&#8221;.</p>
<h3>Supported Mobile Phones</h3>
<p>This game should work on all Series 60 mobile phones with resolution 176&#215;208, but currently only Nokia 6680 has been tested. Please let me know if you have tried it on other models and found that it works. Thank you.</p>
<h3>Installation</h3>
<p>Download both the JAR and JAD files, use the Application Installer of your Nokia&#8217;s PC Suite to install the application.</p>
<h3>Screenshot</h3>
<p><img class="alignnone size-full wp-image-470" title="astrojewel01" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/astrojewel01.gif" alt="" width="176" height="208" /> <img class="alignnone size-full wp-image-471" title="astrojewel02" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/astrojewel02.gif" alt="" width="176" height="208" /></p>
<h3><a id="download" href="http://www.thomastsoi.com/downloads/astrojewel.zip" title="Downloaded 13 times">Download</a> (51.89 KB)</h3>

<!--EOC-->
]]></content:encoded>
			<wfw:commentRss>http://www.thomastsoi.com/software/astrojewel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Snake Java</title>
		<link>http://www.thomastsoi.com/software/snake-java/</link>
		<comments>http://www.thomastsoi.com/software/snake-java/#comments</comments>
		<pubDate>Wed, 13 Jul 2005 15:55:54 +0000</pubDate>
		<dc:creator>Thomas Tsoi</dc:creator>
				<category><![CDATA[Java Applets]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[game]]></category>

		<guid isPermaLink="false">http://www.thomastsoi.com/?p=515</guid>
		<description><![CDATA[You know what it is. For those who feel too bored and want something to kill time with.]]></description>
			<content:encoded><![CDATA[<p>You know what it is. For those who feel too bored and want something to kill time with.</p>
<p><P align=center><br />
<APPLET name=Snake code="Snake.class" width=313 height=353 codebase="http://www.thomastsoi.com/wp-content/uploads/2010/03/"></APPLET><br />
</P></p>
<p>Note: Click on the applet once, so that it receives the focus before you start the game. Use your keyboard&#8217;s arrow keys to control the directions.</p>

<!--EOC-->
]]></content:encoded>
			<wfw:commentRss>http://www.thomastsoi.com/software/snake-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arbores</title>
		<link>http://www.thomastsoi.com/software/arbores/</link>
		<comments>http://www.thomastsoi.com/software/arbores/#comments</comments>
		<pubDate>Fri, 08 Jul 2005 14:07:30 +0000</pubDate>
		<dc:creator>Thomas Tsoi</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows Applications]]></category>
		<category><![CDATA[linguistics]]></category>
		<category><![CDATA[syntax]]></category>

		<guid isPermaLink="false">http://www.thomastsoi.com/?p=427</guid>
		<description><![CDATA[Arbores is a small application thus developed for drawing trees in the quickest and easiest way while not trying to include a lot of fancy functions. It utilizes the "TreeView" control already available in Windows, and re-renders the tree in the TreeView to a syntactic tree we are used to. Therefore, you can add, remove or edit the nodes in the TreeView, just like what you do to the files and folders with the "tree" in your Windows Explorer, and an equivalent syntactic tree is drawn on-the-fly.]]></description>
			<content:encoded><![CDATA[<h3>Description</h3>
<p>Syntactic tree is a useful tool in analyzing the structure of a sentence. Linguists and linguistics learners have a lot of opportunities in encountering them, and often a need in drawing them. However, drawing syntactic trees on computer without specialized tools is most often a headache, while available tools are few and not free.</p>
<p>Arbores is a small application thus developed for drawing trees in the quickest and easiest way while not trying to include a lot of fancy functions. It utilizes the &#8220;TreeView&#8221; control already available in Windows, and re-renders the tree in the TreeView to a syntactic tree we are used to. Therefore, you can add, remove or edit the nodes in the TreeView, just like what you do to the files and folders with the &#8220;tree&#8221; in your Windows Explorer, and an equivalent syntactic tree is drawn on-the-fly.</p>
<p>Arbores allows you to save your trees to AST files (Arbores Syntactic Tree files), which can be opened and edited at a later time. You can also export the trees to various image formats, which is especially useful if you want to insert the trees in web pages, Word documents or elsewhere. If you want a quick print out of the trees, Arbores can also handle that without any problem.</p>
<h3>Screenshot</h3>
<p><img class="alignnone size-medium wp-image-428" title="arbores10" src="http://www.thomastsoi.com/wp-content/uploads/2010/03/arbores10-600x330.gif" alt="" width="600" height="330" /></p>
<h3><a id="download" href="http://www.thomastsoi.com/downloads/arbores.zip" title="Downloaded 13 times">Download</a> (389.79 KB)</h3>

<!--EOC-->
]]></content:encoded>
			<wfw:commentRss>http://www.thomastsoi.com/software/arbores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

