<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.3.3" --><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/" version="2.0">

<channel>
	<title>twit88.com</title>
	<link>http://twit88.com/blog</link>
	<description>Good judgement comes from experience, and experience comes from bad judgement.</description>
	<pubDate>Wed, 08 Jul 2009 08:31:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/thoughtworks" type="application/rss+xml" /><item>
		<title>Useful Hosts File for Blocking Unwanted Sites</title>
		<link>http://twit88.com/blog/2009/07/08/useful-hosts-file-for-blocking-unwanted-sites/</link>
		<comments>http://twit88.com/blog/2009/07/08/useful-hosts-file-for-blocking-unwanted-sites/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 08:31:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[freebies]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/07/08/useful-hosts-file-for-blocking-unwanted-sites/</guid>
		<description><![CDATA[You can use a HOSTS file to block ads, banners, 3rd party Cookies, 3rd party page counters, web bugs, and even most hijackers. This is accomplished by blocking the connection(s) that supplies these little gems.
There is a useful hosts file available at http://www.mvps.org/winhelp2002/hosts.zip which you can use for this purpose.
]]></description>
			<content:encoded><![CDATA[<p>You can use a HOSTS file to block ads, banners, 3rd party Cookies, 3rd party page counters, web bugs, and even most hijackers. This is accomplished by blocking the connection(s) that supplies these little gems.</p>
<p>There is a useful hosts file available at <a title="http://www.mvps.org/winhelp2002/hosts.zip" href="http://www.mvps.org/winhelp2002/hosts.zip">http://www.mvps.org/winhelp2002/hosts.zip</a> which you can use for this purpose.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/07/08/useful-hosts-file-for-blocking-unwanted-sites/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open source Contact Import Scripts</title>
		<link>http://twit88.com/blog/2009/07/07/open-source-contact-import-scripts/</link>
		<comments>http://twit88.com/blog/2009/07/07/open-source-contact-import-scripts/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 04:54:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/07/07/open-source-contact-import-scripts/</guid>
		<description><![CDATA[
Open source OpenInviter is an free import contacts (addressbook) script from email providers like Atlas, Meta, Nz11, Grafitti, India, Bordermail, Care2, Azet, Virgilio, Gawab, Bigstring, Doramail, Lycos, Popstarmail, Yahoo!, Mynet.com, Inbox.com, AOL, Uk2, GMX.net, Mail.com, Apropo, Wp.pt, Hushmail, LinkedIn, Clevergo, Techemail, Libero, Mail2World, Aussiemail, Netaddress, Rediff, Sapo.pt, OperaMail, Kids, KataMail, 5Fm, GMail, Freemail, IndiaTimes, Terra, [...]]]></description>
			<content:encoded><![CDATA[</p>
<p><a href="http://openinviter.com/">Open source OpenInviter</a> is an free <b>import contacts</b> (addressbook) script from email providers like Atlas, Meta, Nz11, Grafitti, India, Bordermail, Care2, Azet, Virgilio, Gawab, Bigstring, Doramail, Lycos, Popstarmail, Yahoo!, Mynet.com, Inbox.com, AOL, Uk2, GMX.net, Mail.com, Apropo, Wp.pt, Hushmail, LinkedIn, Clevergo, Techemail, Libero, Mail2World, Aussiemail, Netaddress, Rediff, Sapo.pt, OperaMail, Kids, KataMail, 5Fm, GMail, Freemail, IndiaTimes, Terra, Mail.ru, Live/Hotmail, Interia, Inet, Web.de, Canoe, Abv, Zapakmail, Mail.in, Walla, Yandex, Evite, FastMail, Pochta, Rambler, O2 or social portals like Tagged, Xanga, Orkut, Perfspot, Hi5, Badoo, Koolro, Mydogspace, Kincafe, Multiply, Ning, MySpace, NetLog, Friendster, Mycatspace, Bookcrossing, Motortopia, Faces, Konnects, Livejournal, Meinvz, Lovento, Eons, Brazencareerist, Flingr, Xuqa, Facebook, Skyrock, Plurk, Last.fm, Vimeo, Plazes, Bebo, Famiva, Mevio, Vkontakte, Xing, Cyworld, Flixster, Hyves, Flickr, Plaxo, Fdcareer, Twitter, Friendfeed.</p>
<p>This <b>contacts importer</b> script is integrating with content management systems (aka CMS) like Joomla, Wordpress, SimpleMachines Forum (SMF), Boonex Dolphin, Joomla1.0, PhpBB, nowFire, JamRoom, phpizabi, joovili, PunBB, vBulletin, symfony, phpFoX, jamit job, Buddy Zone, Dating Pro, Social Engine, Drupal, myBB, PHPMELODY. Open Inviter is written in <b>PHP 5</b> (no database required but cURL or wget required) and running on <b>any webserver</b> (tested on Apache) offering advanced tell a friend features. OpenInviter<sup>TM</sup> is a free <b>self hosted</b> solution that does not use a third party gateway (or API) to <b>import contacts</b>.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/07/07/open-source-contact-import-scripts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source XML Editor</title>
		<link>http://twit88.com/blog/2009/07/07/open-source-xml-editor/</link>
		<comments>http://twit88.com/blog/2009/07/07/open-source-xml-editor/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 16:16:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/07/07/open-source-xml-editor/</guid>
		<description><![CDATA[Serna Free XML editor is an easy-to-use open source WYSIWYG XML editor for those who wish to smoothly adopt the XML technology.
Serna free XML editor renders composite XML documents in print-like WYSIWYG appearance. Composite XML documents are visualized using XSLT &#38; XSL-FO stylesheets as a transparent integrated whole. This is not only visually convenient but [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.syntext.com/products/serna-free/">Serna Free XML editor</a> is an easy-to-use open source WYSIWYG XML editor for those who wish to smoothly adopt the XML technology.</p>
<p>Serna free XML editor renders <em>composite XML documents</em> in print-like WYSIWYG appearance. Composite XML documents are visualized using XSLT &amp; XSL-FO stylesheets as a transparent integrated whole. This is not only visually convenient but also dramatically accelerates the authoring process.</p>
<p><a href="http://twit88.com/blog/wp-content/uploads/2009/07/windowslivewriteropensourcexmleditor-14serna-2.png"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="serna" src="http://twit88.com/blog/wp-content/uploads/2009/07/windowslivewriteropensourcexmleditor-14serna-thumb.png" width="454" height="386"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/07/07/open-source-xml-editor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java: Predicate in Commons Collection</title>
		<link>http://twit88.com/blog/2009/07/07/java-predicate-in-commons-collection/</link>
		<comments>http://twit88.com/blog/2009/07/07/java-predicate-in-commons-collection/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 11:38:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/07/07/java-predicate-in-commons-collection/</guid>
		<description><![CDATA[Predicate in Commons Collection is very useful for logic evaluation. The available predicates should fulfills most of your logic requirements, or you can even write your own custom predicate.

AllPredicate
AndPredicate
AnyPredicate
EqualPredicate
ExceptionPredicate
FalsePredicate
IdentityPredicate
InstanceofPredicate
NonePredicate
NotNullPredicate
NotPredicate
NullIsExceptionPredicate
NullIsFalsePredicate
NullIsTruePredicate
NullPredicate
OnePredicate
OrPredicate
TransformedPredicate
TransformerPredicate,
TruePredicate
UniquePredicate

You can combine predicates together to form a compound predicate and also write custom predicate. E.g


public class PredicateTest {
&#160;
    static class Student {
  [...]]]></description>
			<content:encoded><![CDATA[<p>Predicate in Commons Collection is very useful for logic evaluation. The available predicates should fulfills most of your logic requirements, or you can even write your own custom predicate.</p>
<ul>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/AllPredicate.html">AllPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/AndPredicate.html">AndPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/AnyPredicate.html">AnyPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/EqualPredicate.html">EqualPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/ExceptionPredicate.html">ExceptionPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/FalsePredicate.html">FalsePredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/IdentityPredicate.html">IdentityPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/InstanceofPredicate.html">InstanceofPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/NonePredicate.html">NonePredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/NotNullPredicate.html">NotNullPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/NotPredicate.html">NotPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/NullIsExceptionPredicate.html">NullIsExceptionPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/NullIsFalsePredicate.html">NullIsFalsePredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/NullIsTruePredicate.html">NullIsTruePredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/NullPredicate.html">NullPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/OnePredicate.html">OnePredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/OrPredicate.html">OrPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/TransformedPredicate.html">TransformedPredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/TransformerPredicate.html">TransformerPredicate</a>,
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/TruePredicate.html">TruePredicate</a>
<li><a href="http://commons.apache.org/org/apache/commons/collections/functors/UniquePredicate.html">UniquePredicate</a></li>
</ul>
<p>You can combine predicates together to form a compound predicate and also write custom predicate. E.g</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> PredicateTest {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">static</span> <span style="color: #0000ff">class</span> Student {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">int</span> age;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        String name;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        Student(<span style="color: #0000ff">int</span> age, String name) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.age = age;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.name = name;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span> getAge() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">return</span> age;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setAge(<span style="color: #0000ff">int</span> age) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.age = age;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> String getName() {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">return</span> name;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setName(String name) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.name = name;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">static</span> <span style="color: #0000ff">class</span> GreaterThanPredicate implements Predicate {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span> <span style="color: #0000ff">value</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> GreaterThanPredicate(<span style="color: #0000ff">int</span> <span style="color: #0000ff">value</span>) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.<span style="color: #0000ff">value</span> = <span style="color: #0000ff">value</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> boolean evaluate(Object obj) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            boolean accept = <span style="color: #0000ff">false</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">if</span> (obj instanceof Student) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                accept = ((Student) obj).getAge() &gt; <span style="color: #0000ff">value</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">return</span> (accept);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">static</span> <span style="color: #0000ff">class</span> NameEqualsPredicate implements Predicate {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">private</span> String <span style="color: #0000ff">value</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> NameEqualsPredicate(String <span style="color: #0000ff">value</span>) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.<span style="color: #0000ff">value</span> = <span style="color: #0000ff">value</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> boolean evaluate(Object obj) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            boolean accept = <span style="color: #0000ff">false</span>;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">if</span> (obj instanceof Student) {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                accept = ((Student) obj).getName().equals(<span style="color: #0000ff">value</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">return</span> (accept);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #008000">/**</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">     * @param args</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">     * @throws Exception</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000">     */</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> main(String[] args) throws Exception {</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #008000">// Create Base Predicates</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        Predicate isNameEqual = <span style="color: #0000ff">new</span> NameEqualsPredicate(<span style="color: #006080">&#8220;Jack&#8221;</span>);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        Predicate isGreater = <span style="color: #0000ff">new</span> GreaterThanPredicate(12);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        <span style="color: #008000">// Create 2 argument logical predicate composites</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        Predicate andPredicate = <span style="color: #0000ff">new</span> AndPredicate(isNameEqual, isGreater);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        Predicate orPredicate = <span style="color: #0000ff">new</span> OrPredicate(isNameEqual, isGreater);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        System.<span style="color: #0000ff">out</span>.println(<span style="color: #006080">&#8220;Result: &#8220;</span> + andPredicate.evaluate(<span style="color: #0000ff">new</span> Student(13, <span style="color: #006080">&#8220;Jack&#8221;</span>)));</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&nbsp;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/07/07/java-predicate-in-commons-collection/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SpringSource Tool Suite</title>
		<link>http://twit88.com/blog/2009/07/06/springsource-tool-suite/</link>
		<comments>http://twit88.com/blog/2009/07/06/springsource-tool-suite/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 03:00:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[freebies]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/07/06/springsource-tool-suite/</guid>
		<description><![CDATA[SpringSource Tool Suite (STS) provides the best Eclipse-powered development environment for building Spring-powered enterprise applications. SpringSource Tool Suite provides the best and most complete set of tools for creating Spring applications that run on the major application server platforms such as Apache Tomcat, IBM WebSphere, Oracle WebLogic, JBoss, SpringSource tc Server and SpringSource dm Server. [...]]]></description>
			<content:encoded><![CDATA[<p><strong></strong><a href="http://www.springsource.com/products/sts">SpringSource Tool Suite (STS)</a> provides the best Eclipse-powered development environment for building Spring-powered enterprise applications. SpringSource Tool Suite provides the best and most complete set of tools for creating Spring applications that run on the major application server platforms such as Apache Tomcat, IBM WebSphere, Oracle WebLogic, JBoss, <a href="http://www.springsource.com/products/tcserver">SpringSource tc Server</a> and <a href="http://www.springsource.com/products/dmserver">SpringSource dm Server</a>. SpringSource Tool Suite is freely available for development and internal business operations use with no time limits.
<p>STS is the only tool on the market that enables Spring applications to be packaged and deployed onto a modular OSGi runtime environment as provided by SpringSource dm Server. STS also incorporates a task-focused user interface to speed development, architecture review tools to guide developers toward best practices, and runtime error analysis with automated resolution lookup to help developers solve problems in running applications.
<ul>
<li><strong>Greater Productivity: </strong>Building Spring-powered applications is made easier when using the Project Creation Wizard, rich forms-based Spring Configuration Editor, Quick Fixes and Quick Assist, Bean Creation Wizard, Namespace Configuration Dialog, and many other visual tools.
<li><strong>OSGi Made Easy:</strong> Developers now have the tools necessary to visualize, package, and deploy truly modular applications onto the industry’s only application server built from the ground up to support OSGi-based applications - <a href="http://www.springsource.com/&rdquo;/products/dmserver&rdquo;">SpringSource dm Server</a>.&nbsp;
<li><strong>Developer Onramp to Virtualization:</strong> Developers deploying Spring-powered applications within virtualized data centers now have tools that help them test and debug applications running on VMware Workstation.
<li><strong>Task Focused Development:</strong> STS includes and extends Mylyn’s Task-focused user interface to provide a smooth and simple workflow that makes it much easier for developers to navigate the complex hierarchies of modern enterprise applications. The tool maintains a focused browsing history for all programming elements opened as well as Web resources accessed.
<li><strong>Guided Learning:</strong> For newcomers to developing Spring-powered applications or experienced developers utilizing new features of Spring, STS leverages its task-based user interface to provide tool-guided assistance through tutorials and SpringSource training materials. Developers are walked through the process of building complete applications at all stages of the development and deployment lifecycle.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/07/06/springsource-tool-suite/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Interactive Compilation Interface</title>
		<link>http://twit88.com/blog/2009/07/04/interactive-compilation-interface/</link>
		<comments>http://twit88.com/blog/2009/07/04/interactive-compilation-interface/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 15:43:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[C/C++]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/07/04/interactive-compilation-interface/</guid>
		<description><![CDATA[The Interactive Compilation Interface (or &#8216;ICI&#8217; for short) is a plugin system with a high-level compiler-independent and low-level compiler-dependent API to transform current compilers into collaborative open modular interactive toolsets. The ICI framework acts as a &#8220;middleware&#8221; interface between the compiler and the user-definable plugins. It opens up and reuses the production-quality compiler infrastructure to [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://ctuning.org/wiki/index.php/CTools:ICI">Interactive Compilation Interface</a> (or &#8216;ICI&#8217; for short) is a plugin system with a high-level compiler-independent and low-level compiler-dependent API to transform current compilers into collaborative open modular interactive toolsets. The ICI framework acts as a &#8220;middleware&#8221; interface between the compiler and the user-definable plugins. It opens up and reuses the production-quality compiler infrastructure to enable program analysis and instrumentation, fine-grain program optimizations, simple prototyping of new development and research ideas while avoiding building new compilation tools from scratch. For example, it is used in <a href="http://unidapt.org/index.php/Developments:MilepostGCC">MILEPOST GCC</a> to automate compiler and architecture design and program optimizations based on statistical analysis and machine learning. It should enable universal self-tuning compilers adaptable to heterogeneous, reconfigurable, multi-core architectures ranging from supercomputers to embedded systems.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/07/04/interactive-compilation-interface/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Plugin Framework for C</title>
		<link>http://twit88.com/blog/2009/07/04/plugin-framework-for-c/</link>
		<comments>http://twit88.com/blog/2009/07/04/plugin-framework-for-c/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 15:40:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[C/C++]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/07/04/plugin-framework-for-c/</guid>
		<description><![CDATA[The Plugin project provides a framework for implementing plugins in C. The plugin system is inspired by the plugin system which is the core of the Eclipse IDE but there are some significant differences due to the different languages of implementation.
One of the major goals of this project is to allow GCC to be an [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://libplugin.sourceforge.net/intro.html">Plugin project</a> provides a framework for implementing plugins in C. The plugin system is inspired by the plugin system which is the core of the Eclipse IDE but there are some significant differences due to the different languages of implementation.
<p>One of the major goals of this project is to allow GCC to be an extensible compiler. Hence, there are plugins available for GCC and a GCC patch which adds plugin capabilities to that compiler.
<p>The plugin system is designed to make it very easy to make an existing application extensible and, similarly, to make it easy to extend that application.
<p>This project is part of the <a href="http://www.milepost.eu">Milepost</a> project.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/07/04/plugin-framework-for-c/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Compiler for Machine Learning for Embedded Programs Optimisation</title>
		<link>http://twit88.com/blog/2009/07/04/compiler-for-machine-learning-for-embedded-programs-optimisation/</link>
		<comments>http://twit88.com/blog/2009/07/04/compiler-for-machine-learning-for-embedded-programs-optimisation/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 15:38:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[C/C++]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/07/04/compiler-for-machine-learning-for-embedded-programs-optimisation/</guid>
		<description><![CDATA[The MILEPOST project aims to develop compiler technology that can automatically learn how to best optimise programs for re-configurable heterogeneous embedded processors. If successful we will be able to dramatically reduce the time to market of re-configurable systems. Rather than developing a specialised compiler by hand for each configuration, our project will produce optimising compilers [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.milepost.eu/">MILEPOST project</a> aims to develop compiler technology that can automatically learn how to best optimise programs for re-configurable heterogeneous embedded processors. If successful we will be able to dramatically reduce the time to market of re-configurable systems. Rather than developing a specialised compiler by hand for each configuration, our project will produce optimising compilers automatically. Current handcrafted approaches to compiler development are no longer sustainable. With each generation of re-configurable architecture, the compiler development time increases and the performance improvement achieved decreases. As high performance embedded systems move from application specific ASICs to programmable heterogeneous processors, this problem is becoming critical.
<p>This project explores an emerging alternative approach where we use machine-learning techniques, developed in the artificial intelligence arena, to learn how to generate compilers automatically. Such an approach, if successful, will have a dramatic impact on re-configurable systems. This means that for a fixed amount of design time. We can evaluate many more configurations leading to better and more cost-effective performance. If successful, this will enable Europe to increase its dominance in this critical emerging market.
<p>MILEPOST GCC is the machine learning based compiler from the project.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/07/04/compiler-for-machine-learning-for-embedded-programs-optimisation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Apache JSF Framework</title>
		<link>http://twit88.com/blog/2009/06/30/apache-jsf-framework/</link>
		<comments>http://twit88.com/blog/2009/06/30/apache-jsf-framework/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 05:13:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/30/apache-jsf-framework/</guid>
		<description><![CDATA[Apache MyFaces Trinidad is a JSF framework including a large, enterprise quality component library, supporting critical features such as accessibility (e.g. Section 508), right-to-left languages, etc. It also includes a set of framework features, including :

Partial-page rendering support for the entire component set
Integrated client-side validation
A dialog framework
pageFlowScope, for communicating between pages 

It has

Rich DHTML client-side [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://myfaces.apache.org/trinidad/index.html">Apache MyFaces Trinidad</a> is a JSF framework including a large, enterprise quality component library, supporting critical features such as accessibility (e.g. Section 508), right-to-left languages, etc. It also includes a set of framework features, including :
<ul>
<li>Partial-page rendering support for the entire component set
<li>Integrated client-side validation
<li>A dialog framework
<li>pageFlowScope, for communicating between pages </li>
</ul>
<p>It has</p>
<ol>
<li>Rich DHTML client-side renderers
<li>Provide more efficient implementations of client-side state saving (reduced per-component size)
<li>Rich set of components, validators, and converters
<li>MyFaces Trinidad tags often offer more features than the standard tags; for example, all input components offer built-in label and message display support.
<li>Client-side converters/validators - JavaScript enabled converters and validators that attempt to catch and display errors on the client
<li>MyFaces Trinidad tags can be used inside of the &lt;tr:forEach&gt; tag (it is, unfortunately, not possible to support standard tags inside &lt;tr:forEach&gt;). (This limitation does not apply in JSF 1.2.)
<li><i>Accessibility</i> - support for Section 508
<li><i>Bidirectional language support</i> - Apache Trinidad components automatically render themselves appropriately for bidirectional languages. Users can also use the &#8220;start&#8221; and &#8220;end&#8221; constants instead of &#8220;left&#8221; and &#8220;right&#8221;
<li><i>Partial Page Rendering (PPR)</i> - Javascript-free support for rerendering any of the Trinidad components
<li><i>Skinning</i> - support for adjusting the look-and-feel of components with an extended CSS format </li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/30/apache-jsf-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Linux Boot Loader on Windows</title>
		<link>http://twit88.com/blog/2009/06/29/linux-boot-loader-on-windows/</link>
		<comments>http://twit88.com/blog/2009/06/29/linux-boot-loader-on-windows/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 05:53:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[freebies]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/29/linux-boot-loader-on-windows/</guid>
		<description><![CDATA[SYSLINUX is a boot loader for the Linux operating system which operates off an MS-DOS/Windows FAT filesystem. It is intended to simplify first-time installation of Linux, and for creation of rescue- and other special-purpose boot disks.
SYSLINUX can be used, when properly set up, to completely eliminate the need for distribution of raw diskette images for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://syslinux.zytor.com/wiki/index.php/SYSLINUX#NT.2F2K.2FXP">SYSLINUX</a> is a boot loader for the Linux operating system which operates off an MS-DOS/Windows FAT filesystem. It is intended to simplify first-time installation of Linux, and for creation of rescue- and other special-purpose boot disks.
<p>SYSLINUX can be used, when properly set up, to completely eliminate the need for distribution of raw diskette images for boot floppies. A SYSLINUX floppy can be manipulated using standard MS-DOS (or any other OS that can access an MS-DOS filesystem) tools once it has been created.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/29/linux-boot-loader-on-windows/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Free Mobile Browser</title>
		<link>http://twit88.com/blog/2009/06/29/free-mobile-browser/</link>
		<comments>http://twit88.com/blog/2009/06/29/free-mobile-browser/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 03:30:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[freebies]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/29/free-mobile-browser/</guid>
		<description><![CDATA[Skyfire is a free, downloadable mobile browser that gives you a Web browsing experience exactly like PC browsing.
You can watch any video, connect with friends, listen to music, shop, and browse the web using the full-featured PC versions of your favorite websites.
Currently, Skyfire runs on Windows Mobile (smartphones and PPC) and Nokia N and E [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.skyfire.com/">Skyfire</a> is a free, downloadable mobile browser that gives you a Web browsing experience exactly like PC browsing.</p>
<p>You can watch any video, connect with friends, listen to music, shop, and browse the web using the full-featured PC versions of your favorite websites.</p>
<p>Currently, Skyfire runs on Windows Mobile (smartphones and PPC) and Nokia N and E Series (Symbian S60, 3rd Edition) phones.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/29/free-mobile-browser/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source Library Management System</title>
		<link>http://twit88.com/blog/2009/06/29/open-source-library-management-system/</link>
		<comments>http://twit88.com/blog/2009/06/29/open-source-library-management-system/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 03:22:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/29/open-source-library-management-system/</guid>
		<description><![CDATA[Evergreen is an enterprise-class library automation system that helps library patrons find library materials, and helps libraries manage, catalog, and circulate those materials, no matter how large or complex the libraries. As a community, our development requirements are that Evergreen must be:

Stable, even under extreme load.
Robust, and capable of handling a high volume of transactions [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.open-ils.org/">Evergreen</a> is an enterprise-class <strong>library automation system</strong> that helps library patrons find library materials, and helps libraries manage, catalog, and circulate those materials, no matter how large or complex the libraries. As a community, our development requirements are that Evergreen must be:
<ul>
<li><b>Stable</b>, even under extreme load.
<li><b>Robust</b>, and capable of handling a high volume of transactions and simultaneous users.
<li><b>Flexible</b>, to accomodate the varied needs of libraries.
<li><b>Secure</b>, to protect our patrons&#8217; privacy and data.
<li><b>User-friendly</b>, to facilitate patron and staff use of the system. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/29/open-source-library-management-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source Issue and Test Management Tool</title>
		<link>http://twit88.com/blog/2009/06/29/open-source-test-management-tool-2/</link>
		<comments>http://twit88.com/blog/2009/06/29/open-source-test-management-tool-2/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 03:15:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/29/open-source-test-management-tool-2/</guid>
		<description><![CDATA[Testopia is a test case management extension for Bugzilla. It is designed to be a generic tool for tracking test cases, allowing for testing organizations to integrate bug reporting with their test case run results. Though it is designed with software testing in mind, it can be used to track testing on virtually anything in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mozilla.org/projects/testopia/">Testopia</a> is a test case management extension for Bugzilla. It is designed to be a generic tool for tracking test cases, allowing for testing organizations to integrate bug reporting with their test case run results. Though it is designed with software testing in mind, it can be used to track testing on virtually anything in the engineering process.</p>
<p>Integration Points</p>
<ul>
<li>
<p>Testopia integrates with Bugzilla products, components, versions, and milestones to allow a single management interface for high level objects. </p>
<li>
<p>Testopia allows users to login to one tool and uses Bugzilla group permissions to limit access to modifying test objects.</p>
<li>
<p>Testopia allows users to attach bugs to test case run results for centralized management of the software engineering process.</p>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/29/open-source-test-management-tool-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>C#: Retrieving and Sorting COM Ports</title>
		<link>http://twit88.com/blog/2009/06/29/c-retrieving-and-sorting-com-ports/</link>
		<comments>http://twit88.com/blog/2009/06/29/c-retrieving-and-sorting-com-ports/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 16:56:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/29/c-retrieving-and-sorting-com-ports/</guid>
		<description><![CDATA[In .NET, it is easy to retrieve all existing COM ports and sort them accordingly


string[] portNames = SerialPort.GetPortNames();
var sortedList = portNames.OrderBy(port =&#62; Convert.ToInt32(port.Replace(&#8220;COM&#8221;, string.Empty)));
foreach (string port in sortedList)
{
   Console.WriteLine(port);
}           


]]></description>
			<content:encoded><![CDATA[<p>In .NET, it is easy to retrieve all existing COM ports and sort them accordingly</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">string</span>[] portNames = SerialPort.GetPortNames();</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">var sortedList = portNames.OrderBy(port =&gt; Convert.ToInt32(port.Replace(<span style="color: #006080">&#8220;COM&#8221;</span>, <span style="color: #0000ff">string</span>.Empty)));</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">foreach</span> (<span style="color: #0000ff">string</span> port <span style="color: #0000ff">in</span> sortedList)</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   Console.WriteLine(port);</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}           </pre>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/29/c-retrieving-and-sorting-com-ports/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WordPress for Multiple Users</title>
		<link>http://twit88.com/blog/2009/06/23/wordpress-for-multiple-users/</link>
		<comments>http://twit88.com/blog/2009/06/23/wordpress-for-multiple-users/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 03:37:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/23/wordpress-for-multiple-users/</guid>
		<description><![CDATA[Recently I have a try on WordPress MU and I was impressed.
With WordPress MU, you can run hundreds of thousands of blogs with a single install of WordPress.
Features

Everything WordPress does.
Scaling to tens of millions of pageviews per day.
Unlimited users and blogs.
Different permissions on different blogs.
Ambiguity about how to pronounce its name 

It is suitable for

Newspapers [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I have a try on <a href="http://mu.wordpress.org/">WordPress MU</a> and I was impressed.</p>
<p>With WordPress MU, you can run hundreds of thousands of blogs with a single install of WordPress.</p>
<p>Features</p>
<ul>
<li>Everything WordPress does.
<li>Scaling to tens of millions of pageviews per day.
<li>Unlimited users and blogs.
<li>Different permissions on different blogs.
<li>Ambiguity about how to pronounce its name </li>
</ul>
<p>It is suitable for</p>
<ul>
<li>Newspapers and magazines, <a href="http://www.lemonde.fr/web/blogs/0,39-0,48-0,0.html">like Le Monde</a>.
<li>Universities, <a href="http://blogs.law.harvard.edu/home/">like Harvard</a>.
<li>Blog networks
<li>Niche-specific blog hosts, <a href="http://edublogs.org/">like Edublogs</a>
<li>More on the <a href="http://wordpress.org/showcase/flavor/wordpress-mu/">WordPress MU Showcase</a>. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/23/wordpress-for-multiple-users/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source Media Player</title>
		<link>http://twit88.com/blog/2009/06/23/open-source-media-player/</link>
		<comments>http://twit88.com/blog/2009/06/23/open-source-media-player/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 03:35:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/23/open-source-media-player/</guid>
		<description><![CDATA[XBMC, recursive acronym for “XBMC Media Center“, is a free and open source software media-player and entertainment hub for all your digital media.
XBMC is a cross-platform software available for Linux, Mac OS X (Leopard, Tiger, and Apple TV), Microsoft Windows operating-system, as well as the original Xbox game-console. With translations to over 30 languages for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://xbmc.org">XBMC</a>, recursive acronym for “<em>XBMC Media Center</em>“, is a free and open source software media-player and entertainment hub for all your digital media.</p>
<p>XBMC is a cross-platform software available for Linux, Mac OS X (Leopard, Tiger, and Apple TV), Microsoft Windows operating-system, as well as the original Xbox game-console. With translations to over 30 languages for a worldwide audience. All versions of course completely free of any adware or spyware.
<ul>
<li>XBMC for Linux
<li>XBMC for Mac
<li>XBMC for Windows
<li>XBMC for Xbox
<li>XBMC Live </li>
</ul>
<p><a href="http://twit88.com/blog/wp-content/uploads/2009/06/windowslivewriteropensourcemediaplayer-a1a2ss-reflect2-2.jpg"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="ss_reflect2" src="http://twit88.com/blog/wp-content/uploads/2009/06/windowslivewriteropensourcemediaplayer-a1a2ss-reflect2-thumb.jpg" width="314" height="265"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/23/open-source-media-player/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source Group Collaboration Software</title>
		<link>http://twit88.com/blog/2009/06/23/open-source-group-collaboration-software/</link>
		<comments>http://twit88.com/blog/2009/06/23/open-source-group-collaboration-software/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 03:28:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/23/open-source-group-collaboration-software/</guid>
		<description><![CDATA[Cyn.in is a group collaboration software created by Cynapse, that inter-connects your people with each other and their collective knowledge, seamlessly. Cyn.in helps teams to build collaborative knowledge by sharing and discussing various forms of digital content within a secure, unified application that is accessible using a web based interface or a rich desktop client. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cynapse.com/products/cynin">Cyn.in</a> is a group collaboration software created by Cynapse, that inter-connects your people with each other and their collective knowledge, seamlessly. Cyn.in helps teams to build collaborative knowledge by sharing and discussing various forms of digital content within a secure, unified application that is accessible using a web based interface or a rich desktop client. Cyn.in combines the capabilities of collaboration tools like wikis, blogs, file repositories, micro blogs, instant discussions and other social applications into a seamless platform. The cyn.in desktop client keeps users updated with its unique activity stream while enabling instant discussions within any document, file or content.
<p><a href="http://twit88.com/blog/wp-content/uploads/2009/06/windowslivewriteropensourcegroupcollaborationsoftware-a0cf01-home-2.jpg"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="01-home" src="http://twit88.com/blog/wp-content/uploads/2009/06/windowslivewriteropensourcegroupcollaborationsoftware-a0cf01-home-thumb.jpg" width="454" height="692"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/23/open-source-group-collaboration-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source PHP Forum</title>
		<link>http://twit88.com/blog/2009/06/23/open-source-php-forum/</link>
		<comments>http://twit88.com/blog/2009/06/23/open-source-php-forum/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 03:25:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/23/open-source-php-forum/</guid>
		<description><![CDATA[Beehive is an open-source project for creating a high-configurable frame-based discussion forum.
Beehive Forum has a lot of features. The main ones are listed below:

Frame-based layout, for easy navigation.
Reply-to-user posting and e-mail notification.
Powerful HTML posting, without security risks.
Extendable user profiles.
Flexible relationships system.
Private Messaging system.
Multiple style options, including dyslexia support.
Advanced word-filtering facility.
Comprehensive user permissions.
Full, easy to use [...]]]></description>
			<content:encoded><![CDATA[<p>Beehive is an open-source project for creating a high-configurable frame-based discussion forum.
<p><a href="http://beehiveforum.net/">Beehive Forum</a> has a lot of features. The main ones are listed below:
<ul>
<li>Frame-based layout, for easy navigation.
<li>Reply-to-user posting and e-mail notification.
<li>Powerful HTML posting, without security risks.
<li>Extendable user profiles.
<li>Flexible relationships system.
<li>Private Messaging system.
<li>Multiple style options, including dyslexia support.
<li>Advanced word-filtering facility.
<li>Comprehensive user permissions.
<li>Full, easy to use admin tools. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/23/open-source-php-forum/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source Dictionary Program</title>
		<link>http://twit88.com/blog/2009/06/23/open-source-dictionary-program/</link>
		<comments>http://twit88.com/blog/2009/06/23/open-source-dictionary-program/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 03:20:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/23/open-source-dictionary-program/</guid>
		<description><![CDATA[GoldenDict aims to create a feature-rich dictionary lookup program. 

Use of WebKit for an accurate articles&#8217; representation, complete with all formatting, colors, images and links.
Support of multiple dictionary file formats, namely:

Babylon .BGL files, complete with images and resources
StarDict .ifo/.dict./.idx/.syn dictionaries
Dictd .index/.dict(.dz) dictionary files
ABBYY Lingvo .dsl source files, together with abbreviations. The files can be optionally [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://goldendict.berlios.de/">GoldenDict</a> aims to create a feature-rich dictionary lookup program. </p>
<ul>
<li>Use of WebKit for an accurate articles&#8217; representation, complete with all formatting, colors, images and links.
<li>Support of multiple dictionary file formats, namely:
<ul>
<li>Babylon .BGL files, complete with images and resources
<li>StarDict .ifo/.dict./.idx/.syn dictionaries
<li>Dictd .index/.dict(.dz) dictionary files
<li>ABBYY Lingvo .dsl source files, together with abbreviations. The files can be optionally compressed with dictzip. Dictionary resources can be packed together into a .zip file.
<li>ABBYY Lingvo .lsa/.dat audio archives. Those can be indexed separately, or be referred to from .dsl files. </li>
</ul>
<li>Support for Wikipedia, Wiktionary, or any other MediaWiki-based sites to perform lookups in.
<li>Ability to use arbitrary websites as dictionaries via templated Url patterns.
<li>Hunspell-based morphology system, used for word stemming and spelling suggestions.
<li>Ability to index arbitrary directories with audio files for pronunciation lookups.
<li>Full Unicode case, diacritics, punctuation and whitespace folding. This means the ability to type in words without any accents, correct case, punctuation or spaces (e.g. typing &#8216;Grussen&#8217; would yield &#8216;grüßen&#8217; in German dictionaries).
<li>Scan popup functionality. A small window pops up with the translation of a word chosen from another application.
<li>Support for global hotkeys. You can spawn the program window at any point, or directly translate a word from the clipboard.
<li>Tabbed browsing in a modern Qt 4 interface.
<li>Free software: GNU GPLv3+ license. </li>
</ul>
<p><a href="http://twit88.com/blog/wp-content/uploads/2009/06/windowslivewriteropensourcedictionaryprogram-9ea7heron-single-4.png"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="heron-single" src="http://twit88.com/blog/wp-content/uploads/2009/06/windowslivewriteropensourcedictionaryprogram-9ea7heron-single-thumb-1.png" width="454" height="439"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/23/open-source-dictionary-program/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source RDBMS - Firebird</title>
		<link>http://twit88.com/blog/2009/06/23/open-source-rdbms-firebird/</link>
		<comments>http://twit88.com/blog/2009/06/23/open-source-rdbms-firebird/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 03:17:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2009/06/23/open-source-rdbms-firebird/</guid>
		<description><![CDATA[This is a open source RDBMS that you should have a look.
Firebird is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms. Firebird offers excellent concurrency, high performance, and powerful language support for stored procedures and triggers. It has been used in production systems, [...]]]></description>
			<content:encoded><![CDATA[<p>This is a open source RDBMS that you should have a look.</p>
<p><a href="http://www.firebirdsql.org">Firebird</a> is a relational database offering many <a href="http://www.firebirdsql.org/index.php?op=devel&amp;sub=engine&amp;id=SQL_conformance&amp;nosb=1">ANSI SQL standard features</a> that runs on Linux, Windows, and a variety of Unix platforms. Firebird offers excellent concurrency, high performance, and powerful language support for stored procedures and triggers. It has been used in production systems, under a variety of names, since 1981.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2009/06/23/open-source-rdbms-firebird/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
