<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>twit88.com</title>
	<link>http://twit88.com/blog</link>
	<description>New SMS Library at http://twit88.com/platform/projects/show/messagingtoolkit !</description>
	<pubDate>Mon, 15 Mar 2010 05:42:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>NoSQL RDBMS</title>
		<link>http://twit88.com/blog/2010/03/14/nosql-rdbms/</link>
		<comments>http://twit88.com/blog/2010/03/14/nosql-rdbms/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 05:42:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[database]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/14/nosql-rdbms/</guid>
		<description><![CDATA[NoSQL is a fast, portable, relational database management system without arbitrary limits, (other than memory and processor speed) that runs under, and interacts with, the UNIX1 Operating System. It uses the &#34;Operator-Stream Paradigm&#34; described in &#34;Unix Review&#34;, March, 1991, page 24, entitled &#34;A 4GL Language&#34;. There are a number of &#34;operators&#34; that each perform a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/NoSQL/Home%20Page">NoSQL</a> is a fast, portable, relational database management system without arbitrary limits, (other than memory and processor speed) that runs under, and interacts with, the UNIX1 Operating System. It uses the &quot;Operator-Stream Paradigm&quot; described in &quot;Unix Review&quot;, March, 1991, page 24, entitled &quot;A 4GL Language&quot;. There are a number of &quot;operators&quot; that each perform a unique function on the data. The &quot;stream&quot; is supplied by the UNIX Input/Output redirection mechanism. Therefore each operator processes some data and then passes it along to the next operator via the UNIX pipe function. This is very efficient as UNIX pipes are implemented in memory. NoSQL is compliant with the &quot;Relational Model&quot;.</p>
<p>The key feature of NoSQL (and other similar packages mentioned in this manual), is its <strong>close integration with UNIX</strong>. Real-world problems are typically more complex than the data models provided by many DBMS. Actual applications, and Web-based ones are no exception, are complex puzzles made up of many small pieces, several of which are data-related. Unlike other fourth generation systems, NoSQL is an extension of the UNIX environment, making available the full power of UNIX during application development and usage.</p>
<p>NoSQL was designed with the UNIX shell language as its user interface. This level of integration removes the need to learn yet another set of commands to use and administer the database system. A database is just a file, and can be maintained like all other files that the user owns or to which he has access. Because NoSQL commands are executable programs, the UNIX shell is inherited as the primary command language of the database; no other proprietary database scripting language, to my knowledge, is as powerful and flexible as the UNIX shell. The shell-level nature of NoSQL encourages casual use of the system, and successful casual use leads to familiarity and successful formal use. This concept is much more thoroughly explained in the paper &quot;<a href="http://www.rdb.com/lib/4gl.pdf">The UNIX Shell As a Fourth Generation Language</a>&quot;, that shows why the UNIX shell is an excellent tool for scripting database access. </p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/14/nosql-rdbms/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source Terminal Server</title>
		<link>http://twit88.com/blog/2010/03/13/open-source-terminal-server/</link>
		<comments>http://twit88.com/blog/2010/03/13/open-source-terminal-server/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 08:03:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/13/open-source-terminal-server/</guid>
		<description><![CDATA[x2go is an open source terminal server project offering a comprehensive &#34;server based computing&#34; solution. Combining the advantages of existing systems it features ease of use, performance and scalability. x2go provides you with access to your desktop as an individual as well as a corporate user - from within your own network and via the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.x2go.org">x2go</a> is an open source terminal server project offering a comprehensive &quot;server based computing&quot; solution. Combining the advantages of existing systems it features ease of use, performance and scalability. x2go provides you with access to your desktop as an individual as well as a corporate user - from within your own network and via the internet. </p>
<p>x2go is not limited to any particular hardware, it supports a variety of devices and architectures. x2go is open source and open minded. The project also offers you a command line client for you to implement your own client applications and ideas. Like any open source project we welcome your support.</p>
<p><a href="http://twit88.com/blog/wp-content/uploads/2010/03/image4.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="342" alt="image" src="http://twit88.com/blog/wp-content/uploads/2010/03/image-thumb4.png" width="454" border="0" /></a> </p>
<p>Another similar project is <a href="http://freenx.berlios.de/">FreeNX</a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/13/open-source-terminal-server/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source Video Transcoder</title>
		<link>http://twit88.com/blog/2010/03/13/open-source-video-transcoder/</link>
		<comments>http://twit88.com/blog/2010/03/13/open-source-video-transcoder/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 07:55:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/13/open-source-video-transcoder/</guid>
		<description><![CDATA[HandBrake is an open-source, GPL-licensed, multiplatform, multithreaded video transcoder, available for MacOS X, Linux and Windows.
Supported Sources:

Any DVD-like source: VIDEO_TS folder, DVD image or real DVD (unencrypted&#8211;protection methods including CSS are not supported internally and must be handled externally with third-party software and libraries), and some .VOB and .TS files 
Most any multimedia file it [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://handbrake.fr">HandBrake</a> is an open-source, GPL-licensed, multiplatform, multithreaded video transcoder, available for MacOS X, Linux and Windows.</p>
<p>Supported Sources:</p>
<ul>
<li>Any DVD-like source: VIDEO_TS folder, DVD image or real DVD (unencrypted&#8211;protection methods including CSS are not supported internally and must be handled externally with third-party software and libraries), and some .VOB and .TS files </li>
<li>Most any multimedia file it can get libavformat to read and libavcodec to decode. </li>
</ul>
<h6>Outputs:</h6>
<ul>
<li>File format: MP4 and MKV </li>
<li>Video: MPEG-4, H.264, or Theora </li>
<li>Audio: AAC, CoreAudio AAC (OS X Only), MP3, or Vorbis. AC-3 pass-through, DTS pass-thorugh (MKV only) </li>
</ul>
<h6>Misc&#160; features:</h6>
<ul>
<li>Chapter selection </li>
<li>Subtitles </li>
<li>Integrated bitrate calculator </li>
<li>Picture deinterlacing, cropping and scaling </li>
<li>Live Video Preivew </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/13/open-source-video-transcoder/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source 3D Creation Software</title>
		<link>http://twit88.com/blog/2010/03/13/open-source-3d-creation-software/</link>
		<comments>http://twit88.com/blog/2010/03/13/open-source-3d-creation-software/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 07:49:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/13/open-source-3d-creation-software/</guid>
		<description><![CDATA[Blender is the free open source 3D content creation suite, available for all major operating systems under the GNU General Public License.

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.blender.org/">Blender</a> is the free open source 3D content creation suite, available for all major operating systems under the GNU General Public License.</p>
<p><a href="http://twit88.com/blog/wp-content/uploads/2010/03/image3.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="482" alt="image" src="http://twit88.com/blog/wp-content/uploads/2010/03/image-thumb3.png" width="454" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/13/open-source-3d-creation-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source eBook Library Management</title>
		<link>http://twit88.com/blog/2010/03/13/open-source-ebook-library-management-2/</link>
		<comments>http://twit88.com/blog/2010/03/13/open-source-ebook-library-management-2/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 07:40:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/13/open-source-ebook-library-management-2/</guid>
		<description><![CDATA[calibre is a free and open source e-book library management application developed by users of e-books for users of e-books. It has a cornucopia of features divided into the following main categories: 

Library Management
calibre manages your e-book collection for you. It is designed around the concept of the logical book, i.e., a single entry in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://calibre-ebook.com">calibre</a> is a free and open source e-book library management application developed by users of e-books for users of e-books. It has a cornucopia of features divided into the following main categories: </p>
<ul>
<li>Library Management
<p>calibre manages your e-book collection for you. It is designed around the concept of the <em>logical book</em>, i.e., a single entry in your library that may correspond to actual e-book files in several formats.</p>
<p>calibre can sort the books in your library by: <code>Title, Author, Date added, Date published, Size, Rating, Series, etc.</code></p>
<p>In addition, it supports extra searchable metadata: </p>
<ul>
<li><code>Tags</code>: A flexible system for categorizing your collection however you like </li>
<li><code>Comments</code>: A long form entry that you can use for book description, notes, reviews, etc. </li>
</ul>
<p>You can easily search your book collection for a particular book. calibre supports searching any and all of the fields mentioned above. You can construct advanced search queries by clicking the helpful &quot;Advanced search&quot; button to the left of the search bar. </p>
<p>You can export arbitrary subsets of your collection to your hard disk arranged in a fully customizable folder structure.</p>
<p>Finally, calibre will even go out onto the internet to find book metadata based on existing title/author or ISBN information. It can download various types of metadata and covers for your books, automatically. The metadata system is written using plugins so that different types of metadata sources can be supported in the future. </p>
</li>
<li>E-book conversion
<p>calibre can convert <em>from</em> a huge number of formats <em>to</em> a huge number of formats. It supports all the major e-book formats. The full list of formats can be found <a href="http://calibre-ebook.com/user_manual/faq.html#what-formats-does-app-support-conversion-to-from">here</a>.</p>
<p>The conversion engine has lots of powerful features. It can rescale all font sizes, ensuring the output e-book is readable no matter what font sizes the input document uses. It can automatically detect/create book structure, like chapters and Table of Contents. It can insert the book metadata into a &quot;Book Jacket&quot; at the start of the book. </p>
</li>
<li>Syncing to e-book reader devices
<p>calibre has a modular device driver design that makes adding support for different e-reader devices easy. At the moment, it has support for a large number of devices, the complete list of which is <a href="http://calibre-ebook.com/user_manual/faq.html#device-integration">here</a>. Syncing supports updating metadata on the device from metadata in the library and creation of collections on the device based on the tags defined in the library. If a book has more than one format available, calibre automatically chooses the best format when uploading to the device. If none of the formats is suitable, calibre will automatically convert the e-book to a format suitable for the device before sending it. </p>
</li>
<li>Downloading news from the web and converting it into e-book form
<p>calibre can automatically fetch news from websites or RSS feeds, format the news into a ebook and upload to a connected device. The ebooks include the <em>full</em> versions of the articles, not just the summaries. Examples of supported news sites include: </p>
<ul>
<li>The New York Times </li>
<li>The Wall Street Journal </li>
<li>The Economist </li>
<li>Time </li>
<li>Newsweek </li>
<li>The Guardian </li>
<li>ESPN </li>
<li>and many, many more… </li>
</ul>
<p>calibre has over <strong>three hundred</strong> news sources and the news system is plugin based, allowing users to easily create and contribute new sources to calibre. As a result the collection of news sources keeps on growing! </p>
<p>If you are interested in adding support for a news site, read the <a href="http://calibre-ebook.com/user_manual/news.html">User Manual</a>. Once you have successfully created a new recipe, you can share it with other users by posting it in the <a href="http://www.mobileread.com/forums/forumdisplay.php?f=166">calibre forum</a> <img title="External link" src="http://calibre-ebook.com/site_media//img/external.png" /> or sending it to the calibre developers for inclusion in calibre. </p>
</li>
<li>Comprehensive e-book viewer
<p>calibre has a built-in ebook viewer that can display all the major ebook formats. It has full support for Table of Contents, bookmarks, CSS, a reference mode, printing, searching, copying, customizing the rendering via a user style sheet, embedded fonts, etc. </p>
</li>
<li>Content server for online access to your book collection</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/13/open-source-ebook-library-management-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Free Webcam Software</title>
		<link>http://twit88.com/blog/2010/03/12/free-webcam-software/</link>
		<comments>http://twit88.com/blog/2010/03/12/free-webcam-software/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 09:02:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[freebies]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/12/free-webcam-software/</guid>
		<description><![CDATA[Yawcam is a shortening for Yet Another WebCAM software, and that&#8217;s exactly what it is.
More precise Yawcam is a webcam software for windows written in java. The main ideas for Yawcam are to keep it simple and easy to use but to include all the usual features.

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yawcam.com/">Yawcam</a> is a shortening for <em>Yet Another WebCAM software</em>, and that&#8217;s exactly what it is.</p>
<p>More precise Yawcam is a webcam software for windows written in java. The main ideas for Yawcam are to keep it simple and easy to use but to include all the usual features.</p>
<p><a href="http://twit88.com/blog/wp-content/uploads/2010/03/image2.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://twit88.com/blog/wp-content/uploads/2010/03/image-thumb2.png" width="242" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/12/free-webcam-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Windows Zip, GZip, Tar and BZip2 Library</title>
		<link>http://twit88.com/blog/2010/03/12/windows-zip-gzip-tar-and-bzip2-library/</link>
		<comments>http://twit88.com/blog/2010/03/12/windows-zip-gzip-tar-and-bzip2-library/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 08:58:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/12/windows-zip-gzip-tar-and-bzip2-library/</guid>
		<description><![CDATA[#ziplib (SharpZipLib, formerly NZipLib) is a Zip, GZip, Tar and BZip2 library written entirely in C# for the .NET platform. It is implemented as an assembly (installable in the GAC), and thus can easily be incorporated into other projects (in any .NET language). 
The creator of #ziplib put it this way: &#34;I&#8217;ve ported the zip [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/">#ziplib</a> (SharpZipLib, formerly NZipLib) is a <strong>Zip, GZip, Tar and BZip2 library</strong> written entirely in C# for the .NET platform. It is implemented as an assembly (installable in the GAC), and thus can easily be incorporated into other projects (in any .NET language). </p>
<p>The creator of #ziplib put it this way: &quot;I&#8217;ve ported the zip library over to C# because I needed gzip/zip compression and I didn&#8217;t want to use libzip.dll or something like this. I want all in pure C#.&quot;</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/12/windows-zip-gzip-tar-and-bzip2-library/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Library for Windows API Hooking</title>
		<link>http://twit88.com/blog/2010/03/12/library-for-windows-api-hooking/</link>
		<comments>http://twit88.com/blog/2010/03/12/library-for-windows-api-hooking/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 08:55:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/12/library-for-windows-api-hooking/</guid>
		<description><![CDATA[EasyHook supports extending (hooking) unmanaged code (APIs) with pure managed ones, from within a fully managed environment like C# using Windows 2000 SP4 and later, including Windows XP x64, Windows Vista x64 and Windows Server 2008 x64. Also 32- and 64-bit kernel mode hooking is supported as well as an unmanaged user-mode API which allows [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.codeplex.com/easyhook">EasyHook</a> supports extending (hooking) unmanaged code (APIs) with pure managed ones, from within a fully managed environment like C# using Windows 2000 SP4 and later, including Windows XP x64, Windows Vista x64 and Windows Server 2008 x64. Also 32- and 64-bit kernel mode hooking is supported as well as an unmanaged user-mode API which allows you to hook targets without requiring a NET Framework on the customers PC. An experimental stealth injection hides hooking from most of the current AV software.</p>
<ul>
<li>A so called &quot;Thread Deadlock Barrier&quot; will get rid of many core problems when hooking unknown APIs; this technology is unique to EasyHook </li>
<li>You can write managed hook handlers for unmanaged APIs </li>
<li>You can use all the convenience managed code provides, like NET Remoting, WPF and WCF for example </li>
<li>A documented, pure unmanaged hooking API </li>
<li>Support for 32- and 64-bit kernel mode hooking (also check out my PatchGuard 3 bypass driver which can be found in the release list) </li>
<li>No resource or memory leaks are left in the target </li>
<li>Experimental stealth injection mechanism that won&#8217;t raise attention of any current AV Software </li>
<li>EasyHook32.dll and EasyHook64.dll are pure unmanaged modules and can be used without any NET framework installed! </li>
<li>All hooks are installed and automatically removed in a stable manner </li>
<li>Support for Windows Vista SP1 x64 and Windows Server 2008 SP1 x64 by utilizing totally undocumented APIs, to still allow hooking into any terminal session. </li>
<li>Managed/Unmanaged module stack trace inside a hook handler </li>
<li>Get calling managed/unmanaged module inside a hook handler </li>
<li>Create custom stack traces inside a hook handler </li>
<li>You will be able to write injection libraries and host processes compiled for AnyCPU, which will allow you to inject your code into 32- and 64-Bit processes from 64- and 32-Bit processes by using the very same assembly in all cases. </li>
<li>EasyHook supports RIP-relative addressing relocation for 64-Bit targets. </li>
<li>No unpacking/installation necessary. </li>
<li>The Visual Studio Redistributable is not required.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/12/library-for-windows-api-hooking/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source Windows Spying Tool</title>
		<link>http://twit88.com/blog/2010/03/12/open-source-windows-spying-tool/</link>
		<comments>http://twit88.com/blog/2010/03/12/open-source-windows-spying-tool/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 08:51:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/12/open-source-windows-spying-tool/</guid>
		<description><![CDATA[oSpy is a tool which aids in reverse-engineering software running on the Windows platform. With the amount of proprietary systems that exist today (synchronization protocols, instant messaging, etc.), the amount of work required to keep up when developing interoperable solutions will quickly become a big burden when limited to traditional techniques. 
However, when the sniffing [...]]]></description>
			<content:encoded><![CDATA[<p><i><a href="http://code.google.com/p/ospy/">oSpy</a></i> is a tool which aids in reverse-engineering software running on the Windows platform. With the amount of proprietary systems that exist today (synchronization protocols, instant messaging, etc.), the amount of work required to keep up when developing interoperable solutions will quickly become a big burden when limited to traditional techniques. </p>
<p>However, when the sniffing is done on the API level it allows a much more fine-grained view of what&#8217;s going on. Seeing return-addresses for each recv/send call (for example), can prove useful when you want to look at the processing code at that spot in a debugger or static analysis tool. And if an application uses encrypted communication it&#8217;s easy to intercept these calls as well. </p>
<p><i>oSpy</i> already intercepts one such API, and is the API used by MSN Messenger, Google Talk, etc. for encrypting/decrypting HTTPS data. Another neat feature is when wanting to see how an application behaves when in a firewalled environment. Normally you would have to simulate such an environment by configuring firewalls etc., which not only is time-consuming, but might also cripple the rest of the applications you&#8217;ve got running. </p>
<p><i>oSpy</i> solves this problem by a feature called softwalling which allows you to set rules based on the type of function-call, the return-address, local/remote address/port, etc., and lets you choose which error to signal back to the application when the rule matches. This way you can make the application think that for example a connect() timed out, connection was refused, there was no route to host, etc. </p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/12/open-source-windows-spying-tool/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MessagingToolkit MMS is released</title>
		<link>http://twit88.com/blog/2010/03/09/messagingtoolkit-mms-is-released/</link>
		<comments>http://twit88.com/blog/2010/03/09/messagingtoolkit-mms-is-released/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 05:36:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[MessagingToolkit]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/09/messagingtoolkit-mms-is-released/</guid>
		<description><![CDATA[Now you can send and receive both SMS and MMS starting release 1.1.
 
MMS can be sent using the built-in MMS slide feature, or you can build the MMS message yourself. You can also save the MMS file to be sent out later.
The software is available at http://twit88.com/platform/projects/show/messagingtoolkit
]]></description>
			<content:encoded><![CDATA[<p>Now you can send and receive both SMS and MMS starting release 1.1.</p>
<p><a href="http://twit88.com/blog/wp-content/uploads/2010/03/image1.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="363" alt="image" src="http://twit88.com/blog/wp-content/uploads/2010/03/image-thumb1.png" width="454" border="0" /></a> </p>
<p>MMS can be sent using the built-in MMS slide feature, or you can build the MMS message yourself. You can also save the MMS file to be sent out later.</p>
<p>The software is available at <a title="http://twit88.com/platform/projects/show/messagingtoolkit" href="http://twit88.com/platform/projects/show/messagingtoolkit">http://twit88.com/platform/projects/show/messagingtoolkit</a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/09/messagingtoolkit-mms-is-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source Library System: Koha</title>
		<link>http://twit88.com/blog/2010/03/06/open-source-library-system-koha/</link>
		<comments>http://twit88.com/blog/2010/03/06/open-source-library-system-koha/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 05:27:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/06/open-source-library-system-koha/</guid>
		<description><![CDATA[Koha is the first open-source Integrated Library System (ILS). In use worldwide, its development is steered by a growing community of libraries collaborating to achieve their technology goals. Koha&#8217;s impressive feature set continues to evolve and expand to meet the needs of its user base. 
Full-featured ILS. In use worldwide in libraries of all sizes, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://koha.org">Koha</a> is the first open-source Integrated Library System (ILS). In use worldwide, its development is steered by a growing community of libraries collaborating to achieve their technology goals. Koha&#8217;s impressive feature set continues to evolve and expand to meet the needs of its user base. </p>
<p><strong>Full-featured ILS.</strong> In use worldwide in libraries of all sizes, Koha is a true enterprise-class ILS with comprehensive functionality including basic or advanced options. Koha includes modules for circulation, cataloging, acquisitions, serials, reserves, patron management, branch relationships, and more. For a comprehensive overview of features visit the Koha feature map.</p>
<p><strong>Dual Database Design.</strong> Koha uses a dual database design that utilizes the strengths of the two major industry-standard database types (text-based and RDBMS). This design feature ensures that Koha is scalable enough to meet the transaction load of any library, no matter what the size.</p>
<p><strong>Library Standards Compliant.</strong> Koha is built using library standards and protocols that ensure interoperability between Koha and other systems and technologies, while supporting existing workflows and tools.    <br /><strong></strong></p>
<p><strong>Web-based Interfaces.</strong> Koha&#8217;s OPAC, circ, management and self-checkout interfaces are all based on standards-compliant World Wide Web technologies&#8211;XHTML, CSS and Javascript&#8211;making Koha a truly platform-independent solution.    <br /><strong></strong></p>
<p><strong>Free / Open Source.</strong> Koha is distributed under the open-source General Public License (GPL). More information on the GPL can be found here.</p>
<p><strong>No Vendor Lock-in.</strong> It is an important part of the open-source promise that there is no vendor lock-in: libraries are free to install and use Koha themselves if the have the in-house expertise or to purchase support or development services from the best available source.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/06/open-source-library-system-koha/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Model and Solve Comple Problems with Solver Foundation</title>
		<link>http://twit88.com/blog/2010/03/02/model-and-solve-comple-problems-with-solver-foundation/</link>
		<comments>http://twit88.com/blog/2010/03/02/model-and-solve-comple-problems-with-solver-foundation/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 07:42:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/02/model-and-solve-comple-problems-with-solver-foundation/</guid>
		<description><![CDATA[Microsoft Solver Foundation is an extensible framework that helps you model and solve complex problems by: 

Modeling and solving scenarios by using constraints, goals, and data. 
Programming in the Optimization Modeling Language (OML), in C# imperatively, in F# functionally, or in any .NET Framework language. 
Integrating third-party solvers, such as Gurobi, Mosek™, FICO™ Xpress, LINDO, [...]]]></description>
			<content:encoded><![CDATA[<p><b><a href="http://code.msdn.microsoft.com/solverfoundation">Microsoft Solver Foundation</a></b> is an extensible framework that helps you model and solve complex problems by: </p>
<ul>
<li>Modeling and solving scenarios by using constraints, goals, and data. </li>
<li>Programming in the Optimization Modeling Language (OML), in C# imperatively, in F# functionally, or in any .NET Framework language. </li>
<li>Integrating third-party solvers, such as Gurobi, Mosek™, FICO™ Xpress, LINDO, CPLEX®, and lp_solve. </li>
<li>Using familiar interfaces in Microsoft Office Excel and SharePoint to create and solve models. </li>
</ul>
<ul></ul>
<p>Solver Foundation Services (SFS) can automatically analyze models and determine which solver is most appropriate. If you are an advanced modeler, you can choose specific solvers and solver attributes. While solving the models, SFS manages all threading, many-core, synchronization, scheduling, and model execution issues. When finished, SFS produces reports about solver behavior and results, and provides additional information about solutions, including sensitivity. Finally, SFS allows LINQ data binding of model parameters and delivery of results in multiple formats.</p>
<p>Solver Foundation allows new or existing third-party solvers to plug into the SFS directly, avoiding the need to learn a new modeling language or the significant overhead in managing solver specific solutions. These solvers include numerical, symbolic, and search algorithms that you can use in your models. There is a collection of certified partner wrappers for Gurobi, Mosek ™, FICO™ Xpress, and LINDO, as well as reference wrapper source code for CPLEX ® and lp_solve.   <br />The Solver Foundation’s intrinsic solvers are written in managed code covering several families of numerical and symbolic programming:</p>
<ul>
<li>Revised Simplex Linear Programming (Primal and Dual Simplex) </li>
<li>Interior Point Method Linear, Quadratic, and Second Ordered Conic Programming </li>
<li>Constraint Programming with Exhaustive Tree Search, Local Search, and Metaheuristic Techniques </li>
<li>Stochastic Programming </li>
<li>Compact, Quasi-Newton (L-BFGS), Unconstrained Nonlinear Programming </li>
<li>Mixed Integer Programming </li>
<li>In Solver Foundation version 2.0, we included the Gurobi Optimization MIP solver as our default MIP solver. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/02/model-and-solve-comple-problems-with-solver-foundation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open Source BPEL Solution</title>
		<link>http://twit88.com/blog/2010/03/01/open-source-bpel-solution/</link>
		<comments>http://twit88.com/blog/2010/03/01/open-source-bpel-solution/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 04:40:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/03/01/open-source-bpel-solution/</guid>
		<description><![CDATA[Orchestra is a complete solution to handle long-running, service oriented processes. It provides out of the box orchestration functionalities to handle complex business processes. It is based on the OASIS standard BPEL (Business Process Execution Language). Orchestra’s objectives: 

Improvement and control of processes 
Services interaction 
Productivity and agility of the company 

Orchestra is fully Open [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://orchestra.ow2.org/xwiki/bin/view/Main/WebHome">Orchestra</a> is a complete solution to handle long-running, service oriented processes. It provides out of the box orchestration functionalities to handle complex business processes. It is based on the OASIS standard BPEL (Business Process Execution Language). Orchestra’s objectives: </p>
<ul>
<li>Improvement and control of processes </li>
<li>Services interaction </li>
<li>Productivity and agility of the company </li>
</ul>
<p>Orchestra is fully Open Source and is downloadable under the <strong>LGPL License</strong>.</p>
<p><a href="http://twit88.com/blog/wp-content/uploads/2010/03/image.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="293" alt="image" src="http://twit88.com/blog/wp-content/uploads/2010/03/image-thumb.png" width="354" border="0" /></a> </p>
<ul>
<li>Generic engine : The Process Virtual Machine </li>
<li>BPEL 2.0 standard </li>
<li>Web 2.0 based console </li>
<li>Graphical BPEL designer </li>
<li>Integration with the Petals ESB </li>
<li>JSE vs JEE deployment </li>
<li>JMX based administration APIs </li>
<li>BI and BAM capabilities </li>
<li>Professional support </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/03/01/open-source-bpel-solution/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java Safe Concurrency Tools</title>
		<link>http://twit88.com/blog/2010/02/20/java-safe-concurrency-tools/</link>
		<comments>http://twit88.com/blog/2010/02/20/java-safe-concurrency-tools/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 05:22:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/02/20/java-safe-concurrency-tools/</guid>
		<description><![CDATA[The goal of the jconch project is to produce a reliable, safe set of implementations for common tasks in mulithreaded Java applications. The goal is to be similar in spirit to the way that Spring scraps the boilerplate for common user tasks in database work.
Current functionalities

Logical Equivalence Locking &#8212; Both synchronized and ReadWriteLock-based based on [...]]]></description>
			<content:encoded><![CDATA[<p>The goal of the <a href="http://code.google.com/p/jconch/">jconch</a> project is to produce a reliable, safe set of implementations for common tasks in mulithreaded Java applications. The goal is to be similar in spirit to the way that Spring scraps the boilerplate for common user tasks in database work.</p>
<p>Current functionalities</p>
<ul>
<li><strong>Logical Equivalence Locking</strong> &#8212; Both <tt>synchronized</tt> and ReadWriteLock-based based on logical equivalence (#equals) instead of reference equality (==). </li>
<li><strong>Thread-safe Lazy Map</strong> &#8212; Good for caching look-ups in a multithreaded environment. Use this to substantially improve performance in cases where repeated expensive look-ups are occurring. </li>
<li><strong>Fast, Thread-safe Multiple-Key Objects</strong> &#8212; For when storing one object as a key to a map just isn&#8217;t enough. </li>
<li><strong>Easy Spring Integration</strong> &#8212; Architected with an eye towards making life easy for <a href="http://www.springframework.org/">Spring</a> users. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/02/20/java-safe-concurrency-tools/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Javascript Mobile Framework</title>
		<link>http://twit88.com/blog/2010/02/20/javascript-mobile-framework/</link>
		<comments>http://twit88.com/blog/2010/02/20/javascript-mobile-framework/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 05:03:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[mobile]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/02/20/javascript-mobile-framework/</guid>
		<description><![CDATA[PhoneGap is an open source development tool for building fast, easy mobile apps with JavaScript.
If you’re a web developer who wants to build mobile applications in HTML and JavaScript while still taking advantage of the core features in the iPhone, Android, Palm, Symbian and Blackberry SDKs, PhoneGap is for you.
As simple as HTML, CSS and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.phonegap.com/">PhoneGap</a> is an open source development tool for building fast, easy mobile apps with JavaScript.</p>
<p>If you’re a web developer who wants to build mobile applications in HTML and JavaScript while still taking advantage of the core features in the iPhone, Android, Palm, Symbian and Blackberry SDKs, PhoneGap is for you.</p>
<p>As simple as HTML, CSS and JavaScript. Software development is hard work. Device integration should be simple so you can focus on the application you are building instead of authoring complex compatibility layers. PhoneGap aims to solve device integration by web enabling devices native functionality with open standards.</p>
<p>The Apple iPhone, Google Android and various Blackberry models boast large screens and powerful device capability. Web enabling these devices in a consistent platform saves the developer from having to implement logic in three different software development paradigms.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/02/20/javascript-mobile-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Windows: Generate WMI Code</title>
		<link>http://twit88.com/blog/2010/02/18/windows-generate-wmi-code/</link>
		<comments>http://twit88.com/blog/2010/02/18/windows-generate-wmi-code/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 01:55:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/02/18/windows-generate-wmi-code/</guid>
		<description><![CDATA[The WMI Code Creator tool allows you to generate VBScript, C#, and VB .NET code that uses WMI to complete a management task such as querying for management data, executing a method from a WMI class, or receiving event notifications using WMI.
The WMI Code Creator tool generates code that uses WMI to obtain management information [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.microsoft.com/downloads/details.aspx?familyid=2CC30A64-EA15-4661-8DA4-55BBC145C30E&amp;displaylang=en">WMI Code Creator</a> tool allows you to generate VBScript, C#, and VB .NET code that uses WMI to complete a management task such as querying for management data, executing a method from a WMI class, or receiving event notifications using WMI.</p>
<p>The WMI Code Creator tool generates code that uses WMI to obtain management information or perform management tasks. You can use the tool to learn how to manage computers using WMI scripting and WMI .NET. The tool generates code that runs on the local computer, a remote computer, or a group of remote computers based on your selection from the Target Computer menu on the tool. You can also execute the generated code directly from the tool.</p>
<p>The tool is meant to help IT Professionals quickly create management scripts and to help developers learn WMI scripting and WMI .NET. The tool helps take the complexity out of writing code that uses WMI and helps developers and IT Professionals understand how powerful and useful WMI can be for managing computers.</p>
<p>Using the tool, you can query for management information such as the name and version of an operating system, how much free disk space is on a hard drive, or the state of a service. You can also use the tool to execute a method from a WMI class to perform a management task. For example, you can create code that executes the Create method of the Win32_Process class to create a new process such as Notepad or another executable. The tool also allows you to generate code to receive event notifications using WMI. For example, you can select to receive an event every time a process is started or stopped, or when a computer shuts down.</p>
<p>The tool also allows you to browse through the available WMI namespaces and classes on the local computer to find their descriptions, properties, methods, and qualifiers.    <br />The code that creates the tool is also included in the download. The tool was created using WMI .NET, and the code for the tool can help developers understand how WMI .NET is used to create applications and manage information.</p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/02/18/windows-generate-wmi-code/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java Configuration Management Framework</title>
		<link>http://twit88.com/blog/2010/02/17/java-configuration-management-framework/</link>
		<comments>http://twit88.com/blog/2010/02/17/java-configuration-management-framework/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 05:59:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/02/17/java-configuration-management-framework/</guid>
		<description><![CDATA[SmartFrog is a powerful and flexible Java-based software framework for configuring, deploying and managing distributed software systems.
SmartFrog helps you to encapsulate and manage systems so they are easy to configure and reconfigure, and so that that they can be automatically installed, started and shut down. It provides orchestration capabilities so that subsystems can be started [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wiki.smartfrog.org/wiki/display/sf/SmartFrog+Home">SmartFrog</a> is a powerful and flexible Java-based software framework for configuring, deploying and managing distributed software systems.</p>
<p>SmartFrog helps you to encapsulate and manage systems so they are easy to configure and reconfigure, and so that that they can be automatically installed, started and shut down. It provides orchestration capabilities so that subsystems can be started (and stopped) in the right order. It also helps you to detect and recover from failures.</p>
<p>Such systems typically have multiple software components running across a network of computing resources, where the components must work together to deliver the functionality of the system as a whole. It&#8217;s critical that the right components are running in the right places, that the components are individually and collectively correctly configured, and that they are correctly combined to create the complete system. This profile fits many of the services and applications that run on today&#8217;s computing infrastructures.</p>
<p>SmartFrog consists of:</p>
<ul>
<li>A <b>Language</b> for defining configurations, providing powerful system modelling capabilities and an expressive notation for describing system configurations </li>
<li>A secure, distributed <b>Runtime</b> System for deploying software components and managing running software systems </li>
<li>A Library of SmartFrog <b>Components</b> that implement the SmartFrog component model and provide a wide range of services and functionalit </li>
</ul>
<p>Similar software are <a href="http://reductivelabs.com/products/puppet/">puppet</a> and <a href="http://www.cfengine.org/">cfengine</a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/02/17/java-configuration-management-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Windows Process Memory Analysis Utility</title>
		<link>http://twit88.com/blog/2010/02/17/windows-process-memory-analysis-utility/</link>
		<comments>http://twit88.com/blog/2010/02/17/windows-process-memory-analysis-utility/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 02:48:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/02/17/windows-process-memory-analysis-utility/</guid>
		<description><![CDATA[VMMap is a process virtual and physical memory analysis utility. It shows a breakdown of a process&#8217;s committed virtual memory types as well as the amount of physical memory (working set) assigned by the operating system to those types. Besides graphical representations of memory usage, VMMap also shows summary information and a detailed process memory [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx">VMMap</a> is a process virtual and physical memory analysis utility. It shows a breakdown of a process&#8217;s committed virtual memory types as well as the amount of physical memory (working set) assigned by the operating system to those types. Besides graphical representations of memory usage, VMMap also shows summary information and a detailed process memory map. Powerful filtering and refresh capabilities allow you to identify the sources of process memory usage and the memory cost of application features.</p>
<p>Besides flexible views for analyzing live processes, VMMap supports the export of data in multiple forms, including a native format that preserves all the information so that you can load back in. It also includes command-line options that enable scripting scenarios.</p>
<p>VMMap is the ideal tool for developers wanting to understand and optimize their application&#8217;s memory resource usage.</p>
<p><a href="http://twit88.com/blog/wp-content/uploads/2010/02/image12.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="339" alt="image" src="http://twit88.com/blog/wp-content/uploads/2010/02/image-thumb11.png" width="454" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/02/17/windows-process-memory-analysis-utility/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Error Logging Modules and Handlers for ASP.NET</title>
		<link>http://twit88.com/blog/2010/02/17/error-logging-modules-and-handlers-for-aspnet/</link>
		<comments>http://twit88.com/blog/2010/02/17/error-logging-modules-and-handlers-for-aspnet/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 02:35:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/02/17/error-logging-modules-and-handlers-for-aspnet/</guid>
		<description><![CDATA[ELMAH (Error Logging Modules and Handlers) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. 
Once ELMAH has been dropped into a running web application and configured [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/elmah/">ELMAH</a> (Error Logging Modules and Handlers) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running <a href="http://www.asp.net/">ASP.NET</a> web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. </p>
<p>Once ELMAH has been dropped into a running web application and configured appropriately, you get the following facilities without changing a single line of your code: </p>
<ul>
<li>Logging of nearly all unhandled exceptions. </li>
<li>A web page to remotely view the entire log of recoded exceptions. </li>
<li>A web page to remotely view the full details of any one logged exception. </li>
<li>In many cases, you can review the original <a href="http://en.wikipedia.org/wiki/Yellow_Screen_of_Death#ASP.NET">yellow screen of death</a> that ASP.NET generated for a given exception, even with <tt>customErrors</tt> mode turned off. </li>
<li>An e-mail notification of each error at the time it occurs. </li>
<li>An RSS feed of the last 15 errors from the log. </li>
</ul>
<p><a href="http://twit88.com/blog/wp-content/uploads/2010/02/image11.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="348" alt="image" src="http://twit88.com/blog/wp-content/uploads/2010/02/image-thumb10.png" width="454" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/02/17/error-logging-modules-and-handlers-for-aspnet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What is the Testability of  Your Code</title>
		<link>http://twit88.com/blog/2010/02/17/what-is-the-testability-of-your-code/</link>
		<comments>http://twit88.com/blog/2010/02/17/what-is-the-testability-of-your-code/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 02:27:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://twit88.com/blog/2010/02/17/what-is-the-testability-of-your-code/</guid>
		<description><![CDATA[Testability-explorer is a tool which analyzes Java bytecode and computes how difficult it will be to write unit tests for the code. It attempts to help you quantitatively determine how hard your code is to test, and where to focus to make it more testable. 
Testability Explorer can be used: 

As a learning tool which [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/testability-explorer/">Testability-explorer</a> is a tool which analyzes Java bytecode and computes how difficult it will be to write unit tests for the code. It attempts to help you quantitatively determine how hard your code is to test, and where to focus to make it more testable. </p>
<p>Testability Explorer can be used: </p>
<ol>
<li>As a learning tool which flags causes of hard to test code with detailed breakdown of reasons. </li>
<li>To identify hard to test hair-balls in legacy code. </li>
<li>As part of your code analysis-toolset. </li>
<li>As a tool which can be added into continuous integration that can enforce testable code. </li>
</ol>
<p>Currently the tool computes: </p>
<ol>
<li>Non-Mockable Total Recursive Cyclomatic Complexity. <i>Cyclomatic Complexity</i> is a measure of how many different paths of execution are there in the code. It is computed, by counting the <tt>if</tt>, <tt>while</tt>, and <tt>case</tt> as branching primitives. It is <i>recursive</i> because cost of the method as well as any methods it calls are counted. It is <i>total</i> because cost of object construction as well as any static initializations are counted. And finally, it is <i>non-mockable</i> because any code which can be mocked out in test is not counted as part of the cost. This means that the score is based on the amount of complex code that cannot be mocked out in a unit test. </li>
<li>Global Mutable State. Counts the number of fields which are globally reachable by the class under test and which are mutable. Mutable global state makes testing difficult as tests are not isolatable, the global state needs to be set up and cleared between tests. </li>
<li>Law of Demeter. This is the principle that calling methods on objects you get from other collaborators is trouble, instead, the collaborator should call that method itself. It makes testing harder because your mocks must expose some internal state through these methods. </li>
</ol>
<p><a href="http://twit88.com/blog/wp-content/uploads/2010/02/image10.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="450" alt="image" src="http://twit88.com/blog/wp-content/uploads/2010/02/image-thumb9.png" width="450" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://twit88.com/blog/2010/02/17/what-is-the-testability-of-your-code/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
