<?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>TipsFor.us &#187; Nerd Stuff</title>
	<atom:link href="http://tipsfor.us/category/nerd-stuff/feed/" rel="self" type="application/rss+xml" />
	<link>http://tipsfor.us</link>
	<description>Tech Tips, Reviews, Tutorials, Occasional Rants</description>
	<lastBuildDate>Sun, 22 Jan 2012 23:12:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Review of Web-based Project Management Software</title>
		<link>http://tipsfor.us/2011/12/30/review-of-web-based-project-management-software/</link>
		<comments>http://tipsfor.us/2011/12/30/review-of-web-based-project-management-software/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 05:00:52 +0000</pubDate>
		<dc:creator>Everett - TipsFor.us</dc:creator>
				<category><![CDATA[Nerd Stuff]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.tipsfor.us/?p=1968</guid>
		<description><![CDATA[Help! I gotta keep track of everything I gotta do! There is help available to track your projects, you just got to know where to look. [...]<p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2011/12/30/review-of-web-based-project-management-software/">Review of Web-based Project Management Software</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Help!  I gotta keep track of everything I gotta do!  There is help available to track your projects, you just got to know where to look.</p>
<p><span id="more-1968"></span></p>
<p>A lot of developers, designers, students, and even web-hobbyists have a lot of items on their to-do lists for any particular site or project.  You have to remember to fix that one CSS glitch, or rewrite a page to use some new function&#8230; the lists can be long and daunting.  If you&#8217;re like me, you&#8217;re likely to forget half the stuff you need to do, and if it weren&#8217;t for project management software, I might as well stay in bed.</p>
<p>To put it mildly, there are <em>*a lot*</em> of applications out there that help you track bugs and manage projects, and this article only looks as a handful of them.  Although the general purpose of these web-applications are similar, there are substantial differences in the pricing models, features, and usability, and hopefully this article will help you identify an application that is right for you.  Or, if you&#8217;ve never really thought about using one before, maybe this article can help show you why project management / bug tracking software is good to have around.</p>
<p>This post only covers project management.  I&#8217;ve discussed <a href="http://tipsfor.us/2011/04/22/comparing-online-invoice-software/">invoicing softare</a> in another post.  Some of these packages include time-tracking and invoicing, but that&#8217;s just a &#8220;nice-to-have&#8221; for the purposes of this article.</p>
<p><em>DISCLAIMER: I am not affiliated with any of these companies.  None of the links in the article text are affiliate links; I don&#8217;t get a kickback or commission on referrals, I&#8217;m merely sharing my opinions and experiences using the software in the hopes that it&#8217;ll help inform the decisions of others.</em></p>
<p>Here&#8217;s the list&#8230; some of these are hosted solutions (software-as-service), and some you have to download and install.</p>
<h3><a href="http://projects.zoho.com/home.na">Zoho</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>: yes</p>
</p>
<p><strong>Notes</strong>: This suite of Apps seems like they were hoping to get purchased by Google Apps&#8230; kinda similar, but more labored somehow.</p>
<h3><a href="http://www.myintervals.com/">My Intervals</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>:4</p>
</p>
<p><strong>Wiki?</strong>:yes</p>
</p>
<p><strong>Notes</strong>: You can get 1 project for free&#8230; but the functionality is limited.</p>
<h3><a href="http://bitbucket.org/plans/">Bit Bucket</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: 5</p>
</p>
<p><strong>Wiki?</strong>: yes</p>
</p>
<p><strong>Notes</strong>: yet another solution&#8230;</p>
<h3><a href="http://unfuddle.com/">Unfuddle</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: 2</p>
</p>
<p><strong>Wiki?</strong>: Yes, called &#8220;Notebooks&#8221;</p>
</p>
<p><strong>Notes</strong>: This is one of my favorites for hosted solutions.  I recommend Unfuddle &#8212; it&#8217;s not a silver bullet, but Unfuddle is a great tool for maintaining sanity: clean, simple, and easy to use.  If you pay a little bit, you can unlock the best features. </p>
<h3><a href="http://www.codespaces.com/">Code Spaces</a></h3>
</p>
<p><strong>Cheapest Option</strong>: $3.99/mo</p>
</p>
<p><strong># Users</strong>: 2</p>
</p>
<p><strong>Wiki?</strong>: yes</p>
</p>
<p><strong>Notes</strong>: I felt the manager here was heavy&#8230; sorta Windowsy in a bad way, as in the interface needs to lighten up, but did have a good set of features.</p>
<h3><a href="http://fengoffice.com/web/index.php">Feng Office (Formerly OpenGoo)</a></h3>
</p>
<p><strong>Cheapest Option</strong>: $59/mo</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>: yes</p>
</p>
<p><strong>Notes</strong>: this is a popular solution for its thoroughness. &#8212; you <em>have</em> to install it on your servers, which is actually a good thing for people storing sensitive info.</p>
<h3><a href="http://www.achievo.org/">Achievo</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>:no</p>
</p>
<p><strong>Notes</strong>: This one you have to download and install on a server that runs PHP and MySQL &#8212; it includes features for sales teams.  It&#8217;s built using the ATK framework.</p>
<h3><a href="http://www.projectpier.org/">Project Pier</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>: yes</p>
</p>
<p><strong>Notes</strong>: you gotta download and install this PHP/MySQL app. This is like the PHP cousin of Redmine, so if you don&#8217;t have the ability or resources to work with Ruby on Rails, this is a nice option.</p>
<h3><a href="http://collabtive.o-dyn.de/">Collabtive</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>: Yes</p>
</p>
<p><strong>Notes</strong>: This is a clean app &#8212; another one you have to download and install yourself.  It&#8217;s a nice option (try the <a href="http://collabtive.o-dyn.de/demo/">demo</a>).  The only thing I didn&#8217;t care for was that the app relies heavily on icons, so it&#8217;s hard to get your bearings.  Good German engineering!</p>
<h3><a href="http://www.redmine.org/">Redmine</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: Unlimited</p>
</p>
<p><strong>Wiki?</strong>: Yes</p>
</p>
<p><strong>Notes</strong>: This is my favorite. It&#8217;s not perfect, but it&#8217;s a clean interface and easy to navigate.  The major downside is that you have to install this yourself.  Can you install Ruby on Rails on your server?  No? Then this might not be for you.</p>
<h3><a href="http://basecamphq.com/">BaseCamp</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>:unlimited, but only 1 project.</p>
</p>
<p><strong>Wiki?</strong>: Yes</p>
</p>
<p><strong>Notes</strong>: although this is hugely popular hosted solution and it&#8217;s well integrated with many software projects, this does not have a good ticketing system, and it does not tie into code versioning (e.g. SVN), so I don&#8217;t fully comprehend its popularity.  It&#8217;s pretty good, but it seems over-hyped.</p>
<h3><a href="http://www.fogcreek.com/FogBUGZ/">FogBugz</a></h3>
</p>
<p><strong>Cheapest Option</strong>: $25/mo</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>: yes</p>
</p>
<p><strong>Notes</strong>: This integrates with their <a href="http://www.fogcreek.com/kiln/">Kiln</a> product to tightly integrate bug tracking with code revisions. There&#8217;s another product <a href="https://trello.com/">Trello</a> that does visual project organization, but to be honest, I&#8217;m kinda confused by these interrelated projects.</p>
<h3><a href="http://www.pivotaltracker.com/">Pivotal Tracker</a></h3>
</p>
<p><strong>Cheapest Option</strong>: $7/mo (free for non-profits)</p>
</p>
<p><strong># Users</strong>: 3</p>
</p>
<p><strong>Wiki?</strong>: sorta</p>
</p>
<p><strong>Notes</strong>: This is a serious app from the boys in Boulder for agile development &#8212; they&#8217;ve really thought through the way that large projects should be managed.  It&#8217;s a hosted solution, but they can install it in on-site if needed.</p>
<h3><a href="http://lighthouseapp.com/">Lighthouse</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free (for open source), otherwise $15/mo</p>
</p>
<p><strong># Users</strong>: 10</p>
</p>
<p><strong>Wiki?</strong>: yes</p>
</p>
<p><strong>Notes</strong>: another clean app.  This is a hosted solution.</p>
<h3><a href="http://code.google.com/">Google Code</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>: yes</p>
</p>
<p><strong>Notes</strong>: This option is available ONLY for open-source projects.  It&#8217;s clean, with an easy interface. Updating wiki pages and bugs seems to triggers errors not infrequently, but I recommend this for any open source project.  </p>
<h3><a href="http://trac.edgewall.org/">Trac</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>: yes</p>
</p>
<p><strong>Notes</strong>: A lot of projects use this (e.g. WordPress): You download and install it.  It&#8217;s written in Python and can run on several common databases.</p>
<h3><a href="http://www.mantisbt.org/">Mantis</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>: yes</p>
</p>
<p><strong>Notes</strong>: It&#8217;s functional, but the UI/UX is pretty crusty.  Sorry to poo-poo the hard work of the devs here, but I never felt like I could get clients to use this app&#8230; it&#8217;s a bit disjointed.</p>
<h3><a href="http://www.atlassian.com/software/jira/overview">Jira</a></h3>
</p>
<p><strong>Cheapest Option</strong>: $10/mo</p>
</p>
<p><strong># Users</strong>: 10</p>
</p>
<p><strong>Wiki?</strong>: Yes</p>
</p>
<p><strong>Notes</strong>: This is popular with big corporations. The biggest disadvantage of this is that it&#8217;s HEAVY: you gotta have a rock-solid sysadmin to setup Tomcat on your server to install this behemoth.</p>
<h3><a href="http://www.bugzilla.org/">Bugzilla</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>: no</p>
</p>
<p><strong>Notes</strong>: this is a powerful Perl application used by Firefox that can be the public face of your app. You have to download and install this.</p>
<h3><a href="https://github.com/">GitHub</a></h3>
</p>
<p><strong>Cheapest Option</strong>: Free</p>
</p>
<p><strong># Users</strong>: unlimited</p>
</p>
<p><strong>Wiki?</strong>: Yes</p>
</p>
<p><strong>Notes</strong>: this thing is on fire &#8212; GitHub is THE thing right now.  It&#8217;s wiki is a pain in the ass compared to Google Code when it comes to formatting special characters.  Paid plans get private repos.</p>
<hr/>
<p>Hopefully that&#8217;s a good list to help you narrow down your choices.  If that&#8217;s not good enough for you, check out Wikipedia&#8217;s <a href="http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems">comparison of issue tracking systems</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://tipsfor.us/2009/01/27/installing-modx-modx-series-part-iii/" rel="bookmark" class="crp_title">Installing MODx (MODx Series Part III)</a></li><li><a href="http://tipsfor.us/2011/04/22/comparing-online-invoice-software/" rel="bookmark" class="crp_title">Comparing Online Invoice Software</a></li><li><a href="http://tipsfor.us/2009/02/02/get-acronis-true-image-10-personal-edition-for-free/" rel="bookmark" class="crp_title">Get Acronis True Image 10 Personal Edition for FREE</a></li><li><a href="http://tipsfor.us/2009/04/08/get-paragon-drive-backup-personal-for-free-giveaway-of-the-day/" rel="bookmark" class="crp_title">Get Paragon Drive Backup Personal for Free (Giveaway of the Day)</a></li><li><a href="http://tipsfor.us/2009/05/01/creating-templates-in-modx-part-ii-part-v-in-the-series/" rel="bookmark" class="crp_title">Creating Templates in MODx Part II (part V in the series)</a></li></ul></div><p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2011/12/30/review-of-web-based-project-management-software/">Review of Web-based Project Management Software</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tipsfor.us/2011/12/30/review-of-web-based-project-management-software/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Why GoDaddy is a Horrible Host</title>
		<link>http://tipsfor.us/2011/12/24/why-godaddy-is-a-horrible-host/</link>
		<comments>http://tipsfor.us/2011/12/24/why-godaddy-is-a-horrible-host/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 19:16:44 +0000</pubDate>
		<dc:creator>Everett - TipsFor.us</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[GoDaddy]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://tipsfor.us/?p=2755</guid>
		<description><![CDATA[GoDaddy sucks... their dashboard is completely un-navigable, their shared hosting has repeated errors, their VPS hosts are so poorly configured that they can't even run updates on themselves, their CEO murders elephants for his own amusement, and they think that a few Superbowl ads featuring Danica Patrick will somehow make us forget how bad they suck. And now this... [...]<p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2011/12/24/why-godaddy-is-a-horrible-host/">Why GoDaddy is a Horrible Host</a></p>
]]></description>
			<content:encoded><![CDATA[<p>GoDaddy sucks&#8230; their dashboard is completely un-navigable, their shared hosting has repeated errors, their VPS hosts are so poorly configured that they can&#8217;t even run updates on themselves, their CEO murders elephants for his own amusement, and they think that a few Superbowl ads featuring Danica Patrick will somehow make us forget how bad they suck. And now this&#8230;</p>
<p><span id="more-2755"></span></p>
<p><img src="http://tipsfor.us/wp-content/uploads/2011/12/bob-parsons-godaddy-elephant-300x165.jpg" alt="" title="bob-parsons-godaddy-elephant" width="300" height="165" class="aligncenter size-medium wp-image-2756" /></p>
<p>You may remember my earlier comparison/rant of <a href="http://tipsfor.us/2011/04/18/comparison-of-vps-providers/">VPS Hosting Providers</a>.  GoDaddy was on that list of hosts to avoid, but recent events have loaded my arsenal with rant-fuel and I cannot contain myself any longer: GoDaddy is a horrible web host and a terrible company that not only wastes your time and money, it may actively be trying to F you in the A!</p>
<h3>The Technical</h3>
<p>First, the the technical stuff.  This is stuff that actually happened. These are facts, and I invite any other developer to share similar experiences.  I got a call late Friday night from a frenetic client with the horrible words: <em>&#8220;THE SITE IS DOWN!!!&#8221;</em>.  Any developer who has heard those words on a Friday night knows that they can kiss their weekend goodbye, and so it was.</p>
<p>The site in question was hosted on a GoDaddy shared host.  Ok, so what happened?  Well, it&#8217;s an eCommerce site that required that a certain port be open for incoming and outgoing requests in order for the site&#8217;s software to communicate with the credit card processing (hosted on secure site somewhere else).  Without warning, GoDaddy changed their firewall rules and they <em>closed that port.</em>  Oops.  That prevented the site from doing any business.</p>
<p>So what&#8217;s more frightening here?  The fact that GoDaddy shut down this port without any warning, or the fact that they denied ever having that port open in the first place?  In a separate incident, I had another GoDaddy server upgrade its version of PHP from 4 to 5.  Any application developer will know that such a dramatic change in the underlying code can be catastrophic.  And it was: the application completely broke because much of the code was not compatible with PHP 5.  So the point of the story here is that I have personally experienced massive server changes on GoDaddy servers without any warning and sometimes without any acknowledgement.  This is just not acceptable for any web host, and to date, I&#8217;ve only experienced this with GoDaddy.</p>
<p>And then it gets worse.  The client wanted to keep his GoDaddy account, so he forked over the money to get a Linux VPS with GoDaddy.  Man.  The provisioning took over 12 hours and several calls to tech support.  The GoDaddy dashboard is awful, and their ticketing system is equally poor: <em>you can&#8217;t see your open tickets</em> (!!!), so you have no idea what status they are in.  You can chat with the techs (if the chat window doesn&#8217;t crash before you get through to somebody), but you cannot see any updates or add any information to your requests&#8230; you have to call to get information, and this can take a looooooong time.</p>
<p>But eventually GoDaddy got it up (heheh), and I started to configure the Linux Server with Plesk.  Now the site required PHP 5.2.4 or greater, but the server shipped with PHP 5.1.6 (CentOS).  There was no option to select different distros or different setups other than Plesk or cPanel on CentOS.  So I started to get the server ready for take-off by updating packages and compiling a new version of PHP.  I tried to download core updates&#8230; but <em>out of the box</em>, the repos were not correctly defined, and the VPS could not update itself.  So I tried to run some updates by hand &#8212; we just needed PHP 5.2.4.  So I tried to download and compile it.  But the damn thing kept hanging.  After some googling, it turns out that GoDaddy intentionally spikes the CPU which causes <a href="http://forum.parallels.com/pda/index.php/t-114575.html">memory allocation failures</a>.  So the Plesk setup as offered by GoDaddy could not even put its own pants on.</p>
<p>So we had to pay an extra $10/month to get a WHM/cPanel server.  So it was another 12 hours of provisioning (turns out the process hung, but without the ability to see the status of the ticket, I only got this info when I phoned in).  But basically the same thing happened with the cPanel server: EasyApache could not finish executing due to memory/CPU throttling (not even on the command line).  Something on those servers was completely F&#8217;d.  As usual, GoDaddy techs denied everything, even when confronted with error logs.  It was ridiculous and a waste of time for me and for the client (who hadn&#8217;t been able to sell anything on his site for about 48 hours at this point)</p>
<p>The final bit of ludicrousness was when we requested a separate IP address for the server so we could install the SSL certificate.  With LiquidWeb, getting an extra IP address takes about 60 seconds.  With GoDaddy?  It took about 6 hours.  Blink blink.</p>
<p>So the final solution here was to move this site over to my own server, which only took an hour or so.  Instead of taking all weekend, it took only an hour.  The conclusion is that GoDaddy is really good at creating billable hours, but not at actually having a working product.</p>
<h3>The Non Technical</h3>
<p>The non-technical stuff here is a bit more subjective, but it&#8217;s equally unflattering.  You may remember the controversy when GoDaddy CEO Bob Parsons bragged about <a href="http://www.geek.com/articles/news/godaddy-ceo-bob-parsons-boasts-killing-an-elephant-leopard-on-vacation-video-20110331/">shooting and killing an elephant and a leopard</a>.  Mr. Parsons tried to play it off as some kind philanthropy because &#8220;elephants are destroying Zimbabweans&#8217; crops&#8221;.  In my opinion, anyone arrogant and/or stupid enough to justify their actions with a statement like that really deserves a punch in the dick.  LEOPARDS DON&#8217;T DESTROY CROPS.  And if Bob Parsons really cared about the plight of Zimbabweans&#8217; crops, he&#8217;d do something more effective like fund charity organizations in Africa or help them build a fence. I mean, seriously&#8230; have you seen his <a href="http://www.bobparsons.me/index.php?ci=14969&#038;id=-1&#038;targetGuid=8a09ac71-f2e9-4ee2-aeda-06ec41fc0b20">Video Blog</a>?  Arguably, the elephant and leopard got treated more humanely with bullets to the face than those of us who watched a 61-year-old man ogle the scantily clad women grinding against him while he lectured us on &#8220;hiring great employees.&#8221;</p>
<div id="attachment_2768" class="wp-caption aligncenter" style="width: 310px"><a href="http://tipsfor.us/wp-content/uploads/2011/12/Go-Daddy-Executive-Chairman-Bob-Parsons_-Personal-Blog-1.jpg"><img src="http://tipsfor.us/wp-content/uploads/2011/12/Go-Daddy-Executive-Chairman-Bob-Parsons_-Personal-Blog-1-300x171.jpg" alt="" title="&quot;Great&quot; employees have great bodies!" width="300" height="171" class="size-medium wp-image-2768" /></a><p class="wp-caption-text">Bob evaluates his employees greatness</p></div>
<p>And remember my disgust with <a href="http://tipsfor.us/2011/04/22/comparing-online-invoice-software/">QuickBooks</a>?  Looks like Bob had a hand in that as well: apparently, he sold his accounting software to Intuit in 1994.</p>
<p>And now with the internet censorship laws coming up in relation to the &#8220;Stop Online Piracy Act&#8221; (aka SOPA), we see that GoDaddy is a political animal.  First they came out <a href="http://www.reddit.com/r/politics/comments/nmnie/godaddy_supports_sopa_im_transferring_51_domains/">in support for SOPA</a>.  Then after a &#8220;maelstrom&#8221; of internet backlash, they later <a href="http://mashable.com/2011/12/23/breaking-godaddy-no-longer-supports-sopa/">discontinued support for SOPA</a>.  But what bothers me is the casual internet citizen is fooled by this token gesture.  It seems that it was a calculated move by GoDaddy where they make a public statement to placate the sheople, but behind closed doors, they still are working to game the system for personal gain and the expense of public freedom.  This article about a <a href="http://arstechnica.com/tech-policy/news/2011/11/us-judge-orders-hundreds-of-sites-de-indexed-from-google-twitter-bing-facebook.ars">judge forcing domains to be transferred to GoDaddy</a> was alarming.  How much does the system have to be corrupted if the <em>legal system</em> is ORDERING domains to be transferred to GoDaddy?  Why does this sound like Iraq under Saddam Hussein where oil companies were ORDERED to do business with Saddam&#8217;s relatives. It just stinks to high heaven.</p>
<h3>What to Do</h3>
<p>Get your sites off of GoDaddy.  They are Ok as a registrar if you can tolerate their idiotic dashboard and general ineptitude, but you&#8217;re wasting your life and your money if you host with them.  Gotta love developers: here&#8217;s a good reference for how to move your domains off of GoDaddy: <a href="http://blog.dnsimple.com/preparing-domains-godaddy-for-transfer-out/">Moving Domains off of GoDaddy</a>, but really, if you want to stick it to GoDaddy then you should <strong>call them</strong> and tie up their phone lines as much as possible.  Have them walk you through how to transfer your domains&#8230;. step&#8230;. by&#8230;. step.</p>
<p>Sign up to boycott Godaddy <a href="http://godaddyboycott.org">here</a>.</p>
<p>Find another registrar.  <a href="http://www.namecheap.com/">NameCheap</a> offers pretty much every TLD you can think of, and they at least as cheap.</p>
<p>If you need some good VPS hosting, I still have some space on my server: you get more horsepower than you&#8217;d get on your own VPS, and you don&#8217;t have to spend all the time setting the thing up.  Contact me if you&#8217;re interested.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://tipsfor.us/2011/04/18/comparison-of-vps-providers/" rel="bookmark" class="crp_title">Comparison of VPS Providers</a></li><li><a href="http://tipsfor.us/2011/04/22/comparing-online-invoice-software/" rel="bookmark" class="crp_title">Comparing Online Invoice Software</a></li><li><a href="http://tipsfor.us/2007/07/22/switching-web-hosts-from-1and1-to-hostican/" rel="bookmark" class="crp_title">Switching Web Hosts: From 1and1 to HostICan</a></li><li><a href="http://tipsfor.us/2006/10/22/web-hosting-options/" rel="bookmark" class="crp_title">Web Hosting Options &#8211; The Downside of Shared Hosting</a></li><li><a href="http://tipsfor.us/2006/11/03/to-vps-or-not-to-vps/" rel="bookmark" class="crp_title">To VPS or not to VPS&#8230;</a></li></ul></div><p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2011/12/24/why-godaddy-is-a-horrible-host/">Why GoDaddy is a Horrible Host</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tipsfor.us/2011/12/24/why-godaddy-is-a-horrible-host/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>WordPress vs. MODx</title>
		<link>http://tipsfor.us/2011/04/19/wordpress-vs-modx/</link>
		<comments>http://tipsfor.us/2011/04/19/wordpress-vs-modx/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 17:04:56 +0000</pubDate>
		<dc:creator>Everett - TipsFor.us</dc:creator>
				<category><![CDATA[MODx]]></category>
		<category><![CDATA[Nerd Stuff]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://tipsfor.us/?p=2694</guid>
		<description><![CDATA[WordPress vs. MODx, from the standpoint of a developer [...]<p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2011/04/19/wordpress-vs-modx/">WordPress vs. MODx</a></p>
]]></description>
			<content:encoded><![CDATA[<p>There are a lot of Content Management Systems (CMS&#8217;s) out there, so I wanted to give a blow-by-blow analysis comparing two of them: MODx and WordPress.  I feel oddly qualified to do so: Brian and I just authored a book on WordPress plugin plugin development (<a href="http://www.amazon.com/WordPress-3-Plugin-Development-Essentials/dp/184951352X/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1302098332&amp;sr=1-2">WordPress 3 Plugin Development</a>), and I am a <a href="http://modx.com/partners/solution/listing/fireproof_socks">MODx Solution Partner</a> who was invited to speak at the <a href="http://modxpo.modxcms.com/">MODxpo</a> conference in Dallas last year.  I&#8217;ve used both flavors of MODx (Evolution and Revolution) and WordPress while building somewhere around 50 web sites over the past couple years, and I like both systems.  I have even contributed a couple plugins for both systems (e.g. <a href="http://wordpress.org/extend/plugins/custom-content-type-manager/">Custom Content Type Manager</a> for WordPress). So after the urging of some friends and colleagues (like <a href="http://www.my619.com/">Kris</a>), I&#8217;m organizing my techno-ramblings into a coherent article.</p>
<p>I&#8217;m going to walk through a series of areas and compare and contrast both how both CMSs work in those areas.  The comments here apply to <a href="http://wordpress.org/">WordPress 3.x</a> and (mostly) to <a href="http://modx.com/revolution/">MODx Revolution</a>, but <a href="http://modx.com/evolution/">MODx Evolution</a> is mentioned where appropriate.</p>
<h2>Basic Stuff</h2>
<h3>System Requirements</h3>
<table>
<thead>
<tr>
<th></th>
<th>WordPress 3.1</th>
<th>MODx Revolution</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Server OS</strong></td>
<td>???</td>
<td>
<ul>
<li>Linux x86, x86-64</li>
<li>Windows XP</li>
<li>Mac OS X</li>
</ul>
</td>
</tr>
<tr>
<td><strong>Web Server</strong></td>
<td>
<ul>
<li>Apache ???</li>
<li>NGINX ???</li>
</ul>
</td>
<td>
<ul>
<li>Apache 1.3.x or Apache 2.2.x</li>
<li>IIS 6.0+</li>
<li>Zeus</li>
<li>lighthttpd</li>
<li>Cherokee</li>
<li>NGINX</li>
</ul>
</td>
</tr>
<tr>
<td><strong>Database</strong></td>
<td>
<ul>
<li>MySQL 4.1.20 or higher (5.0+ recommended)</li>
<li>SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP privileges</li>
<li>MyISAM table types</li>
</ul>
</td>
<td>
<ul>
<li>MySQL 4.1.20 or higher (excludes 5.0.51)</li>
<li>Default table encoding of UTF-8</li>
<li>SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP privileges</li>
<li>InnoDB and MyISAM table types</li>
</ul>
</td>
</tr>
<tr>
<td><strong>PHP Version</strong></td>
<td>4.3+ (5.2+ recommended)</td>
<td>5.1.1+ (excluding 5.1.6/5.2.0)<br />
<em>&nbsp;</p>
<ul>
<li>Running as FastCGI</li>
<li>safe_mode off</li>
<li>register_globals off</li>
<li>magic_quotes_gpc off</li>
<li>PHP memory_limit 24MB or more</li>
</ul>
<p></em><em> </em></td>
</tr>
<tr>
<td><strong>PHP Modules</strong></td>
<td>???</td>
<td>
<ul>
<li>zlib</li>
<li>JSON</li>
<li>cURL</li>
<li>ImageMagick</li>
<li>GD lib</li>
<li>PDO, with database driver</li>
<li>SimpleXML</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><em>*Source: <a href="http://wordpress.org/about/requirements/">WordPress requirements</a>, <a href="http://modx.com/revolution/developer/requirements/">MODx requirements</a></em></p>
<p>If the requirements for MODx Revo look insanely detailed, ask yourself this: &#8220;do you really want to be <em>guessing</em> whether or not your server will support a given app?&#8221;  MODx Revo does a pretty good job of testing for the necessary requirements during installation, so you don&#8217;t have any unexpected surprises.</p>
<h3>Installation</h3>
<p>WordPress offers its &#8220;famous&#8221; 5-minute install, and I give them credit where credit is due: WordPress is a simple web app to install, but to be fair, <a href="http://tipsfor.us/2009/01/27/installing-modx-modx-series-part-iii/">installing MODx Evolution</a> is also very straightforward.</p>
<p>MODx Revolution has beefier requirements, and it&#8217;s far more likely you&#8217;ll run into troubles setting up your webserver permissions or PHP extensions (e.g. PDO). Moving a Revolution install to a new server is also a tricky operation that requires some patience (<a href="http://rtfm.modx.com/display/revolution20/Moving+Your+Site+to+a+New+Server">see this how-to</a>).</p>
<div class="summary_div">
<h3 class="summary">Summary</h3>
<p>In short, WordPress and MODx Evolution are easily installed on practically any web server that supports PHP and MySQL. MODx Revo takes longer to install and configure and it requires a beefier server.</p>
</div>
<h2>Templating</h2>
<p>Hands down, MODx offers the gold standard in templating.  Expression Engine is a healthy second place, but only in my days of doing Perl development with the venerable <a href="http://template-toolkit.org/">Template Toolkit</a> did I encounter a templating system that followed good MVC architectural principles as well as MODx.</p>
<p>What does that mean?  It means that if you&#8217;re a front-end designer who likes to roll your own HTML and CSS, then MODx will grant you total freedom to implement the designs you want, whereas WordPress may result in headaches and holes punched in your walls (no comment on the convoluted mess that is Drupal and Joomla templates).  I&#8217;ve posted previously about <a href="http://tipsfor.us/2009/04/30/creating-templates-in-modx-part-i-part-iv-in-the-series/">creating templates in MODx Evolution</a> and how to <a href="http://tipsfor.us/2009/05/01/creating-templates-in-modx-part-ii-part-v-in-the-series/">import existing layouts</a> into MODx Evolution, and the process in MODx Revolution is nearly identical (the only difference is the format of the placeholders).</p>
<p>In MODx, you can easily have multiple templates (i.e. layouts), and use any one of them for <em>any</em> page.  In WordPress, the ability to use a specific template is possible only with <em>pages</em>, not posts.  The thing that really gives me convulsions is understanding how WordPress formats its special pages, e.g. a category page, or an author page. See the image below as a reference for how WordPress formats page requests.</p>
<div id="attachment_2690" class="wp-caption aligncenter" style="width: 310px"><a href="http://tipsfor.us/wp-content/uploads/2011/04/Template_Hierarchy.png"><img class="size-medium wp-image-2690" title="WordPress Template Hierarchy" src="http://tipsfor.us/wp-content/uploads/2011/04/Template_Hierarchy-300x141.png" alt="WordPress Template Hierarchy" width="300" height="141" /></a><p class="wp-caption-text">WordPress Template Hierarchy</p></div>
<p>See the official WordPress docs for <a href="http://codex.wordpress.org/Template_Hierarchy">Template Hierarchy</a> for more information. I honestly have a hard time fathoming that <em>this</em> is the solution that actually got implemented&#8230; what other crazy ideas were on the drawing board?</p>
<div class="summary_div">
<h3 class="summary">Summary</h3>
<p>If having a specific HTML/CSS layout for your site is more than a &#8220;nice-to-have&#8221;, then MODx will save you many hours; the time to rework layouts in WordPress can be considerable and some of the PHP hacks are not trivial, whereas MODx templates are easy to create, modify, and maintain.</p>
</div>
<h2>Menus</h2>
<p>MODx offers nearly infinite menu flexibility through use of menu-generating PHP Snippets, primarily <a href="http://rtfm.modx.com/display/ADDON/Wayfinder">WayFinder</a>, but it&#8217;s not aimed at the average user.  WordPress has a built-in GUI for creating menus, but I have experienced some bugs with it when using custom content types. Your WordPress theme may not support more than one or two menus, so in the end you may end up writing some code in your tmeplates (e.g. using my <a href="http://wordpress.org/extend/plugins/summarize-posts/">Summarize Posts</a> plugin) so you can list the posts that you want to see.</p>
<p>In a nutshell, WordPress offers an easy GUI, but if you need more customization MODx&#8217;s flexibility here is far greater.</p>
<h2>Plugins</h2>
<p>WordPress has a huge number of user-contributed plugins available, whereas MODx has relatively few. The sheer number is not a good comparison, however; I downloaded and tested hundreds of plugins in the process of writing my <a href="http://www.packtpub.com/wordpress-3-plugin-development-essentials/book">WordPress book</a>, and the number of plugins that are unusable due to sophmoric errors or plain-old bad coding is huge. I estimate that at least half of the plugins in the WordPress repository are unusable, and perhaps only a tenth of them are worth using.  There are crufty plugins in the MODx repo to be sure, but the playing field is more even than you might think.</p>
<p>The real difference here comes when you have to <em>write</em> your own code: MODx is a lot easier to work with with a shorter learning curve for a majority of code, whereas learning the ropes of WordPress plugins requires more guidance (hey, did I mention we wrote a <a href="http://www.packtpub.com/wordpress-3-plugin-development-essentials/book">book</a> about that?).</p>
<h2>Architecture</h2>
<p>This is an area that is hard to discuss unless you&#8217;re a geek, but in a word, MODx offers a robust and well-architected MVC framework under the hood that can make writing custom plugins (Snippets, manager pages, et al) a breeze.  The work done by <a href="http://modxcms.com/about/team/jcoward/">Jason Coward</a> and <a href="http://modxcms.com/about/team/shaun-mccormick/">Shaun McCormick</a> is really astounding.</p>
<p>Some of the limitations to WordPress are really staggering: it is basically a stateless application, so by default it does not use sessions, and nearly all of its API functions exist as procedural functions in the main namespace, so naming collisions are a big concern when authoring plugins. This makes certain functionality damn near impossible in WordPress. For example, creating a WordPress application with a login portal and access to custom data models would require an enormous amount of time.  Even accessing WordPress&#8217;s posts and categories is difficult at times; I basically had to rewrite core WordPress functionality with another plugin (<a href="http://wordpress.org/extend/plugins/summarize-posts/">Summarize Posts</a>) just to get the menus and summaries I needed for one recent site.</p>
<p>Another severe limitation is WordPress is that all extensions to the core occur via plugins that are triggered by system events (confusingly they are loosely categorized into &#8220;actions&#8221; and &#8220;filters&#8221;). This construct can be awkward at times, and the WordPress architecture is showing its age as the number of events exponentially increases, whereas the amount of documentation for them continually wanes.  Realistically you can get WordPress plugins to do just about everything you need using only a handful of events, but debugging someone else&#8217;s plugins is a nightmare: there is no centralized location listing which events are being hooked into, and new events are often created and executed on the fly. Debugging WordPress plugins is like Alice&#8217;s trip down the rabbit hole: majorly trippy,and you don&#8217;t know if you&#8217;ll ever come out.</p>
<p>User management is another area where MODx dwarfs WordPress: Revolution can handle totally granular control of permissions, but it is admittedly overly complex for 90%+ of use cases. Evolution offers a much more sensible permissions scheme that covers most use cases.</p>
<p>MODx offers much more sensible implementations of custom code: like WordPress it uses event-driven plugins, but it also uses custom PHP snippets which can be placed anywhere on a page or in a template.</p>
<p>Another impressive feat is how MODx Revolution has abstracted the database into a separate coding layer &#8212; that means it is relatively easy to interface with custom database tables (or even to other database engines) using code that is completely <em>database agnostic</em> (support for SQLite and PostGREs is in the works).  That&#8217;s some seriously geeky stuff that has kept me awake at night trying to comprehend how they accomplished that.  MicroSoft has even worked directly with the MODx team because MODx&#8217;s architecture is flexible enough that it can run on an all MicroSoft stack (i.e. IIS and MS-SQL). I can&#8217;t think of a single other system that switch-hits as well as MODx.</p>
<div class="summary_div">
<h3 class="summary">Summary</h3>
<p>If the site you are building is more of a web application that requires a lot of custom coding, go with MODx; the level of maturity in the underlying MODx framework is light years ahead of WordPress, but be advised that the coding in MODx is sometimes so advanced, it takes a very senior developer to understand what&#8217;s going on. If you decide to do a more serious application-type-project in WordPress, be sure to allocate extra time to augment or rewrite the core code.  If you&#8217;re doing basic extensions or variations of a simple site/blog, then WordPress plugins can do that pretty well, so don&#8217;t overcomplicate things.</p>
</div>
<h2>Dashboard</h2>
<p>WordPress offers a clean manager dashboard for its administrators which relies on the jQuery JavaScript library to provide AJAX functionality and smooth user experience.  It&#8217;s pretty easy to find your way around.</p>
<div id="attachment_2698" class="wp-caption aligncenter" style="width: 310px"><a href="http://tipsfor.us/wp-content/uploads/2011/04/WP-dashboard.jpg"><img class="size-medium wp-image-2698" title="WordPress Manager dashboard" src="http://tipsfor.us/wp-content/uploads/2011/04/WP-dashboard-300x156.jpg" alt="WordPress Manager dashboard" width="300" height="156" /></a><p class="wp-caption-text">WordPress Manager dashboard</p></div>
<p>MODx underwent a huge change in its manager dashboard between Evolution and Revolution, and the Revolution dashboard is overwhelming for many.  Evolution&#8217;s dashboard is cleaner and snappier.</p>
<div id="attachment_2699" class="wp-caption aligncenter" style="width: 310px"><a href="http://tipsfor.us/wp-content/uploads/2011/04/Evo-Dashboard.jpg"><img class="size-medium wp-image-2699" title="MODx Evolution Dashboard" src="http://tipsfor.us/wp-content/uploads/2011/04/Evo-Dashboard-300x160.jpg" alt="MODx Evolution Dashboard" width="300" height="160" /></a><p class="wp-caption-text">MODx Evolution Dashboard</p></div>
<p>MODx Revolution&#8217;s manager dashboard is still being optimized.  It&#8217;s based on <a href="http://www.sencha.com/">ExtJS</a>.  For those of you not familiar with ExtJS, it was based on <a href="http://developer.yahoo.com/yui/">YUI</a> (the Yahoo User Interface library), and it offers some fatastically powerful features for building interfaces for web applications. My only complaint with it is that it&#8217;s <em>heavy</em>: the MODx Revo dashboard can take a long time to load, and sometimes clicking on buttons and links feels unresponsive.</p>
<div id="attachment_2700" class="wp-caption aligncenter" style="width: 310px"><a href="http://tipsfor.us/wp-content/uploads/2011/04/Revo-dashboard.jpg"><img class="size-medium wp-image-2700" title="MODx Revo dashboard" src="http://tipsfor.us/wp-content/uploads/2011/04/Revo-dashboard-300x197.jpg" alt="MODx Revo dashboard" width="300" height="197" /></a><p class="wp-caption-text">MODx Revo dashboard</p></div>
<div class="summary_div">
<h3 class="summary">Summary</h3>
<p>Do not make your decision about which system to use based on the dashboard alone &#8212; that&#8217;s like marrying a girl for how big her tits are.  I know some clients who have loved and hated the dashboards in both systems.  Again, MODx offers more flexibility if you want to change the dashboard behavior.  The big difference here is simple: WordPress gives you a super clean view of your posts based on <em>time</em> whereas MODx gives you a hierarchical view of your posts.</p>
</div>
<h2>Blog</h2>
<p>Everybody wants a blog, just like everybody wants a shiny new car. Authoring blogs has been a core competency of WordPress, and they get massive props for making them very simple to setup: out of the box, you can get a blog up and running with integrated tags and categories and comments within minutes.  It&#8217;s really what WordPress is all about: blogging.  WordPress even has some nice security features in place with its <a href="http://akismet.com/">Akismet spam filter</a>.</p>
<p>Contrary to some of the on-line murmurings out there, both versions of MODx <em>can</em> run blogs, but until MODX 2.2, the process to set them up was painfully laborious in comparison.  The <a href="http://modx.com/extras/package/articles">Articles</a> extra for MODX gives you a quick and easy blog &#8212; it can even import your posts from WordPress, so the gap between the two systems is closing quickly.  The only thing it doesn&#8217;t do as well as WordPress right out of the box is its taxonomies (tags and categories): you still have to do some configuration to get those configured how you want them, but as the docs say:</p>
<blockquote><p>&#8220;MODx Revolution is not blogging software, but rather a full-blown Content Application Platform, it doesn&#8217;t come pre-packaged with a cookie-cutter blogging solution.&#8221;&nbsp;</p></blockquote>
<div class="summary_div">
<h3 class="summary">Summary</h3>
<p>If your priority is to get a blog up and running as quickly as possible, and you have few requirements for supporting any other content, then WordPress is the way to go.  Starting with MODX 2.2, however, you can use its &#8220;Articles&#8221; extra, which gives you simple blogging functionality, with many of the features available to WordPress.</p>
</div>
<h2>Custom Content (CMS functionality)</h2>
<p>If blogging is where WordPress shines, then CMS functionality is where MODx clearly has the upper hand. WordPress does support custom fields for its posts and pages, and in version 3.x, they support additional &#8220;post types&#8221;, so finally WordPress is getting some traction as a CMS, but it&#8217;s still a bit of a toy in comparison to MODx.</p>
<p>One of the biggest problems with WordPress as a CMS is its lack of support for sensible custom fields: for each post or page, you have to manually add the same custom fields over and over again, and by default, the custom fields are always simple text fields.  I have attempted to rectify this in my <a href="http://wordpress.org/extend/plugins/custom-content-type-manager/">Custom Content Type Manager</a> plugin, and my plugin does a lot to give WordPress CMS capabilities, but it still represents a series of awkward workarounds that stretches the WordPress core nearly to its breaking point.</p>
<p>One related area here is how MODx can manage and serve static files via what MODx calls &#8220;Static Resources&#8221;.  This is a great way to enforce permissions on viewing, streaming, or downloading static files (e.g. PDFs or Flash movies).  WordPress just flat out can&#8217;t do that.</p>
<p>Although MODx offers greater flexibility, WordPress&#8217; integration is a bit cleaner for the manager user (it&#8217;s a holy pain in the ass for the developer, but if you download my plugin you should avoid this unpleasantness).  When WordPress registers a new &#8220;post type&#8221;, you get a nice menu icon in your dashboard and it&#8217;s really clear to the manager that he/she is adding a new post, page, or movie (etc). For example, if you want to add a movie post, you&#8217;d click on &#8220;Add Movie&#8221;. It&#8217;s really quite logical.  In MODx, this same type of distinction occurs at the <em>template</em> level. Architecturally, this makes sense, but it&#8217;s confusing for the manager user, because it may not be at all clear that they need to add a &#8220;normal&#8221; page (i.e. resource), and then choose to use the &#8220;movie&#8221; template. I&#8217;m planning a MODx plugin to help rectify this UI &#8220;wart&#8221;.</p>
<div id="attachment_2701" class="wp-caption alignright" style="width: 177px"><img class="size-full wp-image-2701" title="A custom post type in WordPress" src="http://tipsfor.us/wp-content/uploads/2011/04/custom-post-type.jpg" alt="A custom post type in WordPress" width="167" height="254" /><p class="wp-caption-text">A custom post type in WordPress</p></div>
<div class="summary_div">
<h3 class="summary">Summary</h3>
<p>If you have to display multiple types of content on your site (e.g. an eCommerce site), then MODx offers far greater flexibility, but it does take longer to configure. If your CMS requirements are simple and you don&#8217;t need to worry too much about customizations, then WordPress can do that very well and very quickly.</p>
</div>
<h2>SEO</h2>
<p>SEO is the an cyclical buzz, and at the moment, a lot of SEO guys are hailing WordPress as the holy grail of search-word wad-shooting. To be blunt, I think SEO is largely an over-hyped crock of crap. If you build a well-structured site with good content, your pages will show up in search results: if there is a site out there with awesome content that is not showing up in relevant search results, I have yet to see it. Search engine optimization is often a pseudo-science practiced by get-rich-quick marketeers who are convinced that they can turn lead into gold by over-hyping a site with various gimmicks. 90% or more of SEO should have to do with creating good content, and perhaps the last 10% of your efforts should go into polishing your site. It can be used to <em>improve</em> search results, but it tends to fail when you try to make search results come out of thin air.  Too often I have seen companies do this the wrong way around: they spend 90% of their time publicizing a site that is a vapid cesspool instead of spending their time making a site that&#8217;s worth visiting. At best, SEO techniques are constantly changing as Google updates and refines their indexing algorithms. If you optimize your site today and Google farts tomorrow, all of your work may be for naught.  Do your due dilligence, but it&#8217;s just not worth spending inordinate amounts of time tring to beat Google at their own game.</p>
<p>Rants aside, both systems offer ample ways to do search engine optimization.  Assuming that you have good content, the rest of the process boils down to having well structured HTML (which relies on a solid templating system), and the ability to effectively index your pages.  WordPress offers built-in taxonomies (categories and tags) for flagging your posts, and MODx can be set up to do this rather easily by using an <a href="http://rtfm.modx.com/display/revolution20/Template+Variable+Input+Types#TemplateVariableInputTypes-AutoTag">Auto-Tag</a> custom field (a.k.a. a MODx &#8220;Template Variable&#8221;).</p>
<p>MODx offers a much more flexible system for generating URLs (basically you can use any URL you want for any page).  WordPress does offer flexibility here, except for its special pages (e.g. category listings or author pages).</p>
<div class="summary_div">
<h3 class="summary">Summary</h3>
<p>Comparing SEO features between MODx and WordPress is a moot point: both systems allow you to adequately structure your content and your site.</p>
</div>
<h2>Security</h2>
<p>No system is 100% secure. MODx has had relatively few serious exploits; WordPress has had many, no doubt due in part to its popularity.  For what it&#8217;s worth, I have had WordPress and MODx Evolution sites hacked, but not yet a Revolution site.  It&#8217;s hard to quantify how secure an application is&#8230; I&#8217;d love to see the detailed forensic results of a penetration test against default installations of both CMS&#8217;s.  In general though, the WordPress architecture is primitive and more ripe for being hacked: it&#8217;s more difficult to lock down spaghetti code.  WordPress also offers many more plugins, and the plugin authors tend to be less experienced, so their code is more likely to have security holes.</p>
<p>There are many fingerprinting utilities out there that will attempt to locate known weaknesses in plugins, and WordPress is more easily fingerprinted; MODx Revo allows you to change default locations for the MODx manager or to even remove it from public view altogether.  There are some discussions in the MODx Forums about how to <a href="http://modxcms.com/forums/index.php/topic,34074.0.html">harden MODx</a>, but I haven&#8217;t yet seen a detailed how-to on how to eliminate the most common attack vectors. There are also good posts out there for <a href="http://semlabs.co.uk/journal/how-to-stop-your-wordpress-blog-getting-hacked">hardening WordPress</a>.</p>
<p>I reported a nasty <a href="http://modxcms.com/forums/index.php?topic=54874.0">vulnerability in phpThumb</a> that affected MODx and numerous other CMS&#8217;s (phpThumb is a popular image manipulation library), but the MODx Revo architecture prevented the exploit from succeeding on Revo (good job to Shaun and Jason for architecting the connectors in the way they did).</p>
<div class="summary_div">
<h3 class="summary">Summary</h3>
<p>I feel that MODx Revolution is <em>probably</em> more secure, but there are <strong>no guarantees</strong> when it comes to security.  No system is bulletproof, so you best have redundant backups on hand and follow the recommendations of <a href="http://tipsfor.us/2010/05/10/basic-web-security/">Basic Web Security</a> no matter which system you&#8217;re on.</p>
</div>
<h2>Support</h2>
<p>This is another area that is pretty black and white in my opinion: WordPress support sucks.  Although WordPress is more popular if you look at the numbers, you wouldn&#8217;t know it if you post questions in the <a href="http://wordpress.org/support/">WordPress Forums</a>. I have rarely gotten any useful answers (if I got answers at all): anything beyond simple inquiries tend to go unanswered, leaving me alone in the dark reverse-engineering damn near everything.</p>
<p>My other gripe with WordPres is their weird <a href="http://en.support.wordpress.com/com-vs-org/">distinction</a> between <a href="http://wordpress.com/">WordPress.com</a> and <a href="http://wordpress.org/">WordPress.org</a>. You can host your blog at WordPress.com, and then you get more support, but it is effectively software as service: you can&#8217;t upload plugins and you can&#8217;t modify code, so the interface suddenly becomes a bit like BlogSpot.</p>
<p>By contrast, the <a href="http://modxcms.com/forums/index.php">MODx Forums</a> are full of helpful people.  It&#8217;s a great place to be: it&#8217;s not uncommon to get responses from the core team on almost any level of inquiry, from trivial to cerebral meltdowns. There are some superstar participants, such as <a href="http://sottwell.com/">Susan Ottwell</a> and <a href="http://bobsguides.com/">Bob Ray</a>, who have both contributed immensely helpful posts and tutorials on how to use MODx. MODx also offers <a href="http://modx.com/support/commercial/">commercial support</a>; it&#8217;s still in its infancy, but for a yearly fee, you can get access to a kind of &#8220;MODx hotline&#8221; and get help resolving MODx issues on your sites.</p>
<h3>Documentation</h3>
<p>In the same breath as support, I must mention documentation.  In general, documentation for both systems is lacking, in some areas painfully so. While using WordPress, I have often I have searched for hours trying to find a way to do a certain thing, only to end up grepping through the code base and deciphering the raw code myself.  Frequently the official documentation has holes or in some cases, it&#8217;s just plain wrong.  The best resources for some advanced WordPress features are blogs written other developers.</p>
<p><a href="http://rtfm.modx.com/dashboard.action">MODx&#8217;s documentation</a> is also frustratingly AWOL on a number of topics, but least the MODx code base is integrated with a standard documentation publishing system so if needed you can see for yourself how the functions are structured without having to grep through the code base. The vibrant MODx forums fill in a lot of the holes in the documentation, and that&#8217;s a huge benefit for any open-source project.</p>
<div class="summary_div">
<h3 class="summary">Summary</h3>
<p>If you need support for your site, especially <em>guaranteed</em> support, then only MODx offers a paid support service; WordPress doesn&#8217;t offer a paid support option.</p>
</div>
<h2>Scalability</h2>
<p>WordPress can handle a huge number of posts, but it does get bogged down with a large number of pages, and there are lots of whisperings about this (e.g. <a href="http://forums.digitalpoint.com/showthread.php?t=1641967">here</a>).  I suspect it has to do with WordPress&#8217; convoluted templating system (see above), which makes me wonder what the limits are on custom post types.</p>
<p>MODx Evolution suffered from a limit of approximately 5000 resources (in MODx, pages and posts are types of resources), but that limit has been corrected in an upcoming release thanks largely to the efforts of Charlie over at <a href="http://www.prowebscape.com/">ProWebscape.com</a>.</p>
<p>MODx Revolution has no such limits: it offers a great built-in caching system that allows it to serve pages very quickly.  It has been benchmarked as twice as fast as Expression Engine (see <a href="http://modxcms.com/forums/index.php?topic=57666.0">this blog post</a>).</p>
<p>More importantly, MODx Revolution was built with scaling in mind: it stores session data in the database, so it is easily deployed on load-balanced servers.  This is hugely important if you are building a site that might one day get massive amounts of traffic; WordPress can be deployed like this, but <a href="http://wordpress.org/support/topic/wordpress-on-load-balanced-servers">such usage</a> is not generally anticipated.  I don&#8217;t know of many large commercial sites running WordPress (in fact, I only found one: <a href="http://www.seopher.com/articles/biggest_most_famous_sites_using_wordpress">9rules.com</a>).</p>
<div class="summary_div">
<h3 class="summary">Summary</h3>
<p>MODx is by far the more mature option here if you anticipate building a large site.</p>
</div>
<h2>Conclusion</h2>
<p>I do like both systems, and I use them both daily.  WordPress has a much lighter footprint and is easier to use for a large number of use-cases: if you just need to get a site out the door <em>fast</em>, then WordPress is really hard to beat.  WordPress is plug-and-play for just about everything and that saves you <em>hours</em> of setup time, so it can be the right solution for a majority of sites.  But the more customizations you require (particularly in scripts or in layouts), then the more appealing MODx becomes: WordPress has thousands of plugins available, but if those aren&#8217;t meeting your needs, I&#8217;ve found certain types of customizations to be extremely difficult in WordPress whereas most often, MODx handles them with ease.  Doing things like building web applications with strict formatting requirements is much easier in  MODx because it&#8217;s built more as a launchpad for customizations: it&#8217;s really more of a content management <em>framework</em> (CMF).  MODx Evolution is the best system I&#8217;ve used for building small to medium sized informational/brochure sites, WordPress rules as the blogging king, and I&#8217;ve been very impressed with how easily I can build web applications using MODx Revolution. There isn&#8217;t one tool that&#8217;s right for every job; the more projects you complete, the better idea you&#8217;ll have as to which system will accomplish your requirements more easily, and hopefully this article helps you spot more of what each system is good at.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://tipsfor.us/2011/09/25/modx-vs-wordpress-revisited/" rel="bookmark" class="crp_title">MODx vs. WordPress (revisited)</a></li><li><a href="http://tipsfor.us/2012/01/10/how-wordpress-destroyed-the-internet/" rel="bookmark" class="crp_title">How WordPress Destroyed the Internet</a></li><li><a href="http://tipsfor.us/2008/09/08/content-management-systems-cms/" rel="bookmark" class="crp_title">Content Management Systems (CMS)</a></li><li><a href="http://tipsfor.us/2009/04/30/creating-templates-in-modx-part-i-part-iv-in-the-series/" rel="bookmark" class="crp_title">Creating Templates in MODx Part I (part IV in the series)</a></li><li><a href="http://tipsfor.us/2007/03/03/using-wordpress-211-please-upgrade/" rel="bookmark" class="crp_title">Using WordPress 2.1.1? Please upgrade</a></li></ul></div><p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2011/04/19/wordpress-vs-modx/">WordPress vs. MODx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tipsfor.us/2011/04/19/wordpress-vs-modx/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Comparison of VPS Providers</title>
		<link>http://tipsfor.us/2011/04/18/comparison-of-vps-providers/</link>
		<comments>http://tipsfor.us/2011/04/18/comparison-of-vps-providers/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 16:08:13 +0000</pubDate>
		<dc:creator>Everett - TipsFor.us</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nerd Stuff]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://tipsfor.us/?p=2631</guid>
		<description><![CDATA[How do I go about choosing a viable VPS for my websites? This article relates our personal experience dealing with several different service providers so you don't have to. [...]<p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2011/04/18/comparison-of-vps-providers/">Comparison of VPS Providers</a></p>
]]></description>
			<content:encoded><![CDATA[<p>So you&#8217;ve graduated from the world of shared hosting providers and it&#8217;s time for you to set up your own big-boy hosting package.  You need a Virtual Private Server (VPS) of some sort, but the options are dizzying because these services have become a commodity: it seems that nearly everyone is peddling some variation of them.  Well, we feel your pain.  And I feel my own pain&#8230; I&#8217;ve dealt with a number of hosting providers over the past few years, and I&#8217;m writing this article to share with you my opinions.  I&#8217;ve set up accounts for myself or for my clients on all of the following systems, and here is my unbridled opinion of each of them.  Keep in mind that these reviews and opinions relate primarily to using the services for web hosting.</p>
<p>These aren&#8217;t affiliate links unless otherwise indicated (hey, if you want to throw us a bone for saving you the pain of experiencing these guys yourself, then please, feel free to click the affiliate link: it costs you nothing and it is your way of saying &#8220;thanks for saving me the trouble of learning this stuff the hard way&#8221;). </p>
<h3><a href="https://www.liquidweb.com/">LiquidWeb</a></h3>
<p>LiquidWeb has impressed me with its clean integrations and its &#8220;heroic support&#8221;.  That doesn&#8217;t mean they&#8217;ve been able to fix every problem I&#8217;ve had, but to be fair, a lot of the tricky stuff was weird 3rd party installs that *I* struggle with greatly.  But they have been very responsive in their tickets and I&#8217;ve never felt abandoned or in the dark.</p>
<p>The standard VPS&#8217;s offer a good value, but if you need more horsepower, their <a href="https://www.liquidweb.com/SmartServers/index.html">SmartServers</a> offer a nice combination of virtual/cloud and dedicated qualities, and it&#8217;s a good combo for many folks.  These come by default with WHM/cPanel, so it&#8217;s easy to set up sub-accounts with their own logins. <a href="http://www.liquidweb.com/?RID=fireproofsocks">Throw me a Bone (affiliate link)</a></p>
<h3><a href="http://mediatemple.net/">Media Temple</a></h3>
<p>This is a popular option, although I&#8217;m not sure why&#8230; their cloud servers go down frequently, they&#8217;ve had several pretty severe security issues, and using SSH on their servers is a holy pain in the ass because SSH dumps you in some foreign directory miles away from your home directory, whereas FTP takes you to your home directory.  What?  Yes, it is obnoxious and confusing, and they disconnect your SSH session after 5 minutes, which is approximately 1 minute less than the time it takes you to RTFM through your notes and emails to find where the hell your home directory is or which command you need to run to escalate yourself to the proper user to be able to do anything useful.  MediaTemple uses Plesk to offer control panels to their clients, and Plesk is a nightmare if you ever try to do any sysadmin work on the command line.  I&#8217;ve had a couple clients on MediaTemple, and it just seems like it&#8217;s a rocky road with bumps in the service and difficulties in doing basic tasks.  It&#8217;s not the worst out there, but I wouldn&#8217;t rate MediaTemple as anything better than mediocre.</p>
<h3><a href="http://vps.net/">VPS.net</a></h3>
<p>I do <strong>not</strong> recommend these guys.  They do have a nice looking site and what looks to be a nice product, but my experience with them was wholly negative.  &#8220;Jeez&#8221;, you might be thinking, &#8220;don&#8217;t flame a brother in writing!&#8221;, but sit down around the campfire and let me tell you why I feel completely comfortable doing so&#8230;.</p>
<p>It all started when  I set up a VPS server with VPS.net and I signed up for their paid snapshots knowing that I was liable to screw up my server at some point and I&#8217;d want to roll back to a snapshot image.  Sure enough, I borked my server by removing the sqlite package, which completely destroyed the functionality of my yum utility (don&#8217;t ever do what I did, by the way).  &#8220;No problem&#8221;, I thought, &#8220;I&#8217;ll just roll back.&#8221;  Well, the restoration process had a fatal flaw, which completely toasted my server.  After using their &#8220;restoration&#8221; utility, I didn&#8217;t just have a server with a broken yum utility, I had a completely fried server (ooo&#8230; that&#8217;s a bad code taco on that one).  The people over at VPS.net were completely unwilling to admit the problem.  I wasted about 2 days waiting for them to either fix the problem or to just come clean and say &#8220;hey, we&#8217;re really sorry, but we had a glitch in our snapshot utility so we only have partial backups of your server.&#8221;  No.  They hemmed and hawed and wasted my time for 2 days until finally one of the techs admitted that there had been a problem.  I think he was probably later executed by firing squad for insubordination and refusing to tow the party line.  I needed to clock in about 40 hours (all un-billable, by the way) to rebuild the server from scratch, and they acted like the Soviets when Chernobyl blew up: in typical fashion they denied anything happened until European scientists started measuring massive amounts of radiation and said &#8220;uh, comrades&#8230; did something happen at your reactor?&#8221;</p>
<p>While waiting days for a response (all while my server and all of its sites were completely down), my patience got exhausted, so I finally threatened to make a blog post like this one.  The CTO jumped in saying &#8220;I was approaching this in the wrong way&#8221;.  I listed the several tickets that I had filed that had gotten <strong>no</strong> response for 48 hours (even ones that *he* had initially responded to).  And then even the CTO stopped responding to my requests for information (read: he must have known how badly they screwed up).  His response was literally an advertisement: he blabbed on about how awesome their servers were and what great new offerings were available.  I felt like he had just run over my dog, and instead of apologizing for killing my best friend, he was yammering on about awesome his car was with its dual-hemi&#8217;s, turbo-charged engine and high-performance tires.  The final &#8220;kiss my ass&#8221; message they sent me was a legalese &#8220;F-U&#8221; which basically stated that none of their services, including backups, were guaranteed.  Seriously, I don&#8217;t often say stuff like this this in writing, but VPS.net can go french kiss a donkey&#8217;s ass.  I gave them every opportunity to respond to my questions or to justify their actions, and they ignored me, so I feel I&#8217;m being more than fair.</p>
<p>So dealing with VPS.net cost me several thousand dollars, it almost cost me a client, and their ineptitude set me back on several high priority projects, and their response to a completely legitimate issue was childish and unprofessional, and my requests for just basic professionalism were ignored.  So there you have it: my rant against VPS.net.  Use their services at your own risk.</p>
<h3><a href="http://vpslink.com/">VPSlink.com</a></h3>
<p>These guys offer a simple no-frills hosting package, and I&#8217;ve used them for several dev projects over the years.  Nothing fancy, but they are responsive to the requests, and I&#8217;ve only had minimal fuss with their servers and their control panel is easy to navigate.  They may not give you as much RAM as some for the price, but they do give you lots of CPUs (like 16!).  I like these guys and I give them a good thumbs up. There is no cPanel type dashboard for sub-accounts, so this one is only for command-line sysadmins only.</p>
<h3><a href="http://serveraxis.com/">ServerAxis.com</a></h3>
<p>This is another no-frills VPS system that offers some pretty nice stats for the price: lots of RAM and a good amount of CPU.  They offer a few more options than VPSLink (e.g. you can pay extra to get an external backup volume mounted to your server), and they are a bit more scalable, but I didn&#8217;t find their admin panels very intuitive, so I&#8217;ve lost time fumbling through them. There is no cPanel type dashboard for sub-accounts, so this one is only for command-line sysadmins only, but still a solid thumbs-up with these guys.</p>
<h3><a href="http://www.godaddy.com/hosting/virtual-dedicated-servers.aspx">GoDaddy</a></h3>
<p>Ah yes, now even GoDaddy is offering VPS services (hey, we said this stuff is becoming a commodity).  The prices there look competitive, but my experiences with GoDaddy as a host have been mindbogglingly poor.  Their shared hosting is a complete disaster &#8212; hands down, it&#8217;s the worst I&#8217;ve seen&#8230; they arbitrarily limit functionality, it takes <em>hours</em> to complete tasks that take only minutes on other hosts, and all for a cost that is <em>higher</em> than their competitors.  I even had one of their techs tell me that the MySQL dump was &#8220;working perfectly&#8221; when the log file showed clearly that there was an error.  Blink.  Are they blind?  Or just stupid?  They also had zero understanding of how DNS records worked, so they weren&#8217;t able to offer any assistance in configuring a custom zone file.  Furthermore, their dashboard is impossibly confusing to navigate.  Do you know that weird castille soap by Dr. Bonner?  I&#8217;m pretty sure the intern that did the layout for that soap is the same person who did the UI for GoDaddy&#8217;s control panel because I always have to dial their support # when I have to do anything in there.</p>
<div id="attachment_2677" class="wp-caption aligncenter" style="width: 510px"><img src="http://tipsfor.us/wp-content/uploads/2011/04/Bronners2.png" alt="Did the same guy do GoDaddy&#039;s control panel layout?" title="Worst Layout Ever" width="500" height="353" class="size-full wp-image-2677" /><p class="wp-caption-text">Layout designed by GoDaddy: Worst Layout Ever</p></div>
<p>I mean seriously&#8230; can you read that?</p>
<p>So even though these look like competitive prices, I have severe reservations about using GoDaddy as anything more than a registrar.  Hey, I want to jump on Danica Patrick as much as the next horny guy, but maybe if they spent some time cleaning up their site and services instead of Super Bowl ads and models, they&#8217;d have a product worth recommending, but as it stands, you should pass on GoDaddy as a host.</p>
<h3><a href="http://aws.amazon.com/ec2/">Amazon cloud EC2</a></h3>
<p>This is a popular option because hey, it&#8217;s Amazon&#8230; but I&#8217;ve found EC2 cloud stuff to be a pain in the ass to use simply because you get lost on the command line.  It&#8217;s worse than MediaTemple from a command-line standpoint.  In my opinion, being on the cloud means your data theoretically is always there (there are <a href="http://money.cnn.com/2011/04/21/technology/amazon_server_outage/index.htm?hpt=T2">outages</a>), but if you&#8217;re coming in via SSH, then <em>you can&#8217;t find it.</em>  Haha.  Only sort of kidding there.  In general, this isn&#8217;t a very nice option for those  people doing simple web hosting types of services.  It&#8217;s more appropriate for companies doing persistent application deployments. </p>
<h2>Other Providers</h2>
<p>I feel obligated to mention the following 2 providers because so many people I work with recommend them highly:</p>
<ul>
<li><a href="http://www.linode.com/index.cfm">Linode.com</a></li>
<li><a href="http://www.slicehost.com/">SliceHost.com</a></li>
</ul>
<p>I don&#8217;t have first hand experience with them, so I can&#8217;t comment directly.</p>
<h2>Conclusion</h2>
<p>There are a lot of options out there, but with enough time, patience, and trouble-shooting elbow-grease, you can find a web host that works for you.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://tipsfor.us/2011/12/24/why-godaddy-is-a-horrible-host/" rel="bookmark" class="crp_title">Why GoDaddy is a Horrible Host</a></li><li><a href="http://tipsfor.us/2009/02/27/moving-wordpress-to-mediatemple-hosting/" rel="bookmark" class="crp_title">Moving WordPress to MediaTemple Hosting</a></li><li><a href="http://tipsfor.us/2007/07/22/switching-web-hosts-from-1and1-to-hostican/" rel="bookmark" class="crp_title">Switching Web Hosts: From 1and1 to HostICan</a></li><li><a href="http://tipsfor.us/2011/04/22/comparing-online-invoice-software/" rel="bookmark" class="crp_title">Comparing Online Invoice Software</a></li><li><a href="http://tipsfor.us/2006/11/03/to-vps-or-not-to-vps/" rel="bookmark" class="crp_title">To VPS or not to VPS&#8230;</a></li></ul></div><p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2011/04/18/comparison-of-vps-providers/">Comparison of VPS Providers</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tipsfor.us/2011/04/18/comparison-of-vps-providers/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Releasing New Versions of your WordPress Plugins</title>
		<link>http://tipsfor.us/2011/03/05/releasing-new-versions-of-your-wordpress-plugins/</link>
		<comments>http://tipsfor.us/2011/03/05/releasing-new-versions-of-your-wordpress-plugins/#comments</comments>
		<pubDate>Sat, 05 Mar 2011 08:40:22 +0000</pubDate>
		<dc:creator>Everett - TipsFor.us</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://tipsfor.us/?p=2656</guid>
		<description><![CDATA[<p>If you are a WordPress plugin developer, then this post is for you. There is very little documentation on how to effectively use the WordPress Subversion repository, and the repo architecture is critically flawed in its structure making &#8220;kosher&#8221; usage seem entirely buggy. Worse yet, the support in the WordPress forums is practically non-existant. [...]<p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2011/03/05/releasing-new-versions-of-your-wordpress-plugins/">Releasing New Versions of your WordPress Plugins</a></p>
]]></description>
			<content:encoded><![CDATA[<p>If you are a WordPress plugin developer, then this post is for you.  There is very little documentation on how to effectively use the WordPress Subversion repository, and the repo architecture is critically flawed in its structure making &#8220;kosher&#8221; usage seem entirely buggy.  Worse yet, the support in the WordPress forums is practically non-existant.  For a more thorough explanation of this process, see our book on <a href="http://www.packtpub.com/wordpress-3-plugin-development-essentials/book">WordPress 3 Plugin Development Essentials</a>, which features an entire chapter on dealing with SVN and the WordPress repository.</p>
<p><a href="http://tipsfor.us/2011/03/05/releasing-new-versions-of-your-wordpress-plugins/"><em>Click here to view the embedded video.</em></a></p>
<p>Below is the short summary of what is presented in the video. </p>
<h2>How to release updates to your WordPress plugin (quickie version)</h2>
<ol>
<li>Make the updates to your code, fix any errors, add new features.</li>
<li>Update your plugin&#8217;s <strong>main file</strong> (the one with the information header) so that it references the new version of your plugin, e.g.<br />
<code>Version: 0.5</code></li>
<li>Update your <strong>readme.txt</strong> file to describe the changes you have made, but DO NOT change the <strong>Stable Tag</strong>.  This number must point to an <em>existing</em> directory inside your repo&#8217;s tags directory.</li>
<li>Save your files, then commit your changes to the SVN repo, e.g. <code>svn commit . -m "My new version is ready"</code></li>
<li>Tag the new version using the SVN copy command to copy the <em>trunk</em> new a new numbered directory in <em>tags</em>, e.g. <code>svn copy http://plugins.svn.wordpress.org/your-plugin/trunk http://plugins.svn.wordpress.org/your-plugin/tags/0.5</code><br/>Remember: the tagging operation is just a copy operation.</li>
<li>By performing the tagging (i.e. copy) operation, a new directory has been created inside the <em>tags</em> directory.  So only now can you safely update your readme.txt file&#8217;s <strong>Stable Tag</strong>, e.g.<br />
<code>Stable tag: 0.5</code><br/><br />
That number acts as a pointer to the corresponding folder inside of the tags directory (it would point to <em>http://plugins.svn.wordpress.org/your-plugin/tags/0.5</em> in this example).</li>
<li>Commit your changes to the <strong>readme.txt</strong> file. This will ensure that the <em>Stable Tag</em> attribute points to the newly created version:  <code>svn commit . -m "Updating the stable tag"</code>
<li>You should be done now, but the WordPress SVN repository has been so problematic&#8230;. keep an eye on your plugin&#8217;s download page and verify that the changes get picked up.  The changes should be picked up within 15 minutes or so&#8230; if they don&#8217;t get picked up, look at the downloaded zip file carefully&#8230; does the link say one thing but the name of the zip file says something else?  It&#8217;s easy to mix things up, so if you get stuck, try reviewing the steps here.</li>
</ol>
<h2>How to release updates to your WordPress plugin (Long Version)</h2>
<p>Ok, that was too quick?  Well, we left out some important geeky points.  The way WordPress&#8217; download page works is that it looks at the readme.txt file at the <em>HEAD</em> of the repo, and then it follows the value listed there for <strong>Stable tag</strong>.  If the <strong>Stable tag</strong> lists version 0.8, then the information from <code>tags/0.8/readme.txt</code> is used to generate your plugin&#8217;s information page and the files in <code>tags/0.8</code> are packaged up into a zip file and that&#8217;s what downloads when the user clicks the download link.</p>
<p>Can you see the problem with this setup?  Normally, when you tag a directory in SVN, that copy is treated as a read-only reference, but in this setup, it is frequently easier and less prone to errors for you to go into the <em>tags</em> directory and make your edits.  This is normally a bit no-no for version control!</p>
<p>So the safer way to do this is to develop your plugin normally inside the wp-content/plugins directory and submit to the trunk as you normally do.  Once you&#8217;re ready to publish a release, go to a new folder somewhere on your hard drive and checkout your ENTIRE project, trunk, tags, and all. Then you can do your tagging operation locally, e.g. <code>svn copy trunk tags/0.9</code>, and that will give you a new directory.  You can update that directory&#8217;s readme.txt file and your plugin&#8217;s information header, then commit all of your code (trunk and all tags folders).</p>
<p>Hope that helps los dudes.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://tipsfor.us/2006/08/13/audio-player/" rel="bookmark" class="crp_title">Audio Player</a></li><li><a href="http://tipsfor.us/2007/03/03/using-wordpress-211-please-upgrade/" rel="bookmark" class="crp_title">Using WordPress 2.1.1? Please upgrade</a></li><li><a href="http://tipsfor.us/2011/09/25/modx-vs-wordpress-revisited/" rel="bookmark" class="crp_title">MODx vs. WordPress (revisited)</a></li><li><a href="http://tipsfor.us/2009/02/27/moving-wordpress-to-mediatemple-hosting/" rel="bookmark" class="crp_title">Moving WordPress to MediaTemple Hosting</a></li><li><a href="http://tipsfor.us/2008/03/28/using-javascript-documentwrite-for-seo/" rel="bookmark" class="crp_title">Using Javascript document.write for SEO</a></li></ul></div><p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2011/03/05/releasing-new-versions-of-your-wordpress-plugins/">Releasing New Versions of your WordPress Plugins</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tipsfor.us/2011/03/05/releasing-new-versions-of-your-wordpress-plugins/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Basic Web Security</title>
		<link>http://tipsfor.us/2010/05/10/basic-web-security/</link>
		<comments>http://tipsfor.us/2010/05/10/basic-web-security/#comments</comments>
		<pubDate>Mon, 10 May 2010 18:00:51 +0000</pubDate>
		<dc:creator>Everett - TipsFor.us</dc:creator>
				<category><![CDATA[Nerd Stuff]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://tipsfor.us/?p=2567</guid>
		<description><![CDATA[<p>Web security is a huge topic, and this article only intends to cover some of the most basic issues and increase awareness of how carelessness or ignorance can lead to exploits. Ultimately, what you don&#8217;t know can hurt you, so it&#8217;s in your best interest to learn as much as you can about your [...]<p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2010/05/10/basic-web-security/">Basic Web Security</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Web security is a huge topic, and this article only intends to cover some of the most basic issues and increase awareness of how carelessness or ignorance can lead to exploits.  Ultimately, what you don&#8217;t know can hurt you, so it&#8217;s in your best interest to learn as much as you can about your site and the technologies it relies on.  Here&#8217;s a brief run-down of some fairly common mistakes I&#8217;ve come across and what you can do to either avoid them or lessen your vulnerability.</p>
<div id="attachment_2578" class="wp-caption aligncenter" style="width: 648px"><img src="http://tipsfor.us/wp-content/uploads/2010/05/Suspected_Malware_Site-1.jpg" alt="Suspected Malware Site!" title="You&#039;ve been F&#039;d in the A!  Sometimes this warning is the first indication you have that something is wrong" width="638" height="432" class="size-full wp-image-2578" /><p class="wp-caption-text">You've been F'd in the A!</p></div>
<h2>Make Rolling Backups</h2>
<p>If you do nothing else, make sure you are backing up your site and its databases.  So long as you know if/when your site fails (or is hacked) and have the ability to roll back to a known good state, you have little to fear.</p>
<p>Make SURE you practice restoring a site from your backups!  An untested backup is worthless.  Nothing is worse that THINKING you have a viable backup only to discover that it is actually corrupted.</p>
<p>As your backup needs mature, consider storing them offsite, e.g. on Amazon&#8217;s S3 service.</p>
<p>I&#8217;m supplying two of my most-used <a href="http://fireproofsocks.com/backup_scripts.zip">backup scripts</a> for those in need.  These are fairly simple, but they will work on shared hosts.  They will backup a web site&#8217;s files and its databases.</p>
<h2>Be Diligent about Passwords</h2>
<p>You&#8217;ve probably heard this a hundred times before, but it is really important:</p>
<ul>
<li><strong>Avoid simple passwords!</strong>  Try mixing up combinations of smaller units, e.g. &#8220;AlphaBetaCharlie&#8221; instead of &#8220;abc&#8221;.  Be creative.  You can have strong passwords that are easy to remember!</li>
<li>Store your passwords in a safe place, e.g. in a password manager like <a href="http://tipsfor.us/2008/09/20/keepass-never-remember-a-password-again/">KeePass</a> or in an encrypted disc image</li>
<li><strong>Change your Passwords Frequently!</strong>  Literally, put this in your calendar so you remember to do it on a periodic basis.  This helps avoid brute-force attacks.</li>
<li>As a secondary line of defense, you can put an .htaccess password on your manager pages.  All this does is slow down a brute-force attack by forcing the attacker to crack an additional password.
</ul>
<h3>Password Protecting Directories using .htaccess</h3>
<p>This adds an additional layer of authentication to a site or to a page; it&#8217;s not meant to substitute for more robust firewall rules or active filtering, but it is easy to set up.</p>
<p>First, create a username and password in a file that .htaccess can read.  This can be done on the bash command line using the <strong>htpasswd</strong> command:</p>
<p><code>htpasswd -c /path/to/htpassword/file name_of_user</code></p>
<p>Next, add the following to your .htaccess file.  Be sure you reference the file you just created above:</p>
<p><code>AuthName "Protected Area"<br />
AuthGroupFile /dev/null<br />
AuthType Basic<br />
AuthUserFile /path/to/htpassword/file<br />
Require valid-user<br />
</code></p>
<p>For some more detailed information on .htaccess passwords, see <a href="http://www.isrl.illinois.edu/systems/Documentation/htaccess_howto.html">this page.</a></p>
<h2>Stay Patched</h2>
<p>Make sure you&#8217;ve got an updated version of your operating system, your scripting language (PHP), your database (MySQL), and your software (WordPress, MODx, etc.).  Sometimes applying patches can be scary, but it&#8217;s a lot less so if you&#8217;ve got those rolling backups in place!</p>
<p>I want to make mention of a very useful tool: <a href="http://www.simplescripts.com/">SimpleScripts</a>.  It&#8217;s available on Bluehost accounts; it provides one-click installs of many web software packages (like WordPress and MODx) and it will alert you to update them when you log into your cPanel.  It&#8217;s a real time-saver!</p>
<h2>Clean your Room!</h2>
<ul>
<li>Do not install superfluous/untrusted software on your site! Don&#8217;t go dumpster diving for code that&#8217;s going to end up on a public-facing web site!</li>
<li>Shut down services you&#8217;re not using (e.g. blog posts) because it takes more time to secure them.</li>
<li>Do not store backups or sensitive data inside your document root!</li>
<li>Encrypt sensitive data</li>
<li>Check permissions.</li>
</ul>
<div id="attachment_2577" class="wp-caption aligncenter" style="width: 421px"><img src="http://tipsfor.us/wp-content/uploads/2010/05/Files-PROPER-STRUCTURE.jpg" alt="Proper web site folder structure" title="Proper web site folder structure" width="411" height="127" class="size-full wp-image-2577" /><p class="wp-caption-text">Don't put backups or database dumps in your document root!</p></div>
<p>Make sure you organize your site&#8217;s files in a way that ensures that only you have access to sensitive data like backups or database dumps.  These should <em>NEVER</em> be stored in the publicly viewable document root!</p>
<h2>Cross Site Scripting</h2>
<p>Behold the terror that is:</p>
<p>		<code>&lt;?php print $_GET['x']; ?&gt;</code></p>
<p>That code should NEVER be used on a public site because it effectively gives free access to the public to put whatever they want on your site! This type of code often sneaks into pagination links or into code that re-populates forms, e.g.:</p>
<p><code>&lt;input type=&quot;text&quot; name=&quot;myfield&quot; value=&quot;&lt;?php print $_POST['myfield']; ?&gt;&quot; /&gt;</code></p>
<p>		where the &#8216;myfield&#8217; variable contains something like:<br />
			<code>&quot; /&gt; &lt;script src=&quot;http://evilsite.com/js/screwed.js&quot;&gt;&lt;/script&gt;</code></p>
<p>For a list of values you might want to try pasting into form fields to see if they are secure, check out this great cheat sheet at <a href="http://ha.ckers.org/xss.html">http://ha.ckers.org/xss.html</a></p>
<p>In the end, be REALLY aware of any user-submitted data.  Users can put their own data into ANY form field, and into any cookie, so anything in the $_GET, $_POST, or $_COOKIE arrays (and also the $_REQUEST array) is inherently insecure and should be carefully filtered.  These are like the STDs of the web!!!</p>
<p>For articles about web hacks and some good real-world examples, check out other articles on <a href="http://ha.ckers.org/">http://ha.ckers.org/</a></p>
<h3>Don&#8217;t Take Cookies From Strangers!</h3>
<p>If you thought cookies were somehow immune to the area of security threats, they are not!  It&#8217;s easy to write your own!  The Firefox <a href="https://addons.mozilla.org/en-US/firefox/addon/60">Web Developer</a> plugin lets you easily create your own cookies.  This is great as a web developer, but it can also be a sneaky tool for a hacker to introduce unintended code to your application, so filter cookie contents as carefully as you would the user-submitted forms.</p>
<p>Cookies also store the PHP session id; all $_SESSION data is stored on the server, but the unique key that associates that data with the user is stored in the user&#8217;s cookie.  If one user authenticates, it&#8217;s possible for <em>another</em> user to make requests using that $_SESSION id!  Especially with applications that require a login, it&#8217;s good practice to get a new session id using <a href="http://www.php.net/manual/en/function.session-regenerate-id.php">session_regenerate_id()</a>.</p>
<h3>Filtering data</h3>
<p>Every time you submit form data, you should write your regular expressions very carefully so your application accepts ONLY clean, valid data.  In general, if you can keep input as simplistic as possible, it tends to be easier to secure.  Integer only inputs are &#8220;safer&#8221; than alphabetic inputs.  Alphabetic input is safer than input that accepts HTML tags, and so on.</p>
<p>Consider the following filters:<br/><br />
<strong>Type-Casting to force integer only values:</strong><br/><br />
<code>&lt;?php<br />
$x = (int) $_GET['x'];<br />
?&gt;<br />
</code><br />
<br/><br />
<strong>Alphabetical Characters Only:</strong><br/><br />
<code><br />
// Accepts only letters a-z (case insensitive)<br />
function alphabetical($str)<br />
	{<br />
		if ( preg_match('/^([a-z])+$/i', $str) )<br />
		{<br />
			return $str;<br />
		}<br />
		else<br />
		{<br />
			return FALSE;<br />
		}<br />
}<br />
</code></p>
<p>For PHP coders, get familiar with the <a href="http://php.net/manual/en/function.preg-replace.php">preg_replace()</a> function: it offers a more standard regular expression syntax (the often emulated Perl syntax).  Also have a look at the <a href="http://us2.php.net/manual/en/function.strip-tags.php">strip_tags()</a> function.</p>
<h2>Frame Buster</h2>
<p>A common trick used in phishing scams or to perpetrate click fraud involves iframe-ing a site.  Basically, the &#8220;trick&#8221; relies on the HTML iFrame tag to make one site display the contents of another without being obvious to the casual user.</p>
<p>One partial solution to this common attack vector is to use some simple javascript that checks to ensure that the page the parent page and not being iFramed:</p>
<p><code>&lt;SCRIPT LANGUAGE=JavaScript&gt;<br />
&lt;!--<br />
  if (top.frames.length!=0)<br />
   top.location=self.document.location;<br />
// --&gt;<br />
&lt;/SCRIPT&gt;<br />
</code></p>
<p>Do a Google search for &#8220;<a href="http://www.google.com/search?client=safari&#038;rls=en&#038;q=frame+buster+javascript">frame buster javascript</a>&#8221; to find other examples.</p>
<h2>SQL Injection</h2>
<p>This is a very broad topic, and there are numerous ways that SQL-injection might be used to compromise a site, but they all rely on the same principle: you construct strings of SQL statements and issue them against your database.  If a malicious user is able to put his own data into one of those strings, it&#8217;s possible that a user can execute queries on your database that you never expected.  This often gets back to form-validation and the ever important task of filtering user-submitted data!</p>
<p>Here&#8217;s a not-so-hypothetical PHP example:<br/><br />
<code><br />
	$username = $_POST['username'];<br />
	$sql = "SELECT * FROM `users` WHERE `username`='$username'";<br />
</code><br />
	where $username contains something like:<br />
<code>'; INSERT INTO users (username, password) VALUES ('hacker_dude', MD5('xxxxxx') )</code><br />
<br/><br />
When that executes, 2 different queries are sent to the database instead of one, and if your&#8217;e not careful, it can allow an attacker to gain access to parts of your site and delete or steal data.
</p>
<p>One strong line of defense against this type of attack is using a robust database driver that allows for the use of <a href="http://dev.mysql.com/tech-resources/articles/4.1/prepared-statements.html">prepared statements</a> (available since MySQL 4.1): where you prepare a statement once, then execute it multiple times with only certain defined variables changing.  What this does is it allows you to define your query and only let the user supply the variables to be used in that query.  This is a much more sensible option than letting the user essentially construct the query from scratch.</p>
<p>More mature database driver libraries (such as <strong>phpmysli</strong>) will allow you to use prepared statements.</p>
<p>You should also get familiar with escaping quotes in your database queries; this isn&#8217;t anywhere as effective as using prepared statements, but sometimes you have to use statements that aren&#8217;t prepared, so get familiar with how to escape strings before sending them to the database.  In PHP, use the <a href="http://php.net/manual/en/function.mysql-real-escape-string.php">mysql_real_escape()</a> function.</p>
<p>Finally, consider setting up special database users and roles to handle different types of queries.  If a query is hijacked, it can only execute with the same permissions as the database handle.  In other words, you wouldn&#8217;t grant delete or insert permissions to a database handle that was used only for selecting data.  It&#8217;s more work to set up your database handles this way, but it may help prevent an attack from succeeding.</p>
<h2>Conclusion</h2>
<p>Watch your cornhole.  There&#8217;s a lot going on a web site, and there are a lot of ways to abuse the technologies that run them.  If you understand how the exploits occur, you&#8217;ll be better prepared to prevent them.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://tipsfor.us/2008/11/21/stealth-submit-using-ajax-to-save-form-data-without-submitting-the-form/" rel="bookmark" class="crp_title">Stealth Submit: Using AJAX to Save Form Data Without Submitting the Form</a></li><li><a href="http://tipsfor.us/2009/10/25/forgot-your-modx-password-you-can-reset-it/" rel="bookmark" class="crp_title">Forgot your MODx Password?  You can reset it&#8230;</a></li><li><a href="http://tipsfor.us/2009/11/02/writing-custom-php-snippets-for-modx-part-vii/" rel="bookmark" class="crp_title">Writing Custom PHP Snippets for MODx (part VII)</a></li><li><a href="http://tipsfor.us/2008/03/28/using-javascript-documentwrite-for-seo/" rel="bookmark" class="crp_title">Using Javascript document.write for SEO</a></li><li><a href="http://tipsfor.us/2008/11/27/checking-to-see-if-packages-are-installed-in-php-or-perl/" rel="bookmark" class="crp_title">Checking to See if Packages are Installed in PHP or Perl</a></li></ul></div><p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2010/05/10/basic-web-security/">Basic Web Security</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tipsfor.us/2010/05/10/basic-web-security/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Get EASEUS Data Recovery Wizard for Free (Giveaway)</title>
		<link>http://tipsfor.us/2010/01/08/get-easeus-data-recovery-wizard-for-free-giveaway/</link>
		<comments>http://tipsfor.us/2010/01/08/get-easeus-data-recovery-wizard-for-free-giveaway/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 10:13:35 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Deals]]></category>

		<guid isPermaLink="false">http://tipsfor.us/2010/01/08/get-easeus-data-recovery-wizard-for-free-giveaway/</guid>
		<description><![CDATA[<p> Need to recover some important files? For a limited time, EASEUS is giving away a version of their Data Recovery Wizard. It ordinarily costs $70.</p> <p>Giveaway Link</p> <p>The Data Recovery Wizard is capable of recovering deleted files, but it can do much more. It can also help recover files on a disk partition [...]<p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2010/01/08/get-easeus-data-recovery-wizard-for-free-giveaway/">Get EASEUS Data Recovery Wizard for Free (Giveaway)</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="EASEUS - Data Recovery Wizard" border="0" alt="EASEUS - Data Recovery Wizard" align="right" src="http://tipsfor.us/wp-content/uploads/2010/01/EASEUSDataRecoveryWizard.png" width="404" height="277" /> Need to recover some important files? For a limited time, EASEUS is giving away a version of their Data Recovery Wizard. It ordinarily costs $70.</p>
<p><a href="http://www.easeus.com/giveaways/drw/">Giveaway Link</a></p>
<p>The Data Recovery Wizard is capable of recovering deleted files, but it can do much more. It can also help recover files on a disk partition after an accidental format, or even restore a lost partition.</p>
<p>Supported filesystems include FAT and NTFS, and supported operating systems include Windows 2000, XP, and Vista (32-64 bit). Unfortunately, it appears that Windows 7 is not officially supported.</p>
<p>Did you miss this giveaway, or want to try a comparable freeware program? Give <a href="http://www.piriform.com/recuva">Recuva</a> a shot.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://tipsfor.us/2009/05/17/resize-and-create-disk-partitions-with-easeus-partition-manager-windows/" rel="bookmark" class="crp_title">Resize and Create Disk Partitions with EASEUS Partition Manager (Windows)</a></li><li><a href="http://tipsfor.us/2009/07/05/reminder-ipod-touch-giveaway/" rel="bookmark" class="crp_title">Reminder &ndash; iPod Touch Giveaway</a></li><li><a href="http://tipsfor.us/2009/04/01/ghost-windows-for-free-with-paragon-drive-backup-express-a-visual-guide/" rel="bookmark" class="crp_title">Ghost Windows for Free with Paragon Drive Backup Express (A Visual Guide)</a></li><li><a href="http://tipsfor.us/2009/04/08/get-paragon-drive-backup-personal-for-free-giveaway-of-the-day/" rel="bookmark" class="crp_title">Get Paragon Drive Backup Personal for Free (Giveaway of the Day)</a></li><li><a href="http://tipsfor.us/2009/06/07/create-a-bootable-linux-flash-drive-with-unetbootin/" rel="bookmark" class="crp_title">Create a Bootable Linux USB Flash Drive with UNetbootin</a></li></ul></div><p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2010/01/08/get-easeus-data-recovery-wizard-for-free-giveaway/">Get EASEUS Data Recovery Wizard for Free (Giveaway)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tipsfor.us/2010/01/08/get-easeus-data-recovery-wizard-for-free-giveaway/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Writing Custom PHP Snippets for MODx (part VII)</title>
		<link>http://tipsfor.us/2009/11/02/writing-custom-php-snippets-for-modx-part-vii/</link>
		<comments>http://tipsfor.us/2009/11/02/writing-custom-php-snippets-for-modx-part-vii/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 07:11:54 +0000</pubDate>
		<dc:creator>Everett - TipsFor.us</dc:creator>
				<category><![CDATA[MODx]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Modules]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.tipsfor.us/?p=2497</guid>
		<description><![CDATA[<p>This article and tutorial video takes on how to add custom PHP scripts (known as Snippets) to the MODx content management system. This covers MODx Evolution (version 1.0 and before), but many of these methods and principles are applicable to MODx Revolution (version 2.0) and PHP coding in general.</p> <p><p>Click here to view the [...]<p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2009/11/02/writing-custom-php-snippets-for-modx-part-vii/">Writing Custom PHP Snippets for MODx (part VII)</a></p>
]]></description>
			<content:encoded><![CDATA[<p>This article and tutorial video takes on how to add custom PHP scripts (known as Snippets) to the MODx content management system.  This covers MODx Evolution (version 1.0 and before), but many of these methods and principles are applicable to MODx Revolution (version 2.0) and PHP coding in general.</p>
<p><p><a href="http://tipsfor.us/2009/11/02/writing-custom-php-snippets-for-modx-part-vii/"><em>Click here to view the embedded video.</em></a></p><br />
<a href="http://blip.tv/file/2797082">Watch Video @ Blip.Tv</a></p>
<h2>Adding a Snippet</h2>
<p>MODx newcomers are sometimes confused as to where to upload the PHP files&#8230; <em>YOU DON&#8217;T UPLOAD IT</em>.  You paste it into a database record.  You can reference files on the file system, but you don&#8217;t have to.   </p>
<p>1.  To add a Snippet from the MODx (v1) manager go to <strong>Elements &#8211;> Manage Elements &#8211;> Snippets</strong> then paste in your PHP code.<br />
2.  Be sure to give it a unique name (I recommend avoiding spaces in the name)<br />
3. Give it a category: this will make your Snippet easier to find in the manager.</p>
<h2>Recommended Components of a PHP Snippet</h2>
<p>This applies to ANY code you write, but for the record, please include the following documentation as comments in your Snippet:<br />
<strong>1.  SUMMARY:</strong>  a sentence describing what the Snippet does.<br />
<strong>2. INPUT:</strong> list any input variables the Snippet can accept.  It&#8217;s good to note the data type (e.g. integer/string), whether or not they are required, or whether or not they have a default value.<br />
<strong>3. OUTPUT</strong>: list any special output created by the Snippet.  Usually it&#8217;ll just be HTML, but it&#8217;s good to note any external actions (e.g. whether it updates a database row).<br />
<strong>4. EXAMPLE:</strong> give an example of how the Snippet should be called.</p>
<h3>Sample Comment Block</h3>
<p><code><br />
<?php<br />
/*---------------------------------------------------------<br />
SUMMARY: Formats list of cartoon characters using referenced chunk<br />
INPUT:<br />
	$chunk_name = string; Name of Chunk to be used for formatting output.<br />
OUTPUT:<br />
	HTML or it logs an error.<br />
EXAMPLE:<br />
	[!ComicExample? &#038;chunk_name=`myChunk`!]<br />
----------------------------------------------------------*/<br />
?><br />
</code></p>
<h2>Coding Suggestions and Rules of Thumb</h2>
<p><strong>1. Develop your Interface before you code:</strong> that bit about adding comments isn&#8217;t just for other users, it can help you determine how you want to be able to interact with your code.  Coding to an interface is good way of establishing goals and structure before you even start writing the actual code.<br />
<strong>2. Initialize your variables:</strong>  This cuts down on the possibility of security exploits, bugs, and it makes your code easier to read, e.g.:<br />
<code>$output = '';<br />
$garfield_characters_array = array();<br />
</code><br />
<strong>3. Sanitize your input:</strong> if you are getting any user entered data (e.g. anything out of the $_POST or $_GET array), sanitize the data using regular expressions and if/then statements.  Make SURE you have eliminated any possibility that the data is something other than what your program expects.<br />
<strong>4. Test as you Go:</strong> PHP doesn&#8217;t have a built-in debugger, so don&#8217;t go too long without checking to see if your code still &#8220;compiles&#8221; (technically, you should check to see if it has a valid syntax and if it executes).  Checking often will help you track down where you made a mistake.<br />
<strong>5. Use Good Variable and Function Names:</strong> be descriptive.  Don&#8217;t become a member of the hated &#8220;ASCII Preservation Society&#8221;.  Besides, if you use unique variable names, it becomes MUCH easier to search for instances of that variable, and you&#8217;re less likely to have variable collisions.<br />
<strong>6. Group your Code into Units:</strong> In a word, use functions that fit on the page.  If you can SEE it, you&#8217;re less likely to UNDERSTAND IT.  Chapters of uninterrupted code are hard to debug and test.<br />
<strong>7. Reuse your Code:</strong> if there are cases in your code where you&#8217;re copying and pasting identical or NEARLY identical parts, then it&#8217;s time to relegate that code to its own separate function.<br />
<strong>8. Log your Errors:</strong> if something goes wrong, let your users know about it.  It&#8217;s a wonderful thing to use the <a href="http://wiki.modxcms.com/index.php/API:logEvent">MODx logging function</a>.<br />
<strong>9. DO NOT MIX  HTML and PHP!</strong>  There are a few cases where where this is acceptable, but it is good architectural design to separate your view (i.e. your HTML) from your logic.  If you have to edit your PHP code to change div tags or CSS classes, then you probably did something wrong.  Instead, use MODx Chunks to format Snippet output; your code will be MUCH cleaner as a result and MUCH easier to maintain.</p>
<h2>Including Files from the File System</h2>
<p>If you write anything more than simple Snippets, you&#8217;ll want to put your PHP file(s) on the file system and reference them from the Snippet stored in the MODx database.  You can do this by including a standard include or require statement, e.g.</p>
<p><code>include($modx->config['base_path'].'assets/snippets/mysnippet/include_me.php');</code></p>
<p>The standard MODx location would be in your own folder within the <strong>/assets/snippets</strong> directory.</p>
<h3>Things to Remember When Including Files and Using Functions</h3>
<p><strong>1. Variable Scope: </strong>the $modx super-object and the methods that go along with it will not remain in scope within a funciton; use the <strong>global</strong> to ensure that the globally scoped $modx variable instance is used inside the function.  Compare the two instances of the same API call:<br />
<code>// INSIDE a function<br />
function inside_a_function($chunk_name,$garfield_characters_array)<br />
{<br />
	global $modx;<br />
	$output = $modx->parseChunk($chunk_name, $garfield_characters_array, '[+', '+]');<br />
	return $output;<br />
}</p>
<p>// Or OUTSIDE a function<br />
$output = $modx->parseChunk($chunk_name, $garfield_characters_array, '[+', '+]');</code></p>
<p><strong>2. You can&#8217;t return a value directly from an included file:</strong> because MODx treats Snippets as functions, it&#8217;s considered good form to always return a value, e.g. &#8220;return $output;&#8221; or &#8220;return TRUE;&#8221; but this MUST be returned from the original Snippet in the database; if you return output from the included file, you&#8217;ll have to return it again from the original database Snippet code.  See the video for this quirk in action.<br />
<strong>3. Take advantage of the File System:</strong> if you are developing stand-alone PHP files, you can use the bash terminal (on Linux or OS X machines) to test the PHP syntax.  Simply navigate to the directory where your file is and type:<br />
<code>php -l name_of_your_file.php</code></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://tipsfor.us/2009/05/01/creating-templates-in-modx-part-ii-part-v-in-the-series/" rel="bookmark" class="crp_title">Creating Templates in MODx Part II (part V in the series)</a></li><li><a href="http://tipsfor.us/2009/04/30/creating-templates-in-modx-part-i-part-iv-in-the-series/" rel="bookmark" class="crp_title">Creating Templates in MODx Part I (part IV in the series)</a></li><li><a href="http://tipsfor.us/2008/11/21/stealth-submit-using-ajax-to-save-form-data-without-submitting-the-form/" rel="bookmark" class="crp_title">Stealth Submit: Using AJAX to Save Form Data Without Submitting the Form</a></li><li><a href="http://tipsfor.us/2009/01/27/installing-modx-modx-series-part-iii/" rel="bookmark" class="crp_title">Installing MODx (MODx Series Part III)</a></li><li><a href="http://tipsfor.us/2008/11/27/checking-to-see-if-packages-are-installed-in-php-or-perl/" rel="bookmark" class="crp_title">Checking to See if Packages are Installed in PHP or Perl</a></li></ul></div><p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2009/11/02/writing-custom-php-snippets-for-modx-part-vii/">Writing Custom PHP Snippets for MODx (part VII)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tipsfor.us/2009/11/02/writing-custom-php-snippets-for-modx-part-vii/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Networx &#8211; Free Bandwidth Monitoring Software (Getting the Most Out of It)</title>
		<link>http://tipsfor.us/2009/08/01/networx-%e2%80%93free-bandwidth-monitoring-software-getting-the-most-out-of-it/</link>
		<comments>http://tipsfor.us/2009/08/01/networx-%e2%80%93free-bandwidth-monitoring-software-getting-the-most-out-of-it/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 22:02:26 +0000</pubDate>
		<dc:creator>James - TipsFor.us</dc:creator>
				<category><![CDATA[Nerd Stuff]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.tipsfor.us/?p=2389</guid>
		<description><![CDATA[<p>Systems: Windows Only (2000, XP, Vista, 2008 / Both 32 and 64 bit)</p> <p>Donationware: Technically it&#8217;s free, but when you see the level of craftsmanship in this program, you will want to donate.</p> <p>Website: Softperfect.com</p> <p>I recently changed ISPs to one with much more consistent service, but the trade off is that I now [...]<p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2009/08/01/networx-%e2%80%93free-bandwidth-monitoring-software-getting-the-most-out-of-it/">Networx &#8211; Free Bandwidth Monitoring Software (Getting the Most Out of It)</a></p>
]]></description>
			<content:encoded><![CDATA[<blockquote><p>Systems: Windows Only (2000, XP, Vista, 2008 / Both 32 and 64 bit)</p>
<p>Donationware: Technically it&#8217;s free, but when you see the level of craftsmanship in this program, you will want to donate.</p>
<p>Website: <a href="http://www.softperfect.com/products/networx/" target="_blank">Softperfect.com</a></p></blockquote>
<p><img class="alignnone size-full wp-image-2410" src="http://www.tipsfor.us/wp-content/uploads/2009/08/networx-prev.gif" alt="networx-prev" width="90" height="90" />I recently changed ISPs to one with much more consistent service, but the trade off is that I now have a rather small bandwidth cap. As much as we hate them, bandwidth caps are probably in all of our futures. The important thing is to have control over and be informed of your usage (before the bill arrives). I needed a reliable way to keep track of my bandwidth, so I tested out several free bandwidth monitoring softwares. My ISP has its own online bandwidth usage calculated, but I wanted a redundant system (one which I could use to make sure they were honest in their tracking).Â  In my experiments, I found <a href="http://www.softperfect.com/products/networx/" target="_blank">Networx</a> to be the best. Its primary virtue is its ability to be as advanced as you need it to be. For my multiple computer home network, it has every feature I could ask for. Let&#8217;s take a closer look.</p>
<p>The software is so unobtrusive; it even lacks a full control window.Â  Instead, you can access all aspects of the software from the taskbar icon.</p>
<p><img class="alignnone size-full wp-image-2390" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen1.jpg" alt="Networxscreen1" width="170" height="66" /></p>
<p class="MsoNormal">A left click will give you a quick bandwidth summary/ a right click will show you the menu.</p>
<p><img class="alignnone size-full wp-image-2391" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen2.jpg" alt="Networxscreen2" width="602" height="273" /></p>
<p class="MsoNormal">Before we get to ridiculous number of features available in the menu, let&#8217;s check out my favorite feature.A right click anywhere on the task bar brings up a windows menu that has a &#8220;toolbars&#8221; option, if you go there you will find a new entry: Networx Desk Band. Activating this toolbar gives you a quick real time read out.</p>
<p><img class="alignnone size-full wp-image-2392" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen3.jpg" alt="Networxscreen3" width="602" height="273" /></p>
<p class="MsoNormal">I know what you&#8217;re thinking: But I don&#8217;t like red and white graphs! Well, you can fully customize that little read out; I&#8217;ll get to that a little later on.First, lets go back to that right click menu from the Networx taskbar icon.</p>
<p class="MsoNormal">Your first 3 options all work together:</p>
<h2><strong><span style="text-decoration: underline;">Show Graph</span></strong></h2>
<p class="MsoNormal">- This displays a full size visual read out that you can place on your desktop wherever you want.</p>
<p><img class="alignnone size-full wp-image-2393" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen4.jpg" alt="Networxscreen4" width="442" height="206" /></p>
<p class="MsoNormal"><strong>Reset Graph </strong>(Only present if &#8220;Show Graph&#8221; is clicked first) &#8211; This option will clear the current data displayed on the graph, not unlike the trip counter reset in your car.</p>
<p class="MsoNormal"><strong>Enable Click Through (</strong>Only present if &#8220;Show Graph&#8221; is clicked first)<strong> -</strong> Will make the graph act as if it is not really there.You can literally click through the graph to select things. Be careful though, this means you can&#8217;t resize or move the graph window without turning off &#8220;Click Through&#8221; the same way your turned it on.</p>
<p><img class="alignnone size-full wp-image-2394" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen5.jpg" alt="Networxscreen5" width="442" height="206" /></p>
<h2><strong><span style="text-decoration: underline;">Speed Meter</span></strong></h2>
<p>- This works sort of like a heart monitor for you bandwidth.You hit &#8220;Play&#8221; and for the duration you allow it to run, it records average, maximum and total transfer.You can then export it directly to a txt file.</p>
<p><img class="alignnone size-full wp-image-2395" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen5a.jpg" alt="Networxscreen5a" width="380" height="224" /></p>
<h2><strong><span style="text-decoration: underline;">Usage Statistics</span></strong></h2>
<p class="MsoNormal">- You can access this menu from a double click on the icon.This will probably be your most visited window in the battle to keep informed about transfer totals. The first thing you will see is the &#8220;General&#8221; Tab:</p>
<p class="MsoNormal">Not much to do here, except see a quick summary of your total usage all in one place.</p>
<p><img class="alignnone size-full wp-image-2396" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen6.jpg" alt="Networxscreen6" width="549" height="406" /></p>
<p class="MsoNormal"><strong>The Daily Report - </strong>Here is where you can really begin to see detail present in this program.If you have this set up on the family computer, you can directly see what day of the month the highest transfer happened.If you are not a fan of the spread sheet, they also provide you a visual readout of the past week.</p>
<p class="MsoNormal"><img class="alignnone size-full wp-image-2397" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen7.jpg" alt="Networxscreen7" width="549" height="406" /></p>
<p class="MsoNormal"><strong>Weekly/Monthly Report</strong> - The same data as the daily, but handily calculated for you either size increment.</p>
<p class="MsoNormal"><strong>Custom</strong> - The most powerful data aggregator in this entire software. You can give it the date-through-date specifics and it will automatically set up the graph in the most appropriate way.</p>
<p><img class="alignnone size-full wp-image-2398" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen8.jpg" alt="Networxscreen8" width="549" height="406" /></p>
<p class="MsoNormal"><strong>Dial-up Sessions</strong> - If you have a minute/transfer based dial-up connection, this tab is vital.It records every time you connect to your dial up provider, the date, amount of time spent, transfers, etc.You might think this is outdated, but you would be surprised how many areas still do not have broadband.</p>
<p class="MsoNormal"><strong>Hourly Rates -</strong> for you true statistics hounds out there, you can follow your transfer rates on an hourly basis.</p>
<p><img class="alignnone size-full wp-image-2399" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen9.jpg" alt="Networxscreen9" width="549" height="406" /></p>
<p class="MsoNormal"><strong>Export -</strong> Oh yeah, you can also export all of these charts to Excel for easy archiving.</p>
<p class="MsoNormal"><strong>Users </strong>- If everyone who uses the computer has separate logons, you can track the data per user.You know, easily figure out which roommate is the bandwidth hog.</p>
<p><img class="alignnone size-full wp-image-2400" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen10.jpg" alt="Networxscreen10" width="89" height="58" /></p>
<h2><strong><span style="text-decoration: underline;">Quota</span></strong></h2>
<p class="MsoNormal">This is a handy system for letting you set the maximum transfer/duration.For me that is 50 gigs per month.I set it at 45 gigs, however, because it notifies you with a little pop-up window when you have met your quota.</p>
<p><img class="alignnone size-full wp-image-2401" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen11.jpg" alt="Networxscreen11" width="560" height="322" /></p>
<p><img class="alignnone size-full wp-image-2402" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen12.jpg" alt="Networxscreen12" width="415" height="331" /></p>
<h2><strong><span style="text-decoration: underline;">Settings</span></strong></h2>
<p class="MsoNormal">All of the settings for the program.Let&#8217;s go one tab at a time.</p>
<p class="MsoNormal"><strong>General</strong> - This tab has the settings for &#8220;Load on Windows Startup, Check for Updates&#8221;, And most importantly: Which internet connection is monitored. This is essential if you have multiple connections, or utilize a different connection for intra-network traffic.</p>
<p><img class="alignnone size-full wp-image-2403" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen13.jpg" alt="Networxscreen13" width="454" height="406" /></p>
<p class="MsoNormal"><strong>Graph</strong> - Settings to tweak how the graph output functions.This is really for power users who want control over aspect of their graph.</p>
<p><img class="alignnone size-full wp-image-2404" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen14.jpg" alt="Networxscreen14" width="454" height="406" /></p>
<p class="MsoNormal"><strong>Graph Colors - </strong>This may seem trivial or nit-picky, but on some monitors you may want to adjust the colors of the graph for optimal resolution.High contrast is an option in every aspect of most operating systems for those who need it for accessibility.Or, you may just want to make it look pretty.</p>
<p class="MsoNormal"><img class="alignnone size-full wp-image-2405" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen15.jpg" alt="Networxscreen15" width="454" height="406" /></p>
<p class="MsoNormal"><strong>Notifications</strong> - This tab&#8217;s settings tell the software when you notify you of certain things.It can tell you if your connection falls below it&#8217;s usual transfer rate, or if it exceeds a predetermined speed.You can also customize how exactly it notifies you, a tone or a pop up, ect.</p>
<p class="MsoNormal"><strong>Advanced</strong> - There is one truly important feature in here.In this tab you can set what day your billing cycle begins on. I&#8217;m lucky, my bandwidth resets at midnight on the first.For some of you, it might be on the 14<sup>th</sup> or 21<sup>st</sup>, etc. DO NOT FORGET TO SET THIS, OR YOUR TOTAL BANDWIDTH USED FOR THE MONTH WILL NOT BE ACCURATE!</p>
<p class="MsoNormal">If you have multiple computers using the same network, you will need to install Networx on all of them, and tick the box under &#8220;Synchronization&#8221; or else YOU WILL ONLY BE TRACKING THE DATA TRANSFERRED FROM THIS COMPUTER.That will not be an accurate measure of the total usage.</p>
<p><img class="alignnone size-full wp-image-2406" src="http://www.tipsfor.us/wp-content/uploads/2009/08/screen16.jpg" alt="Networxscreen16" width="454" height="406" /></p>
<h2><strong><span style="text-decoration: underline;">Trace Route</span></strong></h2>
<p>- This is a power user feature.Your average user will never have a need to track a packet from your computer to a source IP.</p>
<h2><strong><span style="text-decoration: underline;">Ping</span></strong></h2>
<p class="MsoNormal">- This works the same way as the command line ping.You enter a location to ping, and it will tell you the millisecond duration of the test transfer.</p>
<h2><strong><span style="text-decoration: underline;">NetStat</span></strong></h2>
<p class="MsoNormal">- This is pretty useful, it lists every program or service that is accessing the internet, or has rights to do so, and where it&#8217;s sending from and to.</p>
<h2><span style="text-decoration: underline;">Conclusion </span></h2>
<p class="MsoNormal">So that&#8217;s about all you need to know to keep up with your bandwidth use by utilizing <a href="http://www.softperfect.com/products/networx/" target="_blank">Networx</a>. If you have a different favorite Bandwidth tracker, let us know in the comments below.I am on month 2 of using Networx, and have had no problems, if you have, also let us know.At the end of my first month of use, there was a 458 megabyte discrepancy between my Networx report and my ISPs total report.I attribute this to the Xbox360 updates and purchases along with my iPhone app downloads.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://tipsfor.us/2008/09/12/note-taking-software-for-linux-a-review-of-notecase/" rel="bookmark" class="crp_title">Note Taking Software for Linux  (A Review of NoteCase)</a></li><li><a href="http://tipsfor.us/2008/03/25/review-of-safari-3-for-windows/" rel="bookmark" class="crp_title">Review of Safari 3 for Windows</a></li><li><a href="http://tipsfor.us/2009/01/05/synchronize-your-ubuntu-system-clock-with-internet-time-servers/" rel="bookmark" class="crp_title">Synchronize Your Ubuntu System Clock with Internet Time Servers</a></li><li><a href="http://tipsfor.us/2009/06/22/disable-the-install-updates-and-shut-down-option-in-windows/" rel="bookmark" class="crp_title">Disable the &#8220;Install Updates and Shut Down&#8221; Option in Windows</a></li><li><a href="http://tipsfor.us/2008/08/12/dropbox-online-storage-mini-review-and-invitations/" rel="bookmark" class="crp_title">Dropbox: Mini-Review and Invitations (Online Storage Series)</a></li></ul></div><p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2009/08/01/networx-%e2%80%93free-bandwidth-monitoring-software-getting-the-most-out-of-it/">Networx &#8211; Free Bandwidth Monitoring Software (Getting the Most Out of It)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tipsfor.us/2009/08/01/networx-%e2%80%93free-bandwidth-monitoring-software-getting-the-most-out-of-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TipsFor.us Giveaway &#8211; iPod Touch Winner Announcement</title>
		<link>http://tipsfor.us/2009/07/17/tipsfor-us-giveaway-ipod-touch-winner-announcement/</link>
		<comments>http://tipsfor.us/2009/07/17/tipsfor-us-giveaway-ipod-touch-winner-announcement/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 16:20:02 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Deals]]></category>

		<guid isPermaLink="false">http://www.tipsfor.us/?p=2381</guid>
		<description><![CDATA[<p>Congratulations to &#8220;Dan&#8221; from KS, winner of the iPod Touch from TipsFor.us. Dan was one of more than 100 entries, but he was one of only a few who took advantage of all three entry methods (Form, Facebook, and Blog post). Obviously, it paid off for him.</p> <p>Many thanks to all of you who [...]<p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2009/07/17/tipsfor-us-giveaway-ipod-touch-winner-announcement/">TipsFor.us Giveaway &#8211; iPod Touch Winner Announcement</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Congratulations to &#8220;Dan&#8221; from KS, winner of the <a href="http://www.tipsfor.us/2009/06/25/tipsforus-giveaway-win-an-ipod-touch-8-gb/">iPod Touch from TipsFor.us</a>. Dan was one of more than 100 entries, but he was one of only a few who took advantage of all three entry methods (Form, Facebook, and Blog post). Obviously, it paid off for him.</p>
<p>Many thanks to all of you who entered. Stay tuned for future giveaway announcements, as we plan to host several more giveaways on TipsFor.us. What might we give away next? Maybe some RAM, a Macbook, or maybe some California IOUs? <img src='http://tipsfor.us/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><img class="aligncenter size-full wp-image-2325" title="ipodtouch.jpg" src="http://www.tipsfor.us/wp-content/uploads/2009/06/ipodtouch.jpg" alt="ipodtouch.jpg" width="191" height="240" /></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://tipsfor.us/2009/07/11/ipod-touch-giveaway-ends-tonight/" rel="bookmark" class="crp_title">iPod Touch Giveaway Ends Tonight</a></li><li><a href="http://tipsfor.us/2009/07/05/reminder-ipod-touch-giveaway/" rel="bookmark" class="crp_title">Reminder &ndash; iPod Touch Giveaway</a></li><li><a href="http://tipsfor.us/2009/06/25/tipsforus-giveaway-win-an-ipod-touch-8-gb/" rel="bookmark" class="crp_title">TipsFor.us Giveaway â€“ Win an iPod Touch 8 GB</a></li><li><a href="http://tipsfor.us/2010/01/08/get-easeus-data-recovery-wizard-for-free-giveaway/" rel="bookmark" class="crp_title">Get EASEUS Data Recovery Wizard for Free (Giveaway)</a></li><li><a href="http://tipsfor.us/2007/04/01/wowio-free-ebooks-plus-a-free-ipod-shuffle/" rel="bookmark" class="crp_title">Wowio &#8211; Free eBooks, Plus a Free IPod Shuffle</a></li></ul></div><p>Post from: <a href="http://www.tipsfor.us">TipsFor.us</a><br /><br/><br/><a href="http://tipsfor.us/2009/07/17/tipsfor-us-giveaway-ipod-touch-winner-announcement/">TipsFor.us Giveaway &#8211; iPod Touch Winner Announcement</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tipsfor.us/2009/07/17/tipsfor-us-giveaway-ipod-touch-winner-announcement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

