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

<channel>
	<title>TechnoGeeks &#187; Software</title>
	<atom:link href="http://techno-geeks.org/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://techno-geeks.org</link>
	<description>A fusion of technology, music, and geekyness.</description>
	<lastBuildDate>Sat, 04 Sep 2010 08:17:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Forward Network Traffic With Iptables</title>
		<link>http://techno-geeks.org/2010/08/forward-network-traffic-with-iptables/</link>
		<comments>http://techno-geeks.org/2010/08/forward-network-traffic-with-iptables/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 13:10:26 +0000</pubDate>
		<dc:creator>jesse</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[traffic forwarding]]></category>
		<category><![CDATA[web hosting]]></category>

		<guid isPermaLink="false">http://techno-geeks.org/?p=486</guid>
		<description><![CDATA[From time to time I come across something truly amazing that I just must share no matter how tired I am. Even though they are typically very simple it helps me remember in the future and I hope it also helps others out wfhen they have the same problems that I do. I recently migrated [...]]]></description>
			<content:encoded><![CDATA[<p>From time to time I come across something truly amazing that I just must share no matter how tired I am. Even though they are typically very simple it helps me remember in the future and I hope it also helps others out wfhen they have the same problems that I do. I recently migrated a server from Slicehost to Linode and I wanted to find a quick and easy way to forward web traffic on various ports to the new server while DNS caught up. The answer was simple&#8230; iptables. I found this in an article <a href="http://www.debuntu.org/how-to-redirecting-network-traffic-a-new-ip-using-iptables">here</a>.</p>
<pre class="brush: bash;">
echo &quot;1&quot; &gt; /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 1.2.3.4:80
iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination 1.2.3.4:3306
iptables -t nat -A POSTROUTING -j MASQUERADE
</pre>
]]></content:encoded>
			<wfw:commentRss>http://techno-geeks.org/2010/08/forward-network-traffic-with-iptables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux Disk Imaging with Clonezilla and PXE</title>
		<link>http://techno-geeks.org/2010/07/linux-disk-imaging-with-clonezilla-and-pxe/</link>
		<comments>http://techno-geeks.org/2010/07/linux-disk-imaging-with-clonezilla-and-pxe/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 12:21:55 +0000</pubDate>
		<dc:creator>jesse</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Clonezilla]]></category>
		<category><![CDATA[DHCP]]></category>
		<category><![CDATA[Disk Imaging]]></category>
		<category><![CDATA[PXE]]></category>
		<category><![CDATA[TFTP]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://techno-geeks.org/?p=472</guid>
		<description><![CDATA[Now that I finally have a file server at home I got curious again with disk imaging solutions. After doing some research I found a pretty awesome tool called Clonezilla. After downloading the live CD and playing around for a while the first thing I wanted to do was test it out in a PXE [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I finally have a file server at home I got curious again with disk imaging solutions. After doing some research I found a pretty awesome tool called <a href="http://clonezilla.org/">Clonezilla</a>. After downloading the live CD and playing around for a while the first thing I wanted to do was test it out in a PXE boot fashion. Here was my quick and hackish approach. My test run was on a VirtualBox VM in Xubuntu 10.04 with a bridged adapter.</p>
<p>1. Install TFTP server</p>
<pre class="brush: bash;">
sudo apt-get install tftpd-hpa
sudo start tftpd-hpa
</pre>
<p>Ensure /var/lib/tftpboot exists. If it does not:</p>
<pre class="brush: bash;">
mkdir -p /var/lib/tftpboot
</pre>
<p>Ensure that the values in /etc/defaults/tftpd-hpa match.</p>
<p>2. Install DHCP server</p>
<pre class="brush: bash;">
sudo apt-get install dhcp3-server
sudo vim /etc/dhcp3/dhcpd.conf
</pre>
<p>Add something similar to the following&#8230;</p>
<pre class="brush: bash;">
default-lease-time 86400;
max-lease-time 604800;
authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.10 192.168.1.15;
        filename &quot;pxelinux.0&quot;;
        next-server 192.168.1.121;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.1.255;
        option routers 192.168.1.1;
}
</pre>
<pre class="brush: bash;">
sudo service dhcp3-server start
</pre>
<p>The next-server option needs to be the IP of the TFTP server. Everything else should be self explanatory.</p>
<p>Before proceeding verify both services are listening.</p>
<pre class="brush: bash;">
sudo netstat -upan | awk  '{print $6}'
2008/dhcpd3
582/dhclient
3627/in.tftpd
</pre>
<p>3. Install syslinux if it is not already (it should be). Copy over pxelinux.0 into the appropriate location.</p>
<pre class="brush: bash;">
sudo apt-get install syslinux
sudo cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot
</pre>
<p>4. Download latest clonezilla zip from <a href="http://clonezilla.org/download/sourceforge/">SourceForge</a>.</p>
<pre class="brush: bash;">
sudo unzip clonezilla-live-*.zip
sudo cp live/vmlinuz /var/lib/tftpboot/
sudo cp live/initrd.img /var/lib/tftpboot/
sudo cp live/filesystem.squashfs /var/lib/tftpboot/
cd /var/lib/tftpboot
sudo touch boot.txt
sudo mkdir pxelinux.cfg
sudo touch pxelinux.cfg/default
</pre>
<p>Your tree should end up looking something like this in the end:</p>
<pre class="brush: bash;">
├── boot.txt
├── filesystem.squashfs
├── initrd.img
├── pxelinux.0
├── pxelinux.cfg
│   └── default
└── vmlinuz
</pre>
<p>5. Create configs</p>
<pre class="brush: bash;">
sudo vim boot.txt
</pre>
<p>I made my menu look something like the following&#8230;</p>
<pre class="brush: bash;">

========================================================================

 .d8888b.  888                                    d8b 888 888
d88P  Y88b 888                                    Y8P 888 888
888    888 888                                        888 888
888        888  .d88b.  88888b.   .d88b. 88888888 888 888 888  8888b.
888        888 d88&quot;&quot;88b 888 &quot;88b d8P  Y8b   d88P  888 888 888     &quot;88b
888    888 888 888  888 888  888 88888888  d88P   888 888 888 .d888888
Y88b  d88P 888 Y88..88P 888  888 Y8b.     d88P    888 888 888 888  888
 &quot;Y8888P&quot;  888  &quot;Y88P&quot;  888  888  &quot;Y8888 88888888 888 888 888 &quot;Y888888 

======== Boot Options: ================================================

&gt;&gt; clonezilla ......... Regular Boot
&gt;&gt; clonezilla_safe .... Failsafe Mode

=======================================================================
</pre>
<p>And finally the pxe config&#8230;</p>
<pre class="brush: bash;">
sudo vim pxelinux.cfg/default
</pre>
<p>Looked something like this:</p>
<pre class="brush: bash;">
DISPLAY boot.txt

LABEL clonezilla
	kernel vmlinuz
	append initrd=initrd.img boot=live union=aufs noswap noprompt vga=788 fetch=tftp://192.168.1.121/filesystem.squashfs

LABEL clonezilla_safe
	kernel vmlinuz
	append initrd=initrd.img boot=live union=aufs noswap noprompt vga=normal nomodeset nosplash fetch=tftp://192.168.1.121/filesystem.squashfs

PROMPT 1
TIMEOUT 0
</pre>
<p>Please note that the IP address should be the IP of the TFTP server!</p>
<p>Now testing with a Dell Latitude E6410 I hit F12 on the BIOS screen, Select Network Adapter, and SUCCESS! You should see your boot.txt with a &#8220;boot:&#8221; prompt. Please share your experiences and alternative implementations on how you solved this issue. I would love to hear them!</p>
<p>My Test results:<br />
250 GB (239.9 GB after formatting)<br />
67.7 GB in use<br />
175.2 GB free<br />
Transfer Rate: Started at 900 MB/min at first, peaked at 1.91 GB/min, ended at 1.72GB/min, average 1.7 GB/min<br />
Time elapsed: 37 minutes, 41 seconds</p>
]]></content:encoded>
			<wfw:commentRss>http://techno-geeks.org/2010/07/linux-disk-imaging-with-clonezilla-and-pxe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Possible Migration from Ubuntu to Gentoo Linux (Nope, Arch!)</title>
		<link>http://techno-geeks.org/2010/04/possible-migration-from-ubuntu-to-gentoo-linux/</link>
		<comments>http://techno-geeks.org/2010/04/possible-migration-from-ubuntu-to-gentoo-linux/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 14:29:43 +0000</pubDate>
		<dc:creator>jesse</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[xfce]]></category>

		<guid isPermaLink="false">http://techno-geeks.org/?p=447</guid>
		<description><![CDATA[I have been giving it a lot of thought recently. I have been using Ubuntu for a couple years now and I think I am ready to move on. I haven&#8217;t tried Gentoo since college and I thought that tonight was a good night to check in on it. I was worried that it may [...]]]></description>
			<content:encoded><![CDATA[<p>I have been giving it a lot of thought recently. I have been using Ubuntu for a couple years now and I think I am ready to move on. I haven&#8217;t tried Gentoo since college and I thought that tonight was a good night to check in on it. I was worried that it may be somewhat dead and that no one used it anymore so I decided to see if they had a chat room on irc.freenode.net &#8211; boy was I suprised! The channel was booming! I am currently installing a test drive VM right now. The installation process is so refreshing. Tonight made me realize that I have really let myself go since college. I am sick of Ubuntu and how it constantly wipes my ass for me, but fails sometimes anyway. I currently am running Ubuntu 9.10 with Gnome and the plan is to migrate to Gentoo and Xfce. The following information illustrates my reasons for wanting to switch. Ones that weigh more for me are in bold.</p>
<p>Ubuntu 9.10 Pros:<br />
Just works<br />
<strong>Apt package management is speedy</strong><br />
Well supported<br />
Attractive<br />
I know it</p>
<p>Ubuntu 9.10 Cons:<br />
<strong>Does too much</strong><br />
<strong>Gnome is bloated</strong><br />
<strong>Deb package dependencies are crazy sometimes</strong><br />
Can be slow at times</p>
<p>Gentoo Pros:<br />
<strong>Very trim and lightweight</strong><br />
<strong>Forces you to learn and maintain general linux knowledge</strong><br />
Very flexible</p>
<p>Gentoo Cons:<br />
<strong>Takes FOREVER to compile packages and dependencies</strong><br />
Emerge can have issues<br />
Not for lazy people (and im pretty lazy)</p>
<p>As I write this post I am on step 9/10 of the install. I will provide updates as time goes on.</p>
<hr/>
<p><strong>Update 1:</strong><br />
I encountered three problems and got them all resolved. I am currently installing Xfce and xdm right now. The problems I faced:<br />
1. Changed password for root user for install, not chrooted gentoo environment.<br />
2. The install CD loads out of date drivers so hard drives show up as hda during install but sda during initial boot. This screwed up both GRUB and /etc/fstab.<br />
3. I forgot to compile my network card drivers into the kernel so my eth0 device didn&#8217;t exist. </p>
<p>I also found this quite interesting and hilarious (click on it to read):<br />
<a href="http://techno-geeks.org/wp-content/uploads/2010/04/gentoo_lol.png"><img src="http://techno-geeks.org/wp-content/uploads/2010/04/gentoo_lol-1024x94.png" alt="gentoo_lol" title="gentoo_lol" width="1024" height="94" class="aligncenter size-large wp-image-454" /></a></p>
<hr/>
<p><strong>Update 2:</strong><br />
Gentoo compiles are taking WAY too long and the installation takes 4+ hours to complete. This is just not an option these days, especially for my work laptop. I decided to give Arch + Xfce a shot and it was a breeze. I still feel like I get way more control than I did in Ubuntu without all of the bloat. I am going to try this out for a while and see how I like it. If for whatever reason I dislike it, I will be switching to Xubuntu and call it a day. </p>
<p>Selling points on Arch:<br />
The Arch Build System &#8211; Amazing!<br />
The Arch User Repositories, for must haves like my beloved google-chrome!<br />
Minimalistic approach</p>
<p>Kris I hope you are happy&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://techno-geeks.org/2010/04/possible-migration-from-ubuntu-to-gentoo-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Startup Script for Rails with WEBrick</title>
		<link>http://techno-geeks.org/2010/04/startup-script-for-rails-with-webrick/</link>
		<comments>http://techno-geeks.org/2010/04/startup-script-for-rails-with-webrick/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 12:41:08 +0000</pubDate>
		<dc:creator>jesse</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[WEBrick]]></category>

		<guid isPermaLink="false">http://techno-geeks.org/?p=439</guid>
		<description><![CDATA[I finally started playing with rails again. I decided to play around and start the basics of a billing application. I was initially debating web app versus a desktop app (rails vs ruby-gtk). I wanted a reason to finally start using rails so I decided to make it a web app. I then realized I [...]]]></description>
			<content:encoded><![CDATA[<p>I finally started playing with rails again. I decided to play around and start the basics of a billing application. I was initially debating web app versus a desktop app (rails vs ruby-gtk). I wanted a reason to finally start using rails so I decided to make it a web app. I then realized I may be able to simulate a desktop app with rails. I pulled in the base ruby packages, manually compiled RubyGems and installed necessary gems, and decided to script a startup routine so I could create a launcher on my desktop. This solution is far from perfect but it manages to fulfill my needs. My &#8220;desktop rails app&#8221; uses the built in standalone webserver WEBrick and sqlite3 for its backend.</p>
<pre class="brush: bash;">
#!/bin/bash
cd /home/jesse/rails/billing

if [ ! -f tmp/pids/server.pid ]; then
	script/server -d
fi

while [ `netstat -tan | grep 0.0.0.0:3000 | wc -l` != 1 ]; do
	echo &quot;Server not started yet...&quot;
	sleep 1
done

google-chrome http://localhost:3000/customers &amp;
tail -f log/development.log

# Server can be killed with:
# kill -INT `cat tmp/pids/server.pid`
</pre>
<p>I then created a launcher simliar to this:</p>
<p><a href="http://techno-geeks.org/wp-content/uploads/2010/04/launcher.png"><img src="http://techno-geeks.org/wp-content/uploads/2010/04/launcher.png" alt="launcher" title="launcher" width="552" height="495" class="aligncenter size-full wp-image-440" /></a></p>
<p>When I double click on the icon the first time it pauses for about 5-6 seconds while WEBrick initializes and binds to port 3000. As soon as it detects the webserver listening, I launch google-chrome to the default view. Each time I click the icon there after, the webserver is already running so the google-chrome tab kicks off instantly. </p>
]]></content:encoded>
			<wfw:commentRss>http://techno-geeks.org/2010/04/startup-script-for-rails-with-webrick/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>World of Warcraft in Ubuntu 9.10</title>
		<link>http://techno-geeks.org/2010/04/world-of-warcraft-in-ubuntu-9-10/</link>
		<comments>http://techno-geeks.org/2010/04/world-of-warcraft-in-ubuntu-9-10/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 10:53:58 +0000</pubDate>
		<dc:creator>jesse</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Wine]]></category>
		<category><![CDATA[World of Warcraft]]></category>
		<category><![CDATA[WoW]]></category>

		<guid isPermaLink="false">http://techno-geeks.org/?p=426</guid>
		<description><![CDATA[

Wine and Ubuntu have really come a long way. These days it is very easy to get World of Warcraft to smoothly run in Linux. I felt the need to write this guide for two reasons: one as a mark of my triumphant achievement, and two as a helpful guide for those looking to do [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://techno-geeks.org/wp-content/uploads/2010/04/wow-ubuntu.png"><img src="http://techno-geeks.org/wp-content/uploads/2010/04/wow-ubuntu-1024x576.png" alt="wow-ubuntu2" title="wow-ubuntu2" width="800" class="aligncenter size-large wp-image-430" /></a><br />
<a href="http://techno-geeks.org/wp-content/uploads/2010/04/wow-ubuntu2.png"><img src="http://techno-geeks.org/wp-content/uploads/2010/04/wow-ubuntu2-1024x576.png" alt="wow-ubuntu2" title="wow-ubuntu2" width="800" class="aligncenter size-large wp-image-430" /></a></p>
<p>Wine and Ubuntu have really come a long way. These days it is very easy to get World of Warcraft to smoothly run in Linux. I felt the need to write this guide for two reasons: one as a mark of my triumphant achievement, and two as a helpful guide for those looking to do the same. This walk through assumes the following.</p>
<ul>
<li>You do not have wine currently installed. If you do and it is not the wine1.2 package then World of Warcraft probably won&#8217;t run very well, if at all.</li>
<li>You currently have the restricted drivers installed for your video card</li>
<li>Your system is up to date.</li>
<li>You are running Ubuntu 9.10</li>
<li>The WoW current patch is not too far past 3.3.3</li>
<li>You have basic knowledge of Linux and understand how to use a terminal</li>
</ul>
<p><span style="font-weight: bold; color: red">Warning: This configuration worked great for my hardware. Other hardware configurations may need additional tweaking.</span></p>
<p>1. Before you start you must verify that your graphics card had DRI enabled.</p>
<pre class="brush: bash;">
glxinfo | grep rendering
</pre>
<p>If it returns &#8220;Yes&#8221; then you are all set. If it returns no I am not sure if you should continue with this guide.</p>
<p>2. Install Wine via apt</p>
<pre class="brush: bash;">
sudo apt-get install wine1.2
</pre>
<p>3. Download the Visual C++ Patch From Microsoft at <a href="http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&#038;displayLang=en">www.microsoft.com/downloads/en/confirmation.aspx?familyId=200b2fd9-ae1a-4a14-984d-389c36f85647&#038;displayLang=en</a>.</p>
<pre class="brush: bash;">
wine /home/username/Downloads/vcredist_x86.exe
</pre>
<p>Follow the prompts to install it and it will close when it has finished. This patch is needed to successfully download patches at a certain point for WoW to run.</p>
<p>4. Install World of Warcraft. There are several means available to do this. You can install from the CDs/DVDs you bought or if you are like me you will need to download the entire installation from Blizzard. I had to download the downloader at <a href="https://www.worldofwarcraft.com/account/download_wow.html">https://www.worldofwarcraft.com/account/download_wow.html</a>. For other methods of installation see the sources at the end of this article.</p>
<pre class="brush: bash;">
wine /home/username/Downloads/InstallWoW.exe
</pre>
<p>Choose Wrath of The Lich King when it prompts and keep going through the wizards. The downloader will eventually begin and you will have several hours (depending on your connection) to wait while it finishes. </p>
<p>5. Once the installation is complete, you will most likely want to edit the configuration to start WoW in OpenGL mode. </p>
<pre class="brush: bash;">
vim /home/username/.wine/Program\ Files/World\ of\ Warcraft/WTF/Config.wtf
</pre>
<p>Press the i key on your keyboard to go into insert mode. Add the following line to the <b>bottom</b> of the file.</p>
<p>SET gxAPI &#8220;OpenGL&#8221;</p>
<p>Press escape, type :wq, and press enter to save and exit the file.</p>
<p>6. Wine currently has permission issues with the World of Warcraft folder. If you ever notice WoW not starting after the launcher loads it is probably because the permissions somehow got screwed up on the folder. I have chosen to completely bypass the loader and I have also written a launcher script to make sure that WoW loads every time. Execute the following commands to start WoW for the first time.</p>
<pre class="brush: bash;">
chmod 755 /home/username/.wine/drive_c/Program\ Files/World\ of\ Warcraft/
wine &quot;C:\Program Files\World of Warcraft\WoW.exe&quot;
</pre>
<p>After some patience World of Warcraft will successfully load up. Get your initial video / audio configuration out of the way before the next step.</p>
<p>7. The endless loop: Login and it will force you to download a patch. You will have to complete this step approximately 5 or 6 times until all the patches have downloaded.</p>
<p>8. After all the of the patches have downloaded you should be good to go! Install all mods to /home/username/.wine/drive_c/Program\ Files/World\ of\ Warcraft/Interface/AddOns/. Keep in mind that by default in Gnome that your keyboard is configured to automatically repeat keys when held down by default. This will make your mounts and characters running seem strange. You can disable this temporarily by going to System -> Preferences -> Keyboard and unchecking &#8220;Key presses repeat&#8230;&#8221;</p>
<p>I hope this quick guide has helped you get World of Warcraft installed and running beautifully in Ubuntu. If you have additional issues with your installation and need help please see the following sources for additional assistance.</p>
<p><b>Sources</b></p>
<ul>
<li><a href="http://www.wowwiki.com/World_of_Warcraft_functionality_on_Wine">WoW Wiki: World of Warcraft functionality on Wine</a></li>
<li><a href="http://appdb.winehq.org/objectManager.php?sClass=version&#038;iId=18555">WineHQ: World of Warcraft 3.3.X</a></li>
<li><a href="https://help.ubuntu.com/community/WorldofWarcraft">Ubuntu Wiki: WorldofWarcraft</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://techno-geeks.org/2010/04/world-of-warcraft-in-ubuntu-9-10/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Syncing Tomboy Notes Over SSH</title>
		<link>http://techno-geeks.org/2010/03/syncing-tomboy-notes-over-ssh/</link>
		<comments>http://techno-geeks.org/2010/03/syncing-tomboy-notes-over-ssh/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 23:38:22 +0000</pubDate>
		<dc:creator>jesse</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Tomboy]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://techno-geeks.org/?p=408</guid>
		<description><![CDATA[Over the past couple of months I have started to really get into the habit of quickly dumping useful information or code snippets into Tomboy notes to save it for future use. I now use Tomboy for the majority of my note taking needs. I am very happy to get away from the notepad / [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past couple of months I have started to really get into the habit of quickly dumping useful information or code snippets into Tomboy notes to save it for future use. I now use Tomboy for the majority of my note taking needs. I am very happy to get away from the notepad / gedit crutch. One issue that I faced is that I had some notes at home on my PC and other notes at work on my laptop. Thankfully, Tomboy notes has a nifty syncing feature that enables us to sync notes over SSH.</p>
<p>1. Create a directory on a server with SSH to host the notes</p>
<p>ssh tgeek@myserver.example<br />
mkdir tomboy</p>
<p>2. Create an SSH key on each machine that you want to sync with and do necessary prep</p>
<p>ssh-keygen -t rsa<br />
ssh-copy-id -i /path/to/keys/mynewkey tgeek@myserver.example</p>
<p>3. Download sshfs on each machine that you want to sync with</p>
<p>sudo apt-get install sshfs</p>
<p>4. Setup Tomboy to sync</p>
<div style="color: red; font-size: 10px; background-color: #CCCCCC; border: 1px solid black; padding: 5px">Important: If Tomboy is already running make sure to kill it before attempting these steps. If you had Tomboy running while you installed sshfs then it will not recognize sshfs until you kill all Tomboy processes and start it again.</div>
<p>4.1 In Tomboy, goto Preferences.<br />
4.2 Click on the Add-ins tab and ensure that Synchronization -> SSH Sync Service Add-in is Enabled (if it is grayed out then it is disabled).<br />
4.3 Click on the Syncronization tab.<br />
4.4 For Service, choose SSH (sshfs FUSE)<br />
4.5 Enter the credentials for your server that you setup in step 1.<br />
ex. Server: myserver.example<br />
Username: tgeek<br />
Folder Path: /home/tgeek/tomboy<br />
4.6 Click Save</p>
<p>I have this working in Ubuntu 9.10 and it is beautiful!</p>
]]></content:encoded>
			<wfw:commentRss>http://techno-geeks.org/2010/03/syncing-tomboy-notes-over-ssh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Publish to WordPress from Droid</title>
		<link>http://techno-geeks.org/2010/01/publish-to-wordpress-from-droid/</link>
		<comments>http://techno-geeks.org/2010/01/publish-to-wordpress-from-droid/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 01:13:16 +0000</pubDate>
		<dc:creator>jesse</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[Droid]]></category>

		<guid isPermaLink="false">http://techno-geeks.org/2010/01/publish-to-wordpress-from-droid/</guid>
		<description><![CDATA[Download wpToGo from the market!
]]></description>
			<content:encoded><![CDATA[<p>Download wpToGo from the market!</p>
]]></content:encoded>
			<wfw:commentRss>http://techno-geeks.org/2010/01/publish-to-wordpress-from-droid/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CakePHP eCommerce Done Right: Mocha Shopping Cart</title>
		<link>http://techno-geeks.org/2009/09/cakephp-ecommerce-done-right-mocha-shopping-cart/</link>
		<comments>http://techno-geeks.org/2009/09/cakephp-ecommerce-done-right-mocha-shopping-cart/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 19:57:12 +0000</pubDate>
		<dc:creator>jesse</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[mocha]]></category>

		<guid isPermaLink="false">http://techno-geeks.org/?p=262</guid>
		<description><![CDATA[ few months back I posted on CakePHP eCommerce and the lack of good solutions. Well that is now no longer the case. I would like to be one of the first people to introduce you to Mocha Shopping Cart. We have been working day and night (literally) to come up with a solution for [...]]]></description>
			<content:encoded><![CDATA[<p><div class="wp-caption alignleft" style="width: 171px"><a href="http://mochashoppingcart.com"><img alt="Mocha Shopping Cart" src="http://mochashoppingcart.com/img/mocha-logo-white.gif" title="Mocha Shopping Cart" width="161" height="83" /></a><p class="wp-caption-text">Mocha Shopping Cart</p></div>A few months back I posted on CakePHP eCommerce and the lack of good solutions. Well that is now no longer the case. I would like to be one of the first people to introduce you to <a href="http://mochashoppingcart.com">Mocha Shopping Cart</a>. We have been working day and night (literally) to come up with a solution for the small and medium sized business owners to sell their products online easily. We also have geared Mocha to be extend-able and easy for CakePHP designers and developers to add in their own twists for clients.</p>
<p>Mocha is written entirely in CakePHP and jQuery and is certainly the best CakePHP eCommerce app out there. Why do I say that?</p>
<p><strong>Mocha Shopping Cart is&#8230;</strong></p>
<ul>
<li>Fully hosted, secure, pre-installed</li>
<li>Very easy to set up and configure</li>
<li>Themable and Modular (Plug ins docs in the works)</li>
<li>Works with most popular payment and shipping apis (UPS, USPS, Authorize.net, Paypal, etc.)</li>
<li>Charges no transaction fees and no setup fees</li>
</ul>
<p>If you still don&#8217;t believe me, Mocha is offering a limited time only <a href="http://bit.ly/HTSbo">Pre-Launch coupon code</a> that gives you the first month <strong>FREE</strong>. You can try it for yourself and see how you like it. I think you will agree that it beats CakeCart and BakeSale, HANDS DOWN! And no, Mocha is not free (after the first 30 days). The costs help to speed up development, pay for server and hosting fees, and pay for that cup of coffee that us developers need when its 8 AM and we are having to talk with &lt;insert_API_name_here&gt; first thing in the morning.</p>
<p>Official Website: <a href="http://mochashoppingcart.com">Mocha Shopping Cart</a><br />
Blog with coupon code: <a href="http://bit.ly/HTSbo">Get a free trial of Mocha Shopping Cart</a></p>
]]></content:encoded>
			<wfw:commentRss>http://techno-geeks.org/2009/09/cakephp-ecommerce-done-right-mocha-shopping-cart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selective RSS Plugin for WordPress</title>
		<link>http://techno-geeks.org/2009/06/selective-rss-plugin-for-wordpress/</link>
		<comments>http://techno-geeks.org/2009/06/selective-rss-plugin-for-wordpress/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 16:42:03 +0000</pubDate>
		<dc:creator>jesse</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://techno-geeks.org/?p=199</guid>
		<description><![CDATA[We had a client recently request that we embed an RSS feed from a different site inside their WordPress install. This would&#8217;ve been very easy considering there are 100&#8217;s of RSS feed plugins that will accomplish this task. However, they wanted to only display RSS items that had certain keywords in the title. My initial [...]]]></description>
			<content:encoded><![CDATA[<p>We had a client recently request that we embed an RSS feed from a different site inside their WordPress install. This would&#8217;ve been very easy considering there are 100&#8217;s of RSS feed plugins that will accomplish this task. However, they wanted to only display RSS items that had certain keywords in the title. My initial search found no WP plugins that currently were capable of this. I also tried one of the more popular ones, <a href="http://wordpress.org/extend/plugins/feedlist/">FeedList</a>, but it used the <a href="http://codex.wordpress.org/Function_Reference/get_rss">get_rss()</a> function in the WordPress API. For some reason, this function was not properly parsing the feed they wanted to use, most likely due to it not being a <a href="http://validator.w3.org/feed/">valid feed</a>.</p>
<p>So to make a long story short: I decided to make a quick hack up solution and write my own WP plugin. My only hurdle-like requirement is that it had to work for PHP4 as well because the client is on one of our older servers. I ended up finding a really good <a href="http://www.stemkoski.com/how-to-easily-parse-a-rss-feed-with-php-4-or-php-5/">example by Ryan Stemkoski</a>. He wrote a perfect function for me to tweak a little and expand upon. I am currently waiting to get approved on WordPress extend so I can host my plugin there. For now, I have created a <a href="http://techno-geeks.org/selective-rss/">page here where you can download</a> the plugin.</p>
<p>Note: I haven&#8217;t tested this in a more recent version of WP yet but I will be soon. Let me know if you find any bugs!</p>
<p>I also figured I would post the source code in case someone needed a quick and dirty solution with some examples.</p>
<p>rss_lib.php</p>
<pre class="brush: php;">
&lt;?php

/*
* RSS Parsing Function
*
* Original Author: Ryan Stemkoski
* http://www.stemkoski.com/how-to-easily-parse-a-rss-feed-with-php-4-or-php-5/
*
* Slight modifications by Jesse R. Adams (DualTech Services, Inc.)
*/ 

function parseRSS($url) { 

	//PARSE RSS FEED
        $feedeed = implode('', file($url));
        $parser = xml_parser_create();
        xml_parse_into_struct($parser, $feedeed, $valueals, $index);
        xml_parser_free($parser);

	//CONSTRUCT ARRAY
        foreach($valueals as $keyey =&gt; $valueal){
            if($valueal['type'] != 'cdata') {
                $item[$keyey] = $valueal;
			}
        }

        $i = 0;

        foreach($item as $key =&gt; $value){

            if($value['type'] == 'open') {

                $i++;
                $itemame[$i] = $value['tag'];

            } elseif($value['type'] == 'close') {

                $feed = $values[$i];
                $item = $itemame[$i];
                $i--;

                if(count($values[$i])&gt;1){
                    $values[$i][strtolower($item)][] = $feed;
                } else {
                    $values[$i][strtolower($item)] = $feed;
                }

            } else {
                $values[$i][strtolower($value['tag'])] = $value['value'];
            }
        }

	//RETURN ARRAY VALUES
	return $values[0];
} 

/*
* Convert Raw RSS Parse into concise list of items
*
* Optionally pass in limit (on number of items)
* and/or array list of words to grab items by.
*
*/

function extractRSSItems($xmlArray, $limit = null, $filteredWords = array()) {
	$array = array();
	$regex = null;

	if (count($filteredWords) &gt; 0) {
		$regex = implode('|', $filteredWords);
	}

	foreach($xmlArray['rss']['channel']['item'] as $item) {
		if (!$regex || ($regex &amp;&amp; preg_match(&quot;/$regex/i&quot;, $item['title']))) {
			$array[] = $item;
		}
 	}

	if($limit) {
		array_splice($array, ($limit - 1), (count($array) - $limit));
	}

	return $array;
}
?&gt;
</pre>
<p>selective_rss.php</p>
<pre class="brush: php;">
&lt;?php
/*
Plugin Name: Selective RSS
Plugin URI: http://techno-geeks.org/selective-rss
Description: Simple Plugin that allows you to embed RSS feed items into Pages or Posts. Optionally allows you to choose how many items to display and allows you to limit items to ones that contain certain words in the titles.
Version: 0.1.0b
Author: Jesse R. Adams (DualTech Services, Inc.)
Author URI: http://www.dual-tech.com/about-dualtech-services/
*/

require_once('rss_lib.php');

function filter_feeds($content) {
	$limit = null;
	$filter = array();
	$url = null;

	$inputTag = preg_match('/\[srss (.+)\]/', $content, $matches);
	$rawArgs = explode(',', $matches[1]);

	foreach($rawArgs as $input) {
                preg_match_all('/^(url|filter|limit)=(.+)$/i', $input, $matches);
                $key = $matches[1][0];
                $value = $matches[2][0]

		if ($key == 'filter') {
			$filter = explode(';', $value);
		} else {
			$$key = $value;
		}
	}

	if ($url) {
		$xml = parseRSS($url);
		$items = extractRSSItems($xml, $limit, $filter);

		$htmlToAdd = '';
		foreach ($items as $item) {
			$htmlToAdd .= '&lt;a href=&quot;' . $item['link'] . '&quot; target=&quot;new&quot;&gt;' . $item['title'] . '&lt;/a&gt;' . &quot;&lt;br/&gt;\n&quot;;
			$htmlToAdd .= $item['description'] . &quot;&lt;br/&gt;&lt;br/&gt;\n&quot;;
		}

		$content = preg_replace('/\[srss .+\]/', $htmlToAdd, $content);
	}
	return $content;
}

add_filter('the_content', 'filter_feeds');
?&gt;
</pre>
<p>Update 06/19: Fixed the way arguments are parsed to be less limiting on possibilities.</p>
]]></content:encoded>
			<wfw:commentRss>http://techno-geeks.org/2009/06/selective-rss-plugin-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Peep! A friendly GTD compliant productivity tool for you.</title>
		<link>http://techno-geeks.org/2009/05/peep/</link>
		<comments>http://techno-geeks.org/2009/05/peep/#comments</comments>
		<pubDate>Mon, 11 May 2009 14:33:47 +0000</pubDate>
		<dc:creator>jesse</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Peep!]]></category>

		<guid isPermaLink="false">http://techno-geeks.org/?p=164</guid>
		<description><![CDATA[
About a year ago Rick (http://www.rickguyer.com) had me read the book Getting Things Done by David Allen. In his book, Allen teaches you how to use his strategies and procedures on managing your tasks (or actions) in a very organized and well thought out fashion. His strategy is unique and calls for a very unique [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://trypeep.com"><img alt="" src="http://trypeep.com/img/peep-logo-plain.png" class="alignleft" width="146" height="80" /></a><br />
About a year ago Rick (<a href="http://www.rickguyer.com">http://www.rickguyer.com</a>) had me read the book <a href="http://en.wikipedia.org/wiki/Getting_things_done">Getting Things Done</a> by David Allen. In his book, Allen teaches you how to use his strategies and procedures on managing your tasks (or actions) in a very organized and well thought out fashion. His strategy is unique and calls for a very unique tool to accompany his GTD system. When I originally read his book, Rick and I spent several days searching for a different program, service, or web app that would allow us to incorporate Allen&#8217;s GTD system in an electronic fashion. After a solid week of effort I gave up after finding nothing that I felt was easy to use and completely GTD compliant. </p>
<p>Finally, after over a year, we decided to create this perfect GTD compliant web service that will help people, like us, be able to incorporate Allen&#8217;s system and become more productive. <a href="http://trypeep.com">Peep!</a> is &#8220;a simple and easy-to-use tool to help you focus and start getting things done.&#8221; I highly suggest you all try it and let me know what you think.</p>
<p>Head over to <a href="http://trypeep.com">http://trypeep.com</a> and get started today!</p>
]]></content:encoded>
			<wfw:commentRss>http://techno-geeks.org/2009/05/peep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
