<?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/" version="2.0">

<channel>
	<title>bartoosh</title>
	
	<link>http://bart.whahay.net</link>
	<description>enjoyable things in non-editable format</description>
	<pubDate>Tue, 23 Dec 2008 21:41:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</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" href="http://feeds.feedburner.com/Bartoosh" type="application/rss+xml" /><item>
		<title>100 Things Meme.</title>
		<link>http://bart.whahay.net/2008/12/23/100-things-meme/</link>
		<comments>http://bart.whahay.net/2008/12/23/100-things-meme/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 21:40:44 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[aboutme]]></category>

		<category><![CDATA[fun]]></category>

		<guid isPermaLink="false">http://bart.whahay.net/?p=184</guid>
		<description><![CDATA[Relaxing a bit as I&#8217;m now on my Holidays. Catching up with some reading before I get busy with family things and working on some hobby projects.
In the mean time, I&#8217;m doing this 100 things meme. You highlight the things you have done. Got this from Empty Thoughts, who got it from Leah Culver.
1. Started [...]]]></description>
			<content:encoded><![CDATA[<p>Relaxing a bit as I&#8217;m now on my Holidays. Catching up with some reading before I get busy with family things and working on some hobby projects.</p>
<p>In the mean time, I&#8217;m doing this 100 things meme. You highlight the things you have done. Got this from <a href="http://blog.michaeltrier.com/2008/12/23/100-things">Empty Thoughts</a>, who got it from <a href="http://leahculver.vox.com/">Leah Culver</a>.</p>
<p><strong>1. Started your own blog</strong></p>
<p><strong>2. Slept under the stars (This is actually a really fun and relaxing thing to do. Highly recommended)</strong></p>
<p>3. Played in a band (I do have a guitar though, yay?)</p>
<p>4. Visited Hawaii</p>
<p>5. Watched a meteor shower</p>
<p>6. Given more than you can afford to charity (But I have given)</p>
<p>7. Been to Disneyland</p>
<p><strong>8. Climbed a mountain (Nothing large though)</strong></p>
<p><strong>9. Held a praying mantis (What kid hasn&#8217;t?)<br />
</strong></p>
<p><strong>10. Sang a solo (uh kind of)<br />
</strong></p>
<p>11. Bungee jumped</p>
<p>12. Visited Paris</p>
<p><strong>13. Watched a lightning storm</strong></p>
<p><strong>14. Taught yourself an art from scratch </strong></p>
<p>15. Adopted a child</p>
<p><strong>16. Had food poisoning (some kind of fish)</strong></p>
<p>17. Walked to the top of the Statue of Liberty (didn&#8217;t have time for it when I went to NYC <img src='http://bart.whahay.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> )</p>
<p><strong>18. Grown your own vegetables<br />
</strong></p>
<p>19. Seen the Mona Lisa in France</p>
<p>20. Slept on an overnight train</p>
<p><strong>21. Had a pillow fight</strong></p>
<p>22. Hitch hiked</p>
<p><strong>23. Taken a sick day when you&#8217;re not ill (duh!)</strong></p>
<p><strong>24. Built a snow fort (Even an igloo once)</strong></p>
<p><strong>25. Held a lamb (I .. think)<br />
</strong></p>
<p>26. Gone skinny dipping</p>
<p><strong>27. Run a Marathon (I really want to this year as I&#8217;m more in shape)<br />
</strong></p>
<p>28. Ridden in a gondola in Venice</p>
<p><strong>29. Seen a total eclipse</strong></p>
<p><strong>30. Watched a sunrise or sunset</strong></p>
<p><strong>31. Hit a home run (couldn&#8217;t play paid sports as a child, but with friends .. sure)</strong></p>
<p>32. Been on a cruise</p>
<p><strong>33. Seen Niagara Falls in person</strong></p>
<p>34. Visited the birthplace of your ancestors (soon!)</p>
<p><strong>35. Seen an Amish community</strong></p>
<p><strong>36. Taught yourself a new language (Not born English, but I am learning French at the moment <img src='http://bart.whahay.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong>)</p>
<p>37. Had enough money to be truly satisfied</p>
<p>38. Seen the Leaning Tower of Pisa in person</p>
<p><strong>39. Gone rock climbing</strong></p>
<p>40. Seen Michelangelo&#8217;s David</p>
<p><strong>41. Sung karaoke </strong></p>
<p>42. Seen Old Faithful geyser erupt</p>
<p>43. Bought a stranger a meal at a restaurant</p>
<p>44. Visited Africa</p>
<p><strong>45. Walked on a beach by moonlight </strong></p>
<p>46. Been transported in an ambulance</p>
<p>47. Had your portrait painted</p>
<p><strong>48. Gone deep sea fishing</strong></p>
<p>49. Seen the Sistine Chapel in person</p>
<p>50. Been to the top of the Eiffel Tower in Paris</p>
<p>51. Gone scuba diving or snorkeling</p>
<p><strong>52. Kissed in the rain</strong></p>
<p><strong>53. Played in the mud</strong></p>
<p>54. Gone to a drive-in theater (We were going to one day but we COULDN&#8217;T find it!)</p>
<p>55. Been in a movie</p>
<p>56. Visited the Great Wall of China</p>
<p>57. Started a business (Not really, just hobby projects)</p>
<p><strong>58. Taken a martial arts class</strong></p>
<p>59. Visited Russia</p>
<p><strong>60. Served at a soup kitchen</strong></p>
<p>61. Sold Girl Scout Cookies</p>
<p>62. Gone whale watching (oh god want to so badly)</p>
<p><strong>63. Got flowers for no reason</strong></p>
<p><strong>64. Donated blood, platelets or plasma</strong></p>
<p>65. Gone sky diving</p>
<p>66. Visited a Nazi Concentration Camp</p>
<p>67. Bounced a check</p>
<p>68. Flown in a helicopter</p>
<p><strong>69. Saved a favorite childhood toy<br />
</strong></p>
<p>70. Visited the Lincoln Memorial</p>
<p><strong>71. Eaten caviar</strong></p>
<p>72. Pieced a quilt</p>
<p><strong>73. Stood in Times Square </strong></p>
<p>74. Toured the Everglades</p>
<p>75. Been fired from a job</p>
<p>76. Seen the Changing of the Guards in London</p>
<p>77. Broken a bone</p>
<p>78. Been on a speeding motorcycle</p>
<p>79. Seen the Grand Canyon in person</p>
<p>80. Published a book</p>
<p>81. Visited the Vatican</p>
<p>82. Bought a brand new car</p>
<p>83. Walked in Jerusalem</p>
<p>84. Had your picture in the newspaper</p>
<p>85. Read the entire Bible</p>
<p>86. Visited the White House</p>
<p>87. Killed and prepared an animal for eating</p>
<p>88. Had chickenpox</p>
<p>89. Saved someone&#8217;s life</p>
<p>90. Sat on a jury</p>
<p><strong>91. Met someone famous<br />
</strong></p>
<p>92. Joined a book club</p>
<p><strong>93. Lost a loved one</strong></p>
<p>94. Had a baby</p>
<p>95. Seen the Alamo in person</p>
<p>96. Swam in the Great Salt Lake</p>
<p>97. Been involved in a law suit</p>
<p><strong>98. Owned a mobile phone</strong></p>
<p>99. Been stung by a bee</p>
<p><strong>100. Read an entire book in one day (Nothing lengthy obviously)</strong></p>
<p>Looking at my list, makes me realize how much I have not travelled, mostly to my home continent (Europe). I will, but not yet .. still young <img src='http://bart.whahay.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://bart.whahay.net/2008/12/23/100-things-meme/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quick Django Tip: Safe and easy database data conversion</title>
		<link>http://bart.whahay.net/2008/12/11/quick-django-tip-safe-and-easy-database-data-conversion/</link>
		<comments>http://bart.whahay.net/2008/12/11/quick-django-tip-safe-and-easy-database-data-conversion/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 22:29:11 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[django]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[migration]]></category>

		<guid isPermaLink="false">http://bart.whahay.net/?p=183</guid>
		<description><![CDATA[One thing that you may find yourself doing is migrating your old projects to Django. Sometimes, this can be fairly complex but if it&#8217;s a case of moving data from an old database to your Django models it&#8217;s pretty simple.
In this example, I am taking data from a mySQL database that held data for a [...]]]></description>
			<content:encoded><![CDATA[<p>One thing that you may find yourself doing is migrating your old projects to Django. Sometimes, this can be fairly complex but if it&#8217;s a case of moving data from an old database to your Django models it&#8217;s pretty simple.</p>
<p>In this example, I am taking data from a mySQL database that held data for a PHP application and converting it to Django models. What I do is run the data through a ModelForm so that I can test for validation:</p>
<p><code></p>
<pre>
# We use the MySQLdb module to connect to a different database to get our old data.
db = MySQLdb.connect(user="me", passwd="password", db="mydatabase")
c = db.cursor(DictCursor)</code>

c.execute("SELECT field1, field2, FROM some_table")
rows = c.fetchall()

for r in rows:
     form = AddItemForm(r)
     if form.is_valid():
         obj = Item(**form.cleaned_data)
         obj.save()
     else:
         # You probably want to log here instead of using print
         # form.errors will contain the errors, which you can log as well.
         print("Could not add Item %s" % r['field1'])
</pre>
<p></code></p>
<p>And that&#8217;s it! This is of course a very crude and simple example but it gets the job done and I find it much better then simply passing in data to my model. With the form, it allows me to catch the errors that the end-user may hit when they actually use the form in the application so it&#8217;s a win-win.</p>
]]></content:encoded>
			<wfw:commentRss>http://bart.whahay.net/2008/12/11/quick-django-tip-safe-and-easy-database-data-conversion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creating My Django Server.</title>
		<link>http://bart.whahay.net/2008/12/07/creating-my-django-server/</link>
		<comments>http://bart.whahay.net/2008/12/07/creating-my-django-server/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 21:30:28 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[django]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[lighttpd]]></category>

		<category><![CDATA[mod_python]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[slicehost]]></category>

		<guid isPermaLink="false">http://bart.whahay.net/?p=181</guid>
		<description><![CDATA[(Note: This article is essentially a walk through of what I did to setup Django on a basic Ubuntu Intrepid server. Any comments or suggestions on improving my setup are more then welcome as I do not claim to be an expert at setting up web servers, just a tinkerer)
Whether you&#8217;re writing your application in [...]]]></description>
			<content:encoded><![CDATA[<p><em>(Note: This article is essentially a walk through of what I did to setup Django on a basic Ubuntu Intrepid server. Any comments or suggestions on improving my setup are more then welcome as I do not claim to be an expert at setting up web servers, just a tinkerer)</em></p>
<p>Whether you&#8217;re writing your application in Python, Ruby, or even PHP (Yes, even PHP) it feels good to know what&#8217;s exactly powering your software. Earlier this week I put together the setup for one of my Django sites and this guide will go through the process. The services are running off a 256mb slice from <a href="http://www.slicehost.com">Slicehost</a>, which I highly recommend.</p>
<p><strong>What we&#8217;re running here:</strong> The end result is an Ubuntu Intrepid server using Apache2 with mod_python to serve Django, and lighttpd to serve media/static files. Memcache is used as a caching backend and mySQL 5.0 is our primary database. This is a very common Django setup and you will find similar guides all over the net. This is just my take <img src='http://bart.whahay.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Getting the packages we need.</h3>
<p>SSH to your server, authenticate and run the following commands to install our necessary packages:</p>
<p><code><br />
$ sudo aptitude install apache2 apache2.2-common apache2-utils<br />
$ sudo aptitude install libapache2-mod-python<br />
$ sudo aptitude install python-setuptools # You need this for a few python modules we need to install<br />
$ sudo aptitude install mysql-server mysql-client libmysqlclient15-dev<br />
$ sudo aptitude install memcached<br />
$ sudo aptitude install python-mysqldb<br />
$ sudo aptitude install lighttpd</code></p>
<h3>Setting up MySQL.</h3>
<p>Setting up mySQL is rather simple. You already supplied a root password when you were initially installing the packages so all we really need to do now is create a database and grant access to a non-root user. This is very simple:<br />
<code><br />
$ mysql -uroot -p<br />
mysql&gt; CREATE DATABASE mysite;<br />
mysql&gt; GRANT ALL ON mysite.* TO 'foo'@'localhost'  IDENTIFIED BY 'password' WITH GRANT OPTION;<br />
</code></p>
<p>As I said, very simple. We create an initial database and then use GRANT to give us a user/password combo we can connect with. If you have an existing set of mysql data, you can now dump it into your database.</p>
<p>I don&#8217;t fancy myself an expert in mySQL user permissions so I recommend viewing the <a href="http://dev.mysql.com/doc/refman/5.0/en/adding-users.html">mySQL 5 Grant Documentation</a> for more information. You may also want to take a look at your /etc/mysql/my.cnf configuration file to modify mySQL settings depending on your sites load.</p>
<h3>Configure &amp; run memcached as a daemon</h3>
<p>Installing memcached is optional as you may not need or want caching, but it&#8217;s generally good practice to have it with your Django sites. To run it, we are going to execute this command:<br />
<code><br />
$ memcached -u www-data -p 11211 -m 32 -d<br />
</code><br />
What this does is tells memcached to run under the user <em>www-data</em> which is the user Apache runs under on Ubuntu. We run it on port 11211 (default), and give it 32mb of memory. You can adjust this memory to be larger or smaller depending on your machine and traffic of websites. As I only have 256mb of RAM and a single (small) site, this is sufficient. Finally, the -d flag runs it as a daemon.</p>
<p>Now we have to install some memcached python bindings. <a href="http://gijsbert.org/cmemcache/">cmemcache</a> is a popular choice but I can&#8217;t get it to work when installing memcached from a package (only from source, which we didn&#8217;t do), so we opt for the second best: python-memcached. Simply grab it and install it:<br />
<code><br />
$ wget ftp://ftp.tummy.com/pub/python-memcached/python-memcached-latest.tar.gz<br />
$ tar -zxvf python-memcached-latest.tar.gz<br />
$ cd python-memcached-1.43<br />
$ sudo python setup.py install<br />
</code></p>
<p>That&#8217;s pretty much it for memcached! The rest of the work is involved within your Django application which you can <a href="http://docs.djangoproject.com/en/dev/topics/cache/#topics-cache">read all about from the official Django documentation</a>.</p>
<h3>Setup Django.</h3>
<p>Of course, we actually need to get Django! You can fetch it in a variety of ways from <a href="http://www.djangoproject.com/download/">the download page</a>. Personally, I enjoy using the SVN trunk as it&#8217;s pretty stable while having the benefit of new features and bug fixes as soon as they are done. I like setting up Django in /home and then linking it to site-packages. This allows me to not worry much about permissions and everything just seems easier. Plus I love the ~ accessibility <img src='http://bart.whahay.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>First, let&#8217;s give our www-data user (see above, it&#8217;s our Apache user) access to our files.<br />
<code><br />
$ sudo gpasswd -a www-data yourusername # In my case, it's admin<br />
$ chmod g+w ~<br />
</code></p>
<p>Now, let&#8217;s get Django from trunk and setup some directories for our projects.<br />
<code><br />
$ cd ~<br />
$ mkdir projects<br />
$ mkdir apps # This is not used in the tutorial, but this is where I place my portable django apps<br />
$ svn co http://code.djangoproject.com/svn/django/trunk/ django<br />
$ sudo ln -s `pwd`/django/django /usr/lib/python2.5/site-packages</code></p>
<p>That&#8217;s it for that. Django is now recognized as a package in Python&#8217;s sys.path</p>
<h3>Setting up your project with Apache.</h3>
<p>We&#8217;re almost there! Now, we finally need to tell Apache and mod_python that we have a Django project we want them to serve. If you have an existing project, simply fetch it from your f<a href="http://www.github.com">avourite</a> <a href="http://beanstalkapp.com">version</a> <a href="http://launchpad.net">control</a> service. If not, you can start your own project quite simply:<br />
<code><br />
$ cd ~/projects<br />
$ ~/django/django/bin/django-admin.py startproject myproject<br />
</code></p>
<p>If you are starting from scratch, you will need to modify your settings.py file to match our setup of a mySQL database and the usage of memcached. There&#8217;s no point in me iterating over this, as the <a href="http://docs.djangoproject.com/en/dev/">Django docs</a> explain it quite well. So let&#8217;s get right down to it and setup our domain in Apache.<br />
<code><br />
$ sudo vim /etc/apache2/sites-available/myproject.tld<br />
</code></p>
<p>And then paste the following, modifying as needed:</p>
<p>&lt;VirtualHost *&gt;</p>
<p>ServerName www.myproject.com<br />
ServerAlias myproject.com</p>
<p>DocumentRoot /var/www/myproject.com</p>
<p>CustomLog /var/log/apache2/myproject.com.access.log combined<br />
ErrorLog /var/log/apache2/myproject.com.error.log</p>
<p>SetHandler python-program<br />
PythonHandler django.core.handlers.modpython<br />
SetEnv DJANGO_SETTINGS_MODULE myproject.settings<br />
PythonDebug On<br />
PythonPath &#8220;['/path/to/my/projects/parent_dir'] + sys.path&#8221;</p>
<p>&lt;Location &#8220;/media&#8221;&gt;<br />
SetHandler None<br />
&lt;/Location&gt;</p>
<p>&lt;/VirtualHost&gt;<br />
Some quick notes:</p>
<p>- Replace /path/to/my/projects/parent_dir and myproject.settings to the relative values. The path is to your projects PARENT directory. So in my case, it would be /home/bartek/projects<br />
- /media is the directory where our django&#8217;s admin media will be linked to.<br />
- Depending on your DNS settings, you may need to adjust the wildcard on the VirtualHost declaration.</p>
<p>Finally, let&#8217;s enable the site and setup the admin media link:<br />
<code><br />
$ sudo ln -s /etc/apache2/sites-available/myproject.com /etc/apache2/sites-enabled/myproject.com<br />
$ sudo ln -s ~/django/django/contrib/admin/media /var/www/myproject.com/<br />
$ sudo apache2ctl restart # Restart Apache<br />
</code></p>
<p>&#8230;&#8230;.And if you did everything right you should see either your Django project running or the default &#8220;It works!&#8221; Django page. Congrats!</p>
<h3>Setting up lighttpd</h3>
<p>Lighttpd setup is optional, but is highly recommended. It&#8217;ll keep your site running smoothly and doesn&#8217;t bog down Apache/mod_python trying to serve both Django and media.</p>
<p>First, you&#8217;ll have to edit Lighttpd&#8217;s settings to run on a different port. The default is 80, which is what our Apache setup is running on:<br />
<code><br />
$ sudo vim /etc/lighttpd/lighttpd.conf<br />
</code></p>
<p>Uncomment the server.port line (around line 70)<br />
<code><br />
server.port               = 81<br />
</code></p>
<p>Next, enable the mod_evhost module. Simply uncomment it in the server.modules variable near the top of the config file. mod_evhost allows you to use a different directory for the static media depending on the domain name. Now, add the following line which basically says requests for <em>myproject.com</em> should look in this directory. I did this on the 124th line, right after the evhost patterns.<br />
<code><br />
$HTTP["host"] =~ &#8220;myproject\\.com&#8221; {<br />
evhost.path-pattern = &#8220;/home/admin/projects/myproject/static/&#8221;<br />
}<br />
</code></p>
<p>Just so you&#8217;re not confused, I generally place my media in my project directory like I did above but you can have it anywhere you want. A commonplace is under /var/www/myproject.com</p>
<p><em>Note:</em> If you are under Debian/Ubuntu and your site has a &#8220;images&#8221; directory, the default lighttpd config may not serve this. Some Debian/Ubuntu configurations reference &#8220;images&#8221; as a dir for the Debian policy and all your images will be broken unless you remove this reference. I found it at around line 160.</p>
<p>Start lighttpd:<br />
<code><br />
$ sudo /etc/init.d/lighttpd start<br />
</code></p>
<p>And verify it is working by visiting http://myproject.com:81. You should see either your Apache or Lighttpd placeholder page.</p>
<p><strong>Configure Apache to use Lighttpd</strong></p>
<p>To serve files using Lighttpd from Apache we need to enable proxy on Apache. There are other methods of doing this, but I&#8217;ve found this the best documented, and hey &#8212; it works great!<br />
<code><br />
$ ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/<br />
$ ln -s /etc/apache2/mods-available/proxy_connect.load /etc/apache2/mods-enabled/<br />
$ ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/<br />
</code></p>
<p>Or just as easily type <em>sudo a2enmod proxy proxy_connect proxy_httpd</em> if you are under Ubuntu. Finally, unsecured proxies are used by spammers so we want to configure ours to only accept local connections. Simply do this:<br />
<code><br />
$ sudo vim /etc/apache2/mods-available/proxy.conf<br />
</code></p>
<p>And modify the wildcard in &lt;VirtualHost&gt; to state the local host like so:</p>
<p>AddDefaultCharset off<br />
Order deny,allow<br />
Deny from all<br />
Allow from 127.0.0.1</p>
<p><strong>Finally, configure the VirtualHost to use the Proxy</strong></p>
<p><code> $ sudo vim /etc/apache2/sites-available/myproject.com<br />
</code></p>
<p>Add this somewhere in your &lt;VirtualHost&gt; declaration<br />
<code><br />
ProxyRequests Off<br />
ProxyPreserveHost On<br />
ProxyPass /static http://127.0.0.1:81/<br />
ProxyPassReverse / http://127.0.0.1:81/<br />
</code></p>
<p>And with that setup, reload and restart Apache and Lighttpd should now be serving your static media!<br />
<code><br />
$ sudo /etc/init.d/apache2 reload<br />
$ sudo /etc/init.d/apache2 restart<br />
</code></p>
<p>To double check if it is, you can use the lovely Firebug plugin and just look under the &#8220;Net&#8221; tab or just use curl:<br />
<code><br />
$ curl -I http://myproject.com<br />
$ curl -I http://myproject.com:81</code></p>
<p>Curl will send back a response on what is serving it. You&#8217;ll see the first one shows Apache/mod_python, and the second line should return a lighttpd reference.</p>
<h3>It works!</h3>
<p>And that about wraps it up! There are many things you can do to customize the services running your software but this is a basic setup that works great for small and medium-scale sites. From here, you can extend this by setting up PHP for other apps, and securing your server. I recommend the <a href="http://articles.slicehost.com">articles on Slicehost</a> for some great walk throughs on securing your server.</p>
<h3>References &amp; Credits:</h3>
<p>Of course, there are many people who have done this long before me and I got a lot of information from. These posts outline what I did, but in their own manner and some have other useful information. I recommend checking them all out as they are great at what they do:</p>
<ul>
<li>http://ventanazul.com/webzine/trackback/124</li>
<li><a href="http://lethain.com/entry/2007/jul/13/creating-my-dream-server-django/">http://lethain.com/entry/2007/jul/13/creating-my-dream-server-django/</a></li>
<li><a href="http://www.inerciasensorial.com.br/2007/06/10/perils-of-software-development/lighttpd-with-apache/">http://www.inerciasensorial.com.br/2007/06/10/perils-of-software-development/lighttpd-with-apache/</a></li>
<li><a href="http://articles.slicehost.com/">http://articles.slicehost.com/</a></li>
</ul>
<div>Thanks for reading!</div>
]]></content:encoded>
			<wfw:commentRss>http://bart.whahay.net/2008/12/07/creating-my-django-server/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Xclip - Using the clipboard from the command line</title>
		<link>http://bart.whahay.net/2008/10/09/xclip-using-the-clipboard-from-the-command-line/</link>
		<comments>http://bart.whahay.net/2008/10/09/xclip-using-the-clipboard-from-the-command-line/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 01:06:38 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[ubuntu]]></category>

		<category><![CDATA[xclip]]></category>

		<guid isPermaLink="false">http://bart.whahay.net/?p=176</guid>
		<description><![CDATA[Today I was setting up an account on Github and I needed to supply them with my ssh public key. The recommended method was to use something like pbcopy, which is on Mac OS X to copy the contents of STDIN to your clipboard. This was to make sure you don&#8217;t have any extra lines [...]]]></description>
			<content:encoded><![CDATA[<p>Today I was setting up an account on <a href="http://www.github.com">Github</a> and I needed to supply them with my ssh public key. The recommended method was to use something like pbcopy, which is on Mac OS X to copy the contents of STDIN to your clipboard. This was to make sure you don&#8217;t have any extra lines or spaces when you do your copy to the clipboard as public keys need to be exact.</p>
<p>This is where <strong>xclip</strong> comes in. xclip allows you to pipe content into your clipboard directly from the command line as well as outputting your clipboard. In terms of my example, it&#8217;s as simple as this:</p>
<p><em>cat id_rsa.pub | xclip</em></p>
<p>There&#8217;s only one problem with this example. Piping simply to xclip will only fill the clipboard you can use via xclip -o itself. Not your usual CTRL+V, or Right Click-&gt;Paste board. So how do you do that?</p>
<p><em>cat id_rsa.pub | xclip -selection c</em></p>
<p>Now when I go into Firefox or anywhere else, hitting CTRL+V I get the contents of id_rsa.pub. You can do this with ANY standard input to your terminal. File listings, file diff&#8217;s, drive space, etc .. you are not very limited.</p>
<p>Since I never plan to use xclip -o, I made a simple alias so I don&#8217;t have to constantly type -selection c, like so:</p>
<p><em>alias xclip=&#8217;xclip -selection c&#8217; </em></p>
<p>Now whenever I use the xclip pipe like I did in the first example it goes straight to my regular clipboard.</p>
<p>You may need to install xclip as it does not come default with Ubuntu. The xclip manual (man xclip) has a variety of other information I did not cover in my post, but this is all I personally need from it.</p>
]]></content:encoded>
			<wfw:commentRss>http://bart.whahay.net/2008/10/09/xclip-using-the-clipboard-from-the-command-line/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Best run of configure ever</title>
		<link>http://bart.whahay.net/2008/10/08/best-run-of-configure-ever/</link>
		<comments>http://bart.whahay.net/2008/10/08/best-run-of-configure-ever/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 13:13:27 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[nmap]]></category>

		<guid isPermaLink="false">http://bart.whahay.net/?p=173</guid>
		<description><![CDATA[Normally when you have to build from source and run a ./configure it&#8217;s usually boring old work, maybe a few fun options you have to set for your environment but eh, not my cup of tea. Thankfully, the guys at nmap made my morning just that much brighter by ending the configure with this:

Love it. [...]]]></description>
			<content:encoded><![CDATA[<p>Normally when you have to build from source and run a ./configure it&#8217;s usually boring old work, maybe a few fun options you have to set for your environment but eh, not my cup of tea. Thankfully, the guys at <a href="http://nmap.org/">nmap</a> made my morning just that much brighter by ending the configure with this:</p>
<p><a href="http://bart.whahay.net/wp-content/uploads/2008/10/best-config-ever.jpg"><img class="alignnone size-full wp-image-174" title="best-config-ever" src="http://bart.whahay.net/wp-content/uploads/2008/10/best-config-ever.jpg" alt="" width="500" height="199" /></a></p>
<p>Love it. Made me chuckle, first time I&#8217;ve ever noticed something like this (to be fair I generally don&#8217;t build from source unless I need to)</p>
]]></content:encoded>
			<wfw:commentRss>http://bart.whahay.net/2008/10/08/best-run-of-configure-ever/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Two simple techniques to make your Django projects ultra portable</title>
		<link>http://bart.whahay.net/2008/10/03/two-simple-techniques-to-make-your-django-projects-ultra-portable/</link>
		<comments>http://bart.whahay.net/2008/10/03/two-simple-techniques-to-make-your-django-projects-ultra-portable/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 20:57:30 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[django]]></category>

		<category><![CDATA[portability]]></category>

		<category><![CDATA[settings.py]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://bart.whahay.net/?p=172</guid>
		<description><![CDATA[After moving around my Django projects between Windows and Linux boxes and different mySQL setups I spent some time looking for the best solution on making my project portable so I can throw it around wherever I want without much worry. Both these solutions are some-what known as I got them from the #django irc [...]]]></description>
			<content:encoded><![CDATA[<p>After moving around my Django projects between Windows and Linux boxes and different mySQL setups I spent some time looking for the best solution on making my project portable so I can throw it around wherever I want without much worry. Both these solutions are some-what known as I got them from the #django irc room (a super awesome resource!) but not much documentation is out on them.</p>
<p><strong>1) Setting a ROOT_DIR and using it in settings.py</strong></p>
<p>This is very simple. You want to setup a ROOT_DIR variable that basically consists of Python code that figures out what directory the file is in. The code is very simple:</p>
<address><span style="line-height: 18px; white-space: pre; font-family: 'Courier New';"><span style="line-height: 19px; white-space: normal; font-family: 'Lucida Grande';"><span style="font-style: normal;">i</span></span><em><span style="font-style: normal;">mport os</span></em></span><span style="font-style: normal;"><br />
</span></address>
<address><span style="font-style: normal;">ROOT_DIR = os.path.dirname(__file__)</span></address>
<address>
</address>
<address></address>
<address><span style="font-style: normal;">Place this on top of your projects settings.py and then include it in the various variables later in the file, like TEMPLATE_DIRS will have an entry <em>ROOT_DIR + &#8216;/templates&#8217; </em>or you can drop the hard-coded &#8216;/&#8217; and do something like <em>os.path.join(ROOT_DIR, &#8216;templates&#8217;)</em> which takes out a tiny worry of including, or not including a slash in your paths.</span></address>
<address>
</address>
<address> </address>
<address>(Thanks to SmileyChris in the comments for optimizing my implementation on this, as well as adding an additional tip .. check below for it!)<br />
</address>
<p><strong>2) Using a local_settings.py for easy moving around between environments</strong></p>
<p>Another very simple but super useful trick. This allows you to over-ride any variables in settings.py for that specific machine. A simple use case for this would be that I have my development environment here on my Ubuntu machine but when I commit my project to SVN on the Debian server the mySQL details are different as it&#8217;s an entirely different server. So what I do is at the bottom of settings.py:</p>
<address><span style="font-style: normal;">try:<br />
</span></address>
<address><span style="font-style: normal;"> from local_settings import *<br />
</span></address>
<address><span style="font-style: normal;">except ImportError, exp:<br />
</span></address>
<address><span style="font-style: normal;"> pass # You can do something here, like write to a log if  you wish, but it&#8217;s not necessary</span></address>
<p>Then, setup settings.py so it matches your production environments settings (In this case, my Debian server) and create a new file called local_settings.py in the same directory. In this file, you can just place whatever vairables you want to over-ride. I have variables over-riding my MySQL and DEBUG settings to fit my local development (Ubuntu) environment. The key here is to not commit/send local_settings.py to production.</p>
<p>And that&#8217;s about it. Those two small changes make it very easy for my projects to move around. It makes it very nice to be able to commit even settings.py to your production environment and not worry about values not being correct.</p>
<p>If you know of any other good portability techniques I&#8217;d be glad to hear them in the comments section below, I&#8217;m still learning Django!</p>
]]></content:encoded>
			<wfw:commentRss>http://bart.whahay.net/2008/10/03/two-simple-techniques-to-make-your-django-projects-ultra-portable/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sending HTML emails to multiple subscribers via Django</title>
		<link>http://bart.whahay.net/2008/09/24/sending-html-emails-to-multiple-subscribers-via-django/</link>
		<comments>http://bart.whahay.net/2008/09/24/sending-html-emails-to-multiple-subscribers-via-django/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 20:38:49 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[django]]></category>

		<category><![CDATA[email]]></category>

		<category><![CDATA[subscribers]]></category>

		<guid isPermaLink="false">http://bart.whahay.net/?p=171</guid>
		<description><![CDATA[(Update: Please note I do not advocate spamming or any tomfoolery at all. See the comments below for some great discussion on sending out bulk emails correctly via setting up your DNS and SMTP Servers correctly)
Today I had the fun little project of building a very simple message sending system in Django that would fetch [...]]]></description>
			<content:encoded><![CDATA[<p>(<strong>Update</strong>: Please note I do not advocate spamming or any tomfoolery at all. See the comments below for some great discussion on sending out bulk emails correctly via setting up your DNS and SMTP Servers correctly)</p>
<p>Today I had the fun little project of building a very simple message sending system in Django that would fetch emails from a database of subscribers, check for the latest message in the queue, and send it out.</p>
<p>Sounds easy? Well yes, it is. But there&#8217;s a few things that Django can do to make the email sending much smarter.</p>
<p>First off, sending HTML emails in Django requires you to set an alternate content type. This is easily done using the <em>django.core.mail.EmailMultiAlternatives </em>class which is very similar to using the EmailMessage class but provides a few more options for HTML emails. Here&#8217;s a simple code snippet using this:</p>
<div class="highlight">
<pre><span class="n">subject</span><span class="p">,</span> <span class="n">from_email</span><span class="p">,</span> <span class="n">to</span> <span class="o">=</span> <span class="s">'Say Hello to our new website!'</span><span class="p">,</span> <span class="s">'service@mycompany.com'</span><span class="p">,</span> </pre>
<pre><span class="s">                                          'someuser@gmail.com'</span>
<span class="n">text_content</span> <span class="o">=</span> <span class="s">'This is an important message.'</span>
<span class="n">html_content</span> <span class="o">=</span> <span class="s">'&lt;p&gt;This is an &lt;strong&gt;important&lt;/strong&gt; message.&lt;/p&gt;'</span>
<span class="n">msg</span> <span class="o">=</span> <span class="n">EmailMultiAlternatives</span><span class="p">(</span><span class="n">subject</span><span class="p">,</span> <span class="n">text_content</span><span class="p">,</span> <span class="n">from_email</span><span class="p">,</span> <span class="p">[</span><span class="n">to</span><span class="p">])</span>
<span class="n">msg</span><span class="o">.</span><span class="n">attach_alternative</span><span class="p">(</span><span class="n">html_content</span><span class="p">,</span> <span class="s">"text/html"</span><span class="p">)</span>
<span class="n">msg</span><span class="o">.</span><span class="n">send</span><span class="p">()</span></pre>
</div>
<p>This very simple example sends an email to someuser@gmail.com with an alternative minetype for html. What this allows is for people who have HTML-enabled email clients they receive the full on HTML view, while people who are stuck with text based emails simply get a nice clean cut text email instead of html garble.</p>
<p>Django offers another class that makes it extremely efficient on sending emails to mass amounts of users. Now there is little documentation on this so I do not know how far you can stretch this (hundreds, or thousands of emails?) but it has worked well for me.</p>
<p>It is the <em>SMTPConnection</em> class also found in <em>django.core.mail</em>. With it, you can store all your EmailMessage()&#8217;s or your EmailMultiAlternatives()&#8217;s in a list of data and then send them all using one single connection instead of re-connecting each time. This is similar to using <em>send_mass_mail</em> but that is just a thin wrapper that does not support alternative mimetypes like HTML and other goodies. Here&#8217;s a simple code snipper:</p>
<p> </p>
<pre><span class="c"># If you do not provide any connection settings, it uses the default found in settings.py</span></pre>
<pre><span class="n">connection</span> <span class="o">=</span> <span class="n">SMTPConnection</span><span class="p">()</span>
<span class="n">connection</span><span class="o">.</span><span class="n">send_messages</span><span class="p">(</span><span class="n">messages</span><span class="p">) # messages can be a list of EmailMessage objects</span></pre>
<p>So those are two great classes that make email sending just that much simpler in Django. How would you put this all together? Here&#8217;s a simple example script that fetches an email message from a model named <em>Message</em>, some subscribers, and then sends out a mass email to them. In this script, Message is a model that holds the actual HTML email and Subscribers is a list of our subscribers. To keep it simple, we only work with their email</p>
<pre>from django.core.mail import  EmailMultiAlternatives, SMTPConnection</pre>
<pre>from mysite.email_app.models import Subscriber, Message</pre>
<pre>message = Message.objects.order_by('-id')[:1][0] # Fetch latest message in our list of emails</pre>
<pre>if not message.is_sent:</pre>
<pre>      subscribers = Subscriber.objects.all()</pre>
<pre>      emails_to_send = []</pre>
<pre>      for s in subscribers:</pre>
<pre>           msg = EmailMultiAlternatives(message.subject, message.body_text, 'myemail@foo.com', </pre>
<pre>                                                                     [s.email])</pre>
<pre>           # Attach the html version of our email to the email</pre>
<pre>           msg.attach_alternative(message.body_html, "text/html")</pre>
<pre>           emails_to_send.append( msg )</pre>
<pre>      # Setup a single SMTPConnection to send all emails instead of re-connecting each time</pre>
<pre>      connection = SMTPConnection()</pre>
<pre>      connection.send_messages(emails_to_send)</pre>
<pre>      message.is_sent = True</pre>
<pre>      message.save()</pre>
<p>That&#8217;s just a very simple example and if you know any ounce of Django I hope you can understand it. You could also add something like a send_time to your Message model and then run a daily cron script to check if an email has to go out to your user base. This is basically the setup I have now at the office and it works great.</p>
<p> </p>
<p>For a full reference, see: <a href="http://docs.djangoproject.com/en/dev/topics/email/">Django | Sending e-amil</a></p>
<p> </p>
<p> </p>
<p> </p>
<pre> </pre>
]]></content:encoded>
			<wfw:commentRss>http://bart.whahay.net/2008/09/24/sending-html-emails-to-multiple-subscribers-via-django/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Blog to watch: Kitchener - Waterloo Conscience + Veg Van!</title>
		<link>http://bart.whahay.net/2008/09/21/blog-to-watch-kitchener-waterloo-conscience-veg-van/</link>
		<comments>http://bart.whahay.net/2008/09/21/blog-to-watch-kitchener-waterloo-conscience-veg-van/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 22:55:10 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[social]]></category>

		<category><![CDATA[blogs]]></category>

		<category><![CDATA[green]]></category>

		<category><![CDATA[kitchener]]></category>

		<category><![CDATA[waterloo]]></category>

		<guid isPermaLink="false">http://bart.whahay.net/?p=169</guid>
		<description><![CDATA[Great blog discovery today that is just starting off but looks good for us Kitchener Waterloo folks who just love all that alternative energy goodness.
Kitchener - Waterloo Conscience is the name, and it&#8217;s devoted to following a green life style and &#8220;conscience&#8221;, specifically focusing on the K-W Region. His latest take, on the new Bay [...]]]></description>
			<content:encoded><![CDATA[<p>Great blog discovery today that is just starting off but looks good for us Kitchener Waterloo folks who just love all that alternative energy goodness.</p>
<p><a href="http://www.greenwannabe.blogspot.com/">Kitchener - Waterloo Conscience</a> is the name, and it&#8217;s devoted to following a green life style and &#8220;conscience&#8221;, specifically focusing on the K-W Region. His latest take, on the new Bay in Conestoga Mall is a great look at what they have done to really promote the green attitude. I didn&#8217;t even know there was also some solar panels!</p>
<p>While browsing through this blog, I discovered this man, Ian, is also the driver of the <a href="http://www.vegvan.ca/vegvan/Welcome.html">Veg Van</a>! Doesn&#8217;t get much better then a creepy looking blue box van that&#8217;s running on grease. It&#8217;s definitely an interesting look into something totally different.</p>
<p>I also don&#8217;t plug my good friend Corey enough, who recently <a href="http://www.wallofscribbles.com/">redesigned his blog</a> and is focusing on some interesting writing lately. I recommend you check it out, he will be posting a neat short story this Monday.</p>
]]></content:encoded>
			<wfw:commentRss>http://bart.whahay.net/2008/09/21/blog-to-watch-kitchener-waterloo-conscience-veg-van/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Switching from iTunes to the new Songbird</title>
		<link>http://bart.whahay.net/2008/09/16/switching-from-itunes-to-the-new-songbird/</link>
		<comments>http://bart.whahay.net/2008/09/16/switching-from-itunes-to-the-new-songbird/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 12:18:28 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[music]]></category>

		<category><![CDATA[itunes]]></category>

		<category><![CDATA[songbird]]></category>

		<guid isPermaLink="false">http://bart.whahay.net/?p=168</guid>
		<description><![CDATA[Over the past few months I&#8217;ve slowly gotten more and more annoyed by iTunes. The interface is so slow it makes me want to buy a Mac and all the latest iTunes updates have been met with some mixed responses.
Enter Songbird. Songbird is an open source music player that is labeled the Firefox for music [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few months I&#8217;ve slowly gotten more and more annoyed by iTunes. The interface is so slow it makes me want to buy a Mac and all the latest iTunes updates have been met with some <a href="http://fireglo.wordpress.com/2008/09/09/itunes-8-review-genius-bar-ipod-touch-firmware-21/">mixed</a> <a href="http://www.webmonkey.com/blog/ITunes_8_s_Genius_Playlists_Aren_t_as_Smart_as_They_Could_Be">responses</a>.</p>
<p>Enter Songbird. <a href="http://www.getsongbird.com">Songbird</a> is an open source music player that is labeled the Firefox for music players. Why? Because It&#8217;s doing a good job of giving me what I want and oh it has those precious addons we Firefox users love so much.</p>
<p>Songbird makes me feel quite at home because it <em>looks</em> like iTunes, almost. It has the same structure and nearly the same style making the switch pretty easy on the UI-centered part of my brain.</p>
<p>Out of the box, it invites you to try out some of the features like its built-in concert finder which is simply powered by <a href="http://www.songkick.com/">Songkick</a> (Unfortunately, not available in Canada!) as well as Last.fm support, which as an avid user I am a huge fan of. You can extend the power of Songbird quite easily with addons like <a href="http://addons.songbirdnest.com/addon/73">mashTape</a> which not only function great, but are super easy to install!</p>
<p>The real reason I decided to try it out was beause iTunes was slow slow slow. Songbird is actually pretty fast. Importing my entire library of 5,000+ songs took only about 5 minutes and moving around in the player itself is pretty quick. No random lag and weird UI glitches like iTunes for Windows. Oh, did I mention Songbird is available for Windows, Mac, AND Linux? Hell yeah, you guys rock.</p>
<p>Of course, Songbird is still in development and not even in 1.0 status yet. Adding Podcasts (Subscriptions) was a bit wonky and I&#8217;m still having some trouble with a few that I want to subscribe to and video isn&#8217;t quite there yet. These guys are working hard however to get new updates out make a name for themselves in the music player community. You can follow them on <a href="http://twitter.com/songbirdteam">Twitter</a> to get a bit more insight into their day-to-day workings</p>
<p>Overall, I am so far very happy with Songbird. It does what I need it to do with minimal hassle and the importing of my iTunes library made it quick and easy to switch. Once a few more bugs are squashed and a few features are tightened up it should be one hell of a killer music player.</p>
<p>P.S - Songkick, please get some Canadian support for your listings!</p>
]]></content:encoded>
			<wfw:commentRss>http://bart.whahay.net/2008/09/16/switching-from-itunes-to-the-new-songbird/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Saving Money Tip: Showering yourself with money</title>
		<link>http://bart.whahay.net/2008/09/12/saving-money-tip-showering-yourself-with-money/</link>
		<comments>http://bart.whahay.net/2008/09/12/saving-money-tip-showering-yourself-with-money/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 23:12:51 +0000</pubDate>
		<dc:creator>Bart</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[money]]></category>

		<category><![CDATA[saving]]></category>

		<guid isPermaLink="false">http://bart.whahay.net/?p=166</guid>
		<description><![CDATA[I&#8217;ve found one of the most effective ways to save money, especially as a younger guy who is constantly buying things, going out for dinners, and not worrying about pinching pennies is to have multiple sources of savings.
This plays on the same idea that having multiple sources of income, even if those extra sources are [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve found one of the most effective ways to save money, especially as a younger guy who is constantly buying things, going out for dinners, and not worrying about pinching pennies is to have multiple sources of savings.</p>
<p>This plays on the same idea that having multiple sources of income, even if those extra sources are little in comparison to your main source, it still adds up.</p>
<p>For example, for my short-term (non retirement) savings, I save money in three ways:</p>
<ol>
<li>Using automatic deposits into a high interest savings account like my <a href="http://www.ingdirect.ca">ING Account</a>. Every week, ING takes out a set amount of dollars from my chequing into my savings. This is most people&#8217;s first step to savings and it works great, because you end up budgeting around the weekly deposits.</li>
<li>Saving your change adds up too. With my girlfriend, we fill up a huge pickle jar with change. Once every 4-5 months it gets full. Our last take out, we cleared well over $200 on change we would have never thought of using.</li>
<li>Don&#8217;t just save your change, save your dollars and bills. A<a href="http://www.boston.com/news/local/articles/2008/07/20/with_a_bit_of_creative_savings_5_can_get_you_at_least_12000/"> woman from Boston saved $12,000</a> just by collecting her $5 dollar bills. I&#8217;ve begun to start doing this slowly and it&#8217;s a nice companion to saving change.</li>
</ol>
<div></div>
<div>Basically, it&#8217;s the same stuff you already know. A little bit adds up to a lot but it&#8217;s nice to try and practice it, by doing a bunch of small things, you don&#8217;t feel too restricted by your savings and you may still have the freedom to go out for dinners and the movies while not worrying too much about if you&#8217;re meeting your savings goal.</div>
]]></content:encoded>
			<wfw:commentRss>http://bart.whahay.net/2008/09/12/saving-money-tip-showering-yourself-with-money/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
