<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://www.devdiligence.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://www.devdiligence.com/feed.php">
        <title>Dev Diligence</title>
        <description></description>
        <link>http://www.devdiligence.com/</link>
        <image rdf:resource="http://www.devdiligence.com/lib/images/favicon.ico" />
       <dc:date>2010-09-05T08:03:00-06:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://www.devdiligence.com/django?rev=1275844246&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/dom4j?rev=1275844248&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/dynamicpdf?rev=1209222468&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/fiddler?rev=1275844245&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/firebug?rev=1275844248&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/jquery?rev=1275844247&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/libevent?rev=1275844252&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/libgd?rev=1275844255&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/libjpeg?rev=1275844252&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/libredblack?rev=1209158256&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/librsync?rev=1275844244&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/memcached?rev=1215732532&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/openssl?rev=1209318555&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/pcre?rev=1275844251&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/pthreads?rev=1209181108&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/pylons?rev=1275844255&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/sphinx?rev=1275844247&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/spread?rev=1275844257&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/sqlite?rev=1248782279&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/start?rev=1275844252&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/template?rev=1275844249&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/wishlist?rev=1275844256&amp;do=diff"/>
                <rdf:li rdf:resource="http://www.devdiligence.com/zlib?rev=1275844245&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://www.devdiligence.com/lib/images/favicon.ico">
        <title>Dev Diligence</title>
        <link>http://www.devdiligence.com/</link>
        <url>http://www.devdiligence.com/lib/images/favicon.ico</url>
    </image>
    <item rdf:about="http://www.devdiligence.com/django?rev=1275844246&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:46-06:00</dc:date>
        <title>django</title>
        <link>http://www.devdiligence.com/django?rev=1275844246&amp;do=diff</link>
        <description>Overview


Django is a full-stack Python web framework.  It is particularly well-suited to CMS-based applications, with automatic generation of CRUD-screen admin pages and a large set of “generic view” functions that work with user-created templates to provide common functionality like list and detail views, date-based archives, etc.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/dom4j?rev=1275844248&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:48-06:00</dc:date>
        <title>dom4j</title>
        <link>http://www.devdiligence.com/dom4j?rev=1275844248&amp;do=diff</link>
        <description>Overview


dom4j is an XML manipulation library for Java - a friendlier DOM.  

Case Studies

	*  

Tips and tricks

	*  

Gotchas

	*  Event model allows memory-efficient processing of larger documents than will fit in memory - but has a memory leak evident when processing multi-gig XML documents.
	*  No longer actively maintained - last update 2005. Not a huge problem, as it's feature-complete and mostly non-buggy.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/dynamicpdf?rev=1209222468&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2008-04-26T09:07:48-06:00</dc:date>
        <title>dynamicpdf</title>
        <link>http://www.devdiligence.com/dynamicpdf?rev=1209222468&amp;do=diff</link>
        <description>Overview


Dynamic PDF is a .NET library for creating PDF documents. Their royalty free distribution license is around 2k. You can download a free trial and it has a lot of examples to help you get started. Feature Chart

Case Studies

	*  A case study</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/fiddler?rev=1275844245&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:45-06:00</dc:date>
        <title>fiddler</title>
        <link>http://www.devdiligence.com/fiddler?rev=1275844245&amp;do=diff</link>
        <description>Overview

Fiddler is a free HTTP debugging proxy.  It is a Win32 app that allows you to view and edit HTTP requests and responses.  

Case Studies

	*  

Gotchas

	*  If the machine that you're running Fiddler on is shutdown without first shutting down Fiddler, it's possible some issues will come up.  Things like Outlook, TFS Team Explorer and other applications fail to function.  To correct this, simply open and close Fiddler.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/firebug?rev=1275844248&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:48-06:00</dc:date>
        <title>firebug</title>
        <link>http://www.devdiligence.com/firebug?rev=1275844248&amp;do=diff</link>
        <description>Overview


Firebug is a Firefox add-on for debugging JavaScript and analyzing HTML, CSS, and the DOM.

Gotchas

	*  Minified JS files can result in incorrect function names in the Firebug error console and profiler.  Presumably other compression schemes also cause problems, but JSMin is known for being reliable and yet still produces erroneous tracebacks.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/jquery?rev=1275844247&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:47-06:00</dc:date>
        <title>jquery</title>
        <link>http://www.devdiligence.com/jquery?rev=1275844247&amp;do=diff</link>
        <description>Overview


jQuery is a cross-platform general purpose JavaScript library, focused around querying specific elements of pages and performing DOM manipulations on them.

Case Studies

	*  Digg uses jQuery

