<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1715085583441615713</id><updated>2012-01-27T14:18:49.278-06:00</updated><category term='bittorrent'/><category term='linux'/><category term='hack'/><category term='csharp'/><category term='usenet'/><category term='world of warcraft'/><category term='php'/><category term='photography'/><category term='xubuntu'/><category term='random'/><category term='xfce'/><category term='codeigniter'/><category term='code'/><category term='ubuntu'/><category term='dotnet'/><category term='bash'/><category term='brainfuck'/><title type='text'>Ryon Sherman's Blog</title><subtitle type='html'>a weblog about programming, hacking, linux, and other randomness</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-3933925242454166500</id><published>2012-01-27T14:13:00.001-06:00</published><updated>2012-01-27T14:15:13.445-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>xfce-do</title><content type='html'>Since switching to Xubuntu I've found myself using xfce4-appfinder in place of Gnome-Do. Bind this script to &amp;lt;Super&amp;gt;+&amp;lt;Space&amp;gt; in Settings Manager&amp;rarr;Keyboard&amp;rarr;Application Shortcuts in order to run it as a single instance.&lt;br /&gt;&lt;pre class="brush: bash;"&gt;#!/bin/bash&lt;br /&gt;pidfile=/var/run/xfce-do/pid&lt;br /&gt;if [ -e $pidfile ]; then&lt;br /&gt;    pid=`cat $pidfile`&lt;br /&gt;    if kill -0 &amp;&gt;1 &gt; /dev/null $pid; then&lt;br /&gt;        exit 1&lt;br /&gt;    else&lt;br /&gt;        rm $pidfile&lt;br /&gt;    fi&lt;br /&gt;fi&lt;br /&gt;echo $$ &gt; $pidfile&lt;br /&gt;xfce4-appfinder&lt;br /&gt;rm $pidfile&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Make sure to create the directory and provide write permissions to users.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash;"&gt;sudo mkdir /var/run/xfce-do&lt;br /&gt;chmod a+w /var/run/xfce-do&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-3933925242454166500?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/3933925242454166500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2012/01/xfce-do.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/3933925242454166500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/3933925242454166500'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2012/01/xfce-do.html' title='xfce-do'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-8132737307231811708</id><published>2011-06-06T17:45:00.003-05:00</published><updated>2012-01-27T14:13:59.911-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='usenet'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><category scheme='http://www.blogger.com/atom/ns#' term='csharp'/><title type='text'>My First C# Project: hellanzb-remote-dotnet</title><content type='html'>Frustrated with the lack of quality Usenet binary downloader for Windows (if only &lt;a href="http://www.unzbin.com/"&gt;Unzbin&lt;/a&gt; were open source) I set out to gain some proficiency in a new language and framework. Using &lt;a href="http://msdn.microsoft.com/en-us/vcsharp/aa336706"&gt;C#&lt;/a&gt; and &lt;a href="http://www.microsoft.com/net/"&gt;.NET&lt;/a&gt; I created a simple remote UI for &lt;a href="http://hellanzb.com/trac/"&gt;hellanzb&lt;/a&gt;. It supports all commands as well as multiple servers.&lt;br /&gt;While version 1.0.0 may exhibit many amateur methods. I have since spent many hours learning from others and improving my coding practices in relation to C#/.NET and plan to revise the code soon.&lt;br /&gt;&lt;h3&gt;A HellaNZB remote GUI for Windows&lt;/h3&gt;&lt;a href="http://code.google.com/p/hellanzb-remote-dotnet/"&gt;hellanzb-remote-dotnet&lt;/a&gt; is a Windows remote client to the RPC interface of &lt;a href="http://hellanzb.com/trac/"&gt;hellanzb&lt;/a&gt;. Inspired by &lt;a href="http://uremote.blogspot.com/"&gt;µRemote&lt;/a&gt; and &lt;a href="http://code.google.com/p/hellau/"&gt;Hellau!&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Screenshot&lt;/h3&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="400" src="http://hellanzb-remote-dotnet.googlecode.com/svn/wiki/screenshot-1.0.0.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" width="700" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Future&lt;/h3&gt;While attempting to port the code to support &lt;a href="http://sabnzbd.org/"&gt;sabdnzbd&lt;/a&gt; I decided to start work on a new long term project. I hope to provide a full NZB Downloader suite including:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Windows Native Client/Server&lt;/li&gt;&lt;li&gt;Windows Remote Client&lt;/li&gt;&lt;li&gt;Linux Remote Client&lt;/li&gt;&lt;li&gt;Android Remote Client&lt;/li&gt;&lt;/ul&gt;Future support may include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mac Native Client/Server&lt;/li&gt;&lt;li&gt;Mac Remote Client&lt;/li&gt;&lt;li&gt;iPhone Remote Client&lt;/li&gt;&lt;/ul&gt;I am very excited to see what new desktop applications I can come up with!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-8132737307231811708?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/8132737307231811708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2011/06/my-first-c-project-hellanzb-remote.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/8132737307231811708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/8132737307231811708'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2011/06/my-first-c-project-hellanzb-remote.html' title='My First C# Project: hellanzb-remote-dotnet'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-395250800544795183</id><published>2011-06-06T17:15:00.027-05:00</published><updated>2011-06-13T10:46:59.390-05:00</updated><title type='text'>Hiatus</title><content type='html'>&lt;h3&gt;Ryon is a hardware programmer?&lt;/h3&gt;After more than a year of absence I've returned and I plan to keep my blog more updated...even if I am the only one reading it at this moment. You see, my blogging has been neglected due to the latest addition to my life, my son and future hacker/coder, Dexter!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="300" src="https://lh5.googleusercontent.com/-z228BOYQhkc/TY5O6hPUUdI/AAAAAAAAKnI/1BCHQK7UKjE/198363_10150111335617063_549512062_7065179_4287146_n.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" width="400" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And wouldn't ya know, he already &lt;a href="https://lh5.googleusercontent.com/-wwGNwjzp-fc/TY5O5srk66I/AAAAAAAAKm4/-u_HiNdXGlw/190381_10150111336322063_549512062_7065188_6908173_n.jpg"&gt;plays WoW too&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;DexKicks&lt;/h3&gt;To help mommy keep track of his activity through the pregnancy I gave her a handy PHP script. A simple Android client allowed her to keep track of kicks on the go.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-Y1HuQlsULpQ/Te1fnJHtOPI/AAAAAAAAKt4/tp1XtfjakeM/s400/dexkicks.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" width="306" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-395250800544795183?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/395250800544795183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2011/06/hiatus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/395250800544795183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/395250800544795183'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2011/06/hiatus.html' title='Hiatus'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-z228BOYQhkc/TY5O6hPUUdI/AAAAAAAAKnI/1BCHQK7UKjE/s72-c/198363_10150111335617063_549512062_7065179_4287146_n.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-4242387822217313812</id><published>2010-03-31T16:25:00.026-05:00</published><updated>2010-04-01T09:26:28.459-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><title type='text'>Photography Portfolio</title><content type='html'>People have been asking which website my desktop wallpapers come from. When told they are some of my own I'm often met with disbelief.&lt;br /&gt;&lt;br /&gt;So, I've decided to post some of my favorites to a gallery here for your criticism.&lt;br /&gt;&lt;br /&gt;Supposedly the photos I render equipped with a point-and-shoot camera, a limited knowledge of the science behind photography, and &lt;a href="http://picasa.google.com/"&gt;Picasa&lt;/a&gt;'s "I'm Feeling Lucky" button...are that of professional quality.&lt;br /&gt;&lt;br /&gt;All photos were taken with a &lt;a href="http://www.sonystyle.com/webapp/wcs/stores/servlet/ProductDisplay?catalogId=10551&amp;amp;langId=-1&amp;amp;productId=11033625&amp;amp;storeId=10151"&gt;Sony Cyber-shot® DSC-T10 Digital Camera&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a title="Port of Seattle, WA" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LmaWCXo1QFE/S7PDEPz23YI/AAAAAAAAKTY/3i5uLwGNpZM/s1600/dsc00755.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 160px;" src="http://4.bp.blogspot.com/_LmaWCXo1QFE/S7PDEPz23YI/AAAAAAAAKTY/3i5uLwGNpZM/s200/dsc00755.jpg" alt="" id="BLOGGER_PHOTO_ID_5454918051406732674" border="0" /&gt;&lt;/a&gt;&lt;a title="Creek Street, Ketchikan, AK" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LmaWCXo1QFE/S7PEk3OJeJI/AAAAAAAAKTg/tn8TsZLkJDg/s1600/dsc00814.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 160px;" src="http://2.bp.blogspot.com/_LmaWCXo1QFE/S7PEk3OJeJI/AAAAAAAAKTg/tn8TsZLkJDg/s200/dsc00814.jpg" alt="" id="BLOGGER_PHOTO_ID_5454919711253428370" border="0" /&gt;&lt;/a&gt;&lt;a title="Port of Ketchikan, AK" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LmaWCXo1QFE/S7PFIBPDUUI/AAAAAAAAKTo/nlZF9oyRbjo/s1600/dsc00865.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 160px;" src="http://1.bp.blogspot.com/_LmaWCXo1QFE/S7PFIBPDUUI/AAAAAAAAKTo/nlZF9oyRbjo/s200/dsc00865.jpg" alt="" id="BLOGGER_PHOTO_ID_5454920315236995394" border="0" /&gt;&lt;/a&gt;&lt;a title="Alaskan Midnight" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LmaWCXo1QFE/S7PIMw9y4CI/AAAAAAAAKUI/bUY7vtMofqA/s1600/dsc00881.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 160px;" src="http://3.bp.blogspot.com/_LmaWCXo1QFE/S7PIMw9y4CI/AAAAAAAAKUI/bUY7vtMofqA/s200/dsc00881.jpg" alt="" id="BLOGGER_PHOTO_ID_5454923695303876642" border="0" /&gt;&lt;/a&gt;&lt;a title="Fushimi Inari Shrine, Kyoto, Japan" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LmaWCXo1QFE/S7PJnQx_9sI/AAAAAAAAKUg/xXncCVShmY8/s1600/DSC01799.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 160px;" src="http://2.bp.blogspot.com/_LmaWCXo1QFE/S7PJnQx_9sI/AAAAAAAAKUg/xXncCVShmY8/s200/DSC01799.JPG" alt="" id="BLOGGER_PHOTO_ID_5454925250032563906" border="0" /&gt;&lt;/a&gt;&lt;a title="Rainbow Bridge, Tokyo, Japan" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LmaWCXo1QFE/S7PLgnKdbXI/AAAAAAAAKUw/hbvDXRO8abc/s1600/DSC01996.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 160px;" src="http://1.bp.blogspot.com/_LmaWCXo1QFE/S7PLgnKdbXI/AAAAAAAAKUw/hbvDXRO8abc/s200/DSC01996.JPG" alt="" id="BLOGGER_PHOTO_ID_5454927334804909426" border="0" /&gt;&lt;/a&gt;&lt;a title="Alaskan Tundra" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LmaWCXo1QFE/S7Ss9RY5ENI/AAAAAAAAKaY/USk18ohjmpY/s1600/dsc01085-1.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 160px;" src="http://1.bp.blogspot.com/_LmaWCXo1QFE/S7Ss9RY5ENI/AAAAAAAAKaY/USk18ohjmpY/s200/dsc01085-1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5455175217292316882" /&gt;&lt;/a&gt;&lt;a title="Imperial Gardens, Tokyo, Japan" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LmaWCXo1QFE/S7SsLJFxArI/AAAAAAAAKaI/hIIfgugE98E/s1600/DSC02047.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 160px;" src="http://4.bp.blogspot.com/_LmaWCXo1QFE/S7SsLJFxArI/AAAAAAAAKaI/hIIfgugE98E/s200/DSC02047.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5455174356071154354" /&gt;&lt;/a&gt;&lt;a title="Beach, Vancouver, Canada" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LmaWCXo1QFE/S7PMoOqPjYI/AAAAAAAAKVQ/UO-_2FZEU6A/s1600/DSC04224.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 160px;" src="http://1.bp.blogspot.com/_LmaWCXo1QFE/S7PMoOqPjYI/AAAAAAAAKVQ/UO-_2FZEU6A/s200/DSC04224.JPG" alt="" id="BLOGGER_PHOTO_ID_5454928565177912706" border="0" /&gt;&lt;/a&gt;&lt;a title="Seawall, Vancouver, Canada" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LmaWCXo1QFE/S7QkmZuvkoI/AAAAAAAAKYY/U_WSIZlviv4/s1600/DSC04217-1.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 161px;" src="http://3.bp.blogspot.com/_LmaWCXo1QFE/S7QkmZuvkoI/AAAAAAAAKYY/U_WSIZlviv4/s200/DSC04217-1.JPG" alt="" id="BLOGGER_PHOTO_ID_5455025290813084290" border="0" /&gt;&lt;/a&gt;&lt;a title="Front Beach, Port O'connor, TX" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LmaWCXo1QFE/S7QPO8kiD9I/AAAAAAAAKWY/ocJu07j2dxU/s1600/DSC04597.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 160px;" src="http://4.bp.blogspot.com/_LmaWCXo1QFE/S7QPO8kiD9I/AAAAAAAAKWY/ocJu07j2dxU/s200/DSC04597.JPG" alt="" id="BLOGGER_PHOTO_ID_5455001798104453074" border="0" /&gt;&lt;/a&gt;&lt;a title="Boggy Bayou, Port O'connor, TX" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LmaWCXo1QFE/S7QQ8PbfovI/AAAAAAAAKWw/r9PvJQqZ0y0/s1600/DSC04623.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 160px;" src="http://2.bp.blogspot.com/_LmaWCXo1QFE/S7QQ8PbfovI/AAAAAAAAKWw/r9PvJQqZ0y0/s200/DSC04623.JPG" alt="" id="BLOGGER_PHOTO_ID_5455003675772560114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="clear: both;"&gt;&lt;/div&gt;&lt;a title="Space Needle, Seattle, WA" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LmaWCXo1QFE/S7QjqkN-f6I/AAAAAAAAKX4/70ZER9EgyYE/s1600/DSC04100-1.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 160px; height: 200px;" src="http://3.bp.blogspot.com/_LmaWCXo1QFE/S7QjqkN-f6I/AAAAAAAAKX4/70ZER9EgyYE/s200/DSC04100-1.JPG" alt="" id="BLOGGER_PHOTO_ID_5455024262836289442" border="0" /&gt;&lt;/a&gt;&lt;a title="Lynn Canyon, Vancouver, Canada" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LmaWCXo1QFE/S7QkZAiHV7I/AAAAAAAAKYI/N16JRxp6TkA/s1600/DSC04172-1.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 150px; height: 200px;" src="http://2.bp.blogspot.com/_LmaWCXo1QFE/S7QkZAiHV7I/AAAAAAAAKYI/N16JRxp6TkA/s200/DSC04172-1.JPG" alt="" id="BLOGGER_PHOTO_ID_5455025060710930354" border="0" /&gt;&lt;/a&gt;&lt;a title="Stanley Park, Vancouver, Canada" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LmaWCXo1QFE/S7QkwjFic5I/AAAAAAAAKYg/heg_j23Fv1w/s1600/DSC04248-1.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 160px; height: 200px;" src="http://3.bp.blogspot.com/_LmaWCXo1QFE/S7QkwjFic5I/AAAAAAAAKYg/heg_j23Fv1w/s200/DSC04248-1.JPG" alt="" id="BLOGGER_PHOTO_ID_5455025465123304338" border="0" /&gt;&lt;/a&gt;&lt;a title="Yamanote Line, Tokyo, Japan" rel="shadowbox[gallery]" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LmaWCXo1QFE/S7PJNaqA5II/AAAAAAAAKUY/fmRt-_GCL-g/s1600/DSC01719.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 160px; height: 200px;" src="http://3.bp.blogspot.com/_LmaWCXo1QFE/S7PJNaqA5II/AAAAAAAAKUY/fmRt-_GCL-g/s200/DSC01719.JPG" alt="" id="BLOGGER_PHOTO_ID_5454924806006826114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="clear: both;"&gt;&lt;/div&gt;&lt;small&gt;Images © 2010 Ryon Sherman. All rights reserved.&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;I have &lt;a href="http://picasaweb.google.com/ryon.sherman"&gt;hundreds&lt;/a&gt; of other unedited photos just waiting to be appreciated. More to come soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-4242387822217313812?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/4242387822217313812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2010/03/photography-portfolio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/4242387822217313812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/4242387822217313812'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2010/03/photography-portfolio.html' title='Photography Portfolio'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LmaWCXo1QFE/S7PDEPz23YI/AAAAAAAAKTY/3i5uLwGNpZM/s72-c/dsc00755.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-1916075819270386318</id><published>2010-01-14T19:16:00.002-06:00</published><updated>2010-01-14T03:20:17.624-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='random'/><title type='text'>Hey! Is That My Phone Is Ringing?</title><content type='html'>Sound familiar? You've probably been hanging out with a group of friends and set your phone down absentmindedly. Next thing you know the entire house is yelling, "Who's phone is this?!", as you desperately dash to silence the embarrassing ring tone spotlighting your return.&lt;br /&gt;&lt;br /&gt;I thought, if my phone is such a "Smart"phone...why can't it announce to whom it belongs? Why can't it instruct someone to come get me if I'm not around? Well, now it does just that!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ringtone&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object type="application/x-shockwave-flash" data="http://sites.google.com/site/ryonsherman/player.swf" id="audioplayer1" height="24" width="290"&gt;&lt;br /&gt;&lt;param name="movie" value="http://sites.google.com/site/ryonsherman/player.swf"&gt;&lt;br /&gt;&lt;param name="FlashVars" value="playerID=1&amp;amp;soundFile=http://sites.google.com/site/ryonsherman/ringtone.mp3"&gt;&lt;br /&gt;&lt;param name="quality" value="high"&gt;&lt;br /&gt;&lt;param name="menu" value="false"&gt;&lt;br /&gt;&lt;param name="wmode" value="transparent"&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Transcript&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;Hey! Hey everybody! I'm ringing! This is Ryon's phone and I'm ringing right now!&lt;br /&gt;&lt;br /&gt;Man, I sure hope he picks me up. It could be someone important, you know? So...if Ryon's not around...you think maybe you could go get him?&lt;br /&gt;&lt;br /&gt;Or, maybe it's someone he's trying to avoid! I mean, if I'm still ringing by this point...that has to be the reason, right?&lt;br /&gt;&lt;br /&gt;Where is he? Oh well, I tried.&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Tip&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can change the length of time your phone rings before forwarding to voice mail by issuing the &lt;abbr title="Man Machine Interface"&gt;MMI&lt;/abbr&gt; code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;**61*&lt;span style="font-weight: bold;"&gt;voicemail&lt;/span&gt;*11*&lt;span style="font-weight: bold;"&gt;seconds&lt;/span&gt;#&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If nothing else, this gets a good laugh out of strangers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-1916075819270386318?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/1916075819270386318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2010/01/hey-someones-phone-is-ringing.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/1916075819270386318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/1916075819270386318'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2010/01/hey-someones-phone-is-ringing.html' title='Hey! Is That My Phone Is Ringing?'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-4667168436398226842</id><published>2009-07-02T19:00:00.021-05:00</published><updated>2010-09-05T00:27:58.422-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bittorrent'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>uTorrent Bridge: A Modular µTorrent™ WebUI Bridge</title><content type='html'>In my last post I said, "&lt;em&gt;Maybe, with some help, a universal bridge library could come from this?&lt;/em&gt;". Well, this is my official call for help. I present to you...&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;"&lt;strong&gt;&lt;a href="http://utorrent-bridge.googlecode.com/"&gt;uTorrent Bridge&lt;/a&gt;&lt;/strong&gt;: allows you to perform native &lt;a href="http://www.utorrent.com/"&gt;µTorrent&lt;/a&gt; WebUI requests on non-native servers. This enables the use of µTorrent remotes such as &lt;a href="http://uremote.blogspot.com/"&gt;µRemote&lt;/a&gt; and &lt;a href="http://torrent-fu.com/"&gt;Torrent-fu&lt;/a&gt; on non-µTorrent servers."&lt;/em&gt;&lt;/blockquote&gt;The name needs work, but I've created a &lt;a href="http://utorrent-bridge.googlecode.com/"&gt;Google Code Page&lt;/a&gt; in hopes that this can evolve into something truly useful. Useful to few maybe...but useful none the less!&lt;br /&gt;&lt;br /&gt;The reason I've chosen to adapt other servers to &lt;a href="http://www.utorrent.com/"&gt;uTorrent&lt;/a&gt; clients is that uTorrent is primarily the client of choice for Windows users. Because of this, it has a &lt;a href="http://forum.utorrent.com/viewtopic.php?id=33186"&gt;large selection&lt;/a&gt; of clients and tools that interact through it's web interface. Since I'd rather not spend the time creating similar clients for lesser used servers, I decided to let the uTorrent client developers do that job and I'd just...bridge the gap!&lt;br /&gt;&lt;br /&gt;Basically, my previous ut-rt-bridge and ut-tf-bridge projects are now dead. But uTorrent Bridge is alive and I need your help. You can find all the information you need at the &lt;a href="http://utorrent-bridge.googlecode.com/"&gt;project page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Demonstration&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="360" width="580"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Qljcef-5q00&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Qljcef-5q00&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="360" width="580"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Requirements:&lt;/em&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;small&gt;PHP &gt;= 5&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Zip: &lt;img style="width: 16px; height: 16px;" src="http://wiki.famfamfam.googlecode.com/hg/images/page_white_zip.png" alt="" border="0" /&gt; &lt;small&gt;[244 KB] &lt;a href="http://utorrent-bridge.googlecode.com/files/utorrent_bridge-0.2.0.zip"&gt;utorrent_bridge-0.2.0.zip&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;em&gt;md5&lt;/em&gt;: &lt;code&gt;2f509e6196edffe6cb3dd0f4ee850d9f&lt;/code&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Gzip: &lt;img style="width: 16px; height: 16px;" src="http://wiki.famfamfam.googlecode.com/hg/images/page_white_tux.png" alt="" border="0" /&gt; &lt;small&gt;[179 KB] &lt;a href="http://utorrent-bridge.googlecode.com/files/utorrent_bridge-0.2.0.tar.gz"&gt;utorrent_bridge-0.2.0.tar.gz&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;em&gt;md5&lt;/em&gt;: &lt;code&gt;36017159373388d50fd01ba6192579eb&lt;/code&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Bzip2: &lt;img style="width: 16px; height: 16px;" src="http://wiki.famfamfam.googlecode.com/hg/images/page_white_tux.png" alt="" border="0" /&gt; &lt;small&gt;[82.9 KB] &lt;a href="http://utorrent-bridge.googlecode.com/files/utorrent_bridge-0.2.0.tar.bz2"&gt;utorrent_bridge-0.2.0.tar.bz2&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;em&gt;md5&lt;/em&gt;: &lt;code&gt;c30a69130301ed218b42a0590b0b0075&lt;/code&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Google Code: &lt;img style="width: 16px; height: 16px;" src="http://wiki.famfamfam.googlecode.com/hg/images/page_white_code.png" alt="" border="0" /&gt; &lt;small&gt;&lt;a href="http://code.google.com/p/utorrent-bridge/source/browse/"&gt;http://utorrent-bridge.googlecode.com&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;em&gt;&lt;a href="http://subversion.tigris.org/"&gt;SVN&lt;/a&gt;&lt;/em&gt;: &lt;code&gt;svn checkout http://utorrent-bridge.googlecode.com/svn/trunk/ utorrent-bridge-read-only&lt;/code&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Update!&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;uTorrent Bridge has gained some publicity thanks to it's supporters. So, I've decided to clean up my original code to cut out some nonsense...as well as some naming confusions caused by using a client as a server.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://torrent-fu.com/"&gt;&lt;strong&gt;Torrent-Fu&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://torrent-fu.com/2009/08/07/ut-bridge-adds-utorrent-webui-support-for-rtorrent/"&gt;&lt;img style="cursor: pointer; width: 400px; height: 131px;" src="http://4.bp.blogspot.com/_LmaWCXo1QFE/SyVbT81pSwI/AAAAAAAAJNU/xNe_n1wQpvI/s400/torrent-fu.png" alt="" id="BLOGGER_PHOTO_ID_5414834525289663234" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-4667168436398226842?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/4667168436398226842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/07/ut-bridge-modular-utorrent-bridge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/4667168436398226842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/4667168436398226842'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/07/ut-bridge-modular-utorrent-bridge.html' title='uTorrent Bridge: A Modular µTorrent™ WebUI Bridge'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LmaWCXo1QFE/SyVbT81pSwI/AAAAAAAAJNU/xNe_n1wQpvI/s72-c/torrent-fu.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-5210169822256358692</id><published>2009-06-02T21:01:00.008-05:00</published><updated>2010-05-12T14:42:24.909-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bittorrent'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>uTorrent to TorrentFlux Bridge</title><content type='html'>&lt;a href="http://www.utorrent.com/"&gt;uTorrent&lt;/a&gt; is to Windows users as &lt;a href="http://tf-b4rt.berlios.de/"&gt;TorrentFlux&lt;/a&gt; is to Linux users. They both have a convenient web interface equipped with transfer controls. TorrentFlux is a bit more extensive, but uTorrent has always had a big advantage in my opinion: Remotes. There's a huge list of &lt;a href="http://forum.utorrent.com/viewtopic.php?id=33186"&gt;community projects&lt;/a&gt; built from the collective &lt;a href="http://forum.utorrent.com/viewtopic.php?id=25661"&gt;WebUI API&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Every time I'd see a fancy remote application for my phone like &lt;a href="http://www.neondemon.com/archives/android-app-torrent-fu"&gt;Torrent FU&lt;/a&gt; or for my work computer like &lt;a href="http://uremote.blogspot.com/"&gt;uRemote&lt;/a&gt; I'd spend hours thinking of ways to copy them for TorrentFlux. Finally I realized a more effecient solution: A bridge to translate uTorrent request &lt;abbr title="Uniform Resource Identifier"&gt;URI&lt;/abbr&gt;s into TorrentFlux URIs and vice-versa.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;UPDATE!&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;This project has been merged into a new project!&lt;br /&gt;Read the &lt;a href="http://ryonsherman.blogspot.com/2009/07/ut-bridge-modular-utorrent-bridge.html"&gt;announcement&lt;/a&gt; of the &lt;a href="http://code.google.com/p/utorrent-bridge/"&gt;new project&lt;/a&gt;.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;UPDATE!&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;hr /&gt;&lt;br /&gt;&lt;strong&gt;ut-tf-bridge&lt;/strong&gt; receives commands from the uTorrent remote, performs the requested actions on a TorrentFlux server, and returns the transfer data to the uTorrent remote. A more detailed breakdown of the process follows:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;uTorrent Remote&lt;/span&gt; → http://torrentflux-server/gui/?list=1 → &lt;span style="color: rgb(0, 128, 0);"&gt;ut-tf-bridge&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;ut-tf-bridge&lt;/span&gt; → http://torrentflux-server/stats.php?f=xml&amp;amp;t=transfers → &lt;span style="color: rgb(51, 102, 255);"&gt;TorrentFlux Server&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;TorrentFlux Server&lt;/span&gt; → &lt;abbr title="Extensible Markup Language"&gt;XML&lt;/abbr&gt; → &lt;span style="color: rgb(0, 128, 0);"&gt;ut-tf-bridge&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;ut-tf-bridge&lt;/span&gt; → &lt;abbr title="JavaScript Object Notation"&gt;JSON&lt;/abbr&gt; → &lt;span style="color: rgb(255, 0, 0);"&gt;uTorrent Remote&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;In order to perform actions such as Start Transfer or Stop Transfer authentication is required. Username and Password values may are passed as a basic HTTP authentication header. Currently the bridge can perform these actions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Stop&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pause&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unpause&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Force Start&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Recheck&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Remove&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Remove With Data&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Set Priority (untested)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add File by URL&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Maybe, with some help, a universal bridge library could come from this?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-5210169822256358692?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/5210169822256358692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/utorrent-to-torrentflux-bridge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/5210169822256358692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/5210169822256358692'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/utorrent-to-torrentflux-bridge.html' title='uTorrent to TorrentFlux Bridge'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-2429971130205830363</id><published>2009-05-21T22:53:00.010-05:00</published><updated>2010-03-09T17:22:50.992-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Export World of Warcraft Calendar To iCal</title><content type='html'>Late to raids? Miss your favorite Battleground weekend? Now you can receive alerts from your favorite calendar application by importing the &lt;a href="http://en.wikipedia.org/wiki/ICalendar"&gt;iCal&lt;/a&gt; file created by this World of Warcraft Calendar Export Tool.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;WoWCal&lt;/strong&gt; is a PHP script that parses the &lt;abbr title="JavaScript Object Notation"&gt;JSON&lt;/abbr&gt; retrieved from the &lt;a href="http://www.worldofwarcraft.com/"&gt;World of Warcraft&lt;/a&gt; &lt;a href="http://www.wowarmory.com/"&gt;Armory&lt;/a&gt; and creates a basic iCal file of your in-game events.&lt;br /&gt;&lt;br /&gt;Calendars can be specified by:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Realm&lt;/li&gt;&lt;li&gt;Character&lt;/li&gt;&lt;li&gt;Calendar Type&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Screenshots&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LmaWCXo1QFE/Sx6PcSY6mqI/AAAAAAAAJMM/JLsC_35tZmE/s1600-h/gmail_agenda.png"&gt;&lt;img style="cursor: pointer; width: 266px; height: 320px;" src="http://4.bp.blogspot.com/_LmaWCXo1QFE/Sx6PcSY6mqI/AAAAAAAAJMM/JLsC_35tZmE/s320/gmail_agenda.png" alt="" id="BLOGGER_PHOTO_ID_5412921518281366178" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LmaWCXo1QFE/Sx6P9HFc5RI/AAAAAAAAJMU/BgP4wxpctI8/s1600-h/gmail_detail.png"&gt; &lt;img style="cursor: pointer; width: 320px; height: 216px;" src="http://1.bp.blogspot.com/_LmaWCXo1QFE/Sx6P9HFc5RI/AAAAAAAAJMU/BgP4wxpctI8/s320/gmail_detail.png" alt="" id="BLOGGER_PHOTO_ID_5412922082182620434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;WoW iCal imported into Google Calendar.&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Requirements:&lt;/em&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;small&gt;PHP &gt;= 5&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;small&gt;PHP cURL extension&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Zip: &lt;img style="width: 16px; height: 16px;" src="http://wiki.famfamfam.googlecode.com/hg/images/page_white_zip.png" alt="" border="0" /&gt; &lt;small&gt;[5.7 KB] &lt;a href="http://wowcal.googlecode.com/files/wowcal-1.0.2.zip"&gt;wowcal-1.0.2.zip&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;em&gt;md5&lt;/em&gt;: &lt;code&gt;0deb2789fa504c5110b75315875d2edd&lt;/code&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Gzip: &lt;img style="width: 16px; height: 16px;" src="http://wiki.famfamfam.googlecode.com/hg/images/page_white_tux.png" alt="" border="0" /&gt; &lt;small&gt;[5.3 KB] &lt;a href="http://wowcal.googlecode.com/files/wowcal-1.0.2.tar.gz"&gt;wowcal-1.0.2.tar.gz&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;em&gt;md5&lt;/em&gt;: &lt;code&gt;2485c36b05208b8f5ebd867695709c47&lt;/code&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Bzip2: &lt;img style="width: 16px; height: 16px;" src="http://wiki.famfamfam.googlecode.com/hg/images/page_white_tux.png" alt="" border="0" /&gt; &lt;small&gt;[5.3 KB] &lt;a href="http://wowcal.googlecode.com/files/wowcal-1.0.2.tar.bz2"&gt;wowcal-1.0.2.tar.bz2&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;em&gt;md5&lt;/em&gt;: &lt;code&gt;9a63c004fec500c55f0e123ab4200757&lt;/code&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Google Code: &lt;img style="width: 16px; height: 16px;" src="http://wiki.famfamfam.googlecode.com/hg/images/page_white_code.png" alt="" border="0" /&gt; &lt;small&gt;&lt;a href="http://code.google.com/p/wowcal/source/browse/"&gt;http://wowcal.googlecode.com&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;em&gt;&lt;a href="http://subversion.tigris.org/"&gt;SVN&lt;/a&gt;&lt;/em&gt;: &lt;code&gt;svn checkout http://wowcal.googlecode.com/svn/trunk/ wowcal-read-only&lt;/code&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Update!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;It seems the WoW Armory now supports the ability to export your calendars. After logging you will find an RSS export link under your calendar section:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LmaWCXo1QFE/S5bW79KtU_I/AAAAAAAAKNQ/qmxwHaCJiMk/s1600-h/wow_calendar_export.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 160px;" src="http://1.bp.blogspot.com/_LmaWCXo1QFE/S5bW79KtU_I/AAAAAAAAKNQ/qmxwHaCJiMk/s400/wow_calendar_export.png" alt="" id="BLOGGER_PHOTO_ID_5446777124871295986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This page can be accessed directly by using the following address:&lt;br /&gt;http://www.wowarmory.com/vault/calendar-feed.xml?cn=&lt;span style="font-weight: bold;"&gt;Character&lt;/span&gt;&amp;amp;r=&lt;span style="font-weight: bold;"&gt;Realm&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Feed options support multiple characters, and event filtering.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-2429971130205830363?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/2429971130205830363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/05/export-world-of-warcraft-calendar-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/2429971130205830363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/2429971130205830363'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/05/export-world-of-warcraft-calendar-to.html' title='Export World of Warcraft Calendar To iCal'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LmaWCXo1QFE/Sx6PcSY6mqI/AAAAAAAAJMM/JLsC_35tZmE/s72-c/gmail_agenda.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-2320541508002199724</id><published>2009-05-10T20:56:00.011-05:00</published><updated>2009-12-13T14:43:10.935-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='codeigniter'/><title type='text'>MSSQL Extended Properties Library for CodeIgniter</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems"&gt;Microsoft SQL Server&lt;/a&gt; may not be the best of choice of database system but I'm required to use it at work. So, I make the best of things. Here I'll show you a simple library for utilizing user-defined properties in your database.&lt;br /&gt;&lt;br /&gt;See, MSSQL has a nifty feature: &lt;a href="http://msdn.microsoft.com/en-us/library/aa224810%28SQL.80%29.aspx"&gt;Extended Properties&lt;/a&gt;. Meta-data stored for each field in a table. I use these properties to store information such as form display name, input type, row order, and help text. This opens the door to many possibilities. Such as a custom scaffolding library!&lt;br /&gt;&lt;br /&gt;Adding fields to a form is as simple as adding a field in the database and setting it's extended properties. To ease the task of modifying these properties I developed a management system that allows most any element of a form to be changed without having to modify any actual code. Even the SQL query for a select element's options can be automatically generated or set manually from this interface.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Library&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There library is fairly cut and dry. It only contains get and set methods, but really it doesn't need to do more than become the bridge between your PHP code and a field's potential meta-data.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Load the library:&lt;br /&gt;&lt;pre class="brush: php; gutter: false;"&gt;$this-&gt;load-&gt;library('extended_property');&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Set a property:&lt;br /&gt;&lt;pre class="brush: php; gutter: false;"&gt;$this-&gt;extended_property-&gt;set('table', 'field', 'PROPERTY', 'value');&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Get a property:&lt;br /&gt;&lt;pre class="brush: php; gutter: false;"&gt;$property_value = $this-&gt;extended_property-&gt;get('table', 'field', 'PROPERTY');&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Source Code&lt;/strong&gt;&lt;br /&gt;&lt;pre class="brush: php;"&gt;class Extended_property {&lt;br /&gt;&lt;br /&gt;   var $CI;&lt;br /&gt;&lt;br /&gt;   function Extended_property()&lt;br /&gt;   {&lt;br /&gt;      this-&gt;CI =&amp;amp; get_instance();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   function get($table, $column, $property)&lt;br /&gt;   {&lt;br /&gt;      $result = $this-&gt;CI-&gt;db&lt;br /&gt;           -&gt;query('&lt;br /&gt;                SELECT value&lt;br /&gt;                FROM ::fn_listextendedproperty(&lt;br /&gt;                     N\''.$property.'\',&lt;br /&gt;                     N\'user\', N\'dbo\',&lt;br /&gt;                     N\'table\', N\''.$table.'\',&lt;br /&gt;                     N\'column\', N\''.$column.'\')')&lt;br /&gt;           -&gt;limit(1)&lt;br /&gt;           -&gt;row();&lt;br /&gt;&lt;br /&gt;      return (!empty(@$result-&gt;value)) ? $result-&gt;value : false;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   function set($table, $column, $property, $value)&lt;br /&gt;   {&lt;br /&gt;      $this-&gt;CI-&gt;db&lt;br /&gt;           -&gt;query('&lt;br /&gt;                IF EXISTS(&lt;br /&gt;                     SELECT value&lt;br /&gt;                     FROM ::fn_listextendedproperty(&lt;br /&gt;                          N\''.$property.'\',&lt;br /&gt;                          N\'user\', N\'dbo\',&lt;br /&gt;                          N\'table\', N\''.$table.'\',&lt;br /&gt;                          N\'column\', N\''.$column.'\'))&lt;br /&gt;                EXEC sp_dropextendedproperty&lt;br /&gt;                     N\''.$property.'\',&lt;br /&gt;                     N\'user\', N\'dbo\',&lt;br /&gt;                     N\'table\', N\''.$table.'\',&lt;br /&gt;                     N\'column\', N\''.$column.'\';&lt;br /&gt;                EXEC sp_addextendedproperty&lt;br /&gt;                     N\''.$property.'\', N\''.$value.'\',&lt;br /&gt;                     N\'user\', N\'dbo\',&lt;br /&gt;                     N\'table\', N\''.$table.'\',&lt;br /&gt;                     N\'column\', N\''.$column.'\'');&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;Instead of updating a property, I decided to check if it exists and then drop it before adding a new one. This is because &lt;code&gt;sp_updateextendedproperty&lt;/code&gt; throws and error when trying to update a property that does not yet exist.&lt;br /&gt;&lt;br /&gt;I searched the Internet and couldn't locate any information on accessing MSSQL extended properties within CodeIgniter other than handwritten queries. So, if a library exists, point me to it. Until then, this does a fine job for me and maybe you can benefit from it as well!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-2320541508002199724?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/2320541508002199724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/05/mssql-extended-properties-library-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/2320541508002199724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/2320541508002199724'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/05/mssql-extended-properties-library-for.html' title='MSSQL Extended Properties Library for CodeIgniter'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-940414537137603112</id><published>2009-04-23T22:27:00.002-05:00</published><updated>2010-09-05T00:25:47.519-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bittorrent'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>FluxPhone - Mobile TorrentFlux Monitor</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="#"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer; width: 315px; height: 279px;" src="http://2.bp.blogspot.com/_LmaWCXo1QFE/Sx6AWIVl5SI/AAAAAAAAJME/0PoQB12lL3o/s320/fluxphone.png" alt="" id="BLOGGER_PHOTO_ID_5412904919829439778" border="0" /&gt;&lt;/a&gt;&lt;a href="http://tf-b4rt.berlios.de/"&gt;Torrentflux&lt;/a&gt; is a nice way to handle your torrents when you're out and about, but the web interface is quite clumsy on my Android's mobile browser. So, I created an interface loosely fashioned after the &lt;a href="http://www.davidraso.com/utorrent-iphone/"&gt;iPhone Web Interface for uTorrent&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This interface is simply a PHP script hosted on the same web server running Torrentflux. Icons change depending on the transfer's status and rows expand when selected to display detailed information. Currently it supports torrent search, rss feeds, transfer monitoring, and media browsing.&lt;br /&gt;&lt;br /&gt;The core is a PHP class I wrote for polling various data from the TorrentFlux XML file. Once fully documented you can download it here.&lt;br /&gt;&lt;br /&gt;The installation and configuration is a little too specific for me to release for the time being, but if you have Torrentflux-b4rt (original untested) with XML stats enabled and are interested, please leave a comment and I'll send you a copy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-940414537137603112?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/940414537137603112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/04/fluxphone-mobile-torrentflux-monitor.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/940414537137603112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/940414537137603112'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/04/fluxphone-mobile-torrentflux-monitor.html' title='FluxPhone - Mobile TorrentFlux Monitor'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LmaWCXo1QFE/Sx6AWIVl5SI/AAAAAAAAJME/0PoQB12lL3o/s72-c/fluxphone.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-5119755085352163605</id><published>2009-04-22T22:55:00.007-05:00</published><updated>2010-01-14T02:30:56.884-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='brainfuck'/><title type='text'>Brainfuck Code Generation Using PHP</title><content type='html'>"The &lt;a href="http://en.wikipedia.org/wiki/Brainfuck"&gt;Brainfuck&lt;/a&gt; language is a programming language noted for its extreme minimalism. Designed to challenge and amuse programmers, it is not suitable for practical use."... But it sure is fun!&lt;br /&gt;&lt;br /&gt;After reading the article &lt;em&gt;&lt;a href="http://www.fullduplex.org/humor/2006/10/how-to-shoot-yourself-in-the-foot-in-any-programming-language/"&gt;How to Shoot Yourself in the Foot in Any Programming Language&lt;/a&gt;&lt;/em&gt;, I was challenged to learn this language due to it's confusing syntax. Turns out, it's pretty simple. If you understand arrays and pointers then you've got it. I can definitely see how it can be a pain to use though. One misplaced "&gt;" and you're left searching through a maze of pointers.&lt;br /&gt;&lt;br /&gt;I created this script using PHP to convert plain text into BF code. Use it to pass messages to your friends...well nerdy friends.&lt;br /&gt;&lt;pre class="brush: php;"&gt;if(!$text = @$argv[1]) die('Usage: '.$argv[0].' text');&lt;br /&gt;&lt;br /&gt;$string = '++++++++++[';&lt;br /&gt;&lt;br /&gt;for($i = 0; $i &lt; strlen($text); $i++) {&lt;br /&gt;     $value = ord($text[$i]);&lt;br /&gt;     $remainder = $value % 10;&lt;br /&gt;     $value -= $remainder;&lt;br /&gt;&lt;br /&gt;     if($value &gt; 10) {&lt;br /&gt;          $string .= '&gt;';&lt;br /&gt;          for($x = 0; $x &lt; $value / 10; $x++)&lt;br /&gt;               $string .= '+';&lt;br /&gt;     }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;for($i = 0; $i &lt; strlen($text); $i++) {&lt;br /&gt;     $value = ord($text[$i]);&lt;br /&gt;     $remainder = $value % 10;&lt;br /&gt;     $value -= $remainder;&lt;br /&gt;&lt;br /&gt;     if($value &gt; 10)&lt;br /&gt;          $string .= '&lt;';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$string .= '-]';&lt;br /&gt;&lt;br /&gt;for($i = 0; $i &lt; strlen($text); $i++) {&lt;br /&gt;     $value = ord($text[$i]);&lt;br /&gt;     $remainder = $value % 10;&lt;br /&gt;     $value -= $remainder;&lt;br /&gt;&lt;br /&gt;     $string .= '&gt;';&lt;br /&gt;     for($x = 0; $x &lt; $remainder; $x++)&lt;br /&gt;          $string .= '+';&lt;br /&gt;     $string .= '.';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;echo $string;&lt;/pre&gt;Example output of &lt;code&gt;php script.php "http://ryonsherman.blogspot.com"&lt;/code&gt;:&lt;pre class="brush: plain;"&gt;++++++++++[&gt;++++++++++&gt;+++++++++++&gt;+++++++++++&gt;+++++++++++&gt;+++++&gt;++++&gt;++++&gt;+++&lt;br /&gt;++++++++&gt;++++++++++++&gt;+++++++++++&gt;+++++++++++&gt;+++++++++++&gt;++++++++++&gt;++++++++++&gt;++++&lt;br /&gt;+++++++&gt;++++++++++&gt;+++++++++&gt;+++++++++++&gt;++++&gt;+++++++++&gt;++++++++++&gt;+++++++++++&gt;+++++&lt;br /&gt;+++++&gt;+++++++++++&gt;+++++++++++&gt;+++++++++++&gt;+++++++++++&gt;++++&gt;+++++++++&gt;+++++++++++&gt;+++&lt;br /&gt;+++++++&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;-]&gt;++++.&gt;++++++.&gt;++++++.&gt;++.&gt;++++++++.&gt;+++++++&lt;br /&gt;.&gt;+++++++.&gt;++++.&gt;+.&gt;+.&gt;.&gt;+++++.&gt;++++.&gt;+.&gt;++++.&gt;+++++++++.&gt;+++++++.&gt;.&gt;++++++.&gt;+++++++&lt;br /&gt;+.&gt;++++++++.&gt;+.&gt;+++.&gt;+++++.&gt;++.&gt;+.&gt;++++++.&gt;++++++.&gt;+++++++++.&gt;+.&gt;+++++++++.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-5119755085352163605?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/5119755085352163605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/brainfuck-language-is-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/5119755085352163605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/5119755085352163605'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/brainfuck-language-is-programming.html' title='Brainfuck Code Generation Using PHP'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-4398005168402266657</id><published>2009-03-27T20:35:00.007-05:00</published><updated>2010-01-14T02:37:31.114-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>Append Forward-Slash to Symlink Directories</title><content type='html'>By default Bash will not append a trailing forward-slash to symbolic links pointed at directories. This is because a symlink is seen as a file instead of a directory. Adding the following line to your &lt;code&gt;~/.inputrc&lt;/code&gt; will add this missing forward-slash and make your terminal use a little faster:&lt;br /&gt;&lt;pre class="brush: bash; gutter: false;"&gt;set mark-symlinked-directories on&lt;/pre&gt;&lt;small&gt;This and other great Bash tips found at &lt;a href="http://www.pedrodiaz.com/cs/linux/bashtips.php"&gt;Bash Tips &amp;amp; tricks&lt;/a&gt;.&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong style="color: rgb(255, 0, 0);"&gt;Update&lt;/strong&gt;: &lt;span style="font-weight: bold;"&gt;Home/End Key Fix&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After changing this setting you may notice your Home and End keys stop working, if so try including the following lines in your &lt;code&gt;~/.inputrc&lt;/code&gt;:&lt;br /&gt;&lt;pre class="brush: bash; gutter: false;"&gt;"\e[1~": beginning-of-line&lt;br /&gt;"\e[4~": end-of-line&lt;/pre&gt;&lt;small&gt;This and other fixes thanks to &lt;a href="http://crazygreek.co.uk/content/inputrc"&gt;The Crazy Greek&lt;/a&gt;.&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-4398005168402266657?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/4398005168402266657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/append-forward-slash-to-symlink-tab.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/4398005168402266657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/4398005168402266657'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/append-forward-slash-to-symlink-tab.html' title='Append Forward-Slash to Symlink Directories'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-84325107893568140</id><published>2009-01-07T23:06:00.003-06:00</published><updated>2009-12-13T14:34:27.354-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Visual Code Representation Using PHP</title><content type='html'>I sometimes get the feeling I should have been a graphics programmer rather than a web programmer. I always seem to get some sort of satisfaction from communicating data visually.  Aside from the quickly outdated &lt;a href="http://www.phpclasses.org/browse/package/4299.html"&gt;GoogleGraph&lt;/a&gt; class I wrote to wrap the Google Chart API, nothing I've created in this field have rendered useful. But this doesn't stop me from dreaming up new ways of using the GD libraries.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SteganoCrypt:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LmaWCXo1QFE/SxV5_hPv17I/AAAAAAAAJKE/JIHlzKlHxPo/s1600/cookie.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="http://1.bp.blogspot.com/_LmaWCXo1QFE/SxV5_hPv17I/AAAAAAAAJKE/JIHlzKlHxPo/s320/cookie.png" border="0" /&gt;&lt;/a&gt;My first adventure with GD was steganography. I wanted to create a way of hiding data within the color values of randomly generated pixels.  I became completely consumed.  Over the span of a week I had added more and more methods of encoding until...my brain exploded.  SteganoCrypt (I'm a pro at choosing cheesy camel-cased project names) had it all:  multiple substitution ciphers, integrity check bits, password protection.  All self contained within the colored pixels of an otherwise scrambled image.  Maybe one day I will dig the source out of my CVS attic and post it here. Until then, have a crack at an encrypted message. If you can manage to decipher it, you'll win a cookie.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Character Representation:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_LmaWCXo1QFE/SxV7fei7cVI/AAAAAAAAJKU/e2RjIUiROOY/s1600/ryonshermanwordpresscom.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_LmaWCXo1QFE/SxV7fei7cVI/AAAAAAAAJKU/e2RjIUiROOY/s200/ryonshermanwordpresscom.png" border="0" /&gt;&lt;/a&gt;&lt;/div&gt; Today I wanted to see what a website would look like after multiple character occurrences are organized and color coded.  Each span of color represents the amount of similar characters used throughout the  code, placed in order by first occurrence. The more 'A's there are, the longer a span of color. As you can see the spans become shorter as the code progresses because less frequently used characters are picked up later in the process.  Image width is determined by the amount of total characters in the code.  Here is this actual post after processing.  I don't know what character &lt;code&gt;#2F1400&lt;/code&gt; represents, but apparently I use it a lot.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Google vs. Yahoo vs. MSN Comparison:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LmaWCXo1QFE/SxV-CC80KzI/AAAAAAAAJK0/5dEe6wtS8sw/s1600/wwwgooglecom.png"&gt;&lt;img style="cursor: pointer; width: 58px; height: 100px;" src="http://4.bp.blogspot.com/_LmaWCXo1QFE/SxV-CC80KzI/AAAAAAAAJK0/5dEe6wtS8sw/s400/wwwgooglecom.png" alt="" id="BLOGGER_PHOTO_ID_5410369100972305202" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LmaWCXo1QFE/SxV-TNAskoI/AAAAAAAAJK8/eLE2ylMGXdQ/s1600/wwwyahoocom.png"&gt;&lt;img style="cursor: pointer; width: 95px; height: 100px;" src="http://4.bp.blogspot.com/_LmaWCXo1QFE/SxV-TNAskoI/AAAAAAAAJK8/eLE2ylMGXdQ/s400/wwwyahoocom.png" alt="" id="BLOGGER_PHOTO_ID_5410369395730715266" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LmaWCXo1QFE/SxV-bxI-_OI/AAAAAAAAJLE/BbmOJRNJBuE/s1600/wwwmsncom.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 100px;" src="http://1.bp.blogspot.com/_LmaWCXo1QFE/SxV-bxI-_OI/AAAAAAAAJLE/BbmOJRNJBuE/s400/wwwmsncom.png" alt="" id="BLOGGER_PHOTO_ID_5410369542868106466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While completely useless, this does give an interesting perspective of bloat.  It can essentially be duplicated with:&lt;br /&gt;&lt;pre class="brush: php; gutter: false;"&gt;echo strlen(file_get_contents('http://website'));&lt;/pre&gt;The three white pixels at the end of each span were added last second to help differentiate colors.  Rather than an attached file, I present to you the thrown together code.&lt;br /&gt;&lt;pre class="brush: php;"&gt;$file = file_get_contents('http://ryonsherman.blogspot.com');&lt;br /&gt;&lt;br /&gt;$width = strlen($file) / 100;&lt;br /&gt;$height = strlen($file) / $width;&lt;br /&gt;&lt;br /&gt;$seed = ord($file[strlen($file)/2]);&lt;br /&gt;&lt;br /&gt;$img = imagecreatetruecolor($width, $height);&lt;br /&gt;$white = imagecolorallocate($img, 255, 255, 255);&lt;br /&gt;&lt;br /&gt;$chars = array();&lt;br /&gt;for($i = 0; $i &lt; x =" -1;" y =" 0;" index =""&gt; $count) {&lt;br /&gt;    $r = $g = $b = $index;&lt;br /&gt;    $g *= $seed * 1.5;&lt;br /&gt;    $b *= $seed * 2;&lt;br /&gt;    $color = imagecolorallocate($img, $r, $g, $b);&lt;br /&gt;&lt;br /&gt;    for($i = 0; $i &lt; $count; $i++) {            ($x &gt; $width) ? eval('$x = 0; $y++;') : $x++;&lt;br /&gt;         imagesetpixel($img, $x, $y, (in_array($i, array($count-1, $count-2, $count-3))) ? $white : $color);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;header('Content-type: image/png');&lt;br /&gt;imagepng($img);&lt;br /&gt;imagedestroy($img);&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-84325107893568140?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/84325107893568140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/01/visual-code-representation-using-php.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/84325107893568140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/84325107893568140'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/01/visual-code-representation-using-php.html' title='Visual Code Representation Using PHP'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LmaWCXo1QFE/SxV5_hPv17I/AAAAAAAAJKE/JIHlzKlHxPo/s72-c/cookie.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-2175346949530422044</id><published>2009-01-07T00:51:00.021-06:00</published><updated>2010-01-14T02:36:46.105-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bittorrent'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Torify Torrentflux-b4rt</title><content type='html'>&lt;a href="http://tf-b4rt.berlios.de/"&gt;Torrentflux-b4rt&lt;/a&gt; is a web based transfer control client.  Nothing is more convenient than starting a new download from anywhere, at anytime.  Whether it be from a work computer, a friend's computer, or a phone, having this installed on your server is a godsend.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"&lt;a href="http://www.torproject.org/"&gt;Tor&lt;/a&gt; is a software project that helps you defend against traffic analysis.  Though some consider the use of bittorrent over Tor to be counter to the goals of the Tor project, this article does not seek to answer the questions about the validity of any protocol over the Tor network but merely how to do it.  Also, be aware that the BT protocol itself my reveal a nodes real IP.  Be informed about the technologies you use."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;Installation of Torrentflux-b4rt is beyond the scope of this article. Please see &lt;em&gt;&lt;a href="http://server-servers.com/install-torrentflux-b4rt-on-ubuntu/"&gt;How to Setup Ubuntu Torrent Server&lt;/a&gt;&lt;/em&gt;.&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Package Installation&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Install the Tor and Privoxy packages.&lt;br /&gt;&lt;pre class="brush: bash; gutter: false;"&gt;sudo apt-get install tor privoxy&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Edit the Privoxy config file to forward requests to Tor&lt;br /&gt;&lt;pre class="brush: bash; gutter: false;"&gt;sudo nano /etc/privoxy/config&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Uncomment or add the the following line in the Forwarding section:&lt;br /&gt;&lt;pre class="brush: bash; gutter: false;"&gt;forward-socks4a / localhost:9050 .&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Save and close the file while remembering to restart the Privoxy service.&lt;br /&gt;&lt;pre class="brush: bash; gutter: false;"&gt;sudo /etc/init.d/privoxy restart&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Custom BitTornado Client Hack&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Edit the following file located in the Torrentflux-b4rt directory:&lt;br /&gt;&lt;pre class="brush: bash; gutter: false;"&gt;sudo nano /html/bin/clients/tornado/BitTornado/zurllib.py&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Add the following to the &lt;code&gt;connect()&lt;/code&gt; method defined within the &lt;code&gt;btHTTPcon&lt;/code&gt; class:&lt;br /&gt;&lt;pre class="brush: python;"&gt;self.host = '127.0.0.1'&lt;br /&gt;self.port = 8118&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;The full method should now read:&lt;br /&gt;&lt;pre class="brush: python;"&gt;def connect(self):&lt;br /&gt;   # proxy hack start&lt;br /&gt;   self.host = '127.0.0.1'&lt;br /&gt;   self.port = 8118&lt;br /&gt;   # proxy hack end&lt;br /&gt;   HTTPConnection.connect(self)&lt;br /&gt;   try:&lt;br /&gt;        self.sock.settimeout(30)&lt;br /&gt;   except:&lt;br /&gt;        pass&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Now alter the the &lt;code&gt;_open()&lt;/code&gt; method defined within the &lt;code&gt;urlopen&lt;/code&gt; class:&lt;br /&gt;&lt;pre class="brush: python;"&gt;self.connection.request('GET', scheme + '://' + netloc + url, None, { 'User-Agent': VERSION, 'Accept-Encoding': 'gzip' } )&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;You can test if your trackers are being routed through Tor by enabling the &lt;code&gt;logfile&lt;/code&gt; option in &lt;code&gt;/etc/privoxy/config.&lt;/code&gt;&lt;br /&gt;&lt;pre class="brush: bash;"&gt;tail -50f /var/log/privoxy/logfile&lt;br /&gt;Mon DD HH:MM:SS.mmm Privoxy(437c4950) Request: vip.tracker.thepiratebay.org/announce?info_hash=%198un61bQ%102%7B%0Are%93C%9BD%93%A9%F6%C4%DB%AC%D8&amp;amp;peer_id=T13I-----e.0jIFpqnF7&amp;amp;port=49297&amp;amp;uploaded=138199040&amp;amp;downloaded=686426112&amp;amp;left=50331648&amp;amp;no_peer_id=1&amp;amp;compact=1&amp;amp;key=UKf9P-&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Update&lt;/span&gt;: zurllib Patch File&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Patch: &lt;img style="width: 16px; height: 16px;" src="http://wiki.famfamfam.googlecode.com/hg/images/page_white_add.png" alt="" border="0" /&gt; &lt;small&gt;(864 b) &lt;a href="http://utorrent-bridge.googlecode.com/files/zurllib.patch"&gt;zurllib.patch&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;small&gt;&lt;em&gt;md5&lt;/em&gt;: &lt;code&gt;7bbb38bdf74a1dbdf7517d129af22e11&lt;/code&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Copy patch to &lt;code&gt;/html/bin/clients/tornado/BitTornado/&lt;/code&gt; directory and type:&lt;br /&gt;&lt;pre class="brush: bash; gutter: false;"&gt;patch -p0 &amp;lt; zurllib.patch&lt;/pre&gt;The custom BitTornado source included with TorrentFlux hasn't been updated in quite some time. If this patch doesn't work for you please comment and I'll try to supply a new one quickly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-2175346949530422044?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/2175346949530422044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/01/torify-torrentflux-b4rt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/2175346949530422044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/2175346949530422044'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/01/torify-torrentflux-b4rt.html' title='Torify Torrentflux-b4rt'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-1684814730134261058</id><published>2009-01-06T20:47:00.006-06:00</published><updated>2009-12-13T15:37:16.857-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Custom MOTD Generation in Ubuntu</title><content type='html'>There was once a time when I was enthralled with Linux; Building Gentoo from scratch, customizing every possible configuration for optimization,  compiling binaries and such. I'd spent hours perfecting my &lt;abbr title="American National Standards Institute"&gt;ANSI&lt;/abbr&gt; &lt;abbr title="Message of the Day"&gt;MOTD&lt;/abbr&gt; using carefully placed escape sequences. It was beautiful.&lt;br /&gt;&lt;br /&gt;But the novelty wears, and as I fell to the dark side of precompiled binaries, my motivation toward fancy MOTDs waned as well. Here I will show you a simple method of presenting colorful ANSI logos at login in Ubuntu.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Install the binary from repository.&lt;br /&gt;&lt;pre class="brush: bash; gutter: false;"&gt;sudo apt-get install welcome2l&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Redirect the output of the binary to the system's MOTD file.&lt;br /&gt;&lt;pre class="brush: bash; gutter: false;"&gt;sudo welcome2l &amp;gt; /etc/motd&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;Alternatively, you can use "Linux_Logo" which creates the following displays:&lt;ul&gt;&lt;li&gt;Debian Swirl(default)&lt;/li&gt;&lt;li&gt;Debian Banner&lt;/li&gt;&lt;li&gt;Tux Classic and Banner&lt;/li&gt;&lt;/ul&gt;&lt;pre class="brush: bash; gutter: false;"&gt;sudo apt-get install linuxlogo&lt;br /&gt;sudo linux_logo &gt; /etc/motd&lt;/pre&gt;Now each user logging in will be greeted with a colorful ANSI MOTD along with the system's Kernel Version, Architecture, Available Memory, and optionally (&lt;code&gt;welcome2l -private&lt;/code&gt;) an Unauthorized Access message.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LmaWCXo1QFE/SxWEcvCcxFI/AAAAAAAAJLM/Q7uNTVRObOQ/s1600/welcome2l.png"&gt;&lt;img style="cursor: pointer; width: 300px; height: 165px;" src="http://2.bp.blogspot.com/_LmaWCXo1QFE/SxWEcvCcxFI/AAAAAAAAJLM/Q7uNTVRObOQ/s200/welcome2l.png" alt="" id="BLOGGER_PHOTO_ID_5410376156553462866" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LmaWCXo1QFE/SxWEjVuLhLI/AAAAAAAAJLU/0OokRWPaN9Q/s1600/linux_logo.png"&gt; &lt;img style="cursor: pointer; width: 300px; height: 165px;" src="http://4.bp.blogspot.com/_LmaWCXo1QFE/SxWEjVuLhLI/AAAAAAAAJLU/0OokRWPaN9Q/s200/linux_logo.png" alt="" id="BLOGGER_PHOTO_ID_5410376270016644274" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-1684814730134261058?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/1684814730134261058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/customize-your-ubuntu-motd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/1684814730134261058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/1684814730134261058'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/customize-your-ubuntu-motd.html' title='Custom MOTD Generation in Ubuntu'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LmaWCXo1QFE/SxWEcvCcxFI/AAAAAAAAJLM/Q7uNTVRObOQ/s72-c/welcome2l.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-8058148424550808554</id><published>2009-01-06T20:17:00.000-06:00</published><updated>2009-12-08T11:03:07.365-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>My Personal Linux Server</title><content type='html'>It's no beast, but it's more important than my left leg.  With a 2.2Ghz x86_64 AMD LE-1600 processor, 2Gb RAM, and just under 3Tb of combined disk capacity all on a 3Mb /s connection...my home server isn't breaking any speed records (actually I'm considering some upgrades as I write this).  But you can find me logged in to it more often than WoW.&lt;br /&gt;&lt;br /&gt;Other than the standard "cookie cutter" services like &lt;a href="http://httpd.apache.org/"&gt;Apache2&lt;/a&gt;, &lt;a href="http://www.openssh.com/"&gt;OpenSSH&lt;/a&gt;, &lt;a href="http://www.proftpd.org/"&gt;ProFTPD&lt;/a&gt;, etc. I have a number of other applications that make everyday life easier.  I have decided to maintain a list of applications that have survived multiple re-installations.  The following can be considered recommendations, requirements, or life support...in my case.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Web-based Services:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://tf-b4rt.berlios.de/"&gt;Torrentflux-b4rt&lt;/a&gt; - A BitTorrent and Internet transfer web control application.&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.jinzora.com/"&gt;Jinzora&lt;/a&gt; - A web based media streaming and management system.&lt;/li&gt;&lt;li&gt;&lt;a href="http://autoindex.sourceforge.net/"&gt;AutoIndex&lt;/a&gt; - A website directory indexer and file manager.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.zoneminder.com/"&gt;Zoneminder&lt;/a&gt; - Linux home CCTV and video camera security with motion detection.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Console Applications:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://htop.sourceforge.net/"&gt;htop&lt;/a&gt; - An interactive process viewer for Linux.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gnu.org/software/screen/"&gt;screen&lt;/a&gt; - Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells.&lt;/li&gt;&lt;li&gt;&lt;a href="http://freshmeat.net/projects/ccze/"&gt;ccze&lt;/a&gt; - A robust and modular log colorizer.&lt;/li&gt;&lt;li&gt;&lt;a href="http://packages.ubuntu.com/hardy/localepurge"&gt;localepurge&lt;/a&gt; - Automagically remove unnecessary locale data.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Local Services:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/sentrytools/"&gt;portsentry&lt;/a&gt; - An attack detection tool developed by &lt;span class="body"&gt;Psionic Technologies (now a part of &lt;a href="http://www.cisco.com/"&gt;Cisco&lt;/a&gt;).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.snort.org/"&gt;snort&lt;/a&gt; - The de facto standard for intrusion detection/prevention.&lt;/li&gt;&lt;li&gt;&lt;a href="http://oinkmaster.sourceforge.net/"&gt;oinkmaster&lt;/a&gt; - Oinkmaster is a script that will help you update and manage your Snort rules.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.privoxy.org/"&gt;privoxy&lt;/a&gt; - A non-caching  web proxy  with advanced filtering capabilities.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Network Diagram: &lt;/strong&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LmaWCXo1QFE/SxVwFvn3ELI/AAAAAAAAJJs/NWdP7IHtpqM/s1600/home_network1.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 319px;" src="http://1.bp.blogspot.com/_LmaWCXo1QFE/SxVwFvn3ELI/AAAAAAAAJJs/NWdP7IHtpqM/s400/home_network1.png" alt="" id="BLOGGER_PHOTO_ID_5410353771340828850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;(Created with &lt;a href="http://live.gnome.org/Dia"&gt;Dia&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-8058148424550808554?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/8058148424550808554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/my-ubuntu-804-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/8058148424550808554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/8058148424550808554'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/my-ubuntu-804-server.html' title='My Personal Linux Server'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LmaWCXo1QFE/SxVwFvn3ELI/AAAAAAAAJJs/NWdP7IHtpqM/s72-c/home_network1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-6055485049531370310</id><published>2009-01-05T18:02:00.013-06:00</published><updated>2010-09-05T00:45:35.443-05:00</updated><title type='text'>My Restless Brain</title><content type='html'>At this corner of my blog I will be posting ideas as they manifest in my brain and my current progress on them. You are welcome to steal these ideas under the condition that you please post a link to the final product as I may get some use from them. Or, if you're willing to participate in an &lt;a href="http://en.wikipedia.org/wiki/Open_source"&gt;Open Source&lt;/a&gt; project I'd be more than happy to contribute.&lt;br /&gt;&lt;br /&gt;Also note that these projects are generally developed in my leisure and, unless enough interest is shown, will probably never leave an "Alpha" phase.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;strong&gt;Projects:&lt;/strong&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Hellapyn&lt;/strong&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Pre-Alpha&lt;/span&gt;&lt;/small&gt; - Ncurses interface for &lt;small&gt;&lt;a href="http://hellanzb.com/"&gt;Hellanzb&lt;/a&gt;&lt;/small&gt;.- &lt;small&gt;(Python)&lt;/small&gt;&lt;ul&gt;&lt;li&gt;Code lost. &lt;small&gt;&lt;a href="http://sourceforge.net/dbimage.php?id=236934"&gt;Screenshot&lt;/a&gt;&lt;/small&gt; was uploaded to &lt;small&gt;&lt;a href="http://sourceforge.net/projects/hellapyn/"&gt;SourceForge&lt;/a&gt;&lt;/small&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;VCW Tracking System&lt;/strong&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Dead&lt;/strong&gt;&lt;/span&gt;&lt;/small&gt; - Unit tracking system developed for commercial cabinet company. - &lt;small&gt;(PHP, HTML, CSS)&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;LTagger&lt;/strong&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Dead&lt;/strong&gt;&lt;/span&gt;&lt;/small&gt; - Tool for organizing and renaming MP3's according to the information stored in their ID3v1/ID3v2 tags. - &lt;small&gt;(Python, wxPython)&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TabAps&lt;/strong&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;Proof Of Concept&lt;/span&gt;&lt;/small&gt; - Tab completion of access points in Bash shell.  - &lt;small&gt;(PHP, Bash)&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ryonsherman.blogspot.com/2009/01/visual-code-representation-using-php.html"&gt;SteganoCrypt&lt;/a&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;Proof Of Concept&lt;/span&gt;&lt;/small&gt; - Encrypt messages into random pixels of an image. - &lt;small&gt;(PHP)&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;RSS Command Line Interface&lt;/strong&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Dead&lt;/strong&gt;&lt;/span&gt;&lt;/small&gt;&lt;span style="color: rgb(255, 204, 0);"&gt; &lt;/span&gt;- Command line interface to RSS feed generator. - &lt;small&gt;(PHP, Bash)&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.phpclasses.org/browse/package/4299.html"&gt;GoogleGraph&lt;/a&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Dead&lt;/strong&gt;&lt;/span&gt;&lt;/small&gt; - PHP wrapper to the Google Chart API. - &lt;small&gt;(PHP)&lt;/small&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;small&gt;&lt;a href="http://www.phpclasses.org/browse/package/4602.html"&gt;QGoogle Chart&lt;/a&gt;&lt;/small&gt; fork by Tom Schaefer.&lt;/li&gt;&lt;li&gt;&lt;small&gt;&lt;a href="http://www.askaboutphp.com/51/codeigniter-helpers-plugins-and-libraries.html"&gt;CodeIgniter Helper&lt;/a&gt;&lt;/small&gt; example by Eldee.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;BugWatch&lt;/strong&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Dead&lt;/strong&gt;&lt;/span&gt;&lt;/small&gt;&lt;span style="color: rgb(255, 204, 0);"&gt; &lt;/span&gt;- System tray Bugzilla monitor with new bug alerts and built in work timer.  - &lt;small&gt;(Python, wxPython)&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ryonsherman.blogspot.com/2009/04/fluxphone-mobile-torrentflux-monitor.html"&gt;FluxPhone&lt;/a&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Dead&lt;/strong&gt;&lt;/span&gt;&lt;/small&gt;&lt;span style="color: rgb(255, 204, 0);"&gt; &lt;/span&gt;- TorrentFlux Monitor for Smart Phones. - &lt;small&gt;(PHP)&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://utorrent-bridge.googlecode.com/"&gt;uTorrent Bridge&lt;/a&gt; - &lt;small&gt;&lt;span style="color: rgb(153, 204, 0);"&gt;Beta&lt;/span&gt;&lt;/small&gt; - Open Source: allows you to perform native &lt;small&gt;&lt;a href="http://www.utorrent.com/"&gt;uTorrent&lt;/a&gt;&lt;/small&gt; WebUI requests on non-native servers. - &lt;small&gt;(PHP, JSON)&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ryonsherman.blogspot.com/2009/05/export-world-of-warcraft-calendar-to.html"&gt;WoWCal&lt;/a&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Dead&lt;/strong&gt;&lt;/span&gt;&lt;/small&gt; - World of Warcraft Calendar Export tool. - &lt;small&gt;(PHP)&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mologanalyzer.googlecode.com/"&gt;MoLogAnalyzer&lt;/a&gt; - &lt;small&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;Alpha&lt;/span&gt;&lt;/small&gt; - &lt;small&gt;&lt;a href="http://developer.berlios.de/projects/moblock/"&gt;MoBlock&lt;/a&gt;&lt;/small&gt; Log Analyzer. - &lt;small&gt;(PHP)&lt;/small&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Please browse my projects and comment on your thoughts. I always welcome feedback.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;On a side note&lt;/span&gt;: This page is a perfect demonstration of my propensity for using cheesy CamelCase project names.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-6055485049531370310?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryonsherman.blogspot.com/feeds/6055485049531370310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ryonsherman.blogspot.com/2009/01/my-restless-brain.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/6055485049531370310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/6055485049531370310'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/01/my-restless-brain.html' title='My Restless Brain'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-5432295718179866183</id><published>2009-01-05T18:01:00.016-06:00</published><updated>2010-06-24T06:10:30.507-05:00</updated><title type='text'>How to Stalk Me</title><content type='html'>Since more and more information can be found about me through a simple Google &lt;a href="http://www.google.com/#q=%27ryon%20sherman%27"&gt;search&lt;/a&gt;. I decided to compile a list of places you may find me around the net.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www.google.com/profiles/ryon.sherman"&gt;Google Profile&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www.youtube.com/user/ryonsherman"&gt;Youtube&lt;/a&gt;&lt;/strong&gt; - Share your videos with friends, family, and the world.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www.last.fm/user/ryonsherman"&gt;Last.fm&lt;/a&gt;&lt;/strong&gt; - The world's largest online music catalog, with free music streaming, videos, pictures, charts, artist biographies, concerts and internet radio.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www.linkedin.com/in/ryonsherman"&gt;LinkedIn&lt;/a&gt;&lt;/strong&gt; - Find past and present colleagues and classmates quickly. Discover inside connections when you’re looking for a job or new business opportunity.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://code.google.com/u/ryon.sherman/"&gt;Google Code&lt;/a&gt;&lt;/strong&gt; - Project Hosting on Google Code is fast, reliable, and easy open source hosting service.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www.phpclasses.org/browse/author/545255.html"&gt;PHP Classes&lt;/a&gt;&lt;/strong&gt; - PHP Classes Repository is a service created in 1999 as a means of distributing freely available programming classes of objects written in the Web scripting language named PHP.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www.stumbleupon.com/stumbler/ryonsherman/"&gt;StumbleUpon&lt;/a&gt;&lt;/strong&gt; - Free web-browser extension which acts as an intelligent browsing tool for discovering and sharing web sites.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www.facebook.com/people/Ryon-Sherman/586951280"&gt;Facebook&lt;/a&gt;&lt;/strong&gt; - Facebook's mission is to give people the power to share and make the world more open and connected.&lt;br /&gt;&lt;br /&gt;&lt;a title="Ryon Sherman's Facebook Profile" href="http://www.facebook.com/ryon.sherman" target="_TOP"&gt;&lt;img style="border: 0pt none;" src="http://badge.facebook.com/badge/586951280.762.1255452950.png" alt="Ryon Sherman's Facebook Profile" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://live.xbox.com/member/ryonsherman"&gt;Xbox LIVE&lt;/a&gt;&lt;/strong&gt; - The Ultimate Broadband Gaming Experience that lets you play multiplayer Xbox games live using broadband Internet access (cable or DSL).&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://gamercard.xbox.com/ryonsherman.card" frameborder="0" height="140" scrolling="no" width="204"&gt;Put your gamertag here too.&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://profile.xfire.com/ryonsherman"&gt;Xfire&lt;/a&gt;&lt;/strong&gt; - Track, message, and talk to your gaming friends, join them in games, browse servers, take screenshots and download patches.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://profile.xfire.com/ryonsherman"&gt;&lt;img src="http://miniprofile.xfire.com/bg/sf/type/1/ryonsherman.png" alt="" width="277" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www.wowhead.com/user=ryonsherman#characters"&gt;Wowhead&lt;/a&gt;&lt;/strong&gt; - A World of Warcraft (WoW) database site with items, quests, forums, news, profiles, quest-tracking, a talent calculator, and more.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www.geocaching.com/profile/?guid=2c9fd417-7018-4e68-8843-6022d3b789f1"&gt;Geocaching&lt;/a&gt;&lt;/strong&gt; - Treasure hunting game where you use a GPS to hide and seek containers with other participants in the activity.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.geocaching.com/profile/?guid=2c9fd417-7018-4e68-8843-6022d3b789f1"&gt;&lt;img style="border: 0pt none;" src="http://img.geocaching.com/stats/img.aspx?txt=View+my+profile&amp;uid=2c9fd417-7018-4e68-8843-6022d3b789f1" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="http://boincstats.com/stats/boinc_user_graph.php?pr=bo&amp;amp;id=1476757"&gt;BOINC&lt;/a&gt;&lt;/strong&gt; - Use the idle time on your computer (Windows, Mac, or Linux) to cure diseases, study global warming, discover pulsars, and do many other types of scientific research.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://boincstats.com/stats/boinc_user_graph.php?pr=bo&amp;amp;id=1476757"&gt;&lt;img style="border: 0pt none;" src="http://www.boincstats.com/signature/user_bam48347.png" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-5432295718179866183?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/5432295718179866183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/5432295718179866183'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/01/how-to-stalk-me.html' title='How to Stalk Me'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-1715085583441615713.post-5913557081175710514</id><published>2009-01-05T18:00:00.003-06:00</published><updated>2009-12-29T16:13:18.038-06:00</updated><title type='text'>In the Beginning...</title><content type='html'>For the longest time I viewed blogs as a complete waste of time.  A trend carried on the shoulders of artsy elitists. A place where teenage girls write about the difficulties of high school life and hopeful artists write mediocre fictional stories.&lt;br /&gt;&lt;br /&gt;Then I came to the realization that some of my most frequented websites are in fact blogs.  The web has evolved into a mass of shared personal knowledge.  Bots scan and distribute posts in multiple languages all across the world.  An RSS feed in Australia alerts a phone in New York.  The knowledge and experience I've gained can be grossly attributed to blogs and I feel it is now my duty to contribute as well.&lt;br /&gt;&lt;br /&gt;I was driving home from work the day I started this blog and started to wonder.  Almost anything you post online becomes permanent. Information becomes cached, archived, translated, burned, and forgotten.  Long after I cease to exist, the words I type remain online...somewhere.  So, what information have I read that surpassed it's authors life span?  What stranger has taught me lessons, techniques, and ideas that I use in my everyday life?&lt;br /&gt;&lt;br /&gt;I've never been a skilled writer but I'm willing to do my best if you're willing to read.  I may be confusing to some, and ignorant to others. But, if one person refers to my blog in order to solve a problem or gain an idea...I am a teacher.&lt;br /&gt;&lt;br /&gt;Information fuels evolution.  Google is only a gateway. This is my piece of immortality.&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1715085583441615713-5913557081175710514?l=ryonsherman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/5913557081175710514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1715085583441615713/posts/default/5913557081175710514'/><link rel='alternate' type='text/html' href='http://ryonsherman.blogspot.com/2009/12/in-beginning.html' title='In the Beginning...'/><author><name>Ryon Sherman</name><uri>https://profiles.google.com/114742976764245783238</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-wfMlthnueqs/AAAAAAAAAAI/AAAAAAAAKxI/EN1AbalvblU/s512-c/photo.jpg'/></author></entry></feed>
