<?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"?><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/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Stutzbach Enterprises, LLC</title>
	
	<link>http://stutzbachenterprises.com</link>
	<description>Software design, development, and optimization</description>
	<lastBuildDate>Fri, 09 Jul 2010 16:10:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/StutzbachEnterprises" /><feedburner:info uri="stutzbachenterprises" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>StutzbachEnterprises</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>winreg_unicode 0.5.0</title>
		<link>http://feedproxy.google.com/~r/StutzbachEnterprises/~3/Zf3A1GCn6UI/winregunicode-050</link>
		<comments>http://stutzbachenterprises.com/winregunicode-050#comments</comments>
		<pubDate>Fri, 09 Jul 2010 16:10:32 +0000</pubDate>
		<dc:creator>Daniel Stutzbach</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[registry]]></category>
		<category><![CDATA[Unicode]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[winreg]]></category>

		<guid isPermaLink="false">http://stutzbachenterprises.com/?p=268</guid>
		<description><![CDATA[<p>The winreg_unicode package is a drop-in replacement for Python 2&#8217;s _winreg module.  However, it returns unicode values where possible, similar to Python 3&#8217;s winreg module.</p>
<p>To illustrate the need for the winreg_unicode package, suppose an application must query the registry to discover a filename and the registry contains the string &#34;međuresorna.txt&#34;.  Python 2&#8217;s _winreg [...]]]></description>
			<content:encoded><![CDATA[<p>The winreg_unicode package is a drop-in replacement for Python 2&#8217;s <a class="reference external" href="http://docs.python.org/library/_winreg.html">_winreg</a> module.  However, it returns unicode values where possible, similar to Python 3&#8217;s <a class="reference external" href="http://docs.python.org/py3k/library/winreg.html">winreg</a> module.</p>
<p>To illustrate the need for the winreg_unicode package, suppose an application must query the registry to discover a filename and the registry contains the string &quot;međuresorna.txt&quot;.  Python 2&#8217;s <a class="reference external" href="http://docs.python.org/library/_winreg.html">_winreg</a> module will return &quot;meduresorna.txt&quot; instead, which is not the actual name of the file.</p>
<p>The winreg_unicode package does not yet contain all of <a class="reference external" href="http://docs.python.org/library/_winreg.html">_winreg</a>&#8217;s functions.  In particular, functions that write to the registry are not yet included.  Code contributions are welcome.</p>
<img src="http://feeds.feedburner.com/~r/StutzbachEnterprises/~4/Zf3A1GCn6UI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://stutzbachenterprises.com/winregunicode-050/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://stutzbachenterprises.com/winregunicode-050</feedburner:origLink></item>
		<item>
		<title>Poker Sleuth 2.1</title>
		<link>http://feedproxy.google.com/~r/StutzbachEnterprises/~3/dvCj0re9CB0/poker-sleuth-21</link>
		<comments>http://stutzbachenterprises.com/poker-sleuth-21#comments</comments>
		<pubDate>Wed, 19 May 2010 21:16:44 +0000</pubDate>
		<dc:creator>Daniel Stutzbach</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[poker]]></category>
		<category><![CDATA[PokerSleuth]]></category>

		<guid isPermaLink="false">http://stutzbachenterprises.com/?p=244</guid>
		<description><![CDATA[<p>Today we released Poker Sleuth 2.1, which adds much-anticipated support for 32-bit Windows 7 as well as 64-bit versions of Windows 7, Vista, and XP.</p>
<p>Additionally, Poker Sleuth 2.1 includes several bug fixes and major performance improvements to the Heads-Up Display (HUD).</p>
]]></description>
			<content:encoded><![CDATA[<p>Today we released <a href="http://pokersleuth.com">Poker Sleuth</a> 2.1, which adds much-anticipated support for 32-bit Windows 7 as well as 64-bit versions of Windows 7, Vista, and XP.</p>
<p>Additionally, Poker Sleuth 2.1 includes several bug fixes and major performance improvements to the <a href="http://pokersleuth.com/poker-sleuth-HUD.shtml">Heads-Up Display (HUD)</a>.</p>
<img src="http://feeds.feedburner.com/~r/StutzbachEnterprises/~4/dvCj0re9CB0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://stutzbachenterprises.com/poker-sleuth-21/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://stutzbachenterprises.com/poker-sleuth-21</feedburner:origLink></item>
		<item>
		<title>Poker Sleuth 2.0!</title>
		<link>http://feedproxy.google.com/~r/StutzbachEnterprises/~3/HDzi4kVZlNU/poker-sleuth-20-2</link>
		<comments>http://stutzbachenterprises.com/poker-sleuth-20-2#comments</comments>
		<pubDate>Wed, 21 Apr 2010 03:45:52 +0000</pubDate>
		<dc:creator>Daniel Stutzbach</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[poker]]></category>
		<category><![CDATA[PokerSleuth]]></category>

		<guid isPermaLink="false">http://stutzbachenterprises.com/?p=226</guid>
		<description><![CDATA[<p>We&#8217;re happy to announce the release of Poker Sleuth 2.0, a major update to our software designed to help online poker players improve their play.  Poker Sleuth 2 includes a slew of features, such as:

A heads-up display (HUD) that overlays statistical data about opponents directly onto the poker table
A player analyzer for studying a [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re happy to announce the release of <a href="http://pokersleuth.com/">Poker Sleuth</a> 2.0, a major update to our software designed to help online poker players improve their play.  Poker Sleuth 2 includes a slew of features, such as:
<ul>
<li>A <a href="http://pokersleuth.com/poker-sleuth-HUD.shtml">heads-up display (HUD)</a> that overlays statistical data about opponents directly onto the poker table</li>
<li>A <a href="http://pokersleuth.com/poker-player-analyzer.shtml">player analyzer</a> for studying a particular opponent in greater detail</li>
<li>An <a href="http://pokersleuth.com/poker-equity-calculator.shtml">equity calculator</a> that computes each player&#8217;s probability of winning, assuming no one folds.</li>
<li>A <a href="http://pokersleuth.com/poker-hand-reviewer.shtml">hand reviewer</a> that allows a player to study their own hands and look for mistakes</li>
</ul>
<p>All of the major online poker rooms have a facility to record each hand you play to disk, typically in a simple plain-text format.  Poker Sleuth reads each stored hand and builds a database containing statistics about each player.  Poker Sleuth then overlays those statistics directly on to the poker table, with a block of statistics appearing near each player, as in the image below.  Hovering the mouse over any of the statistics displays a tooltip with more detailed statistics.</p>
<p><a href="http://pokersleuth.com/poker-sleuth-HUD.shtml"><img class="aligncenter" width=300 height=100 src="http://pokersleuth.com/png/HUD-300x100.png" alt="HUD screenshot" /></a><br />
In addition to the statistics tracking and heads-up-display, Poker Sleuth includes a best-of-breed equity calculator that incorporates all of the best features of some of the other equity calculators in the market.<br />
<a class="aligncenter" href="http://pokersleuth.com/poker-equity-calculator.shtml">              <img class="aligncenter" alt="Equity Calculator screenshot"                   src="http://pokersleuth.com/png/Crunch_300x100.png"                   width="300" height="100"/>            </a></p>
<p>Because Poker Sleuth&#8217;s equity calculator is fully integrated, it can populate the fields directly from a recorded hand.  This powerful feature is great when reviewing a hand, making it a snap to explore odds and probabilities.  </p>
<img src="http://feeds.feedburner.com/~r/StutzbachEnterprises/~4/HDzi4kVZlNU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://stutzbachenterprises.com/poker-sleuth-20-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://stutzbachenterprises.com/poker-sleuth-20-2</feedburner:origLink></item>
		<item>
		<title>blist 1.1.1</title>
		<link>http://feedproxy.google.com/~r/StutzbachEnterprises/~3/Zo60r6hAF58/blist-111</link>
		<comments>http://stutzbachenterprises.com/blist-111#comments</comments>
		<pubDate>Sun, 31 Jan 2010 21:04:25 +0000</pubDate>
		<dc:creator>Daniel Stutzbach</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blist]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://stutzbachenterprises.com/?p=217</guid>
		<description><![CDATA[<p>blist 1.1.1 is now available: http://pypi.python.org/pypi/blist/</p>
What is blist?
<p>The blist is a drop-in replacement for the Python list the provides better performance when modifying large lists.  Python&#8217;s built-in list is a dynamically-sized array; to insert or removal an item from the beginning or middle of the list, it has to move most of the list [...]]]></description>
			<content:encoded><![CDATA[<p>blist 1.1.1 is now available: <a href="http://pypi.python.org/pypi/blist/">http://pypi.python.org/pypi/blist/</a></p>
<h3>What is blist?</h3>
<p>The blist is a drop-in replacement for the Python list the provides better performance when modifying large lists.  Python&#8217;s built-in list is a dynamically-sized array; to insert or removal an item from the beginning or middle of the list, it has to move most of the list in memory, i.e., O(n) operations.  The blist uses a flexible, hybrid array/tree structure and only needs to move a small portion of items in memory, specifically using O(log n) operations.</p>
<p>For small lists, the blist and the built-in list have virtually identical performance.</p>
<h3>What&#8217;s new?</h3>
<p>The blist package provides other data structures based on the blist:</p>
<ul class="simple">
<li>sortedlist</li>
<li>sortedset</li>
<li>weaksortedlist</li>
<li>weaksorteset</li>
<li>sorteddict</li>
<li>btuple</li>
</ul>
<p>These additional data structures are only available in Python 2.6 or higher, as they make use of Abstract Base Classes.</p>
<p>The sortedlist is a list that&#8217;s always sorted.  It&#8217;s iterable and indexable like a Python list, but to modify a sortedlist the same<br />
methods you would use on a Python set (add, discard, or remove).</p>
<pre class="doctest-block">
&gt;&gt;&gt; from blist import sortedlist
&gt;&gt;&gt; my_list = sortedlist([3,7,2,1])
&gt;&gt;&gt; my_list
sortedlist([1, 2, 3, 7])
&gt;&gt;&gt; my_list.add(5)
&gt;&gt;&gt; my_list[3]
5
&gt;&gt;&gt;
</pre>
<p>The sortedlist constructor takes an optional &quot;key&quot; argument, which may be used to change the sort order just like the sorted() function.</p>
<pre class="doctest-block">
&gt;&gt;&gt; from blist import sortedlist
&gt;&gt;&gt; my_list = sortedlist([3,7,2,1], key=lambda i: -i)
sortedlist([7, 3, 2, 1]
&gt;&gt;&gt;
</pre>
<p>The sortedset is a set that&#8217;s always sorted.  It&#8217;s iterable and indexable like a Python list, but modified like a set.  Essentially, it&#8217;s just like a sortedlist except that duplicates are ignored.</p>
<pre class="doctest-block">
&gt;&gt;&gt; from blist import sortedset
&gt;&gt;&gt; my_set = sortedset([3,7,2,2])
sortedset([2, 3, 7]
&gt;&gt;&gt;
</pre>
<p>The weaksortedlist and weaksortedset are weakref variations of the sortedlist and sortedset.</p>
<p>The sorteddict works just like a regular dict, except the keys are always sorted.  The sorteddict should not be confused with Python 2.7&#8217;s OrderedDict type, which remembers the insertion order of the keys.</p>
<pre class="doctest-block">
&gt;&gt;&gt; from blist import sorteddict
&gt;&gt;&gt; my_dict = sorteddict({1: 5, 6: 8, -5: 9})
&gt;&gt;&gt; my_dict.keys()
[-5, 1, 6]
&gt;&gt;&gt;
</pre>
<p>The btuple is a drop-in replacement for the built-in tuple.  Compared to the built-in tuple, the btuple offers the following advantages:</p>
<ul class="simple">
<li>Constructing a btuple from a blist takes O(1) time.</li>
<li>Taking a slice of a btuple takes O(n) time, where n is the size of the original tuple.  The size of the slice does not matter.</li>
</ul>
<pre class="doctest-block">
&gt;&gt;&gt; from blist import blist, btuple
&gt;&gt;&gt; x = blist([0])             # x is a blist with one element
&gt;&gt;&gt; x *= 2**29                 # x is a blist with &gt; 500 million elements
&gt;&gt;&gt; y = btuple(x)              # y is a btuple with &gt; 500 million elements
</pre>
<h2>Feedback</h2>
<p>We&#8217;re eager to hear about your experiences with the blist.  You can email me at <a href="mailto:daniel%40stutzbachenterprises.com" class="reference external">daniel<span>&#64;</span>stutzbachenterprises<span>&#46;</span>com</a>.  Alternately, bug reports and feature requests may be reported on our bug tracker at: <a href="http://github.com/DanielStutzbach/blist/issues" class="reference external">http://github.com/DanielStutzbach/blist/issues</a></p>
<h2>How we test</h2>
<p>In addition to the tests include in the source distribution, we perform the following to add extra rigor to our testing process:</p>
<blockquote>
<ol class="arabic simple">
<li>We use a &quot;fuzzer&quot;: a program that randomly generates list operations, performs them using both the blist and the built-in list, and compares the results.</li>
<li>We use a modified Python interpreter where we have replaced the array-based built-in list with the blist.  Then, we run all of the regular Python unit tests.</li>
</ol>
</blockquote>
<img src="http://feeds.feedburner.com/~r/StutzbachEnterprises/~4/Zo60r6hAF58" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://stutzbachenterprises.com/blist-111/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://stutzbachenterprises.com/blist-111</feedburner:origLink></item>
		<item>
		<title>Poker Sleuth 1.0.2.229</title>
		<link>http://feedproxy.google.com/~r/StutzbachEnterprises/~3/1b36qRjjo9c/poker-sleuth-102229</link>
		<comments>http://stutzbachenterprises.com/poker-sleuth-102229#comments</comments>
		<pubDate>Mon, 02 Nov 2009 20:01:06 +0000</pubDate>
		<dc:creator>Daniel Stutzbach</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[poker]]></category>
		<category><![CDATA[PokerSleuth]]></category>

		<guid isPermaLink="false">http://stutzbachenterprises.com/?p=213</guid>
		<description><![CDATA[<p>Poker Sleuth is a suite of utilities to help you master the poker table, by tracking statistics on your opponents and reviewing your play.</p>
<p>Poker Sleuth 1.0.2.229 fixes a critical bug introduced in a bug fix last week:</p>

Fixed a crash triggered when a hand history file is removed and Poker Sleuth restarts.

]]></description>
			<content:encoded><![CDATA[<p>Poker Sleuth is a suite of utilities to help you master the poker table, by tracking statistics on your opponents and reviewing your play.</p>
<p><a href="http://pokersleuth.com/">Poker Sleuth</a> 1.0.2.229 fixes a critical bug introduced in a bug fix last week:</p>
<ul>
<li>Fixed a crash triggered when a hand history file is removed and Poker Sleuth restarts.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/StutzbachEnterprises/~4/1b36qRjjo9c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://stutzbachenterprises.com/poker-sleuth-102229/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://stutzbachenterprises.com/poker-sleuth-102229</feedburner:origLink></item>
		<item>
		<title>blist 1.0.2</title>
		<link>http://feedproxy.google.com/~r/StutzbachEnterprises/~3/7cD7zmjzUNk/blist-102</link>
		<comments>http://stutzbachenterprises.com/blist-102#comments</comments>
		<pubDate>Mon, 26 Oct 2009 21:22:44 +0000</pubDate>
		<dc:creator>Daniel Stutzbach</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blist]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://beta.stutzbachenterprises.com/?p=176</guid>
		<description><![CDATA[<p>The blist is a type that looks, acts, and quacks like a Python list, but has better performance for modifying large lists. For small lists (fewer than 128 elements), blists and the built-in list have very similar performance.</p>
<p>blist version 1.0.2 includes two important bug fixes:</p>

Fixed a crash in the .index method, which was not properly [...]]]></description>
			<content:encoded><![CDATA[<p>The blist is a type that looks, acts, and quacks like a Python list, but has better performance for modifying large lists. For small lists (fewer than 128 elements), blists and the built-in list have very similar performance.</p>
<p><a href="http://pypi.python.org/pypi/blist/">blist version 1.0.2</a> includes two important bug fixes:</p>
<ul>
<li>Fixed a crash in the .index method, which was not properly sanitizing the optional arguments.  Previously, passing values larger than the length of the list could cause a crash.</li>
<li>Fixed a possible crash when modifying the blist during iteration</li>
</ul>
<p>Other changes include:</p>
<ul>
<li>Changed int to Py_ssize_t in several places for better 64-bit hygiene</li>
<li>Removed some over-zealous assertion checks that were causing crashes in oddball (but legal!) cases in debug builds</li>
<li>Ported tests to run under Python 2.6 and Python 3.1 (but no longer Python 2.5)</li>
<li>Got rid of warnings on non-ix86 platforms</li>
</ul>
<img src="http://feeds.feedburner.com/~r/StutzbachEnterprises/~4/7cD7zmjzUNk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://stutzbachenterprises.com/blist-102/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://stutzbachenterprises.com/blist-102</feedburner:origLink></item>
	</channel>
</rss><!--

Minified using file
Page Caching using apc
Database Caching 97/103 queries in 0.004 seconds using apc
Content Delivery Network via c0399471.cdn.cloudfiles.rackspacecloud.com

Served from: otto.stutzbachenterprises.com @ 2010-07-09 11:19:16 -->