Gotchas

	*  $.extend is slow, and is called from many places within JQuery (including the event handling).  For this reason, it's usually good to avoid using JQuery methods within mousemove handlers or code that may be called from mousemove handlers.
	*  A jQuery collection may contain zero ele…</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/libevent?rev=1275844252&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:52-06:00</dc:date>
        <title>libevent</title>
        <link>http://www.devdiligence.com/libevent?rev=1275844252&amp;do=diff</link>
        <description>Overview


libevent is a cross platform library that abstracts out the different notification APIs (specifically, /dev/poll, kqueue(2), event ports, select(2), poll(2) and epoll(4)).  It also supports triggering events due to timeouts or signals.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/libgd?rev=1275844255&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:55-06:00</dc:date>
        <title>libgd</title>
        <link>http://www.devdiligence.com/libgd?rev=1275844255&amp;do=diff</link>
        <description>Overview

libgd is an open source library that allows developers to dynamically generate images.  It is integrated with PHP.  

Case Studies

	*  Audiogalaxy.com used it to build graphs of music popularity over time.  We also used it to chart internal statistics.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/libjpeg?rev=1275844252&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:52-06:00</dc:date>
        <title>libjpeg</title>
        <link>http://www.devdiligence.com/libjpeg?rev=1275844252&amp;do=diff</link>
        <description>Overview


Project web site, libjpeg is a C library for compressing and decompressing JPEG images.

Case Studies

	*  On a Core 2 Duo E6300 it takes 1.5ms to compress a 160×120 RGB image, 0.6ms for 72×88, 0.06ms for 32×24.

Gotchas

	*  Has a rather weird OO-style system implemented in C for customizing the behaviour.
	*  The default compressor and decompressor work only for file descriptors, to do in-memory you need to write 5-6 functions of your own.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/libredblack?rev=1209158256&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2008-04-25T15:17:36-06:00</dc:date>
        <title>libredblack</title>
        <link>http://www.devdiligence.com/libredblack?rev=1209158256&amp;do=diff</link>
        <description>Libredblack is a C implementation of the classic red-black tree.  



Case Studies

	*  FolderShare used this in the backend to hold trees with 1-50,000 items.  Performance was great, and we were really satisfied with it.  

Gotchas

	*  Each non-inline item stored in the tree requires 4 pointers and an enum, which may take up to 40 bytes.  With heap overhead, this results in almost 50 bytes of overhead per tree item.  For some uses, this can be reduced by inlining your data in the tree item.  B…</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/librsync?rev=1275844244&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:44-06:00</dc:date>
        <title>librsync</title>
        <link>http://www.devdiligence.com/librsync?rev=1275844244&amp;do=diff</link>
        <description>Librsync is a library that implements a remote-delta algorithm, which efficiently creates diffs of files separated by a network connection.  This allows for greatly reduced network IO to send an updated version of a file that is mostly the same as the previous version.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/memcached?rev=1215732532&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2008-07-10T17:28:52-06:00</dc:date>
        <title>memcached</title>
        <link>http://www.devdiligence.com/memcached?rev=1215732532&amp;do=diff</link>
        <description>Overview

memcached is an in-memory caching layer that is used by many websites to improve performance.  Brad Fitzpatrick originally wrote it to help LiveJournal scale.

Case Studies

	*  Facebook uses and contributes to memcached.  As of April, 2008, Facebook was using 805 memcached servers.  From the same source, Wikipedia was using 79, Flickr 14, and Fotolog 40.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/openssl?rev=1209318555&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2008-04-27T11:49:15-06:00</dc:date>
        <title>openssl</title>
        <link>http://www.devdiligence.com/openssl?rev=1209318555&amp;do=diff</link>
        <description>Overview


OpenSSL is an open source library that implements SSL, TLS, and many other cryptographic operations.

Case Studies

	*  

Gotchas

	*  If you are planning on supporting a large number of encrypted connections on a single server, be sure to evaluate OpenSSL's memory usage.  It will use a minimum of 34K per connection (2x the max size of an encrypted frame), and possibly more.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/pcre?rev=1275844251&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:51-06:00</dc:date>
        <title>pcre</title>
        <link>http://www.devdiligence.com/pcre?rev=1275844251&amp;do=diff</link>
        <description>Overview


PCRE web site, a Perl-compatible regular expression library.

Case Studies

