<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rusty Razor Blade</title>
	<atom:link href="http://www.rustyrazorblade.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rustyrazorblade.com</link>
	<description>Tech Thoughts, Mostly on LAMP - by Jon Haddad</description>
	<lastBuildDate>Thu, 26 Apr 2012 17:53:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Vim: Use !make: to avoid auto jumping to files</title>
		<link>http://www.rustyrazorblade.com/2012/04/vim-use-make-to-avoid-auto-jumping-to-files/</link>
		<comments>http://www.rustyrazorblade.com/2012/04/vim-use-make-to-avoid-auto-jumping-to-files/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 17:53:43 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.rustyrazorblade.com/?p=1700</guid>
		<description><![CDATA[<p>I get annoyed when vim jumps to another file when using :make. To disable it, just add ! to the end, </p> <p>:make!</p>]]></description>
			<content:encoded><![CDATA[<p>I get annoyed when vim jumps to another file when using :make.  To disable it, just add ! to the end, </p>
<p><code>:make!</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rustyrazorblade.com/2012/04/vim-use-make-to-avoid-auto-jumping-to-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weird Disutils Error When Running Python Scripts within MacVim</title>
		<link>http://www.rustyrazorblade.com/2012/04/weird-disutils-error-when-running-python-scripts-within-macvim/</link>
		<comments>http://www.rustyrazorblade.com/2012/04/weird-disutils-error-when-running-python-scripts-within-macvim/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 21:27:15 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.rustyrazorblade.com/?p=1694</guid>
		<description><![CDATA[<p>I saw this today when trying to run a nosetest in MacVim:</p> <p> DistutilsPlatformError: $MACOSX_DEPLOYMENT_TARGET mismatch: now &#8220;10.4&#8243; but &#8220;10.7&#8243; during configure </p> <p>Add this to your .vimrc to fix this weird message.</p> <p>let $MACOSX_DEPLOYMENT_TARGET = &#8220;10.7&#8243;</p>]]></description>
			<content:encoded><![CDATA[<p>I saw this today when trying to run a nosetest in MacVim:</p>
<blockquote><p>
DistutilsPlatformError: $MACOSX_DEPLOYMENT_TARGET mismatch: now &#8220;10.4&#8243; but &#8220;10.7&#8243; during configure
</p></blockquote>
<p>Add this to your .vimrc to fix this weird message.</p>
<blockquote><p>let $MACOSX_DEPLOYMENT_TARGET = &#8220;10.7&#8243;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.rustyrazorblade.com/2012/04/weird-disutils-error-when-running-python-scripts-within-macvim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing vim-ipython with MacVim</title>
		<link>http://www.rustyrazorblade.com/2012/04/installing-vim-ipython-with-macvim/</link>
		<comments>http://www.rustyrazorblade.com/2012/04/installing-vim-ipython-with-macvim/#comments</comments>
		<pubDate>Fri, 13 Apr 2012 01:58:34 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.rustyrazorblade.com/?p=1668</guid>
		<description><![CDATA[<p>I got really excited at the notion of having IPython built into MacVim (<a href="https://github.com/ivanov/vim-ipython">vim-ipython</a>), so over the last few days I&#8217;ve spent some time mucking around trying to get this whole thing to work.  Unfortunately there&#8217;s not a lot of documentation on how to fix the issues that might pop up, so hopefully this [...]]]></description>
			<content:encoded><![CDATA[<p>I got really excited at the notion of having IPython built into MacVim (<a href="https://github.com/ivanov/vim-ipython">vim-ipython</a>), so over the last few days I&#8217;ve spent some time mucking around trying to get this whole thing to work.  Unfortunately there&#8217;s not a lot of documentation on how to fix the issues that might pop up, so hopefully this will help some people.  (spoiler &#8211; MacVim download is 32 bit zeromq is 64)</p>
<p>First, your prerequisites.  I&#8217;m assuming you&#8217;re using the awesome <a href="http://mxcl.github.com/homebrew/">HomeBrew</a>.  If you&#8217;re not, you&#8217;re on your own for some of these sections.</p>
<blockquote><p>pip install pyzmq ipython<br />
brew install zeromq</p></blockquote>
<p>In a shell, type:</p>
<blockquote><p>ipython console</p></blockquote>
<p>and leave it here.</p>
<p>Go into Vim.</p>
<p>I&#8217;m using <a href="https://github.com/MarcWeber/vim-addon-manager">Vim Addon Manager (VAM)</a>.  It&#8217;s a fantastic tool and made working with vim 100x better.  Go ahead and install vim-ipython &#8211; if you&#8217;re using VAM it&#8217;s easy.  If you&#8217;re not, use whatever system you&#8217;re used to (or start using VAM).</p>
<blockquote><p>:InstallAddons vim-ipython</p></blockquote>
<p>If you&#8217;ve done this with VAM, the docs say you should be able to open python file and type  - but when I tried that this is what I got:</p>
<blockquote><p>:IPython<br />
ImportError: IPython.zmq requires pyzmq &gt;= 2.1.4</p>
</blockquote>
<p>Weird you say, because you know you have it installed.  Lets see what happens if we import it directly into Vim:</span></span></p></blockquote>
<blockquote><p>:py import zmq<br />
Traceback (most recent call last): <br />
  File &#8220;&lt;string&gt;&#8221;, line 1, in &lt;module&gt; <br />
  File &#8220;/Library/Python/2.7/site-packages/zmq/__init__.py&#8221;, line 38, in &lt;module&gt;   <br />
    from zmq import core, devices <br />
  File &#8220;/Library/Python/2.7/site-packages/zmq/core/__init__.py&#8221;, line 26, in &lt;module&gt;   <br />
    from zmq.core import (constants, error, message, context,<br />
  ImportError: dlopen(/Library/Python/2.7/site-packages/zmq/core/error.so, 2):<br />
    Symbol not found: _zmq_errno <br />
  Referenced from: /Library/Python/2.7/site-packages/zmq/core/error.so <br />
Expected in: flat namespace in /Library/Python/2.7/site-packages/zmq/core/error.so</p></blockquote>
<p>I won&#8217;t go into details here, but the short version of the story is MacVim (snapshot 64) was compiled as a 32 bit executable and it can&#8217;t read the 64 bit symbols.  Bummer.</p>
<p>We can tell that MacVim is a 32 bit compile because of this:</p>
<blockquote><p>haddad-pro:vim  jhaddad$ file /Applications/MacVim.app/Contents/MacOS/MacVim/\<br />
Applications/MacVim.app/<br />
 Contents/MacOS/MacVim: Mach-O executable i386</p></blockquote>
<p>And zeromq shared library:</p>
<blockquote><p>file /usr/local/lib/libzmq.dylib /usr/local/lib/libzmq.dylib: Mach-O 64-bit dynamically linked shared library x86_64</p></blockquote>
<p>The solution: Use HomeBrew to compile 64 bit MacVim.</p>
<blockquote><p>brew install macvim</p></blockquote>
<p>You&#8217;ll run into a snag if you don&#8217;t have the old /Developer directory (I didn&#8217;t) so go ahead and fix like this</p>
<blockquote><p>haddad-pro:vim  jhaddad$ sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/</p></blockquote>
<p>Finally, open up your 64 bit MacVim and edit a Python file.   You should now be able to send lines to iPython using &lt;control-s&gt;, and see the results if you &lt;leader&gt;s.</p>
<p>I&#8217;ll follow up with a later post on how to get the most benefit from vim-ipython.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rustyrazorblade.com/2012/04/installing-vim-ipython-with-macvim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Applescripting A Remote X-Windows Session for Virt-Manager</title>
		<link>http://www.rustyrazorblade.com/2012/04/applescripting-a-remote-x-windows-session-for-virt-manager/</link>
		<comments>http://www.rustyrazorblade.com/2012/04/applescripting-a-remote-x-windows-session-for-virt-manager/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 16:05:18 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.rustyrazorblade.com/?p=1656</guid>
		<description><![CDATA[<p>This isn&#8217;t just for virt-manager, but any X-Windows app you&#8217;d want to tightly integrate into your daily routine. Instead of firing up X11, then SSH&#8217;ing to your VM box and typing out virt-manager (insane!) you can script X11 to do everything with 1 mouse click. I have it in my Dock, and Launchbar also recognizes [...]]]></description>
			<content:encoded><![CDATA[<p>This isn&#8217;t just for virt-manager, but any X-Windows app you&#8217;d want to tightly integrate into your daily routine.  Instead of firing up X11, then SSH&#8217;ing to your VM box and typing out virt-manager (insane!) you can script X11 to do everything with 1 mouse click.  I have it in my Dock, and Launchbar also recognizes it as an app.  </p>
<blockquote><p>tell application &#8220;Finder&#8221;<br />
    launch application &#8220;X11&#8243;<br />
end tell</p>
<p>set results to do shell script &#8220;ssh -X haddad-vmserver &#8216;virt-manager&#8217;&#8221;</p></blockquote>
<p>Sweetness.</p>
<p>Also see <a href="http://www.rustyrazorblade.com/2011/10/headless-vm-server-using-ubuntu-11-10/" title="Headless VM Server Using Ubuntu 11.10">my post about setting up a headless VM server using KVM.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rustyrazorblade.com/2012/04/applescripting-a-remote-x-windows-session-for-virt-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drizzle Differences from MySQL</title>
		<link>http://www.rustyrazorblade.com/2012/03/drizzle-differences-from-mysql/</link>
		<comments>http://www.rustyrazorblade.com/2012/03/drizzle-differences-from-mysql/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 17:16:44 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[drizzle]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.rustyrazorblade.com/?p=1651</guid>
		<description><![CDATA[<p>I decided to take a look at Drizzle today and was encouraged by what I saw. Here&#8217;s my favorite part:</p> <p>There is no UNSIGNED (as per the standard). * There are no spatial data types GEOMETRY, POINT, LINESTRING &#038; POLYGON (go use Postgres). * No YEAR field type. * There are no FULLTEXT indexes for [...]]]></description>
			<content:encoded><![CDATA[<p>I decided to take a look at Drizzle today and was encouraged by what I saw.  Here&#8217;s my favorite part:</p>
<blockquote><p>There is no UNSIGNED (as per the standard). * There are no spatial data types GEOMETRY, POINT, LINESTRING &#038; POLYGON (go use Postgres). * No YEAR field type. * There are no FULLTEXT indexes for the MyISAM storage engine (the only engine FULLTEXT was supported in). Look at either Lucene, Sphinx, or Solr. * No “dual” table. * The “LOCAL” keyword in “LOAD DATA LOCAL INFILE” is not supported</p></blockquote>
<p>GO USE POSTGRES.  Awesome.</p>
<p><a href="http://docs.drizzle.org/mysql_differences.html" title="Drizzle differences">List of differences from MySQL.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rustyrazorblade.com/2012/03/drizzle-differences-from-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Great Article by the Varnish Architect</title>
		<link>http://www.rustyrazorblade.com/2012/03/great-article-by-the-varnish-architect/</link>
		<comments>http://www.rustyrazorblade.com/2012/03/great-article-by-the-varnish-architect/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 18:37:21 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rustyrazorblade.com/?p=1647</guid>
		<description><![CDATA[<p>It&#8217;s been a while since I wrote any C, but I still appreciate reading posts about it. 6 years ago the architect of Varnish wrote an excellent post on how people are still managing their memory incorrectly. It reminds me of a post I wrote 5 years ago called <a href="http://www.rustyrazorblade.com/2007/10/stop-trying-to-be-clever/" title="Stop Trying to be [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since I wrote any C, but I still appreciate reading posts about it.  6 years ago the architect of Varnish wrote an excellent post on how people are still managing their memory incorrectly.  It reminds me of a post I wrote 5 years ago called <a href="http://www.rustyrazorblade.com/2007/10/stop-trying-to-be-clever/" title="Stop Trying to be Clever">Stop Trying to be Clever</a>.</p>
<p><a href="https://www.varnish-cache.org/trac/wiki/ArchitectNotes" title="Original Post by Poul-Henning Kamp" target="_blank">Original post by Poul-Henning Kamp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rustyrazorblade.com/2012/03/great-article-by-the-varnish-architect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Better Use of your .ackrc file</title>
		<link>http://www.rustyrazorblade.com/2012/03/making-better-use-of-your-ackrc-file/</link>
		<comments>http://www.rustyrazorblade.com/2012/03/making-better-use-of-your-ackrc-file/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 17:05:33 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[ack]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.rustyrazorblade.com/?p=1638</guid>
		<description><![CDATA[<p>Many command line utils have a . file that people rarely use. Ack is one of them. </p> <p>For a project I&#8217;m working on, there&#8217;s a var folder (ignored in git) where all the logs go. When I perform an ack search, I have no interest in ack looking through the var folder every single [...]]]></description>
			<content:encoded><![CDATA[<p>Many command line utils have a .<name> file that people rarely use.  Ack is one of them.  </p>
<p>For a project I&#8217;m working on, there&#8217;s a var folder (ignored in git) where all the logs go.  When I perform an ack search, I have no interest in ack looking through the var folder every single time. </p>
<p>By default, ack only checks your ~/.ackrc file for it&#8217;s default switches.  You can have per directory ack settings if you add this to your .bash_profile:</p>
<blockquote><p>export ACKRC=&#8221;.ackrc&#8221;</p></blockquote>
<p>Now you don&#8217;t have to worry about random log file being searched every time you try to find something.</p>
<blockquote><p>new-host-3:dev  jhaddad$ cat .ackrc<br />
&#8211;ignore-dir=var/</p></blockquote>
<p>Just add whatever switches you want, one per line.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rustyrazorblade.com/2012/03/making-better-use-of-your-ackrc-file/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nginx pub/sub module</title>
		<link>http://www.rustyrazorblade.com/2012/03/nginx-pubsub-module/</link>
		<comments>http://www.rustyrazorblade.com/2012/03/nginx-pubsub-module/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 15:49:05 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.rustyrazorblade.com/?p=1632</guid>
		<description><![CDATA[<p>A coworker pointed me to this Nginx module today. You can write a chat server without actually writing a server. The message thread below indicates incredible performance. If you&#8217;ve got more than 50K users and 9000 messages / second you might be able to upgrade your hardware, or at least load balance your channels between [...]]]></description>
			<content:encoded><![CDATA[<p>A coworker pointed me to this Nginx module today. You can write a chat server without actually writing a server.  The message thread below indicates incredible performance.  If you&#8217;ve got more than 50K users and 9000 messages / second you might be able to upgrade your hardware, or at least load balance your channels between 2 servers.</p>
<blockquote><p>When I open 10,000 connections, it seems to behave quite nicely.<br />
Sending half a million messages, I am able to get a throughput of<br />
around 9,000 message per second. At this rate &#8220;top&#8221; shows the nginx<br />
process as high as 90% of cpu. If I push it harder, I start to receive<br />
SIGIO in the nginx main log and the writer/poster is throttled down<br />
meaning a lower throughput but all messages appear to get through to<br />
the clients on the other machine.<br />
However, when I perform the same tests but with 50,000 connections I<br />
see a similar pattern of throughput up to about 6,000 or 7,000<br />
messages/second. As before, when I push faster I get the same SIGIO in<br />
the log but the difference is not all the messages get through to<br />
clients! </p>
<p>[...later down the page]</p>
<p>Many thanks for your explanation. Your suspicion was correct. I was<br />
using the default 30sec for that parameter. I tried upping it to 5m<br />
and I was able to receive messages more reliably with 50,000 clients<br />
connected. Sometimes, however, the rate at which messages were sent<br />
from nginx slowed right down. e.g. I could get 9,000/sec for a<br />
sustained minute or so and then when the poster stopped posting, the<br />
rate of messages would slow almost to a stop but not quite until all<br />
messages were successfully sent.
</p></blockquote>
<p>- <a href="https://groups.google.com/group/nginxpushstream/browse_thread/thread/0e330a55e4726c42#" title="google groups" target="_blank">MichaelC, Google Groups post</a>.</p>
<p>So awesome.</p>
<p><a href="https://github.com/wandenberg/nginx-push-stream-module" title="nginx push stream module" target="_blank">Nginx push stream module</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rustyrazorblade.com/2012/03/nginx-pubsub-module/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coffeescript, Bootstrap, and Less are amazing</title>
		<link>http://www.rustyrazorblade.com/2012/03/coffeescript-bootstrap-and-less-are-amazing/</link>
		<comments>http://www.rustyrazorblade.com/2012/03/coffeescript-bootstrap-and-less-are-amazing/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 17:15:13 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[coffeescript]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[splitmytab]]></category>

		<guid isPermaLink="false">http://www.rustyrazorblade.com/?p=1608</guid>
		<description><![CDATA[<p>I&#8217;ve been doing backend development exclusively for a long time now. When I decided to build <a href="http://splitmytab.net/" title="splitmytab" target="_blank">splitmytab.net</a>, I had sourced the front end development to HTML burger. I got the design through 99designs. Both were fine, but I really didn&#8217;t require anything past a basic utility site. </p> <p>When I decided to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing backend development exclusively for a long time now.  When I decided to build <a href="http://splitmytab.net/" title="splitmytab" target="_blank">splitmytab.net</a>, I had sourced the front end development to HTML burger.  I got the design through 99designs.  Both were fine, but I really didn&#8217;t require anything past a basic utility site.  </p>
<p>When I decided to add new functionality to the site, I realized I&#8217;d either pay someone to do front end, or do it myself.  Eventually I started doing it myself, and remembered how much I hate Javascript.  </p>
<p>Enter CoffeeScript.  After only a few days, I realized that front end development could be less painful, even enjoyable.  Writing CoffeeScript was an incredible experience, because I didn&#8217;t have to think about it.  I didn&#8217;t need to nest a mess of parenthesis and braces to handle callbacks anymore, they just indented beautifully.</p>
<p>Fast forward a few weeks, and I start looking at <a href="http://twitter.github.com/bootstrap/" title="bootstrap" target="_blank">Bootstrap 2.0</a>.  I decided to switch my custom CSS on <a href="http://splitmytab.net/" title="splitmytab" target="_blank">splitmytab</a> to Bootstrap.  The defaults out of the box are pretty good &#8211; they give you easy to use grid layouts, nice buttons, icons&#8230; everything I needed.</p>
<p>The only hitch came when I realized I needed to change a few sizes.  Most notably, I wanted a 760 layout in order to fit in a Facebook canvas.  In order to customize the CSS, it&#8217;s time to install <a href="http://lesscss.org/" title="Less" target="_blank">Less</a>.  I can&#8217;t say enough great things about Less.  It has solved everything I despise about working with CSS.  </p>
<p>I believe <a href="http://incident57.com/less/" title="incident57" target="_blank">Bryan D K Jones</a> has said it better than I ever could.</p>
<blockquote><p>If you&#8217;re still building websites without it, you&#8217;re an idiot.</p></blockquote>
<p>Editing the Less files to tweak the appearance of <a href="http://splitmytab.net/" title="splitmytab" target="_blank">splitmytab</a> has become incredibly simple.  I can&#8217;t say enough good things about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rustyrazorblade.com/2012/03/coffeescript-bootstrap-and-less-are-amazing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Splitmytab ready for the public!</title>
		<link>http://www.rustyrazorblade.com/2012/02/splitmytab-ready-for-the-public/</link>
		<comments>http://www.rustyrazorblade.com/2012/02/splitmytab-ready-for-the-public/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 19:37:35 +0000</pubDate>
		<dc:creator>jon</dc:creator>
				<category><![CDATA[coffeescript]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[splitmytab]]></category>
		<category><![CDATA[tornado]]></category>

		<guid isPermaLink="false">http://www.rustyrazorblade.com/?p=1601</guid>
		<description><![CDATA[<p>Splitmytab.net is finally for the public to check out. Splitmytab is a bill splitting and IOU system for friends. It uses facebook&#8217;s login, so you won&#8217;t need to put in anyone&#8217;s emails, names, or get people to sign up for an account.</p> <p>It&#8217;ll automatically keep balances of who owes who, so you can keep a [...]]]></description>
			<content:encoded><![CDATA[<p>Splitmytab.net is finally for the public to check out.  Splitmytab is a bill splitting and IOU system for friends.  It uses facebook&#8217;s login, so you won&#8217;t need to put in anyone&#8217;s emails, names, or get people to sign up for an account.</p>
<p>It&#8217;ll automatically keep balances of who owes who, so you can keep a running tab with friends and always know who&#8217;s buying the next case of beer.</p>
<p>Please note: I&#8217;m not a designer, so there&#8217;s a few rough corners, but what&#8217;s there is simple and it works.  </p>
<p>Tech Notes:</p>
<ul>
<li>Backend is MySQL 5.5</li>
<li>Written in Python</li>
<li>Nginx with tornado</li>
<li>Redis used on occasion</li>
<li>Originally was writing pure JS then switched to Coffeescript</li>
</ul>
<p>Enjoy, and please leave feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rustyrazorblade.com/2012/02/splitmytab-ready-for-the-public/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

