<?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>dork-e.com</title>
	<atom:link href="http://www.dork-e.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dork-e.com</link>
	<description>Rantings of a Geek</description>
	<lastBuildDate>Thu, 22 Dec 2011 21:05:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=273</generator>
		<item>
		<title>Trickle-down doesn&#8217;t work</title>
		<link>http://www.dork-e.com/2011/12/trickle-down-doesnt-work/</link>
		<comments>http://www.dork-e.com/2011/12/trickle-down-doesnt-work/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 21:00:41 +0000</pubDate>
		<dc:creator>Ron</dc:creator>
				<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://www.dork-e.com/?p=150</guid>
		<description><![CDATA[Warning:  Rant ahead. So, today I was reading an article on bloomberg.com and read a quote that&#8230; I just cannot leave alone: “Tearing down the rich does not help those less well- off,” said the chairman of New York-based WL Ross &#38; Co. LLC. “If you favor employment, you need employers whose businesses are flourishing.” [...]]]></description>
			<content:encoded><![CDATA[<p>Warning:  Rant ahead.</p>
<p>So, today I was reading an <a href="http://www.bloomberg.com/news/2011-12-20/bankers-join-billionaires-to-debunk-imbecile-attack-on-top-1-.html" target="_blank">article</a> on bloomberg.com and read a quote that&#8230; I just cannot leave alone:</p>
<blockquote><p>“Tearing down the rich does not help those less well- off,” said the chairman of New York-based WL Ross &amp; Co. LLC. “If you favor employment, you need employers whose businesses are flourishing.”</p></blockquote>
<p>So, Mr. Ross, what causes a business to flourish?  Is it cutting the personal income taxes of the business&#8217; owners?  Or is it having lots of customers patronizing that business?</p>
<p>Scenario: You&#8217;re a billionaire. You own a large retail chain with hundreds of stores. What do you want? More money of course. That&#8217;s generally the point of owning a business&#8230; filling a need in a way that lets you make money. How do your stores make money? People shopping there. Specifically when those people buy high-margin impulse items.  How do you get more people shopping there and buying more impulse items? Well, you want them to have more money of course&#8230; so lets look at how to do that&#8230;  So, do you cut the taxes to the wealthy people who&#8230; don&#8217;t really shop at your stores, and probably own their own businesses? Cutting taxes for the wealthy wouldn&#8217;t do anything&#8230; they mostly already have more than enough money to buy everything they want, and really, they don&#8217;t shop at your stores. Even if they cut your taxes, it doesn&#8217;t mean your stores can suddenly afford to pay people more or hire more workers&#8230; your shareholders would be upset by the lower profits, meaning lower dividends for them. Cutting the taxes of the people shopping at your stores, the ones who shop at your store hoping to save money on inexpensive goods, that&#8217;ll help drive more people into your stores with more money in their wallets that they can spend on those profitable impulse purchase items. We can also cut the expenses for your customers, to give them more money to spend.  What&#8217;re some ways to accomplish that? Providing better, cheaper mass transit, providing free healthcare, subsidizing food costs, etc&#8230; but that has to be paid for somehow? We could raise taxes on the wealthy&#8230; you don&#8217;t like it, it&#8217;s less money for you, but it doesn&#8217;t really hurt your bottom line because you already make far more than you spend with your needs and wants combined&#8230; and it means you can help cut expenses for the people shopping at your store, so they can spend more money. Really, if you cut their expenses enough, they might shop so much more often and buy so many more impulse items that<em> you ultimately make even more money</em> despite your taxes being significantly higher.  Now THAT makes business sense.</p>
<p>Really, how do you create a business?  Do you come up with a product/service, build a whole business around supplying that product/service, and hope people come buy it?  Or do you find a demand for a product/service, develop a profitable means to provide that product/service, and then build the business around supplying it?  Hint:  One of these ways is far more successful than the other.</p>
<p>Smart business owners find the demand for a product or service first, then profit from filling that demand.  Supplying a product or service without any customers demanding it is a great way to go nowhere.  Economies are always driven primarily by demand, not by supply.</p>
<p>We&#8217;ve seen governments give us the kind of economics that fiscal conservatives say they want&#8230; small, efficient government with low taxes.  It was known as feudalism.  All of the wealth was at the top&#8230; but it didn&#8217;t trickle down.  It stayed at the top, and kept the nobles wealthy and in power for centuries while there was no middle class and 99% of the population was lower class. C&#8217;mon, is that REALLY what you want?  Because the odds are not in your favor to be in that upper class&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dork-e.com/2011/12/trickle-down-doesnt-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PacketTerrier Twitter Bot</title>
		<link>http://www.dork-e.com/2011/09/packetterrier-twitter-bot/</link>
		<comments>http://www.dork-e.com/2011/09/packetterrier-twitter-bot/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 22:15:22 +0000</pubDate>
		<dc:creator>Ron</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.dork-e.com/?p=140</guid>
		<description><![CDATA[Like any good nerd, I felt my dog needed a twitter. This is written in Python using the python-twitter library. http://www.twitter.com/PacketTerrier #!/usr/bin/env python import time import twitter import math import random import threading import logging interface = twitter.Api(consumer_key=&#039;&#039;, consumer_secret=&#039;&#039;, access_token_key=&#039;&#039;, access_token_secret=&#039;&#039;) def main(): logging.basicConfig(filename=&#039;packetTwitter.log&#039;,level=logging.DEBUG) tt = TweeterThread(interface) ft = FrienderThread(interface) tt.daemon = True ft.daemon = [...]]]></description>
			<content:encoded><![CDATA[<p>Like any good nerd, I felt my dog needed a twitter. This is written in Python using the <a href="http://code.google.com/p/python-twitter/" target="_blank">python-twitter library</a>.</p>
<p><a href="http://www.twitter.com/PacketTerrier" target="_blank">http://www.twitter.com/PacketTerrier</a></p>
<pre class="brush: python; ">

#!/usr/bin/env python
import time
import twitter
import math
import random
import threading
import logging

interface = twitter.Api(consumer_key=&#039;&#039;, consumer_secret=&#039;&#039;, access_token_key=&#039;&#039;, access_token_secret=&#039;&#039;)

def main():
	logging.basicConfig(filename=&#039;packetTwitter.log&#039;,level=logging.DEBUG)
	tt = TweeterThread(interface)
	ft = FrienderThread(interface)
	tt.daemon = True
	ft.daemon = True
	tt.start()
	ft.start()
	while True:
		time.sleep(1)
		pass

class TweeterThread(threading.Thread):
	def __init__(self,interface):
		self.interface = interface
		threading.Thread.__init__(self)

	def run(self):
		logging.info(&quot;Tweeter Start&quot;)
		message = None
		lastMessage = None
		status = None
		while True:
			nextSleep =  math.ceil(random.uniform(1800,7200))
			while message == lastMessage:
				message = chooseTweet(nextSleep)
				time.sleep(15)
			try:
				logging.info(&quot;Posting status update&quot;)
				status = self.interface.PostUpdate(message)
			except twitter.TwitterError, error:
				logging.error(&quot;Twitter API Error: &#039;%s&#039;  Trying again in 60 seconds.&quot; % error.message)
				nextSleep = 60
			logging.debug(message)
			lastMessage = message
			time.sleep(nextSleep)

class FrienderThread(threading.Thread):
	def __init__(self,interface):
		self.interface = interface
		threading.Thread.__init__(self)

	def run(self):
		logging.info(&quot;Friender Start&quot;)
		friends = self.interface.GetFriends()
		while True:
			logging.info(&quot;Checking for new friends&quot;)
			replies = self.interface.GetReplies()
			for r in replies:
				isFriend = False
				for f in friends:
					if f._screen_name == r._user._screen_name:
						isFriend = True
				if not isFriend:
					logging.info(&quot;Making friends with %s&quot; % r._user._screen_name)
					self.interface.CreateFriendship(r._user._screen_name)
					self.interface.PostUpdate(&quot;Hai @%s! I like making new friends!  Did you bring me treats?!?!&quot; % r._user._screen_name)
					friends = self.interface.GetFriends()
			time.sleep(600)

def chooseTweet(nextSleep):
    hour = time.strftime(&quot;%H&quot;)
    minute = time.strftime(&quot;%M&quot;)
    if hour &gt;= 23 and (hour &lt; = 6 and minute &lt;= 59):
        messageFile = &quot;sleepMessage.txt&quot;
    elif hour &gt;= 16 and hour &lt; = 17 and (time.strftime(&quot;%w&quot;) &gt;= 1 and time.strftime(&quot;%w&quot;) &lt;= 5):
        messageFile = &quot;homeSoonMessage.txt&quot;
    else:
        messageFile = &quot;dayMessage.txt&quot;
    messages = list()
    mf = open(messageFile, &quot;r&quot;)
    for line in mf:
        messages.append(line)
    mf.close()
    return random.choice(messages).strip()

if __name__ == &#039;__main__&#039;:
	main()
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dork-e.com/2011/09/packetterrier-twitter-bot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Battle of Veridian III</title>
		<link>http://www.dork-e.com/2011/05/the-battle-of-veridian-iii/</link>
		<comments>http://www.dork-e.com/2011/05/the-battle-of-veridian-iii/#comments</comments>
		<pubDate>Tue, 03 May 2011 20:21:25 +0000</pubDate>
		<dc:creator>Ron</dc:creator>
				<category><![CDATA[Geekery]]></category>
		<category><![CDATA[Randomness]]></category>

		<guid isPermaLink="false">http://www.dork-e.com/?p=135</guid>
		<description><![CDATA[I may be crucified for saying this, but after thinking about it, I believe Riker made a grievous tactical error at the Battle of Veridian III, which, had he played it differently, could have saved the Enterprise-D. Riker&#8217;s strategy was to perform evasive maneuvers and essentially take pot-shots at the bird-of-prey.  This proved largely ineffective, [...]]]></description>
			<content:encoded><![CDATA[<p>I may be crucified for saying this, but after thinking about it, I believe Riker made a grievous tactical error at the Battle of Veridian III, which, had he played it differently, could have saved the Enterprise-D.</p>
<p>Riker&#8217;s strategy was to perform evasive maneuvers and essentially take pot-shots at the bird-of-prey.  This proved largely ineffective, as we saw by the massive damage to the Enterprise ultimately resulting in her destruction.</p>
<p>What he forgot was that the bird-of-prey is not a particularly tough ship.  They&#8217;re designed to be nimble and stealthy for quick hit-and-run attacks.  A Galaxy class starship will never out-run or out-maneuver a bird-of-prey at sublight speeds.  The Galaxy class, however, is a fairly durable design, often used as a staple in large fleet actions.</p>
<p>All things considered, when the first volley hit, MY orders would have been: forget the shields, divert all shield power and anything else we can spare to weapons and close to point-blank range, maintaining continuous fire.  The shields were worthless at this point, so why did Riker waste the energy to maintain them?  Diverting the shield power to weapons would&#8217;ve given the Enterprise a massive punch and would&#8217;ve collapsed the relatively weak bird-of-prey&#8217;s shielding quickly, and once that&#8217;s done, we&#8217;ve seen repeatedly how quickly a bird-of-prey can be torn to shreds by even a single photon torpedo.  Even if the bird-of-prey had opted  to out-maneuver the Enterprise with this strategy, they would have been giving the Enterprise a lot more room to breathe and (as the bird-of-prey&#8217;s weaponry only has forward firing arcs) wouldn&#8217;t have been able to maintain the near continuous fire on the Enterprise that they had during the battle.</p>
<p>Why did Riker, a trained, decorated and seasoned Starfleet officer not think of this, and I, while grocery shopping, did?  :(</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dork-e.com/2011/05/the-battle-of-veridian-iii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exponent registration bug patcher</title>
		<link>http://www.dork-e.com/2011/05/exponent-registration-bug-patcher/</link>
		<comments>http://www.dork-e.com/2011/05/exponent-registration-bug-patcher/#comments</comments>
		<pubDate>Tue, 03 May 2011 17:25:49 +0000</pubDate>
		<dc:creator>Ron</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servers]]></category>

		<guid isPermaLink="false">http://www.dork-e.com/?p=125</guid>
		<description><![CDATA[In response to a recent ExponentCMS security vulnerability which allows a cross-site script injection to allow anybody to create a new admin user, I&#8217;ve written the following script that will automatically apply the necessary patch.   Suggested usage: find /home/*/public_html/framework/datatypes -name user.php -exec python fixRegBug.py {} \; &#160; #!/usr/bin/env python # encoding: utf-8 &#34;&#34;&#34; fixRegBug.py [...]]]></description>
			<content:encoded><![CDATA[<p>In response to a recent <a href="http://www.exponentcms.org/news/exponent-cms-beta-2-1-security-release">ExponentCMS security vulnerability</a> which allows a cross-site script injection to allow anybody to create a new admin user, I&#8217;ve written the following script that will automatically apply the necessary patch.  <br />
Suggested usage: </p>
<pre class="brush: bash; ">

find /home/*/public_html/framework/datatypes -name user.php -exec python fixRegBug.py {} \;
</pre>
<p>&nbsp;</p>
<pre class="brush: python; ">

#!/usr/bin/env python
# encoding: utf-8
&quot;&quot;&quot;
fixRegBug.py

Created by Ron Miller on 2011-05-03.
Copyright (c) 2011 Youcentric Solutions. All rights reserved.
&quot;&quot;&quot;

import sys
import os

def main():
	if sys.argv[1] is None:
	    print &quot;Please specify path to user.php&quot;
	    exit(255)
	oldfile = open(sys.argv[1], &quot;r&quot;)
	newfile = open(os.path.join(os.path.dirname(sys.argv[1]), &quot;user.new.php&quot;), &quot;w&quot;)
	for line in oldfile:
	    if &quot;if(isset($params[&#039;is_admin&#039;]) || isset($params[&#039;is_acting_admin&#039;])) $this-&gt;checkAdminFlags();&quot; in line:
	        line = &quot;\t$this-&gt;checkAdminFlags();&quot;
	        newfile.write(line)
	        newfile.flush()
	        print &quot;Found and fixed vulnerability in %s&quot; % sys.argv[1]
	    else:
	        newfile.write(line)
	        newfile.flush()

	newfile.close()
	oldfile.close()
	os.rename(sys.argv[1], os.path.join(os.path.dirname(sys.argv[1]), &quot;user.old.php&quot;))
	os.rename(os.path.join(os.path.dirname(sys.argv[1]), &quot;user.new.php&quot;), sys.argv[1])

if __name__ == &#039;__main__&#039;:
	main()
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dork-e.com/2011/05/exponent-registration-bug-patcher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My iPhone</title>
		<link>http://www.dork-e.com/2011/02/my-iphone/</link>
		<comments>http://www.dork-e.com/2011/02/my-iphone/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 17:28:28 +0000</pubDate>
		<dc:creator>Ron</dc:creator>
				<category><![CDATA[Gadgets]]></category>

		<guid isPermaLink="false">http://www.dork-e.com/?p=117</guid>
		<description><![CDATA[Before anyone thinks I need your permission or approval to buy a new phone, I just want to clarify: I don&#8217;t. I&#8217;m only taking the time to type this up because I&#8217;m already getting endless crap from tech evangelists and I want to make my point once and only once. The arguments against the iPhone: [...]]]></description>
			<content:encoded><![CDATA[<p>Before anyone thinks I need your permission or approval to buy a new phone, I just want to clarify: I don&#8217;t. I&#8217;m only taking the time to type this up because I&#8217;m already getting endless crap from tech evangelists and I want to make my point once and only once.</p>
<p><strong>The arguments against the iPhone:<br />
</strong></p>
<ol>
<li> Non user replaceable battery - This does not affect me. I have no interest at all in carrying multiple batteries for my phone. When the built in battery dies, I will  be out of warranty anyway so I will replace the battery myself.</li>
<li>Non expandable memory - My Droid had 16Gb of flash, just like my new iPhone does. I at most used 9Gb of it. I do not forsee needing significantly more on an iPhone.</li>
<li>No physical keyboard - This one at least has some merit. I imagine there may be a rare instance where I miss having the keyboard. That being said, the longer I had the Droid, the less I used it&#8217;s physical keyboard. I got very used to using the virtual keyboard to the point that my accuracy and speed were lower on the physical keyboard. And Apple&#8217;s virtual keyboard is noticeably more usable.</li>
<li>Closed platform under Apple&#8217;s control - Sorry folks, I just don&#8217;t need 100 different applications for every possible use. The apps that Apple DOES have are of distinctly greater quality and performance as well. When I get right down to it, there are maybe a half dozen apps I use on a daily basis, and they&#8217;re all of equal or greater quality on the iPhone vs Android.</li>
<li>Apple will be releasing a new iPhone soon - Don&#8217;t you worry about me. I&#8217;ve got that covered too.</li>
<li>No multitasking &#8211; This is one that I&#8217;ve really nagged people on in the past.  And honestly, what iPhone has now is <em>good enough</em> for a mobile device.  You can&#8217;t really, truly use more than one application at a time anyway on your mobile device, why pretend otherwise?  Android&#8217;s way of allowing multiple fully-running applications simultaneously is horribly detrimental to battery life.</li>
<li>Fewer free apps - True.  But the ones I really want/need are free anyway.</li>
</ol>
<p><strong>My issues with Android:</strong></p>
<p><strong> </strong></p>
<ol>
<li>Application quality - I cannot think of a single case where an iPhone application is noticeably lower quality than its android counterpart. I cannot say the opposite is true. While having an open market such as the android app store may foster a competitive development atmosphere, what it&#8217;s done so far is to foster an environment of sloppy developers pushing out poor quality applications.  Or perhaps the Android SDK is really just that bad, in which case I apologize to the developers and point my finger squarely at Google to step up to the plate.  I cannot say which for certain, as I have not tried my hand at Android app development (nor do I especially want to, which brings me to #2.</li>
<li>Java - Java by any other name is still Java.  I am yet to see a Java application that runs as lean, stable and performant as its non-Java counterpart.  Until I have this experience, I cannot forgive, forget or endorse the use of Java in any form on Android, which means that I cannot fathom wanting to develop android applications, nor do I feel right continuing to use the platform while it is based on this technology.</li>
<li>Always behind the curve - Android has, from day one, been playing catch-up to Apple&#8217;s iPhone.  Just recently are we starting to see significant features hit Android devices first.  Additionally, application developers have a much more difficult target to hit with Android, being the more open and unrestricted platform that it is, so the iPhone version of nearly any application always comes out first, followed at some undetermined date by the Android version.  I&#8217;m sick of being the apologist or feeling like I need to play catch-up.  I want what THEY (and now I) have already.</li>
<li>Too unrestricted &#8211; This one&#8217;s kind of like the deregulation of the banking industry&#8230; go too far, and you&#8217;ll have a disaster.  As I was mentioning in #3, there is too little standardization on the hardware.  It&#8217;s made for a fractured community, running a multitude of software versions, on dozens of different hardware configurations.  It&#8217;s difficult to write anything more than the simplest applications and have them work consistently across all of these devices since there&#8217;s no standards for any of the configurations.  Think there&#8217;s no merit to this?  Go search for the reason why there&#8217;s no Android version of Plants vs. Zombies.</li>
<li>Email Support - So long as you&#8217;re using Gmail and only Gmail on your Android phone, email works fine.  But what if you want to use Gmail as well as some IMAP or Exchange accounts?  As soon as you add those other accounts, they take over your phone, and you&#8217;ll no longer be able to use your Gmail accounts from the &#8220;Share&#8221; menu.  This is a horrible design, and I suspect it could be easily corrected.</li>
<li>Unpredictable upgrades - Some might argue that this is a flaw with iPhone as well, but really, it&#8217;s not.  Apple has established a pattern and once they do that, they tend to follow it (your iPhone will get the next two major software upgrades after it&#8217;s released, then you&#8217;re cut off). Android, however, is a crap shoot.  You have to speculate regarding if and when you&#8217;ll get that software upgrade.  If ever.  Some vendors just stop supporting their old hardware and push people towards the new.  Great support policy there&#8230; the pattern that the Android community has established is that the only version of Android you can count on having is the one that&#8217;s on your phone when you buy it.</li>
<li>Rough around the edges &#8211; This one is a matter of personal taste, but I&#8217;ve always felt like most every Linux-based GUI has been rough around the edges and lacks the polish of its closed-source counterparts.  Android is no exception to this.  This isn&#8217;t just prettiness, it&#8217;s also a matter of usability, and in some cases (I&#8217;ll try to think of specific examples later and edit this as appropriate),  it just feels clunky. (As compared to sluggish,  which would be more attributed to my older Droid&#8217;s hardware).</li>
<li>Battery life - This one is one that I had to draw attention to my iPhone desires to test, by purchasing a used iPhone 3G.  That iPhone 3G, with questionable battery health, soundly outlasted my droid&#8217;s <em>brand new</em> battery.   Bear in mind as well that the iPhone 3G was notorious for having the worst battery life of all of the iPhone series.  And in case anyone&#8217;s wondering, I can now re-sell that iPhone 3G for as much, if not more than I paid for it.</li>
</ol>
<p>Some people are probably still not convinced that this was a well thought out purchase on my part, or just flat out disagree with any/all of my points.  That&#8217;s fine, you&#8217;re free to have your opinions.  But ultimately, this was my choice to spend my money and it in no way affects you.</p>
<p>Love it or hate it, I don&#8217;t care.  Just leave it alone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dork-e.com/2011/02/my-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Juniper/Aventail VPN Fix for Ubuntu 10.04</title>
		<link>http://www.dork-e.com/2010/06/juniper-aventail-vpn-fix-for-ubuntu-10-04/</link>
		<comments>http://www.dork-e.com/2010/06/juniper-aventail-vpn-fix-for-ubuntu-10-04/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 17:51:29 +0000</pubDate>
		<dc:creator>Ron</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.dork-e.com/?p=106</guid>
		<description><![CDATA[With the release of Ubuntu 10.04, the tun driver, commonly used for VPN connectivity, has been moved into the kernel, instead of being loaded as a module as it was previously.  Unfortunately, the Juniper and Aventail VPN clients check for VPN support in the kernel by running a &#8220;modprobe tun&#8221;, instead of checking for the [...]]]></description>
			<content:encoded><![CDATA[<p>With the release of Ubuntu 10.04, the tun driver, commonly used for VPN connectivity, has been moved into the kernel, instead of being loaded as a module as it was previously.  Unfortunately, the Juniper and Aventail VPN clients check for VPN support in the kernel by running a &#8220;modprobe tun&#8221;, instead of checking for the presence of the device nodes.  This causes the VPN connections to immediately fail, even though they would otherwise succeed.  Searching the Ubuntu forums, I happened upon this thread:</p>
<p><a href="http://ubuntuforums.org/showthread.php?t=1459559">http://ubuntuforums.org/showthread.php?t=1459559</a></p>
<p>After trying a couple of the other fixes, I finally found a script, posted by cdenley (http://www.chrisdenley.com/) which successfully works around the issue by creating a null driver named tun, which the VPN clients can then modprobe with no harmful results to satisfy their requirements.</p>
<pre class="brush: bash; ">

#! /usr/bin/env bash
sudo apt-get install build-essential linux-headers-`uname -r`
mkdir faketun
cd faketun
echo -e &quot;#include &lt;linux /module.h&gt;\nstatic int start__module(void) {return 0;}\nstatic void end__module(void){return;}\nmodule_init(start__module);\nmodule_exit(end__module);&quot;&gt;tun.c
echo -e &quot;obj-m += tun.o\nall:\n\tmake -C /lib/modules/\$(shell uname -r)/build/ M=\$(PWD) modules\nclean:\n\tmake -C /lib/modules/\$(shell uname -r)/build/ M=\$(PWD) clean\nclean-files := Module.symvers&quot;&gt;Makefile
make
sudo install tun.ko /lib/modules/`uname -r`/kernel/net/tun.ko
sudo depmod -a
sudo modprobe tun
</pre>
</linux>
]]></content:encoded>
			<wfw:commentRss>http://www.dork-e.com/2010/06/juniper-aventail-vpn-fix-for-ubuntu-10-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Al Franken Embarrasses Comtastrophe (Comcast)</title>
		<link>http://www.dork-e.com/2010/02/al-franken-embarrasses-comcast/</link>
		<comments>http://www.dork-e.com/2010/02/al-franken-embarrasses-comcast/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 01:49:31 +0000</pubDate>
		<dc:creator>Ron</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[al franken]]></category>
		<category><![CDATA[big business]]></category>
		<category><![CDATA[comcast]]></category>
		<category><![CDATA[fcc]]></category>
		<category><![CDATA[policy]]></category>

		<guid isPermaLink="false">http://www.dork-e.com/?p=99</guid>
		<description><![CDATA[I have to say, I&#8217;m a huge fan of Al Franken.  He&#8217;s the kind of no-BS senator we&#8217;ve needed for a while.  Personally I&#8217;m hoping there are more like him that will step up to take on the corruption in D.C.  While catching up on my RSS feeds today, I stumbled upon this gem, where [...]]]></description>
			<content:encoded><![CDATA[<p>I have to say, I&#8217;m a huge fan of Al Franken.  He&#8217;s the kind of no-BS senator we&#8217;ve needed for a while.  Personally I&#8217;m hoping there are more like him that will step up to take on the corruption in D.C.  While catching up on my RSS feeds today, I stumbled upon this gem, where Al Franken grills Brian Roberts (CEO, Comcast).</p>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/clvqrfq6-Es" frameborder="0" allowFullScreen="true"> </iframe></p>
<p>Really, Mr. Roberts?  You actually believe that Comcast is #1 in their industry?  Perhaps in size, but certainly not in customer satisfaction, where Comcast&#8217;s reputation for poor customer service (<a href="http://en.wikipedia.org/wiki/Comcast#Reputation_for_poor_customer_satisfaction" target="_blank">Wikipedia</a>) speaks for itself.  Even the comments on the above YouTube video reflect the utter disgust people have with Comcast, with an employee chiming in:</p>
<blockquote><p>As a Comcast employee, I totally agree with Senator Franken on this issue. He is one hundred percent right about the double dealings of Brian (anti union) Roberts and his cronies.</p></blockquote>
<p>Sorry Mr. Roberts, but you&#8217;ll need to do more than just re-branding your services to convince us that you&#8217;ll act in consumers&#8217; best interests if the NBC acquisition/merger is approved.  In fact, let&#8217;s pose these two survey questions to your customers:</p>
<ol>
<li>If a competing provider were to offer equivalent service to your Comcast services, would you be interested in switching?</li>
<li>Would you still be interested in switching your services if the competing service provider had higher prices for the services you use?</li>
</ol>
<p>Personally, I would say yes to both, and I think Comcast&#8217;s executives might be surprised at just how many people feel the same way.  Comcast feels like they don&#8217;t have to fear the FCC because the FCC has no real teeth.  They are forgetting one very important factor though:  It was the FCC that granted the market-monopolies that Comcast has exploited to build its network to gigantic proportions, and the FCC can take those away just as easily.  If you prod the old bear, you&#8217;ll see just what he can do to you.  And the FCC knows this too.  They&#8217;re already considering forcing the telecoms to share their lines outright (<a href="http://arstechnica.com/tech-policy/news/2010/02/regulators-may-drop-broadband-line-sharing-bombshell.ars" target="_blank">Ars Technica</a>), so it&#8217;s just a matter of time before they aim this sort of thing directly at Comcast.  Count your days, Mr. Roberts.  They are numbered.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dork-e.com/2010/02/al-franken-embarrasses-comcast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Proof That Fox News Sucks</title>
		<link>http://www.dork-e.com/2009/12/proof-that-fox-news-sucks/</link>
		<comments>http://www.dork-e.com/2009/12/proof-that-fox-news-sucks/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 19:25:03 +0000</pubDate>
		<dc:creator>Ron</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.dork-e.com/?p=90</guid>
		<description><![CDATA[Doing my usual morning ritual of catching up on Google Reader I noticed something amusing&#8230;absolute proof that Fox News is inept and does not check their facts before finding some way to attack Obama. Oh no! If Fox News is wrong&#8230;where are closed minded people to get their information?!?! Fox: Where are the jobs? AP: [...]]]></description>
			<content:encoded><![CDATA[<p>Doing my usual morning ritual of catching up on Google Reader I noticed something amusing&#8230;absolute proof that Fox News is inept and does not check their facts before finding some way to attack Obama.  Oh no!  If Fox News is wrong&#8230;where are closed minded people to get their information?!?!<br />
<img src="http://www.dork-e.com/wp-content/uploads/2009/12/fox_news_ineptitude.png" alt="fox_news_ineptitude" title="fox_news_ineptitude" width="791" height="576" class="alignnone size-full wp-image-91" /><br />
Fox:  Where are the jobs?<br />
AP:  Unemployment rate fell in November.<br />
Fox News FAIL!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dork-e.com/2009/12/proof-that-fox-news-sucks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back up a cPanel server via SSHFS</title>
		<link>http://www.dork-e.com/2009/11/back-up-a-cpanel-server-via-sshfs/</link>
		<comments>http://www.dork-e.com/2009/11/back-up-a-cpanel-server-via-sshfs/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 21:27:07 +0000</pubDate>
		<dc:creator>Ron</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cpanel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servers]]></category>

		<guid isPermaLink="false">http://www.dork-e.com/?p=78</guid>
		<description><![CDATA[So you have a cPanel server and want to set up automated, off-site backups, just in case anything should happen? This can be done easily with a FUSE (filesystem in userspace) module called SSHFS, and requires a minimum of setup. SSHFS allows one to mount any remote directory accessible via SFTP to a local filesystem. [...]]]></description>
			<content:encoded><![CDATA[<p>So you have a cPanel server and want to set up automated, off-site backups, just in case anything should happen?  This can be done easily with a FUSE (filesystem in userspace) module called SSHFS, and requires a minimum of setup.  SSHFS allows one to mount any remote directory accessible via SFTP to a local filesystem.  Cool, huh?</p>
<p>All you really need to accomplish this is access to a server via SSH with sufficient disk space to hold your backups, and the FUSE module available on your server. (Many VPS providers are willing to enable this for you if it is not already enabled)</p>
<p><em>Notice:  The following howto assumes that you are a competent linux/unix administrator.  I take no responsibility for any damage or data loss which may be caused by following these instructions.</em></p>
<p><strong>Step one:  Set up a passwordless SSH key on the cPanel server.</strong></p>
<p>First, we need to generate an SSH key:<br />
<code>ssh-keygen</code><br />
Be sure you leave the passphrase option blank, or  the automatic part won&#8217;t work so well <img src='http://www.dork-e.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .  The default options will work fine for this.</p>
<p>Now, you will need to get the public key from the cPanel server that you will be importing:<br />
<code>cat ~/.ssh/id_rsa.pub</code><br />
The above assumes you did not choose a DSA key, or opt to store it in a location other than default.  Copy the text that the above command outputs.</p>
<p>Now, move over to your remote/backup server, and run the following:<br />
<code>echo "<em>text you copied from the cPanel server</em>" >> ~/.ssh/authorized_keys<br />
chmod 640 ~/.ssh/authorized_keys</code></p>
<p>Next, go back to the cPanel server and test to ensure that the public key login works:<br />
<code>ssh user@remote_server</code><br />
If the public key is installed correctly, you will be logged into the remote server without any password prompts. </p>
<p><strong>Step two:  install SSHFS</strong></p>
<p>For purposes of this howto, I&#8217;m assuming you are using CentOS, in which case you can install sshfs with the following command:<br />
<code>yum install sshfs</code><br />
Say yes to any dependencies it may prompt you to install.</p>
<p><strong>Step three:  Configure the fstab on your cPanel server to mount a backup directory</strong></p>
<p>Assuming you want your backups to go to /backup on the local cPanel server (replacing /path/to/storage with the appropriate path on the remote server):<br />
<code>mkdir /backup<br />
echo "sshfs#user@remote_server:/path/to/storage /backup fuse noauto,compression=yes,nonempty" >> /etc/fstab</code></p>
<p>Test this mount with the command &#8220;mount /backup&#8221;  If you receive no errors, the mount should be working correctly.</p>
<p><strong>Step four:  Configure the cPanel backup<br />
</strong></p>
<p>Visit the address https://_your_cpanel_server_:2087/scripts/backupset<br />
in your web browser, and configure the settings to your liking, making sure to select the following:<br />
Backup Status:  Enabled<br />
Remount/Unmount backup drive: Enabled<br />
Bail out if backup drive mount fails:  Enabled<br />
Backup destination:  /backup</p>
<p><strong>Step five:  Profit</strong></p>
<p>Now, every night at 1AM (server time) your server will automatically back up to the remote server via SSH. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dork-e.com/2009/11/back-up-a-cpanel-server-via-sshfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create Debian Lenny Xen VE</title>
		<link>http://www.dork-e.com/2009/10/create-debian-lenny-xen-ve/</link>
		<comments>http://www.dork-e.com/2009/10/create-debian-lenny-xen-ve/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 03:26:14 +0000</pubDate>
		<dc:creator>Ron</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.dork-e.com/?p=61</guid>
		<description><![CDATA[I got sick of doing the same bunch of things every time I created a new VE so I wrote myself a script. It takes only one argument: The path to the lvm volume you want to use as the root device. #!/bin/bash mkfs.ext3 &#34;$1&#34; mkdir -p /media/buildvetmp mount &#34;$1&#34; /media/buildvetmp debootstrap lenny /media/buildvetmp http://aptcache:3142/ftp.us.debian.org/debian/ [...]]]></description>
			<content:encoded><![CDATA[<p>I got sick of doing the same bunch of things every time I created a new VE so I wrote myself a script.  It takes only one argument:  The path to the lvm volume you want to use as the root device.</p>
<pre class="brush: bash; ">

#!/bin/bash

mkfs.ext3 &quot;$1&quot;
mkdir -p /media/buildvetmp
mount &quot;$1&quot; /media/buildvetmp
debootstrap lenny /media/buildvetmp http://aptcache:3142/ftp.us.debian.org/debian/
sed -n &#039;/########/,$p&#039; /root/buildve.sh | sed -n &#039;/bin\/bash/,$p&#039; | sed -n &#039;/########/,$p&#039; | sed -n &#039;/bin\/bash/,$p&#039; &gt; /media/buildvetmp/buildve.sh
chmod 700 /media/buildvetmp/buildve.sh
chroot /media/buildvetmp /bin/bash /buildve.sh
rm /media/buildvetmp/buildve.sh
umount /media/buildvetmp
rm -r /media/buildvetmp

exit

###################chroot starts here
#!/bin/bash

echo &quot;/dev/sda2 / ext3 relatime,nodiratime 0 0
/dev/sda1 none swap sw&quot; &gt;&gt; /etc/fstab
echo &quot;APT::Default-Release \&quot;stable\&quot;;&quot; &gt;&gt; /etc/apt/apt.conf
rm -f /etc/apt/sources.list
echo &quot;deb http://ftp.us.debian.org/debian lenny main contrib non-free
deb http://ftp.us.debian.org/debian testing main contrib non-free
deb http://packages.dotdeb.org stable all&quot; &gt;&gt; /etc/apt/sources.list
echo &quot;Acquire::http::Proxy \&quot;http://aptcache:3142/\&quot;;&quot; &gt;&gt; /etc/apt/apt.conf.d/80proxy
echo &quot;127.0.0.1 localhost&quot; &gt;&gt; /etc/hosts
rm /etc/hostname
echo &quot;localhost&quot; &gt;&gt; /etc/hostname
echo &quot;
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.0.0.49
netmask 255.255.0.0
network 10.0.0.0
broadcast 10.0.255.255
gateway 10.0.0.1&quot; &gt;&gt; /etc/network/interfaces

apt-get update
apt-get -y install linux-modules-`uname -r` libc6-xen vim

echo &quot;#!/bin/bash
apt-get -y install udev openssh-server syslog-ng ntp
sleep 5
rm -f /etc/rc2.d/S20installpkgs
sleep 1
shutdown -r now&quot; &gt;&gt; /etc/rc2.d/S20installpkgs
chmod +x /etc/rc2.d/S20installpkgs

exit
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dork-e.com/2009/10/create-debian-lenny-xen-ve/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