Gotchas

	*  Regular expressions that require backreferences can result in exponential runtime complexity.
	*  Earlier versions like the one that Apple uses in their WebKit library have fairly broken behavior when faced with regular expressions that contain Unicode characters.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/pthreads?rev=1209181108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2008-04-25T21:38:28-06:00</dc:date>
        <title>pthreads</title>
        <link>http://www.devdiligence.com/pthreads?rev=1209181108&amp;do=diff</link>
        <description>Overview


Pthreads is a portable threading library supported under multiple operating systems.

Case Studies

	*  

Gotchas

	*  As far as Linux goes, pthreads will use the operating system default stack size for each thread (from the command line, you can type “ulimit -s” to see what this limit is).  Under Cent-OS, this value is 10M, which for a process isn't bad, as the main process stack is dynamically allocated as the program runs.  But when pthreads creates a new thread, it allocates stack…</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/pylons?rev=1275844255&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:55-06:00</dc:date>
        <title>pylons</title>
        <link>http://www.devdiligence.com/pylons?rev=1275844255&amp;do=diff</link>
        <description>Overview


Pylons is a Python “glue” web framework, focused around combining several “best of breed” libraries together in a single integrated package.  By default, it uses Mako for templates, SQLAlchemy for ORM, Routes for request dispatching, setuptools for deployment, and Beaker for sessions.  It's also possible to switch in other components as desired.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/sphinx?rev=1275844247&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:47-06:00</dc:date>
        <title>sphinx</title>
        <link>http://www.devdiligence.com/sphinx?rev=1275844247&amp;do=diff</link>
        <description>Overview

Sphinx Search, an open source tool for indexing and searching data.  Works well with MySQL.

Case Studies

	*  Used by Craigslist and many other sites.

Gotchas

	*  Be sure to use the debug version (./configure --with-debug) when you first start evaluating it.  What might turn into silent corruption in the production version is likely to crash in debug.  
	*  It uses crc32 values instead of storing the actual words in its index.  Once you get over a few hundred thousand words, collisi…</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/spread?rev=1275844257&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:57-06:00</dc:date>
        <title>spread</title>
        <link>http://www.devdiligence.com/spread?rev=1275844257&amp;do=diff</link>
        <description>One thing not mentioned in the spread documentation is that spread broadcasts all traffic to all daemons, whether they are subscribed to a group or not. (The docs always claim how efficient spread is, but IMHO conviniently skirt this issue)</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/sqlite?rev=1248782279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-07-28T05:57:59-06:00</dc:date>
        <title>sqlite</title>
        <link>http://www.devdiligence.com/sqlite?rev=1248782279&amp;do=diff</link>
        <description>Overview


SQLite is a C library that implements a self-contained, serverless SQL database engine. Data is stored in a single file per database. Permissions are left completely to the filesysem. SQLite is popular for embedded and single-user applications. There is also a command-line client program.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/start?rev=1275844252&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:52-06:00</dc:date>
        <title>start</title>
        <link>http://www.devdiligence.com/start?rev=1275844252&amp;do=diff</link>
        <description>Are You a Developer or Tester?

Have you ever had a hard time deciding if a library or tool is going to work once you really start using it?  This wiki exists to help developers research their options and/or document problems that have wasted their time in the past.  Check out Tom's blog post for a longer introduction, or look at jquery, sqlite, or zlib to see some examples.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/template?rev=1275844249&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:49-06:00</dc:date>
        <title>template</title>
        <link>http://www.devdiligence.com/template?rev=1275844249&amp;do=diff</link>
        <description>Overview

Project web site, a quick description.

Case Studies

	*  A case study

Gotchas

	*  A gotcha

Tips &amp; Tricks

	*  A nifty little-known feature.

Alternatives

	*  An alternative

Other Resources

	*  Another resource</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/wishlist?rev=1275844256&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:56-06:00</dc:date>
        <title>wishlist</title>
        <link>http://www.devdiligence.com/wishlist?rev=1275844256&amp;do=diff</link>
        <description>Here are some examples of things I'd love to see pages about.  If you have experience with any of these, please take a few moments to write them down.  For new pages, use this template.  Do you want to learn more about a technology that isn't mentioned here?  Feel free to add it.</description>
    </item>
    <item rdf:about="http://www.devdiligence.com/zlib?rev=1275844245&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-06-06T11:10:45-06:00</dc:date>
        <title>zlib</title>
        <link>http://www.devdiligence.com/zlib?rev=1275844245&amp;do=diff</link>
        <description>zlib is a free and easy to use library for compressing data.  



Case Studies

	*  Used by FolderShare to compress peer to peer transfers between OSX, Linux, and Win32 machines of files up to 4GB.  Compression was automatically disabled for media that was already compressed (photos, music, etc).</description>
    </item>
</rdf:RDF>
