<?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>SuperWebDeveloper.com &#187; General</title>
	<atom:link href="http://www.superwebdeveloper.com/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.superwebdeveloper.com</link>
	<description>code, design, concepts, ecommerce, media</description>
	<lastBuildDate>Tue, 03 May 2011 04:41:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Takien.com Imitating php.net</title>
		<link>http://www.superwebdeveloper.com/2010/09/28/takien-com-imitating-php-net/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2010/09/28/takien-com-imitating-php-net/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 17:32:33 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=567</guid>
		<description><![CDATA[Somebody is spoofing php.net. Its never cool to see one website rip off another. Here is an example of blatant use of the look of PHP.net, the core information site for PHP programmers on the web, being taken over by a site that came up on a goggle search for a reminder on a deprecated [...]]]></description>
			<content:encoded><![CDATA[<p>Somebody is spoofing php.net. Its never cool to see one website rip off another. Here is an example of blatant use of the look of PHP.net, the core information site for PHP programmers on the web, being taken over by a site that came up on a goggle search for a reminder on a deprecated function. I am not the greenest guy out there. I have even sat in on <a title="Chris Shifflett" href="http://shiflett.org/" target="_blank">Chris Shiflett&#8217;s</a> talk on Web security issues from social engineering at CodeWorks DC in 2009. But even I was fooled that this site was php.net for several minutes.</p>
<h2 style="text-align: center;">This is not PHP.net, this is <a title="takien.com" href="http://takien.com/" target="_blank">http://takien.com/</a></h2>
<p style="text-align: center;">
<div id="attachment_569" class="wp-caption aligncenter" style="width: 509px"><a href="http://takien.com/"><img class="size-full wp-image-569   " title="http://takien.com/" src="http://www.superwebdeveloper.com/wp-content/uploads/takienwebsite.jpg" alt="http://takien.com/" width="499" height="322" /></a><p class="wp-caption-text">takien.com is NOT php.net</p></div>
<h2 style="text-align: center;">This is not Takien.com, this is <a title="php.net" href="http://php.net" target="_blank">PHP.net</a></h2>
<p style="text-align: center;">
<div id="attachment_568" class="wp-caption aligncenter" style="width: 447px"><a href="http://php.net"><img class="size-full wp-image-568   " title="php.net website" src="http://www.superwebdeveloper.com/wp-content/uploads/phpweb.jpg" alt="php.net website" width="437" height="282" /></a><p class="wp-caption-text">This is not taiken.com, this is php.net</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2010/09/28/takien-com-imitating-php-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Global TV Report Misleads about WordPress and Web Security</title>
		<link>http://www.superwebdeveloper.com/2010/09/08/global-tv-report-misleads-about-wordpress-and-web-security/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2010/09/08/global-tv-report-misleads-about-wordpress-and-web-security/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 19:33:59 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[editorial]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=473</guid>
		<description><![CDATA[Re: &#8220;Flashy Website, Cheap Backend&#8221; http://www.globaltvbc.com/video/index.html?releasePID=F2c99hC0V1kc4WrGZu0sZguKx_83_IuT Editors, As a web developer experienced with WordPress, I know you have made errors in your understanding of the software. If the mayor has really broken some law with regards to the bidding process, then that is another matter. It is however hard for people to find good, skilled [...]]]></description>
			<content:encoded><![CDATA[<p>Re: &#8220;Flashy Website, Cheap Backend&#8221;<br />
<a href=" http://www.globaltvbc.com/video/index.html?releasePID=F2c99hC0V1kc4WrGZu0sZguKx_83_IuT#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed" target="_blank"></p>
<p>http://www.globaltvbc.com/video/index.html?releasePID=F2c99hC0V1kc4WrGZu0sZguKx_83_IuT</a></p>
<p>Editors,<br />
As a web developer experienced with WordPress, I know you have made errors in your understanding of the software. If the mayor has really broken some law with regards to the bidding process, then that is another matter. It is however hard for people to find good, skilled web developers and themers, on a per project basis, when a quality website is needed.</p>
<p>A quick consultation of the home page of <a href="http://wordpress.org" target="_blank">http://wordpress.org</a> would show you that this free open source software is used by the <a href="http://wordpress.org/showcase/tag/new-york-times/" target="_blank">New York Times</a>, <a href="http://wordpress.org/showcase/webmonkey/" target="_blank">Wired.com</a>, and many many other individuals and corporations much larger than Global TV. Suffice to say if it is a good choice for NYT then it is probably a good software choice for Mayor Robertson. Actually it is not even so much about the software, but the developers who take steps to &#8216;harden&#8217; the software from security intrusions during the development and deployment process.</p>
<blockquote>
<h2>It is a shame that a member of the press such as Global TV does not  understand the parallels between freedom of speech and of the press, and  the openness of the Free Open Source Software community, and how both  are so effective in exposing lies and moving towards the truth.</h2>
</blockquote>
<p>Free Open Source Software such as WordPress is <strong>free as in speech, not free as in beer</strong>. Indeed, WordPress is just one software package among thousands of others that the Internet and the World Wide Web rest upon. But I realise by the comments in your report that you are unaware of the massive worldwide movement to create and distribute Free Open Source Software. While the cost of the software may be a factor for the contractors, as it is in every other business, it is the openness that is really important. The openness of the software and the community allow for the exposure of security problems, and then expedites their repair to the entire community of WordPress users. It also allows for such things as the enforcement of high technical standards, and the independent development and release of thousands of additional software add-ons to boost and customise software functionality.</p>
<p>Shawn Moore of <a href="http://thinkprofits.com" target="_blank">thinkprofits.com</a> claims in the news piece that he can quickly hack and steal information submitted through the contact form on Gregor Robertson&#8217;s website. Instead of just claiming this, he should prove it. I say this because security breaches in general take more time to manifest themselves than Moore implied when he said &#8216;quickly&#8217;. And if Moore does know of a current security exploit WordPress, he should do the right thing and contribute the exploit to the WordPress development community, or to the head company behind WordPress, <a href="http://automattic.com/" target="_blank">Automaticc</a>, so that the patch may be written and released.</p>
<p>It is a shame that a member of the press such as Global TV does not understand the parallels between freedom of speech and of the press, and the openness of the Free Open Source Software community, and how both are so effective in exposing lies and moving towards the truth. You should be really educating your viewers on the benefits of Free Open Source Software instead of insinuating that WordPress is merely a &#8216;cheap&#8217; alternative.</p>
<p>As I said in the beginning, I dont know if the mayor broke any laws or not. But please understand that good developers may be harder to come across than you think. Neither are they cheap. Please also educate yourselves on the benefits of Free Open Source software because it is in use widely and in many roles across the Internet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2010/09/08/global-tv-report-misleads-about-wordpress-and-web-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Cafe Session Interrupted by Several Hundred Santas</title>
		<link>http://www.superwebdeveloper.com/2009/12/05/web-cafe-session-interrupted-by-several-hundred-santas/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/12/05/web-cafe-session-interrupted-by-several-hundred-santas/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 23:38:11 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[pwned]]></category>
		<category><![CDATA[santa]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=300</guid>
		<description><![CDATA[I went out to enjoy the day at St. Augustine, a restaurant on Commercial Drive for a change of pace. Its a big place that isnt usually too busy, at the time I got there it wasnt anyways; they provide free wifi access and a wall plug-in if needed. That&#8217;s free wifi, AC, good food, [...]]]></description>
			<content:encoded><![CDATA[<p>I went out to enjoy the day at St. Augustine, a restaurant on Commercial Drive for a change of pace. Its a big place that isnt usually too busy, at the time I got there it wasnt anyways; they provide free wifi access and a wall plug-in if needed. That&#8217;s free wifi, AC, good food, lots of space to stretch out, AND a liquor license! So I thought that I found a quiet place to work for a spell in the afternoon. Or so I thought. A minute after ordering a coffee with a shot of Drambuie on the side, I suddenly hear the cries of HO HO HO! MERRRRRY CHRISTMAAAAAS!!! And suddenly the restaurant starts to fill up with Santas &#8211; I mean a SWARM of santas, filling up the restaurant with merry cheer and noise noise noise. If anything could drown out the internet, this was it. Sounded like the lot of them were already drunk and they hit the place to get even drunker.</p>
<div id="attachment_298" class="wp-caption aligncenter" style="width: 440px"><img class="size-large wp-image-298  " title="santa1" src="http://www.superwebdeveloper.com/wp-content/uploads/santa1-1024x819.jpg" alt="santas storm my quiet web cafe" width="430" height="344" /><p class="wp-caption-text">santas storm my quiet web cafe</p></div>
<div id="attachment_299" class="wp-caption aligncenter" style="width: 440px"><img class="size-large wp-image-299  " title="santa2" src="http://www.superwebdeveloper.com/wp-content/uploads/santa2-1024x819.jpg" alt="santas storm my quiet web cafe" width="430" height="344" /><p class="wp-caption-text">santas storm my quiet web cafe</p></div>
<p>There goes the neigborhood. Who the hell let these guys in anyways?? Pwned by Xmas!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/12/05/web-cafe-session-interrupted-by-several-hundred-santas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Incredible Rate of Diminishing Returns of Fixing Software Bugs</title>
		<link>http://www.superwebdeveloper.com/2009/11/25/the-incredible-rate-of-diminishing-returns-of-fixing-software-bugs/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/11/25/the-incredible-rate-of-diminishing-returns-of-fixing-software-bugs/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 20:41:25 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[thephpcc]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=287</guid>
		<description><![CDATA[While I was at Codeworks DC in September 2009, there was a particular slide during the talk by Stefan Priebsh, in his talk on OOP and Design Patterns that stood out more than all the others. It&#8217;s a slide that describes the relative cost of of a bug fix at different times in the life [...]]]></description>
			<content:encoded><![CDATA[<p>While I was at Codeworks DC in September 2009, there was a particular slide during the talk by Stefan Priebsh, in his talk on OOP and Design Patterns that stood out more than all the others. It&#8217;s a slide that describes the relative cost of of a bug fix at different times in the life cycle of a software project. At first, the cost of fixing a bug at the requirements stage is nominal, when everything is on the drawing board. But as the software moves along in its life cycle the cost of fixing a bug increases radically. We start at 1 times when we are at the initial development stage when a bug is no more than a change in notion. But at the design stage, the relative cost is 5 times what it was compared to the requirements stage, and then ten times what it was when it becomes code and on this goes until it the relative cost of a bug fix is 150 times what it was originally.  Conversely, the graphic indicates that the cost of rewriting is far less than attempting to maintain broken software. Starting right, or starting over right, is by far preferable to the alternative.</p>
<div id="attachment_286" class="wp-caption aligncenter" style="width: 546px"><img class="size-full wp-image-286" title="Relative Cost Of A Software Bug Fix" src="http://www.superwebdeveloper.com/wp-content/uploads/relativecostbugfix.png" alt="Relative Cost Of A Software Bug Fix" width="536" height="480" /><p class="wp-caption-text">Relative Cost Of A Software Bug Fix </p></div>
<p>Slide credit: Barry Boehm, “Equity Keynote Address” March 19, 2007.</p>
<p>This chart is intended for developers, to decide how best to spend ones time.  Ever wonder why, as a developer, fixing bugs is such a pain and a kludge? There is something not simply tough about fixing bugs, there is something fundamentally wrong about putting any effort at all into repairing them. But the chart is also a message to the paying client, the person whose dime it is on. A client may be only thinking in the short term to make the software work, but it is the most expensive and unproductive path to the realization of goals.</p>
<p>The effort to fix bugs is great and the rewards are minimal. Frustrations are high, satisfactions are low. The website suffers from some sort of performance penalty, users are inconvenienced. Bugs must be dealt with with some amount of procedural overhead no matter what, and when the bug is fixed and submitted, very little was ever really accomplished. It is really far better to think of a better solution to all your problems together rather than to continue fixing things one at at time. It will cost the customer less and they will get more. So when bugs become a staple of the work load, its time to persuade the client to accept a rewrite.</p>
<blockquote>
<h1>&#8230;with the software in production, fixing bugs is akin to repairing a car while it is driving down the road, long after it has left the drawing board, the assembly line, and the dealer lot. Its as expensive to do as it can possibly be.</h1>
</blockquote>
<p>Developers still have a great deal in common with the clients they perform work for. They charge money for their work so they think in terms of the cost in terms of labor time (actually, developers also think this way when they work on their own software). The question every developer asks is, “What is the simplest, easiest, and fastest way to get something done?” The answer could be open to interpretation, but that is because the long view must be taken into consideration, and that is why software makes use of functions, templates, classes, objects, and design patterns. The work is needed now, but  how will it be possible to understand the software in a few months time when noone is mentally fresh? How do I share my ideas with other people? How do I take the long view into account?</p>
<p>Despite the love a client may have for their own project, nobody is interested in working on the same software forever. After all, software developers are creative people who really want to expand their skills and take all that they have learned and apply it to the next project, instead of keeping something half dead on life support.</p>
<p>I enjoy attending talks from the best people in the world in my business, because they are very good at exposing the importance of planning and organizing the overall picture, and are very knowledgeable in all the concepts that make projects produce a top quality result in an efficient manner. They also point out the simple mistakes people make that cost them so much. When we are at the far right of the graph, with the software in production, fixing bugs is akin to repairing a car while it is driving down the road, long after it has left the drawing board, the assembly line, and the dealer lot. Its as expensive to do as it can possibly be.</p>
<p>Developers should try to understand the message of this graphic before going further fixing bugs. If you are put in a position fixing bugs, it is time to change the way you work, because you are the one  bearing the cost in terms of your own time performing the least valuable, most expensive, and least meaningful work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/11/25/the-incredible-rate-of-diminishing-returns-of-fixing-software-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation Script Using WordPress Subversion Repositories</title>
		<link>http://www.superwebdeveloper.com/2009/11/07/installation-script-using-wordpress-subversion-repositories/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/11/07/installation-script-using-wordpress-subversion-repositories/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 06:07:19 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=268</guid>
		<description><![CDATA[I&#8217;d like to take the example of svn externals from my previous post a bit further. I created a bash script that captures a group of commands that one would need to deploy a vanilla WordPress website with a cherry picking of plugins and themes. This script is a big-ass time saver. It&#8217;s especially useful [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d like to take the example of svn externals from my previous post a bit further. I created a bash script that captures a group of commands that one would need to deploy a vanilla WordPress website with a cherry picking of plugins and themes. <strong>This script is a big-ass time saver. </strong>It&#8217;s especially useful for deployment of websites based on a package like WordPress or Drupal, that host publicly available subversion repositories. I tested it recently and made two websites spending two hours on each site, four hours total.</p>
<p>Web developers as they learn start by downloading packages in zip and tar.gz archives which is fine. A pro technique is to pull in the resource via SubVersion (svn). Svn provides additional features such as svn externals and svn hooks. Svn externals allows for the pulling in of external resources into a defined project in a svn repository. Svn hooks is for additional labor saving scripting that allows for the automation of repeated tasks such as a script that can pass along data from commit messages into other resources in the project such as the bug tracker. Learning these tricks allows for labor savings at every step in the production cycle. We can take these practices to the next level with capturing the commands in a bash script and then organise all the features of a website in a deployment script, something that is done all the time at software majors.</p>
<blockquote>
<h2>This script is a big-ass time saver.</h2>
</blockquote>
<p>I took the time to sort this out recently because I had some web development requests from people who have simple websites that could be converted to WordPress easily enough, but I wasn&#8217;t interested in going fishing for plugins and themes twice, and again when the next people come along needing the same thing. The job of a software developer should be to automate processes. I say often that the credo of developers is not to work for a living, but to eliminate work. But this idea is not always employed by developers in all the places it could, and its sometimes even a harder to get a client on board to make full use of methods and procedures that automate tasks and eliminate work.</p>
<blockquote>
<h2>&#8230;the credo of (software) developers is not to work for a living, but to eliminate work.</h2>
</blockquote>
<p>Lets at least cover the benefits in point form:</p>
<ul>
<li> The script takes a couple of minutes and you save hours.</li>
<li>You dont repeat the labor, but you can repeat the use of the script, deploying anywhere else.</li>
<li>All your stuff is there at the beginning. Useful for planning, development, and policy across teams.</li>
<li>You are organised, and you can develop variations. Svn export may be good enough for your needs.</li>
</ul>
<p>In pseudo code, here is what your script will do:</p>
<ul>
<li> Set up your repository.</li>
<li>Make your directory structure for your project.</li>
<li>Check out your repository.</li>
<li>Run procedures for svn externals for core WordPress.</li>
<li>Run procedures for svn externals for plugins, iterating through data in an external file resource.</li>
<li>Run procedures for svn externals for themes, iterating through data in an external file resource.</li>
<li>Grab additional resources in an array, iterate through them using wget command, extract them.</li>
<li>Cleanup.</li>
<li>Commit message.</li>
<li>&#8230; anything else you can think to do.</li>
</ul>
<p>The bash file, save as getallwpsvn.sh:</p>
<blockquote>
<pre>#!/bin/bash
# run this script with chmod 755 permissions.

workPath=$(pwd)

rm -rf filerepository repository www *.zip # this line cleans dir for testing, comment out when done

svnadmin create repository

mkdir -p filerepository/{branches,tags,trunk/{html,db,cron,scripts,themes,plugins,project,selenium}}
# got anything to import into those directories under trunk?
# import into the directories under trunk now
# before the next step
svn import filerepository file://$workPath/repository -m "initial import using getallwpsvn.sh script"
rm -rf filerepository
svn checkout file://$workPath/repository/trunk www
cd www
svn rm html
svn commit -m "rm html temporarily for clean propset"
svn propset svn:externals 'html http://core.svn.wordpress.org/trunk/' .
svn up
cd html/wp-content/
# get plugins from repository http://svn.wp-plugins.org/
# plugins listed in svn.plugins.externals
svn propset svn:externals -F ../../../svn.plugins.externals plugins/
#svn commit "plugins propset" # no commit if no local repository
svn up
# themes repository: http://svn.wp-themes.org/
# themes repository is a bit of a ghost town, none grabbed here
# browse the site and get the zip
# themes listed in svn.themes.externals file, if there are any
svn propset svn:externals -F svn.themes.externals plugins/
svn up

cd themes
# load up on themes
#more human readable format for array

THEMESITES[0]=http://dev.digitalnature.ro/fusion/fusion-wordpress.zip
THEMESITES[1]=http://ericulous.com/?load=googlechrome.zip
THEMESITES[2]=http://ericulous.com/?load=internetcenter.zip
THEMESITES[3]=http://ericulous.com/?load=redbusiness.zip
THEMESITES[4]=http://wordpress.org/extend/themes/download/elegant-box.4.1.1.zip
THEMESITES[5]=http://wordpress.org/extend/themes/download/thirtyseventyeight.4.0.zip
THEMESITES[6]=http://wordpress.org/extend/themes/download/thirtyseventyeight.4.0.zip
THEMESITES[7]=http://wordpress.org/extend/themes/download/constructor.0.6.4.zip
THEMESITES[8]=http://wordpress.org/extend/themes/download/jq.2.4.zip
THEMESITES[9]=http://wordpress.org/extend/themes/download/ahimsa.3.0.zip
THEMESITES[10]=http://wordpress.org/extend/themes/download/retromania.1.3.zip
THEMESITES[11]=http://wordpress.org/extend/themes/download/skinbu.1.0.3.zip
THEMESITES[12]=http://wordpress.org/extend/themes/download/mystique.1.16.zip
THEMESITES[13]=http://wordpress.org/extend/themes/download/lightword.1.9.3.zip
THEMESITES[14]=http://wordpress.org/extend/themes/download/monochrome.2.3.zip
THEMESITES[15]=http://wordpress.org/extend/themes/download/thematic.0.9.5.1.zip
THEMESITES[16]=http://wordpress.org/extend/themes/download/hybrid.0.6.1.zip
THEMESITES[17]=http://wordpress.org/extend/themes/download/new-york.1.0.1.zip
THEMESITES[18]=http://wordpress.org/extend/themes/download/f8-lite.1.3.zip
THEMESITES[19]=http://wordpress.org/extend/themes/download/simplex.1.3.1.zip
THEMESITES[20]=http://wordpress.org/extend/themes/download/cleanr.0.1.2.zip

for s in ${THEMESITES[@]}
do wget "$s"
done

FILES="*.zip"
for f in "$FILES"
do unzip "$f"
done

rm *.zip
rm *.zip.*
cd ../../../
svn commit -m "load in of plugins and themes complete"

cd $workPath
cp $workPath/www/html/wp-config-sample.php  $workPath/www/html/wp-config.php
chmod 777 $workPath/www/html/wp-config.php
chmod 777 $workPath/www/html/wp-content #temporarily, for cache
mkdir $workPath/www/html/wp-content/uploads &amp;&amp; chmod 777 $_
touch $workPath/www/html/.htaccess &amp;&amp; chmod 777 $_

# do any post processing, other importing now, and commit it if you did.</pre>
</blockquote>
<p>Set the file permission to chmod 755, and run it from the shell command line as in ./getallwpsvn.sh.</p>
<p>The file you save as svn.plugins.externals:</p>
<blockquote>
<pre>all-in-one-seo-pack http://svn.wp-plugins.org/all-in-one-seo-pack/trunk
advertising-manager http://svn.wp-plugins.org/advertising-manager/trunk
cforms http://svn.wp-plugins.org/cforms/trunk
google-sitemap-generator http://svn.wp-plugins.org/google-sitemap-generator/trunk
sociable http://svn.wp-plugins.org/sociable/trunk
stats  http://svn.wp-plugins.org/stats/trunk
ultimate-google-analytics http://svn.wp-plugins.org/ultimate-google-analytics/trunk
vipers-video-quicktags http://svn.wp-plugins.org/vipers-video-quicktags/trunk
wordbook http://svn.wp-plugins.org/wordbook/trunk
wp-flickr http://svn.wp-plugins.org/wp-flickr/trunk
wp-super-cache http://svn.wp-plugins.org/wp-super-cache/trunk</pre>
</blockquote>
<p>The svn.plugins.externals file is a name &#8211; resource listing, one per line, when you have more than one resource to define with svn externals.</p>
<p>Please note that you may not need all of this; comment whatever out you want. You dont need to create a local repository, that is only if you are doing team development, or perhaps custom development on themes and plugins. I found though that it was necessary with svn propset directives to create a top-level directory structure wherein is stored all the different directories. The point of this exercise is a pull-in of public resources in a step that you can repeat automatically over and over. It also need not be a very sophisticated script to get the benefits from it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/11/07/installation-script-using-wordpress-subversion-repositories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Power of svn externals</title>
		<link>http://www.superwebdeveloper.com/2009/10/17/the-power-of-svn-externals/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/10/17/the-power-of-svn-externals/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 06:11:02 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=258</guid>
		<description><![CDATA[I have a list of svn tricks over on a previous post, (my) Essential Cheat Sheet of Shell Commands. But I was listening to a very lengthy, and I mean really lengthy Zend podcast, over two hours in length: The ZendCon Sessions Episode 26: Best Practices of PHP Development, with Matthew Weier O&#8217;Phinney and Mike [...]]]></description>
			<content:encoded><![CDATA[<p>I have a list of svn tricks over on a previous post, (my) <a href="http://www.superwebdeveloper.com/2008/10/08/essential-cheat-sheet-of-shell-commands/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed" target="_self">Essential Cheat Sheet of Shell Commands</a>. But I was listening to a very lengthy, and I mean really lengthy Zend podcast, over two hours in length: <a href="http://devzone.zend.com/article/9930-The-ZendCon-Sessions-Episode-26-Best-Practices-of-PHP-Development" target="_blank">The ZendCon Sessions Episode 26: Best Practices of PHP Development</a>, with Matthew Weier O&#8217;Phinney and Mike Naberezny. I learned a new trick about subversion I would like to share and note here for the future, <strong>svn externals</strong> .</p>
<p>I had of course heard of svn externals before but a little explanation really enlightened me. You can multiply your power as a developer with svn externals. Alongside your own project under svn control, you can add in other remote projects from remote svn repositories with the <strong>svn propset command</strong> and they will naturally remain current as you run updates on your own repository.</p>
<blockquote>
<h2>You can multiply your power as a developer with svn externals.</h2>
</blockquote>
<p>In the struggle for project housekeeping it can be a chore to keep libraries, plugins, middleware, and other goodies up to date. In general we as developers have a mindset about keeping a project managed by version control, but its an idea that I have seen stopping at the project in question. The project is under svn, the rest of the libraries are from static resources like tarballs. By just extending the power of version control just a little bit further, we have a big labor saver, and we are opened up to the great universe of software. Svn externals gives us mighty lever, because we then have the power to keep in step with all of the other bits and pieces that go along with a project.</p>
<p>Your main project is under version control, but your rich html editor, TinyMCE, is not. Well it can be. Lets use it as an example.</p>
<blockquote>
<pre>test$ mkdir tmc
test$ cd $_
test/tmc$ mkdir html
test/tmc$ mkdir project
test/tmc$ cd $_
test/tmc/project$ mkdir branches tags trunk
test/tmc/project$ cd -
/home/pbg/websites/test/tmc
test/tmc$ cd html/
test/tmc/html$ ls
test/tmc/html$ emacs index.php
test/tmc/html$ cd ../
test/tmc$ cp -rf html project/trunk/
test/tmc$ ls
html  project
test/tmc$ ls project/trunk/
html
test/tmc$ ls project/trunk/html/
index.php  tiny
test/tmc$ ls
html  project
test/tmc$ rm -rf html
test/tmc$ ls
project
test/tmc$ svnadmin create tmcrepository
test/tmc$ svn import project file:///home/pbg/websites/test/tmc/tmcrepository -m "initial import"
Adding         project/trunk
Adding         project/trunk/html
Adding         project/trunk/html/index.php
Adding         project/branches
Adding         project/tags
Committed revision 1.
test/tmc$ ls
project  tmcrepository
test/tmc$ svn checkout file:///home/pbg/websites/test/tmc/tmcrepository/trunk .
A    html
A    html/tiny
test/tmc$
/test/tmc/html$ svn propset svn:externals 'tinymce https://tinymce.svn.sourceforge.net/svnroot/tinymce/tinymce/trunk' .
/test/tmc/html$    svn commit -m "propset"
/test/tmc/html$    svn up
/test/tmc/html$</pre>
</blockquote>
<p>So that is how its done from bash with a vanilla website and one repository checked in for your pleasure. Tips to know include wrapping the directory and resource in quotes, don&#8217;t create the directory, specify it in propset and let svn create it for you. Go to a directory somewhere else on your system and test your checkout. In the example above the remote repository trunk is checked out. However, you are also able to <a href="http://blogs.gnome.org/johannes/2008/02/20/svnexternals-for-noobs/" target="_blank">check out specific branches or even specific revisions if </a>you want the bias more to stability over new features. You can also<a href="http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/" target="_blank"> specify multiple remote repositories by creating a text file with directory and remote resource pairs</a> and point svn propset at that file. Be prepared to handle things that you flub up using svn propedit. Your repository is not broken, but you may have to know how to fix a thing or two that you didn&#8217;t do the first time. That is why doing a vanilla procedure like what is described above helps show what the right way is.</p>
<p>So Imagine having a repository somewhere with all the tools you like to work with as part of your own best practices, sitting there, in one place ready to go with one checkout. That whole kit and kaboodle becomes your blank slate from where to start from, but you are already miles ahead of the competition because you already have tabs on all the resources you are going to use in your project. Having it all on hand saves labor and helps foster better practices as a developer.</p>
<ul>
<li>Zend Framework, CakePHP, Symphony, PEAR or whatever middleware turns your crank</li>
<li>PHP Unit, or SimpleUnit, or some other unit testing suite</li>
<li>WordPress, Drupal, Joomla, or of course any of the related themes and plugins</li>
<li>Tiny MCE</li>
<li>Jquery, Scriptaculous, Dojo, whatever floats your boat with javascript</li>
<li>XDebug,</li>
<li>phpmyadmin</li>
<li>Integration testing software like Selenium or Molybdenum</li>
<li>bloody well anything from sourceForge, or anything else for that matter public and under svn control.</li>
</ul>
<p>Links for this blog post:</p>
<p><a href="http://www.superwebdeveloper.com/2008/10/08/essential-cheat-sheet-of-shell-commands/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed" target="_blank">http://www.superwebdeveloper.com/2008/10/08/essential-cheat-sheet-of-shell-commands/</a></p>
<p><a href="http://devzone.zend.com/article/9930-The-ZendCon-Sessions-Episode-26-Best-Practices-of-PHP-Development" target="_blank">http://devzone.zend.com/article/9930-The-ZendCon-Sessions-Episode-26-Best-Practices-of-PHP-Development</a></p>
<p><a href="http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/" target="_blank">http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/</a></p>
<p><a href="http://blogs.gnome.org/johannes/2008/02/20/svnexternals-for-noobs/" target="_blank">http://blogs.gnome.org/johannes/2008/02/20/svnexternals-for-noobs/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/10/17/the-power-of-svn-externals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brickskellar Night Out At Codeworks DC 2009</title>
		<link>http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 05:29:48 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[User Groups]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[beer]]></category>
		<category><![CDATA[brickskellar]]></category>
		<category><![CDATA[codeworks]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[party]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=219</guid>
		<description><![CDATA[We took a break after day one of the Codeworks DC conference and went to the Brickskellar. The Brickskellar is a famous institution of beer in Washington DC, noted in the Guinness Book of World Records as been the place selling the greatest number of different beers of any drinking establishment on the planet earth. [...]]]></description>
			<content:encoded><![CDATA[<p>We took a break after day one of the <a href="http://cw.mtacon.com/schedule/city/washington" target="_blank">Codeworks DC conference</a> and went to the Brickskellar. <a href="http://www.lovethebeer.com/brickskeller.html" target="_blank">The Brickskellar</a> is a famous institution of beer in Washington DC, noted in the Guinness Book of World Records as been the place selling the greatest number of different beers of any drinking establishment on the planet earth. We met up with the group going there in the hotel lobby. We had originally scouted out the<a href="http://maps.google.ca/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=restaurants+alexandria+va&amp;sll=38.787944,-77.090034&amp;sspn=0.072522,0.181103&amp;gl=ca&amp;ie=UTF8&amp;hq=restaurants&amp;hnear=Alexandria,+VA,+USA&amp;z=14" target="_blank"> fine dining in Alexandria, of which there is plenty</a>. We were thinking of Overwood, 219, The Flying Fish, or others, but on a whim we decided rather to join the conference folks down at The Brickskellar. We got the address from the hotel, entered it in the TomTom, and made it there before the main group did.</p>

<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0553/' title='DSC_0553'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0553-150x150.jpg" class="attachment-thumbnail" alt="DSC_0553" title="DSC_0553" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0554/' title='DSC_0554'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0554-150x150.jpg" class="attachment-thumbnail" alt="DSC_0554" title="DSC_0554" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0555/' title='DSC_0555'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0555-150x150.jpg" class="attachment-thumbnail" alt="DSC_0555" title="DSC_0555" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0556/' title='DSC_0556'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0556-150x150.jpg" class="attachment-thumbnail" alt="DSC_0556" title="DSC_0556" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0557/' title='DSC_0557'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0557-150x150.jpg" class="attachment-thumbnail" alt="DSC_0557" title="DSC_0557" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0558/' title='DSC_0558'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0558-150x150.jpg" class="attachment-thumbnail" alt="DSC_0558" title="DSC_0558" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0559/' title='DSC_0559'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0559-150x150.jpg" class="attachment-thumbnail" alt="DSC_0559" title="DSC_0559" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0560/' title='DSC_0560'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0560-150x150.jpg" class="attachment-thumbnail" alt="DSC_0560" title="DSC_0560" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0563/' title='DSC_0563'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0563-150x150.jpg" class="attachment-thumbnail" alt="DSC_0563" title="DSC_0563" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0569/' title='DSC_0569'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0569-150x150.jpg" class="attachment-thumbnail" alt="DSC_0569" title="DSC_0569" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0570/' title='DSC_0570'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0570-150x150.jpg" class="attachment-thumbnail" alt="DSC_0570" title="DSC_0570" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0571/' title='DSC_0571'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0571-150x150.jpg" class="attachment-thumbnail" alt="DSC_0571" title="DSC_0571" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0574/' title='DSC_0574'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0574-150x150.jpg" class="attachment-thumbnail" alt="DSC_0574" title="DSC_0574" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0576/' title='DSC_0576'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0576-150x150.jpg" class="attachment-thumbnail" alt="DSC_0576" title="DSC_0576" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0583/' title='DSC_0583'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0583-150x150.jpg" class="attachment-thumbnail" alt="DSC_0583" title="DSC_0583" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0585/' title='DSC_0585'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0585-150x150.jpg" class="attachment-thumbnail" alt="DSC_0585" title="DSC_0585" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0589/' title='DSC_0589'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0589-150x150.jpg" class="attachment-thumbnail" alt="DSC_0589" title="DSC_0589" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0590/' title='DSC_0590'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0590-150x150.jpg" class="attachment-thumbnail" alt="DSC_0590" title="DSC_0590" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0591/' title='DSC_0591'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0591-150x150.jpg" class="attachment-thumbnail" alt="DSC_0591" title="DSC_0591" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0593/' title='DSC_0593'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0593-150x150.jpg" class="attachment-thumbnail" alt="DSC_0593" title="DSC_0593" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0597/' title='DSC_0597'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0597-150x150.jpg" class="attachment-thumbnail" alt="DSC_0597" title="DSC_0597" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0598/' title='DSC_0598'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0598-150x150.jpg" class="attachment-thumbnail" alt="DSC_0598" title="DSC_0598" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0601/' title='DSC_0601'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0601-150x150.jpg" class="attachment-thumbnail" alt="DSC_0601" title="DSC_0601" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0602/' title='DSC_0602'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0602-150x150.jpg" class="attachment-thumbnail" alt="DSC_0602" title="DSC_0602" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0604/' title='DSC_0604'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0604-150x150.jpg" class="attachment-thumbnail" alt="DSC_0604" title="DSC_0604" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0606/' title='DSC_0606'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0606-150x150.jpg" class="attachment-thumbnail" alt="DSC_0606" title="DSC_0606" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0607/' title='DSC_0607'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0607-150x150.jpg" class="attachment-thumbnail" alt="DSC_0607" title="DSC_0607" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0608/' title='DSC_0608'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0608-150x150.jpg" class="attachment-thumbnail" alt="DSC_0608" title="DSC_0608" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0611/' title='DSC_0611'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0611-150x150.jpg" class="attachment-thumbnail" alt="DSC_0611" title="DSC_0611" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0612/' title='DSC_0612'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0612-150x150.jpg" class="attachment-thumbnail" alt="DSC_0612" title="DSC_0612" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0613/' title='DSC_0613'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0613-150x150.jpg" class="attachment-thumbnail" alt="DSC_0613" title="DSC_0613" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/dsc_0615/' title='DSC_0615'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0615-150x150.jpg" class="attachment-thumbnail" alt="DSC_0615" title="DSC_0615" /></a>

<p>We had thousands of possible beers to choose from, but we were most attracted to the pumpkin beers from local microbreweries from the taps. We enjoyed a down home meal of mussels, beef, and a crab cake sandwich and fries. A few things to point out in the pics above: Not the skull foam in the beer glass, the chocolate cake, the double chocolate stout, the elephant tap, the cans in the wall, some familiar faces from the php community, and the trappist ale. So never mind the fine dining in DC, go for the soul food and beer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/10/10/brickskellar-night-out-at-codeworks-dc-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeWorks in DC October 2009</title>
		<link>http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 04:05:43 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[User Groups]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[thephpcc]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=197</guid>
		<description><![CDATA[I am back recently from Codeworks 2009 in Washington, DC. It was in Alexandria, Virginia actually, but close enough, its a big place and its the same thing. This is the first time I have been able to go to a conference  without being involved at all in its planning and organization. I know from [...]]]></description>
			<content:encoded><![CDATA[<p>I am back recently from<a href="http://cw.mtacon.com/schedule/city/washington" target="_blank"> Codeworks 2009 in Washington, DC</a>. It was in Alexandria, Virginia actually, but close enough, its a big place and its the same thing. This is the first time I have been able to go to a conference  without being involved at all in its planning and organization. I know from experience that a lot of work is put into organizing and hosting a two day event with top-level speakers from all over. The DC Codeworks event was just one event in a series of dates in major cities across the us. Yep, php has gone rockstar. I am proud of the work I have done in the past but I found that by the time the conference came around I was too tired to absorb the lessons as I would like to. So while I am busy recompiling notes from the talks I attended, here are some photos from the conference I would like to share.</p>

<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0658/' title='Derick Rethans'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0658-150x150.jpg" class="attachment-thumbnail" alt="Derick Rethans" title="Derick Rethans" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0657/' title='Chris Shifflet'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0657-150x150.jpg" class="attachment-thumbnail" alt="Chris Shifflet" title="Chris Shifflet" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0650/' title='Ben Ramsey'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0650-150x150.jpg" class="attachment-thumbnail" alt="Ben Ramsey" title="Ben Ramsey" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0644/' title='Andrei Zmievski'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0644-150x150.jpg" class="attachment-thumbnail" alt="Andrei Zmievski" title="Andrei Zmievski" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0637/' title='Kuassi Mensah'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0637-150x150.jpg" class="attachment-thumbnail" alt="Kuassi Mensah" title="Kuassi Mensah" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0622/' title='After Party'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0622-150x150.jpg" class="attachment-thumbnail" alt="After Party" title="After Party" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0621/' title='Cal Evans'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0621-150x150.jpg" class="attachment-thumbnail" alt="Cal Evans" title="Cal Evans" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0515/' title='Sebastian Bergman and Stefan Priebsch'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0515-150x150.jpg" class="attachment-thumbnail" alt="Sebastian Bergman and Stefan Priebsch" title="Sebastian Bergman and Stefan Priebsch" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0514/' title='Patterns'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0514-150x150.jpg" class="attachment-thumbnail" alt="Patterns" title="Patterns" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0508/' title='Slide: the relative cost of a bug fix'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0508-150x150.jpg" class="attachment-thumbnail" alt="Slide: the relative cost of a bug fix" title="Slide: the relative cost of a bug fix" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0505/' title='Stefan Priebsch'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0505-150x150.jpg" class="attachment-thumbnail" alt="Stefan Priebsch" title="Stefan Priebsch" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0503/' title='Hotel Atrium'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0503-150x150.jpg" class="attachment-thumbnail" alt="Hotel Atrium" title="Hotel Atrium" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0496/' title='Lukas Smith'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0496-150x150.jpg" class="attachment-thumbnail" alt="Lukas Smith" title="Lukas Smith" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0479/' title='Hotel Atrium'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0479-150x150.jpg" class="attachment-thumbnail" alt="Hotel Atrium" title="Hotel Atrium" /></a>
<a href='http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/dsc_0477/' title='Matthew O&#039;Phinney'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0477-150x150.jpg" class="attachment-thumbnail" alt="Matthew O&#039;Phinney" title="Matthew O&#039;Phinney" /></a>

<p>The conference was great, I learned stuff, I learned what I know, what I dont know, what I need to know, and more. I met a great group of people and traded lots of business cards.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/10/10/codeworks-in-dc-october-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BCCLA hosts Dr. Michael Geist for evening lecture</title>
		<link>http://www.superwebdeveloper.com/2009/09/20/bccla-hosts-dr-michael-geist-for-evening-lecture/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/09/20/bccla-hosts-dr-michael-geist-for-evening-lecture/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 20:47:16 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[User Groups]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[file sharing]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[riaa]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=195</guid>
		<description><![CDATA[The BCCLA, in partnership with the UBC School of Journalism and the Tyee, will be hosting renowned copyright and internet law expert Dr. Michael Geist at the Wise Hall in Vancouver on October 1, 2009 for a unique evening lecture. Dr. Geist is Canada&#8217;s leading technology law expert and the guru of the Canadian movement [...]]]></description>
			<content:encoded><![CDATA[<p>The BCCLA, in partnership with the UBC School of Journalism and the Tyee, will be hosting renowned copyright and internet law expert Dr. Michael Geist at the Wise Hall in Vancouver on October 1, 2009 for a unique evening lecture.</p>
<p>Dr. Geist is Canada&#8217;s leading technology law expert and the guru of the Canadian movement to prevent copyright restrictions from infringing on key free speech principles including parody, artistic use, fair use, and device transferability.</p>
<p>A national innovator in using Web 2.0 tools like blogs and Facebook for campaigns for law reform and policy change, Dr. Geist&#8217;s advocacy, in partnership with Cory Doctorow, resulted in more than 30,000 people joining a Facebook group opposing proposed Canadian copyright law changes and ended in the tabling of the proposed changes by then Industry Minister Jim Prentice.</p>
<p>To learn more about Dr. Geist&#8217;s work, visit his website at <a href="http://www.michaelgeist.ca" target="_blank">www.michaelgeist.ca</a>.</p>
<p>Facebook page: <a href="http://www.facebook.com/event.php?eid=147315202089" target="_blank">http://www.facebook.com/event.php?eid=147315202089</a></p>
<table id="Event Info" style="height: 56px;" border="0" cellspacing="0" cellpadding="0" width="308">
<tbody>
<tr>
<td>Host:</td>
<td>
<div><a href="http://www.facebook.com/group.php?gid=136756831467">BC Civil Liberties Association (BCCLA)</a></div>
</td>
</tr>
<tr>
<td>Type:</td>
<td>
<div><a href="http://www.facebook.com/search/?o=4&amp;sfxp=1&amp;c1=3">Education</a> &#8211; <a href="http://www.facebook.com/search/?o=4&amp;sfxp=1&amp;c1=3&amp;c2=28">Lecture</a></div>
</td>
</tr>
<tr>
<td>Network:</td>
<td>
<div>Global</div>
</td>
</tr>
<tr>
<td>Price:</td>
<td>
<div>free</div>
</td>
</tr>
</tbody>
</table>
<table id="Time and Place" style="height: 84px;" border="0" cellspacing="0" cellpadding="0" width="314">
<tbody>
<tr>
<td>Date:</td>
<td>
<div>Thursday, October 1, 2009</div>
</td>
</tr>
<tr>
<td>Time:</td>
<td>
<div>7:00pm &#8211; 9:00pm</div>
</td>
</tr>
<tr>
<td>Location:</td>
<td>
<div>WISE Hall</div>
</td>
</tr>
<tr>
<td>Street:</td>
<td>
<div>1882 Adanac Street</div>
</td>
</tr>
<tr>
<td>City/Town:</td>
<td>
<div>Vancouver, BC</div>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/09/20/bccla-hosts-dr-michael-geist-for-evening-lecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeGeek Vancouver is Computer Heaven</title>
		<link>http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 07:14:26 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[User Groups]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[computers]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[freegeek]]></category>
		<category><![CDATA[GNU Linux]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=156</guid>
		<description><![CDATA[Freegeek Vancouver is technology heaven and I can prove it. I took photos. It is thriving. It is a beehive of activity. FreeGeek is a &#8216;non-profit computer re-use and recycling centre&#8217; that only opened in Vancouver a couple of years ago as a branch of the original operation in Portland, Oregon. They have expanded their [...]]]></description>
			<content:encoded><![CDATA[<p><a title="FreeGeek Vancouver" href="httphttp://freegeekvancouver.org/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed" target="_blank">Freegeek Vancouver</a> is technology heaven and I can prove it. I took photos. It is thriving. It is a beehive of activity. FreeGeek is a &#8216;non-profit computer re-use and recycling centre&#8217; that only opened in Vancouver a couple of years ago as a branch of the original operation in Portland, Oregon. They have expanded their facilities at least a couple times that I know of just to keep up with the community need to properly recycle computers. If you want to learn about technology, if you want to work in technology, if you want to learn about Free Open Source Software, FreeGeek Vancouver is the place to be. It is computer heaven, because that is where computers go to die and are reborn again.</p>

<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0161/' title='DSC_0161'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0161-150x150.jpg" class="attachment-thumbnail" alt="DSC_0161" title="DSC_0161" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0162/' title='DSC_0162'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0162-150x150.jpg" class="attachment-thumbnail" alt="DSC_0162" title="DSC_0162" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0164/' title='DSC_0164'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0164-150x150.jpg" class="attachment-thumbnail" alt="DSC_0164" title="DSC_0164" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0165/' title='DSC_0165'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0165-150x150.jpg" class="attachment-thumbnail" alt="DSC_0165" title="DSC_0165" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0166/' title='DSC_0166'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0166-150x150.jpg" class="attachment-thumbnail" alt="DSC_0166" title="DSC_0166" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0167/' title='DSC_0167'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0167-150x150.jpg" class="attachment-thumbnail" alt="DSC_0167" title="DSC_0167" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0168/' title='DSC_0168'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0168-150x150.jpg" class="attachment-thumbnail" alt="DSC_0168" title="DSC_0168" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0169/' title='DSC_0169'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0169-150x150.jpg" class="attachment-thumbnail" alt="DSC_0169" title="DSC_0169" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0170/' title='DSC_0170'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0170-150x150.jpg" class="attachment-thumbnail" alt="DSC_0170" title="DSC_0170" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0171/' title='DSC_0171'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0171-150x150.jpg" class="attachment-thumbnail" alt="DSC_0171" title="DSC_0171" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0172/' title='DSC_0172'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0172-150x150.jpg" class="attachment-thumbnail" alt="DSC_0172" title="DSC_0172" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0173/' title='DSC_0173'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0173-150x150.jpg" class="attachment-thumbnail" alt="DSC_0173" title="DSC_0173" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0174/' title='DSC_0174'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0174-150x150.jpg" class="attachment-thumbnail" alt="DSC_0174" title="DSC_0174" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0175/' title='DSC_0175'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0175-150x150.jpg" class="attachment-thumbnail" alt="DSC_0175" title="DSC_0175" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0176/' title='DSC_0176'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0176-150x150.jpg" class="attachment-thumbnail" alt="DSC_0176" title="DSC_0176" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0177/' title='DSC_0177'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0177-150x150.jpg" class="attachment-thumbnail" alt="DSC_0177" title="DSC_0177" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0178/' title='DSC_0178'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0178-150x150.jpg" class="attachment-thumbnail" alt="DSC_0178" title="DSC_0178" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0179/' title='DSC_0179'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0179-150x150.jpg" class="attachment-thumbnail" alt="DSC_0179" title="DSC_0179" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0180/' title='DSC_0180'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0180-150x150.jpg" class="attachment-thumbnail" alt="DSC_0180" title="DSC_0180" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0181/' title='DSC_0181'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0181-150x150.jpg" class="attachment-thumbnail" alt="DSC_0181" title="DSC_0181" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0182/' title='DSC_0182'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0182-150x150.jpg" class="attachment-thumbnail" alt="DSC_0182" title="DSC_0182" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0183/' title='DSC_0183'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0183-150x150.jpg" class="attachment-thumbnail" alt="DSC_0183" title="DSC_0183" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0184/' title='DSC_0184'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0184-150x150.jpg" class="attachment-thumbnail" alt="DSC_0184" title="DSC_0184" /></a>
<a href='http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/dsc_0185/' title='DSC_0185'><img width="150" height="150" src="http://www.superwebdeveloper.com/wp-content/uploads/DSC_0185-150x150.jpg" class="attachment-thumbnail" alt="DSC_0185" title="DSC_0185" /></a>

<p>What you can do at FreeGeek:</p>
<ul>
<li>Donate hardware, books.</li>
<li>Recycle.</li>
<li>Take short courses in hardware and software, or teach them if you have the background.</li>
<li>Mentor someone.</li>
<li>Volunteer for 24 hours and take away your own computer.</li>
<li>Shop the computer thrift shop, for super affordable computers and peripheral devices.</li>
<li>Learn to hack computers and technology, everything an engineer learns how to do.</li>
<li>Learn about Ubuntu Linux, and attend the Vancouver Ubuntu User Group meetings.</li>
<li>Take part in cleaning up the environmental problems generated by e-waste.</li>
<li>Receive a grant of computer hardware as a non-profit community organisation.</li>
<li>Donate money or materials for the FreeGeek wish list.</li>
<li>Apply for a paid position, or join it as a board member.</li>
</ul>
<p>Video on FreeGeek:</p>
<p><a href="http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/"><em>Click here to view the embedded video.</em></a></p>
<p>Find out lots more about FreeGeek at <a title="FreeGeek Vancouver" href="http://freegeekvancouver.org/" target="_blank">http://freegeekvancouver.org/</a> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/09/17/freegeek-vancouver-is-computer-heaven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal Copyright Move Pissing Off The Community</title>
		<link>http://www.superwebdeveloper.com/2009/09/09/drupal-copyright-move-pissing-off-the-community/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/09/09/drupal-copyright-move-pissing-off-the-community/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 19:43:09 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[drupal]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=151</guid>
		<description><![CDATA[Drupal creator Dries Buytaert has made some copryright changes that are now pissing off the web community. The new trademark policy, indroduced at the end of August 2009, now forbids the registration of domains like drupalSucks.com, and any site using Drupal in the name now must fork over $$$$$. WTF? Its a baffling move from [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_152" class="wp-caption alignleft" style="width: 266px"><img class="size-full wp-image-152" title="upsidedowndrupallogo" src="http://www.superwebdeveloper.com/wp-content/uploads/upsidedowndrupallogo.png" alt="upsidedowndrupallogo" width="256" height="292" /><p class="wp-caption-text">Drupal Community Support Is Now Upside Down</p></div>
<p>Drupal creator Dries Buytaert has made <a href="http://drupal.com/trademark" target="_blank">some copryright changes</a> that are now <a href="http://www.reddit.com/r/programming/comments/9irly/drupal_trainwreck_new_official_trademark_policy/" target="_blank">pissing off the web community</a>. The new trademark policy, indroduced at the end of August 2009, now forbids the registration of domains like <a href="http://www.drupalsucks.com/" target="_blank">drupalSucks.com</a>, and any site using Drupal in the name now must fork over $$$$$. WTF? Its a baffling move from such a well known member of the community, who has prospered from the concept of free software, sharing and free expression.</p>
<blockquote><p><strong>&#8230;it is a pretty impressive piece of software. But people should be free to criticize it in any way they see fit, including the registration of domain names that are less than flattering. (<a href="http://www.drupalsucks.com/" target="_blank">source</a>).<br />
</strong></p></blockquote>
<p>Unfortunately, these greedy assertions in a community that functions because of the freedom of expression, sharing and openness usually only serve to anger people so much as to go out and register domains like <a href="http://www.drupalsucks.com/" target="_blank">drupalSucks.com</a> which they use to spread the word about what a stupid idea this is.</p>
<p>Fallout is starting already. <a href="http://freedrupal5hosting.com/" target="_blank">Free Drupal Hosting </a>which, like the name sounds, provides free hosting for drupal sites, may not be willing to do so in the future.</p>
<blockquote><p><strong>There are draconian restrictions on the use of the word &#8216;drupal&#8217;, which would require us to give up a good part of our income, the truth is that the income from the ads is so low that we barely make enough to pay for hosting and bandwidth. We would not mind that but we refuse to make a loss on this service because of a silly trademark, with restrictions that &#8211; if they weren&#8217;t so sad &#8211; border on the hilarious. (<a href="http://freedrupal5hosting.com/content/welcome" target="_blank">source</a>).</strong></p></blockquote>
<p>Creating a domain name that uses a preexisting name in the case of <a href="http://www.drupalsucks.com/" target="_blank">drupalSucks.org</a> is covered under &#8216;<a href="http://en.wikipedia.org/wiki/Nominative_use" target="_blank">Nominative Use</a>&#8216;, as an affirmative defense to trademark infringement. The Drupal community will be set to scream long and loud over this. And companies who market their services using Drupal, making sites with Drupal, and companies that write code in the Drupal framework are bound to think twice about whether they want to use it due to these new restrictions.</p>
<blockquote><p><strong><br />
</strong></p></blockquote>
<blockquote></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/09/09/drupal-copyright-move-pissing-off-the-community/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading Ubuntu on a Laptop</title>
		<link>http://www.superwebdeveloper.com/2009/09/06/upgrading-ubuntu-on-a-laptop/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/09/06/upgrading-ubuntu-on-a-laptop/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 04:26:36 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[GNU Linux]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[badge]]></category>
		<category><![CDATA[distro]]></category>
		<category><![CDATA[thinkgeek]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=149</guid>
		<description><![CDATA[A picture essay. How to help rid the world of windows and make your distro complete with a nice badge.]]></description>
			<content:encoded><![CDATA[<p>A picture essay. How to help rid the world of windows and make your distro complete with a nice badge.</p>
<div id="attachment_139" class="wp-caption alignnone" style="width: 614px"><img class="size-full wp-image-139" title="n522363330_135773_5727" src="http://www.superwebdeveloper.com/wp-content/uploads/n522363330_135773_5727.jpg" alt="n522363330_135773_5727" width="604" height="453" /><p class="wp-caption-text">Use a knife to lift up the edge of the windows badge</p></div>
<div id="attachment_140" class="wp-caption alignnone" style="width: 614px"><img class="size-full wp-image-140" title="n522363330_135774_6253" src="http://www.superwebdeveloper.com/wp-content/uploads/n522363330_135774_6253.jpg" alt="n522363330_135774_6253" width="604" height="453" /><p class="wp-caption-text">Peel off the badge</p></div>
<div id="attachment_141" class="wp-caption alignnone" style="width: 614px"><img class="size-full wp-image-141" title="n522363330_135775_6755" src="http://www.superwebdeveloper.com/wp-content/uploads/n522363330_135775_6755.jpg" alt="n522363330_135775_6755" width="604" height="453" /><p class="wp-caption-text">Get that old Intel badge lifted up </p></div>
<div id="attachment_142" class="wp-caption alignnone" style="width: 614px"><a href="http://www.thinkgeek.com"><img class="size-full wp-image-142" title="n522363330_135776_7261" src="http://www.superwebdeveloper.com/wp-content/uploads/n522363330_135776_7261.jpg" alt="n522363330_135776_7261" width="604" height="453" /></a><p class="wp-caption-text">Lay down your nice badge from thinkgeek.</p></div>
<div id="attachment_143" class="wp-caption alignnone" style="width: 614px"><img class="size-full wp-image-143" title="n522363330_135777_7764" src="http://www.superwebdeveloper.com/wp-content/uploads/n522363330_135777_7764.jpg" alt="n522363330_135777_7764" width="604" height="453" /><p class="wp-caption-text">A pretty new badge for the laptop</p></div>
<div id="attachment_144" class="wp-caption alignnone" style="width: 614px"><img class="size-full wp-image-144" title="n522363330_135780_6646" src="http://www.superwebdeveloper.com/wp-content/uploads/n522363330_135780_6646.jpg" alt="n522363330_135780_6646" width="604" height="453" /><p class="wp-caption-text">Pull in the latest release, whatever your flavor of Linux</p></div>
<div id="attachment_145" class="wp-caption alignnone" style="width: 614px"><img class="size-full wp-image-145" title="n522363330_135781_7226" src="http://www.superwebdeveloper.com/wp-content/uploads/n522363330_135781_7226.jpg" alt="n522363330_135781_7226" width="604" height="453" /><p class="wp-caption-text">You must restart to complete</p></div>
<div id="attachment_146" class="wp-caption alignnone" style="width: 614px"><img class="size-full wp-image-146" title="n522363330_135782_7765" src="http://www.superwebdeveloper.com/wp-content/uploads/n522363330_135782_7765.jpg" alt="n522363330_135782_7765" width="604" height="453" /><p class="wp-caption-text">I was liking KDE before it went all freaky</p></div>
<div id="attachment_147" class="wp-caption alignnone" style="width: 614px"><img class="size-full wp-image-147" title="n522363330_135783_8317" src="http://www.superwebdeveloper.com/wp-content/uploads/n522363330_135783_8317.jpg" alt="n522363330_135783_8317" width="604" height="453" /><p class="wp-caption-text">Yep make it default</p></div>
<div id="attachment_148" class="wp-caption alignnone" style="width: 614px"><img class="size-full wp-image-148" title="n522363330_135784_8868" src="http://www.superwebdeveloper.com/wp-content/uploads/n522363330_135784_8868.jpg" alt="n522363330_135784_8868" width="604" height="453" /><p class="wp-caption-text">You&#39;re in. You&#39;re done.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/09/06/upgrading-ubuntu-on-a-laptop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.8.4 Upgrade</title>
		<link>http://www.superwebdeveloper.com/2009/09/06/wordpress-2-8-4-upgrade/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/09/06/wordpress-2-8-4-upgrade/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 02:04:53 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=137</guid>
		<description><![CDATA[SuperWebDeveloper.com has now been upgraded to WordPress 2.8.4. The upgrade process is pretty smooth, until the plugins. That part requires some care and attention.]]></description>
			<content:encoded><![CDATA[<p>SuperWebDeveloper.com has now been upgraded to WordPress 2.8.4. The upgrade process is pretty smooth, until the plugins. That part requires some care and attention.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/09/06/wordpress-2-8-4-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Car Runs On Linux</title>
		<link>http://www.superwebdeveloper.com/2009/09/04/my-car-runs-on-linux/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/09/04/my-car-runs-on-linux/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 23:22:46 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[GNU Linux]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[car]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=134</guid>
		<description><![CDATA[I converted a car to run on Linux. Runs great. Easy to tinker with. Very efficient. Easy to use for in heavy traffic situations, congested sites and so-on. It supports a good storage capability, low maintenance requirement. I am also able to go anywhere in it and I am free to use it however I [...]]]></description>
			<content:encoded><![CDATA[<p>I converted a car to run on Linux. Runs great. Easy to tinker with. Very efficient. Easy to use for in heavy traffic situations, congested sites and so-on. It supports a good storage capability, low maintenance requirement. I am also able to go anywhere in it and I am free to use it however I want, to share it with friends, modify it in anyway I see fit, and to share my modifications with the community without any encumbrances.</p>
<p><a href="http://www.superwebdeveloper.com/wp-content/uploads/linuxbadge.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-133" title="linuxbadge" src="http://www.superwebdeveloper.com/wp-content/uploads/linuxbadge.jpg" alt="linuxbadge" width="600" height="750" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/09/04/my-car-runs-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>To all my friends and everyone else who uses Vista</title>
		<link>http://www.superwebdeveloper.com/2009/08/10/to-all-my-friends-and-everyone-else-who-uses-vista/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/08/10/to-all-my-friends-and-everyone-else-who-uses-vista/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 20:10:59 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[vista]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=122</guid>
		<description><![CDATA[I have known for a while that Micro$oft Vista OS was dodgy. Its old news in fact. But that doesn&#8217;t stop people from using Vista because they still need to use a computer and the computer needs an operating system. Microsoft has a monopoly on the operating system sold with every new laptop computer. If [...]]]></description>
			<content:encoded><![CDATA[<p>I have known for a while that Micro$oft Vista OS was dodgy. Its old news in fact. But that doesn&#8217;t stop people from using Vista because they still need to use a computer and the computer needs an operating system. <a title="try and buy a laptop without Vista on it" href="http://www.associatedcontent.com/article/173199/microsoft_and_the_laptop_monopoly.html" target="_blank">Microsoft has a monopoly on the operating system sold with every new laptop computer.</a> If it isnt Vista, is likely because its a Mac. So as a result the general public is stuck with this total POS until Windows 7 comes out. At least the rumours have it that 7 will be better.</p>
<div id="attachment_121" class="wp-caption alignnone" style="width: 510px"><a href="http://www.superwebdeveloper.com/wp-content/uploads/vistabad.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="size-full wp-image-121" title="vistabad" src="http://www.superwebdeveloper.com/wp-content/uploads/vistabad.jpg" alt="vistabad" width="500" height="375" /></a><p class="wp-caption-text">I didn&#39;t make this graphic but I think its pretty funny, however, if you are a Vista user and your computer is suffering from any of the above listed blights, You will suffer much heartache and frustration until you get the proper help you need.</p></div>
<p>I had started using Linux desktop long ago. I have used <a title="suse" href="http://www.novell.com/linux/" target="_blank">Suse</a>, <a title="fedora" href="http://fedoraproject.org/" target="_blank">Fedora</a>, and now I am on <a title="ubntu" href="http://www.ubuntu.com/" target="_blank">Ubuntu</a>. Fixing computers is never as fun as using them. I had plenty of heartbreak with windows. So I got on the Linux learning curve and in general now I am a competent Linux Desktop user. Years have gone by and I have forgotten all my Windows maintenance chops. I try to help friends out when they ask me but I am close to useless.</p>
<p><a href="http://www.superwebdeveloper.com/2009/08/10/to-all-my-friends-and-everyone-else-who-uses-vista/"><em>Click here to view the embedded video.</em></a></p>
<p>Since I have not really been a Vista user, I don&#8217;t know how to help you. Call me when you have a problem when with your web site that runs on the <a title="lamp stack" href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank">LAMP stack (that is Linux, Apache, MySQL, PHP)</a>. Windows XP was a different story. Anyone could hack the registry if they were brave. But with Vista, you need to work with it the right way.</p>
<p>So the following are some tips to help you avoid a computer meltdown, hopefully before it happens:</p>
<ul>
<li>You have been thrust into a situation that requires you to know more than you ever wanted to about your computer and it is unfortunate. Don&#8217;t be pissed off, be serene, most issues can be sorted out</li>
<li>Attempts at intrusions into everyone&#8217;s computers are happening constantly. Its nothing personal</li>
<li><a title="vista book" href="http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Dstripbooks&amp;field-keywords=Vista&amp;x=0&amp;y=0" target="_blank">Get a book on Vista</a> and read it</li>
<li>Get the maximum possible amount of RAM installed in your computer- Vista needs it. In fact, assume now all hardware you now own is obsolete. It was already obsolete when you bought it</li>
<li><a title="system restore" href="http://www.howtogeek.com/howto/windows-vista/using-windows-vista-system-restore/" target="_blank">Set your system restore point on your computer</a></li>
<li>Run system updates regularly. If you cant run system updates, then you have a problem</li>
<li>Browse with <a title="get firefox" href="http://www.mozilla.com/en-US/firefox/" target="_blank">Mozilla Firefox</a>, its much more secure</li>
<li>Consider using an external hard drive to dump all your valued data on to, in order to separate your property from the computer</li>
<li>Look for computer support before you get into a problem. Find a service that fixes Vista machines, or look under  <a title="craigslist" href="http://www.craigslist.org/about/sites" target="_blank">yourtown.Craigslist.com/cps</a> for a local desktop expert. There is a cottage industry everywhere now of skilled people who earn a living charging you a hundred bux or so to de-hackify your Vista. If they are good, little gems of wisdom will drop out of their mouth as they ramble on, and you will remember them because you are paying for their time</li>
<li>Whether you or somebody else is fixing a computer or doing maintenance, it takes time to do it right. The alternative will cost more money and more time</li>
<li>When something goes wrong, acts weird on your computer, such as deathly slow downloads, being unable to go to web pages like normal people do, Windows Defender stops working and you get some error code like <a title="0x80240022" href="http://www.google.ca/search?hl=en&amp;q=0x80240022" target="_blank">&#8217;0&#215;80240022</a>&#8216;, don&#8217;t wait, you probably have a registry corruption. It&#8217;s the time to act. Ignoring this problem will only make it worse</li>
<li>Debugging Vista is more involved than just a <a href="http://www.google.ca/search?hl=en&amp;q=Vista+problems" target="_blank">Google keyword search</a></li>
<li>Dont be cheap. Vista is a problem waiting to happen, so get ready for it</li>
<li>If you cant do all what I suggest because you have more brains than money, <a href="http://www.superwebdeveloper.com/2009/07/18/learn-ubuntu-linux-and-love-your-desktop-again/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">start learning Linux</a></li>
<li>If you cant do all what I suggest because you have more money than brains, <a title="get a mac" href="http://www.apple.com/getamac/" target="_blank">get a Mac</a></li>
<li>Obviously, don&#8217;t run pirated software. If there is something you really need, or don&#8217;t want to pay, look for a free open source application. There is a large universe of free software that works better than the stuff you pay for</li>
</ul>
<p>Take some effort now to be a better computer user, and forearm yourself with an understanding that Vista has to be set up and maintained properly. It doesn&#8217;t matter who you are, Vista will work poorly for you if you dont make an effort to get it set up properly. But if you make an effort, the result doesn&#8217;t have to be your downfall:</p>
<p><a href="http://www.superwebdeveloper.com/2009/08/10/to-all-my-friends-and-everyone-else-who-uses-vista/"><em>Click here to view the embedded video.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/08/10/to-all-my-friends-and-everyone-else-who-uses-vista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learn Ubuntu Linux and Love your Desktop Again</title>
		<link>http://www.superwebdeveloper.com/2009/07/18/learn-ubuntu-linux-and-love-your-desktop-again/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/07/18/learn-ubuntu-linux-and-love-your-desktop-again/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 07:47:58 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[GNU Linux]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[User Groups]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=114</guid>
		<description><![CDATA[If you want to be a power user, there is no time to wait, you must switch to linux. Its not a freaky and far away thing. If you are using a computer right now, you have the skills you need to get into Linux Desktop with Ubuntu. To that end, there is a Vancouver [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.superwebdeveloper.com/wp-content/uploads/ubuntulogo.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-medium wp-image-118" title="ubuntulogo" src="http://www.superwebdeveloper.com/wp-content/uploads/ubuntulogo-300x78.png" alt="ubuntulogo" width="300" height="78" /></a></p>
<p>If you want to be a power user, there is no time to wait, you must switch to linux. Its not a freaky and far away thing. If you are using a computer right now, you have the skills you need to get into Linux Desktop with Ubuntu. To that end, there is a Vancouver Ubuntu Users Group ready to share the skills you will need in order to get started with Ubuntu Linux.</p>
<p>Have some links and go to a meetup:</p>
<p>1) <a title="ubuntu linux" href="https://wiki.ubuntu.com/CanadianTeam/Vancouver">https://wiki.ubuntu.com/CanadianTeam/Vancouver</a> &lt;&#8211; the official site<br />
2) <a href="http://www.meetup.com/ubuntuvancouver/">http://www.meetup.com/ubuntuvancouver/</a> &lt;&#8211; the membership engine<br />
3) <a href="http://identi.ca/ubuntuvancouver">http://identi.ca/ubuntuvancouver</a> &lt;&#8211; the news/alerts site</p>
<p>You can do it. So go to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/07/18/learn-ubuntu-linux-and-love-your-desktop-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Tale Of Two Logos</title>
		<link>http://www.superwebdeveloper.com/2009/06/11/a-tale-of-two-logos/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/06/11/a-tale-of-two-logos/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 06:44:08 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[User Groups]]></category>
		<category><![CDATA[censorship]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[media]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=111</guid>
		<description><![CDATA[It seems that some spineless technical provider which ordinarily would have used our beautiful conference logo was somehow terrified by Open Web Logo and said they weren&#8217;t willing to use it, because it had a skull &#38; cross bones in it. Of all the spineless nonsense I have ever heard, somebody pencil pushing nit wit [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that some spineless technical provider which ordinarily would have used our beautiful conference logo was somehow terrified by Open Web Logo and said they weren&#8217;t willing to use it, because it had a skull &amp; cross bones in it. Of all the spineless nonsense I have ever heard, somebody pencil pushing nit wit who rotates on a stool somewhere, probably using hand sanitiser after everything they touch was too afraid of the logo, so they had to shit on somebody else&#8217;s freedom of expression.<strong> </strong>Ooh! Skull and crossbones! Its so scary! We don&#8217;t understand it! We have to censor your identity!</p>
<p><strong>So this beautiful logo:</strong></p>
<p><a href="http://www.superwebdeveloper.com/wp-content/uploads/vector_open_web_logo.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-110" title="vector_open_web_logo" src="http://www.superwebdeveloper.com/wp-content/uploads/vector_open_web_logo.png" alt="vector_open_web_logo" width="242" height="265" /></a></p>
<p><strong>Got turned into this:</strong></p>
<p><a href="http://www.superwebdeveloper.com/wp-content/uploads/open_web_logo_telus.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-109" title="open_web_logo_telus" src="http://www.superwebdeveloper.com/wp-content/uploads/open_web_logo_telus.png" alt="open_web_logo_telus" width="300" height="369" /></a></p>
<p>I think this is what Viktor Frankl meant when he said Logos is deeper than logic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/06/11/a-tale-of-two-logos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comedy Central, Fix The Mirror Redirection for Canadian Redditors Already</title>
		<link>http://www.superwebdeveloper.com/2009/03/05/comedy-central-fix-the-mirror-redirection-for-canadian-redditors-already/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/03/05/comedy-central-fix-the-mirror-redirection-for-canadian-redditors-already/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 07:32:17 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Daily Show]]></category>
		<category><![CDATA[fuuuuuu]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[reddit]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=105</guid>
		<description><![CDATA[Yeah, so when I want to just have a break and watch the latest Daily Show posted on Reddit, Comedy Central dumps me off to fend for myself like some kind of bum. Ok maybe Im Canadian, but for the level of popularity of this link, this is damn well unforgiveable. Lets see, we have [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_106" class="wp-caption alignnone" style="width: 645px"><a href="http://www.superwebdeveloper.com/wp-content/uploads/fuuuuuu.gif#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="size-full wp-image-106" title="fuuuuuu" src="http://www.superwebdeveloper.com/wp-content/uploads/fuuuuuu.gif" alt="When I want to see the latest clip from the Daily Show, I am abandoned by Comedy Central. This is fixable!" width="635" height="574" /></a><p class="wp-caption-text">When I want to see the latest clip from the Daily Show, I am abandoned by Comedy Central. This is fixable!</p></div>
<p>Yeah, so when I want to just have a break and watch the latest Daily Show posted on Reddit, Comedy Central dumps me off to fend for myself like some kind of bum. Ok maybe Im Canadian, but for the level of popularity of this link, this is damn well unforgiveable.</p>
<p>Lets see, we have a url with a query string:</p>
<p><a title="episode id has a value we can pass along" href="http://www.thedailyshow.com/full-episodes/index.jhtml?episodeId=220250" target="_blank">http://www.thedailyshow.com/full-episodes/index.jhtml?episodeId=220250</a></p>
<p>But somebody at Comedy Central, probably someone with no sense of humor at all, cant figure out how to pass <strong>episodeId=220250 </strong>to the canadian mirror. It takes a little more programming, but not a lot more. Something like this is easy to figure out, because there is a unique identifier there to work with. From there on in, we would just be passed along to the mirror and we would be happy and laughing and we wouldnt be <strong>left on a dead page</strong>, screaming <strong>FFFFFFFFFFFFFUUUUUUUUUUUUUUUUUU</strong>- &#8230;&#8230;.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p><strong>Holy Crap here is an update!</strong></p>
<p>On <a href="http://digg.com/television/Colbert_and_Stewart_s_Best_Glenn_Beck_Moments?" target="_blank">digg recently</a>, someone posted the fix for this one!</p>
<p>You are a <a href="http://www.mozilla.com/en-US/firefox" target="_blank">Firefox user</a>, yes? I dont need to tell you now do I? Good. Go install the following Firefox plugin:</p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/967" target="_blank">https://addons.mozilla.org/en-US/firefox/addon/967</a></p>
<p>1) In Firefox, Go to tools-&gt;modify headers<br />
2) From the drop down box on the left select add<br />
3) Then enter: &#8220;X-Forwarded-For&#8221; in the first input box without the quotation marks<br />
4) Enter: &#8220;12.13.14.15&#8243; in the second input box without the quotation marks<br />
5) Leave the last input box empty, and save the filter, and enable it<br />
6) Click the &#8216;Configuration&#8217; tab on the right then proceed to check the &#8216;always on&#8217; button.<br />
Close the Modify Headers box and it should work.</p>
<p>Tested on Ubuntu. It worky.</p>
<p>All credit goes to<a href="http://digg.com/users/casspa" target="_blank"> Digg user casspa</a>.</p>
<p>ah, no more screamin!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/03/05/comedy-central-fix-the-mirror-redirection-for-canadian-redditors-already/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RMS Explains the Four Freedoms of Free Software</title>
		<link>http://www.superwebdeveloper.com/2009/02/16/rms-explains-the-four-freedoms-of-free-software/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/02/16/rms-explains-the-four-freedoms-of-free-software/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 01:19:07 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[GNU Linux]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rms]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[stallman]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=101</guid>
		<description><![CDATA[Short excerpt from Richard Stallman&#8217;s lecture at UBC on 7 February 2009, Sponsored by the Vancouver Institute and the UBC Faculty of Law Dr Stallman is founder of the Free Software Foundation and progenitor of much of he Gnu/Linux operating system: http://www.gnu.org/ UPDATE: FULL audio lecture from the UBC talk in OGG vorbis format link]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.superwebdeveloper.com/2009/02/16/rms-explains-the-four-freedoms-of-free-software/"><em>Click here to view the embedded video.</em></a></p>
<p><span>Short excerpt from Richard Stallman&#8217;s lecture at UBC on 7 February 2009,<br />
Sponsored by the Vancouver Institute and the UBC Faculty of Law</span></p>
<p>Dr Stallman is founder of the Free Software Foundation and progenitor of much of he Gnu/Linux operating system: <a title="http://www.gnu.org/" dir="ltr" rel="nofollow" href="http://www.gnu.org/" target="_blank">http://www.gnu.org/</a></p>
<p>UPDATE: FULL audio lecture from the UBC talk in OGG vorbis format <a title="link to richard stallman lecture " href="http://live.civl.ca:8085/podcast/2008/civlcasts/freesoftwaremovementrichardstallman.ogg" target="_blank">link</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/02/16/rms-explains-the-four-freedoms-of-free-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Richard Stallman Sings The Free Software Song</title>
		<link>http://www.superwebdeveloper.com/2009/02/13/richard-stallman-sings-the-free-software-song/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/02/13/richard-stallman-sings-the-free-software-song/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 20:32:56 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[GNU Linux]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gpl]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rms]]></category>
		<category><![CDATA[song]]></category>
		<category><![CDATA[stallman]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=98</guid>
		<description><![CDATA[RMS came to Vancouver recently for a series of talks about Free Software. At the Vancouver Maritime Centre on Feb 6, he joined the opening , Creaking Planks, to sing the Free Software song.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.superwebdeveloper.com/2009/02/13/richard-stallman-sings-the-free-software-song/"><em>Click here to view the embedded video.</em></a></p>
<p>RMS came to Vancouver recently for a series of talks about Free Software. At the Vancouver Maritime Centre on Feb 6, he joined the opening , Creaking Planks, to sing the Free Software song.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/02/13/richard-stallman-sings-the-free-software-song/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better to Avoid Variable Variables</title>
		<link>http://www.superwebdeveloper.com/2009/01/22/better-to-avoid-variable-variables/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/01/22/better-to-avoid-variable-variables/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 23:07:14 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=95</guid>
		<description><![CDATA[A variable can be a variable, did you know? Its something you may have learned in introductory PHP, like on p.32 of my copy of the Zend PHP Certification Study Guide. But while knowing data types is part of the job, its not always how you should code! Here is an example of something I [...]]]></description>
			<content:encoded><![CDATA[<p>A variable can be a variable, did you know? Its something you may have learned in introductory PHP, like on p.32 of my copy of the <a title="books on php" href="http://www.phparch.com/c/phpa/books">Zend PHP Certification Study Guide.</a> But while knowing data types is part of the job, its not always how you should code!</p>
<p>Here is an example of something I saw recently. Names have been changed to protect the innocent.</p>
<p>&lt;?php<br />
foreach ($fieldName as $field=&gt;$type) {<br />
$UserObject-&gt;setValueInDB($field, $$field);<br />
}<br />
?&gt;</p>
<p>This is from a form submission script. There are a couple of transgressions I can think of, not least of all the reliance on <a title="register_globals" href="http://ca.php.net/register_globals">the register_globals directive</a> which is now off by default, and soon to be eliminated from a future release of PHP.</p>
<p>The variable variable part here is $$field, basically, what has been posted. The $fieldName value is a list of fields grabbed from the table, so you don&#8217;t trust $_POST. But what is the point in trusting the scalar equivalent of your posted value? You are getting farther away from certainty, not closer. A $_POST submission from an attacker could wipe out data because their $_POST array doesn&#8217;t have any keys that your table has. As well, if your $_POST array on your own page doesn&#8217;t have a $key=&gt;$value that is also in $field=&gt;type, well that value is going to get wiped out. In the case of a user profile edit page, a form page probably wont have all the fields that are posted. Especially if a developer doesn&#8217;t consider using table joins elsewhere.</p>
<p>One of the cardinal rules of programming is never trust user input. And I consider losing user data to be a deadly sin. But setting up a situation where you risk losing data in a field because of one additional field in the table for the user is downright dangerous.</p>
<p>One of the early-ish contributors to PHP, by virtue of being a C programmer, was no doubt familiar with the variable variable language construct, and appreciated its eloquence in CRUD scripts and elsewhere. You got your field names, so cycle through them in a looping construct and execute your value setting method.  He or she is forgiven for not realizing that eventually, with the blossoming of a thousand new web hosts and thousands more developers on the web, not only users had to be protected from themselves, but developers from themselves also. And so, as of release 4.2.0, register_globals was finally set to OFF by default. Many hosting companies have been slow to react, and even today set it to ON to support legacy software.</p>
<p>So while you have this spartan and eloquent structure, it relies on an obtuse language construct which in turn relies on data that is potentially not trustable. The solution to the above problem required a static array of field names that must not be overwritten. Of course, testing this once might reveal that data is being overwritten with empty values. Unintentionally. By design. Due to a deprecated directive and an obscure language construct.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/01/22/better-to-avoid-variable-variables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Design Coding Rapper</title>
		<link>http://www.superwebdeveloper.com/2009/01/18/the-design-coding-rapper/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2009/01/18/the-design-coding-rapper/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 19:01:33 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[rap]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=91</guid>
		<description><![CDATA[Here it is, encapsuated, all the things you should know about web design and development. If you can do all this stuff, you are going to do ok as a developer.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.superwebdeveloper.com/2009/01/18/the-design-coding-rapper/"><em>Click here to view the embedded video.</em></a></p>
<p>Here it is, encapsuated, all the things you should know about web design and development. If you can do all this stuff, you are going to do ok as a developer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2009/01/18/the-design-coding-rapper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KDE4 Killing the Linux Desktop</title>
		<link>http://www.superwebdeveloper.com/2008/12/18/kde4-killing-the-linux-desktop/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2008/12/18/kde4-killing-the-linux-desktop/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 22:57:10 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[GNU Linux]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[frustration]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[kde3.5]]></category>
		<category><![CDATA[kde4]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=86</guid>
		<description><![CDATA[KDE is a desktop system, used on a few flavors of linux such as in SUSE and Ubuntu, especially the kde4 flavored release of Ubuntu, known as Kubuntu for the new release, 8.10, Intrepid Ibex. I was just stunned at its lack of services and I dont understand the choices they are making in developing [...]]]></description>
			<content:encoded><![CDATA[<p>KDE is a desktop system, used on a few flavors of linux such as in SUSE and Ubuntu, especially the kde4 flavored release of Ubuntu, known as Kubuntu for the new release, 8.10, Intrepid Ibex. I was just stunned at its lack of services and I dont understand the choices they are making in developing this. I think somebody has really jumped the gun in releasing this software way before its time. I was loving kde 3.5 it had all I needed. But KDE4 is a clusterFxxk. Its the Vista of Linux Desktop now. But I am just left wondering why they ever would have done this to all the loyal Linux Desktop fans out there.</p>
<ul>
<li>Dolphin file manager sucks, has fewer features than Konqueror, and has a wierd click and select to open default which is just mysterious.</li>
<li>Simple problems copying files in from a thumb drive or even from one directory or another</li>
<li>no screen savers</li>
<li>no desktop backgrounds supplied bas</li>
<li>cant have separate backgrounds for desktops</li>
<li>no intuitive way to place application icons on the application bar</li>
<li>no way to tweak terminal or not very much</li>
<li>plasma widgets act weird</li>
<li>kde4 claims to be a bit more efficent on memory, but maybe its because there are fewer features. Actually, it runs pretty leaky.</li>
<li>advanced effects killed my display pretty quickly</li>
<li>makes my nvidia card driver flicker ever 10 seconds &#8211; envyNG fixed that&#8230;</li>
</ul>
<p>Its just a real shame to take a community of the most loyal software users out there and kick them in head.</p>
<p>from a quick web search, there are lots of folks who are really frustrated and not a lot that are wow about it. Im going back to GNOME. At least it had features. And ah aint goin&#8217; back until its got stuff I use. Like moving files from one folder to another successfully the first time.</p>
<p>If we are going to be your beta testers, then tell us ahead of time, please guys?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2008/12/18/kde4-killing-the-linux-desktop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Formatted print_r is Darn useful</title>
		<link>http://www.superwebdeveloper.com/2008/11/11/formatted-print_r-is-darn-useful/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2008/11/11/formatted-print_r-is-darn-useful/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 20:39:21 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[arrays]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[print_r]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=80</guid>
		<description><![CDATA[Here is one of the little improvements upon a php script that makes it even more useful &#8211; at least appropriate for browser output. I make no claim to having invented this, its just a useful little script to pass on for debugging arrays in PHP. function printR($arr, $label= null) { if($label){ echo &#8220;&#60;h2&#62;$label&#60;/h2&#62; \n [...]]]></description>
			<content:encoded><![CDATA[<p>Here is one of the little improvements upon a php script that makes it even more useful &#8211; at least appropriate for browser output. I make no claim to having invented this, its just a useful little script to pass on for debugging arrays in PHP.</p>
<p>function printR($arr, $label= null) {<br />
if($label){<br />
echo &#8220;&lt;h2&gt;$label&lt;/h2&gt; \n &#8220;;<br />
}<br />
echo &#8220;\n\n&lt;pre&gt;\n&#8221;;<br />
print_r($arr);<br />
echo &#8220;\n&lt;/pre&gt;\n\n&#8221;;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2008/11/11/formatted-print_r-is-darn-useful/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edit a line in all php files in a directory with find and sed</title>
		<link>http://www.superwebdeveloper.com/2008/11/01/edit-a-line-in-all-php-files-in-a-directory-with-find-and-sed/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2008/11/01/edit-a-line-in-all-php-files-in-a-directory-with-find-and-sed/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 03:41:42 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[GNU Linux]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/?p=76</guid>
		<description><![CDATA[Here is about the simplest example I could come up with, to change a reference to a new include directory location in a codebase. You can of course do fancier things should you wish to dump your results to a directory before overwriting your files. #!/bin/sh for files in `find *.php` do sed &#8216;s/..\/..\/adminincl/includes/g&#8217; $files [...]]]></description>
			<content:encoded><![CDATA[<p>Here is about the simplest example I could come up with, to change a reference to a new include directory location in a codebase.</p>
<p>You can of course do fancier things should you wish to dump your results to a directory before overwriting your files.</p>
<p>#!/bin/sh<br />
for files in `find *.php`<br />
do<br />
sed &#8216;s/..\/..\/adminincl/includes/g&#8217; $files &gt; &#8216;temp&#8217;.$files &amp;&amp; mv &#8216;temp&#8217;.$files $files<br />
done</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2008/11/01/edit-a-line-in-all-php-files-in-a-directory-with-find-and-sed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Essential Cheat Sheet of Shell Commands</title>
		<link>http://www.superwebdeveloper.com/2008/10/08/essential-cheat-sheet-of-shell-commands/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2008/10/08/essential-cheat-sheet-of-shell-commands/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 02:37:54 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[GNU Linux]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[cheats]]></category>
		<category><![CDATA[codes]]></category>
		<category><![CDATA[commands]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tar]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/wp/?p=62</guid>
		<description><![CDATA[Though I would add a list of shell commands I keep using as a guide to myself and others. svn make svn code directory, call it codebase. Put a trunk, branches, and tags directory below it. Import all that codebase under trunk. That means, the whole site. Also, make a directory for your db, and [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Though I would add a list of shell commands I keep using as a guide to myself and others.</strong></p>
<p><strong>svn</strong><br />
make svn code directory, call it codebase. Put a trunk, branches, and tags directory below it. Import all that codebase under trunk. That means, the whole site. Also, make a directory for your db, and put a db dump in there. If you are running a cron, make a directory called cron, put your cron scripts in there and a text file copy of your crontab. Don&#8217;t store passwords in subversion, as in the top level file that your site uses. Make a version of the file without the passwords, call it something like config.orig.php or whatever, and check that in instead. Also, you may need the equivalent of the CVS ignore command called svn propset and make use of it.<br />
#svnadmin create repository_directory</p>
<p>#svn import codebase file:///home/user/pathtorepositorydir/repository_directory -m &#8220;initial import&#8221;<br />
check out your remote repository into your local machine at the command line:<br />
#svn checkout svn+ssh://user@domain.com/home/user/repository_directory/trunk .<br />
local:<br />
#svn checkout file:///home/user/pathtorepository/repository_directory html/</p>
<p>now you are checked in and out, you can delete codebase directory.</p>
<p><strong>svn export</strong> works in a similar way. It pulls out the files from the repository sans .svn directories.<br />
#svn export svn+ssh://user@domain.com/home/user/repository_directory/trunk</p>
<p><strong>grep</strong><br />
find instance and string in and below current directory, pipe it to less.<br />
#grep -r &#8220;string&#8221; * | less</p>
<p><strong>find</strong><br />
find all those old CVS or .svn directories, and kill them:<br />
to look:<br />
#find . -type d -name &#8220;.svn&#8221;<br />
to dump to a file<br />
#find . -type d -name &#8220;.svn&#8221; &gt; dump.txt<br />
when you are ready:<br />
#find . -type d -name &#8220;.svn&#8221; -exec rm -rf {} \;</p>
<p>Another way to wipe out everything:<br />
#<span class="nfakPe">find</span> . -name &#8216;*&#8217; -print0 | xargs -0 <span class="nfakPe">rm<br />
this means find here, the name of all, dont print it to stdout, then redirect the output to as an argument that the rm command will execute on. </span></p>
<p><strong>scp<br />
</strong>push a file<br />
#scp localfile.txt user@domain.com:pathtofile/remotefile.txt<br />
grab a file<br />
#scp user@domain.com:pathtofile/remotefile.txt localfile.txt</p>
<p><strong>rsync</strong><br />
get all those image files<br />
#rsync -avz user@domain.com:/home/pathtofiles/ .<br />
ah yes, but I will get a complaintÂ  from subversion about my directory being out of sync because what I just did was downloaded the .svn file from the server over that directory. They arent the same, so your svn update now crashes. What do do?<br />
# rsync -avz &#8211;exclude=.svnÂ  &#8230;&#8230;.then everything else after that. More options in the man pages.</p>
<p><strong>mysql</strong><br />
Export a db<br />
#mysqldump -uuser -ppassword -hlocalhost dbname &gt; db.sql<br />
Import a db<br />
#mysql -uuser -ppassword -hlocalhost dbname &lt; db.sql</p>
<p><strong>crontab<br />
</strong>A crontab line should point to a .sh script. The .sh script can then execute the shell script. This enables you to use either the sleep funciton or looping constructs to run the script a multiple of times if you like, andÂ  keeps your command to one line inside the cron.<br />
Look at your crontab with #crontab -l edit it with #crontab -e<br />
Crontab time examples:|<br />
1 */3 * * *Â  every 3 hours, one minute after the hour. Where possible, dont run a crontab exactly on the hour, because that is when everybody else does it on a shared host. Set it for a minute after when the cpu isnt likely to be so taxed.<br />
1 0,12 * * * every 12 hours, one minute after the hour.<br />
*/1 * * 3/6 every minute on every third and sixth day of the week</p>
<p><strong>wget</strong><br />
use wget to grab that tarball directly, for when you are grabbing such things off sourceforge or wherever.<br />
# wget http://domain.com/pathtofile.tar.gz</p>
<p><strong>tar</strong><br />
good old <strong>t</strong>ape <strong>ar</strong>chive.<br />
To extract:<br />
#tar -xvvf filename.tar.gz<br />
To archive:<br />
# tar -czvf tarballname.tar.gz directory</p>
<p><strong>screen</strong><br />
Got a shell connection to a dodgy host that keeps giving you the boot? after you login, run screen:<br />
#screen -DD -R</p>
<p>You will still get booted, but at least you can get right back to where you were when you reconnect by replaying the above command.</p>
<p><strong>mysql</strong><br />
you probably know mysql command line access if you are on this page. You have to know how to work with this because a database can exceed the size allowable for transfer over http, making into phpMyAdmin impossible. But a goodie that I found is that case when you want to wipe out all the tables in a db, but not the db itself, in order to preserve all the privleges, and access credentials. The following line can save a step:<br />
#mysqldump -uuser -ppassword &#8211;add-drop-table &#8211;no-data dbname | grep ^DROP | mysql -uuser -ppassword dbname</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2008/10/08/essential-cheat-sheet-of-shell-commands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protect weak passwords with login trap</title>
		<link>http://www.superwebdeveloper.com/2008/06/17/protect-weak-passwords-with-login-trap/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2008/06/17/protect-weak-passwords-with-login-trap/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 05:37:15 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/wp/?p=44</guid>
		<description><![CDATA[If one thing is for sure, the weaker the user, the weaker the password they use. Its a disaster waiting to happen. I decided to shore things up on a site I take care of just so I can sleep at night. It has lots of users, but weak ones. Many sites out there already [...]]]></description>
			<content:encoded><![CDATA[<p>If one thing is for sure,<strong> the weaker the user, the weaker the password they use</strong>. Its a disaster waiting to happen. I decided to shore things up on a site I take care of just so I can sleep at night. It has lots of users, but weak ones. Many sites out there already have safeguards in place to forbid further login attempts if you keep failing. If you let users own their passwords, and you probably do, there are no doubt some weak ones that could fall to some kind of rainbow attack if you allow an attacker to keep trying. There should be more than one example of this process on the web to compare this to.</p>
<p>It would work like this:</p>
<ul>
<li>set a number of allowed login attempts.</li>
<li>set the time limit in seconds for duration of access denial.</li>
<li>keep track of the number of failed login attempts.</li>
<li>keep track of when login attempts started with timestamp function.</li>
<li>test for meeting or exceeding the number of allowed login attempts.</li>
<li>let them keep trying if they have waited past the time limit.</li>
<li>set a time limit for when they can come back, and forbid them.</li>
<li>give them some messages and links to help.</li>
<li>if the login has been successful, wipe out all the tracking for login attempts.</li>
<li>You are done.</li>
</ul>
<p>Here we go, into your login processor after initial validation and constructing a sql query.</p>
<pre><code>$loginAttemptsAllowed = 5;</code></pre>
<pre>if( $_SESSION['loginAttempt']['Count'] &lt;= $loginAttemptsAllowed ) {
  $result = $db-&gt;queryRow($sql); // only query db if allowed to do so
}</pre>
<pre>if( !$result ){
  $seconds = 300; // 5 minutes
  // if trying again after lockout time limit ....
  if( $_SESSION['loginAttempt']['Count'] &gt;= $loginAttemptsAllowed ) {
    $difference  = abs($_SESSION['loginAttempt']['LockoutTime'] - $_SESSION['loginAttempt']['Time']);
    $diffSeconds = round($difference);
    if( $diffSeconds &gt; $seconds ) {
      unset($_SESSION['loginAttempt']); // they failed but have a new set of chances
      } else {
      $minutes = $seconds / 60;
      $message = "Sorry, you have had $loginAttemptsAllowed failed login attempts. &lt;br /&gt;
      We temporarily forbid access in order to protect your private information. &lt;br /&gt;
      Please wait $minutes minutes before logging on again.";
      }
    } else {
    if( !isset($_SESSION['loginAttempt']['Time']) ) {
      $_SESSION['loginAttempt']['Time']  = get_microtime();
      $_SESSION['loginAttempt']['Count'] = 1;
    } else {
      $_SESSION['loginAttempt']['Count']++;
    }
    if( $_SESSION['loginAttempt']['Count'] &gt;= $loginAttemptsAllowed ) {
      $_SESSION['loginAttempt']['LockoutTime'] = get_microtime();
    }
    $message = "login error";
  }
  addMessage($message, "MsgErr");
  redirect($_SESSION["backPage"]);
  exit();
}</pre>
<p>&#8230;.. go on and log them. Dont forget to unset( $_SESSION['loginAttempt'] );<br />
// a couple of the functions in there are custom ones, they are basically just wrappers.<br />
// I forget where I got the following function, but it is used for benchmarking. Maybe php.net?</p>
<pre><code>
function get_microtime() {</code></pre>
<pre><code>  $mtime = microtime();</code></pre>
<pre><code>  $mtime = explode(" ",$mtime);</code></pre>
<pre><code>  $mtime = doubleval($mtime[1]) + doubleval($mtime[0]);</code></pre>
<pre><code>  return ($mtime);
}</code></pre>
<p><code> </code>So there you have it. Forcing users to have highly secure passwords, while a good idea, is not always possible.</p>
<p>Keep your users safe. And curses to wordpress for screwing up my code formatting&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2008/06/17/protect-weak-passwords-with-login-trap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doing Mod_Rewrite Right</title>
		<link>http://www.superwebdeveloper.com/2008/05/16/doing-mod_rewrite-right/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2008/05/16/doing-mod_rewrite-right/#comments</comments>
		<pubDate>Fri, 16 May 2008 21:35:59 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[regular expressions]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/wp/?p=35</guid>
		<description><![CDATA[There are a few different things to do to make Apache_mod rewrite right. Overall the difficulty isnt too great, but setting it up right at the beginning is the key. You dont really want to have to catch every little exception in mod_rewrite regular expressions. Using your database to store safe strings to use in [...]]]></description>
			<content:encoded><![CDATA[<p>There are a few different things to do to make Apache_mod rewrite right. Overall the difficulty isnt too great, but setting it up right at the beginning is the key. You dont really want to have to catch every little exception in mod_rewrite regular expressions. Using your database to store safe strings to use in your url makes the whole process much more efficient. This little fact is usually not mentioned in tutorials for mod_rewrite.</p>
<p>You really do want to keep the mod_rewrite rules simple. Dont try to write a complex regexp in mod_rewrite that handles all kinds of apostropes, special characters, etc. (like I did). You dont have to have question marks, quotations, colons in the rewritten url for it to be useful to search engines. You can turn a title like &#8220;O&#8217;mally&#8217;s dog&#8217;s bone&#8221; into http://domain.com/Omallys_dogs_bone and there is definitely enough textual sense in that rewritten url for a search engine to deal with it.</p>
<p>Take your table with all your content data in it. Create a field for your content for a safe title. Then you can process your old titles into the new field. In your looping construct, use a bit of php to clean out your old titles for spaces, quotes, slashes, and other silly things.</p>
<pre>$punctuations = array('.', '\'', '?','!','*','=','Ã“','%','@','&amp;',',','/');</pre>
<pre>$safeTitle = str_replace($punctuations, "", $title);// get rid of the junk</pre>
<pre>$safeTitle   = str_replace(" ", "_", $safeTitle);// replace spaces with underscores</pre>
<p>Now you have a content resource which you can add to your output queries that will fill in your url link on your page for mod_rewrite goodness.</p>
<p>Make your mod_rewrite rule in your .htaccess file. Note here that the rule has a place for 2 variables, and is looking for all instances of strings with upper and lower case letters, the numbers 0-9, and the underscore character. And of course, it turns it all back into a query string to submit to your content page.</p>
<p>RewriteRule ^/?([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)(/)?$  item.php?safeTopicName=$1&amp;safeTitle=$2</p>
<p>Almost done right? Eh, not quite. Almost though. Dont screw over your existing users, who may have linked to something of yours to the past. You can still account for your old reference style to your web content, and you most definitely should. You can write checks for query string data validation to allow for  transparent access to content through either the old query string method or the new one.</p>
<pre>if($_GET["safeTopicName"]){</pre>
<pre>  $sql = sprintf("SELECT topicId
                  FROM contentTopics</pre>
<pre>                  WHERE safeTopicName</pre>
<pre>                  LIKE '%s'",</pre>
<pre>                mysql_real_escape_string($_GET["safeTopicName"]));</pre>
<pre>  diode($topicId = $db-&gt;getOne($sql), $sql); // my db connection wrapper</pre>
<pre>  $sql = sprintf("SELECT articleid</pre>
<pre>                  FROM content</pre>
<pre>                  WHERE safeTitle</pre>
<pre>                  LIKE '%s'",</pre>
<pre>                mysql_real_escape_string($_GET["safeTitle"]));</pre>
<pre>  diode($articleid = $db-&gt;getOne($sql), $sql);
} else {</pre>
<pre>  if($_GET["topicId"]) {</pre>
<pre>    $topicId =  (int)$_GET["topicId"]);</pre>
<pre>  }</pre>
<pre>  if($_GET["articleid"]) {</pre>
<pre>    $articleid =  (int)$_GET["articleid"];</pre>
<pre>  }
}
if(!isset($topicId) || !isset($articleid)) {</pre>
<pre>    addMessage("no item found", "MsgErr");</pre>
<pre>    redirect();</pre>
<pre>    exit();</pre>
<pre>}</pre>
<p>A couple notes: Im using PEAR, and a couple of custom functions for efficiency sake. Note the use of (int) and mysql_real_escape_string() for sanitizing and typing.Â  And yes, there are probably better ways to write this up, but you get the idea. Look for your $_GET vars, and if you dont have one set or the other, no result, otherwise, process it so the rest of the code needs no further reliance on these initial options so a user can get to your site with /Planets/earth as well as with item.php?topicId=2&amp;articleid=249.</p>
<p>To Recap:</p>
<ul>
<li>Set up safe versions of your content titles</li>
<li>process the old titles with a script</li>
<li>make a simpler rewrite rule as a result</li>
<li>set up your validation to process both kinds of queries</li>
<li>marvel about how much simpler it was to do it that way than to try and do it all with Mod_Rewrite alone.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2008/05/16/doing-mod_rewrite-right/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Form Security: Moving target vs. Honeypot</title>
		<link>http://www.superwebdeveloper.com/2008/05/13/web-form-security-moving-target-vs-honeypot/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2008/05/13/web-form-security-moving-target-vs-honeypot/#comments</comments>
		<pubDate>Wed, 14 May 2008 04:32:18 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/wp/?p=20</guid>
		<description><![CDATA[In my last blog posting I alluded to using randomizing form field names as a solution to form attacks. Here is an example of how it can be created for a simple form page. There is no doubt more than one way to accomplish this kind of idea, so please this example only as a [...]]]></description>
			<content:encoded><![CDATA[<p>In my last blog posting I alluded to using randomizing form field names as a solution to form attacks. Here is an example of how it can be created for a simple form page. There is no doubt more than one way to accomplish this kind of idea, so please this example only as a basic demo that suited my needs.</p>
<p>Create a moving target that attackers cannot seize upon repeatedly.  build arrays in a looping construct for all the form fields you want to assign in your page. Store them in a PHP Session array. You use built-in php functions such as md5(), uniqid(), microtime(), mt_rand(), and a salt value if you like as well. You output your form fields dynamically, using php to assign the randomized hash to the name value of the form field. Enter some data, submit the form. The script takes your $_POST array and compares the array keys to $_SESSION. You can then do further validation and then assign your values to  common sense variable names that are always private.</p>
<p>When you have validated this submission, you know the data has come from your form page. While you can spoof referrers, You cant spoof the form field names because they are only created at runtime.</p>
<p>The honeypot is the inverse approach, And also has lots of fans in its camp. A honeypot is a web form with addtional form elements, usually of a hidden type, that get discovered by a spammers crawler. They then seize upon the field name and use it in an attack. But since the form field isnt visible to users through the browser, it must be some kind of forged submission, and is worthy of filtering out.</p>
<p>The advantage of the moving target over honeypot is that forged submissions can be filtered out earlier in the script. Also, an attacker could easily analyze the form page once and determine what form fields to omit, and just add that information into the submitting script. They visited the page once, made a correction, and are back in business. Even so it is known as a successful defense. It is a successful defense because of the reason spam is spam: people messing with your site without ever even visiting it, not once. And if you are using an off-the-shelf website-in-a-box like WordPress or Drupal or whatever, the attacker can even more easily attack your site, with its cookie cutter template form elements, one same as the other million out there already.</p>
<p>It is very economical to attack as many sites as possible in the same way as possible. It will always be so.</p>
<p>I have had my share of naysayers over the moving target method. Please allow me reply to a few of the comments others have already made.</p>
<p><em>Why not just use the form name, why all form fields?</em> I guess you could, but really there are a couple answers. First is the concept of defense in depth. Secure the whole thing, not just one element that an attacker could lock on to. Next answer is that it is simple enough to do the work in php to generate all the form field names you wish.</p>
<p><em>The site could still be attacked</em>. Yes. Assume that it will be. Funky forms is of course not the only line of defense you must apply to stop your site from being trashed. What I was able to accomplish here is to break the link between the site and the garden variety automated attack, which must assume to know your form name and names of input fields in order to forge the rest of the information. The client must be on your web page in real time to submit data into your form. And in fact that is all the moving target approach does. The attacker still harvests your page, prepares a http remote attack in the guise of a simulated form posting, then goes to work, submitting to all the websites. But nothing gets through to a site with the moving target approach because field names wont match up.</p>
<p><em>A position based attacker could still hit it</em>. Yes but of course you are not done validating your input because you have this in place. Spam, like anything else, is a matter of economics, in terms of both time and money.  Yes someone could get you, but not likely, because like 2 boxers in a ring, both have to be stationary for a moment for a punch to connect. Otherwise its much harder to be effective, and much less powerful. The analogy is a fair one: The time required to hit a site with moving target is greater than the time to perform the usual kind of automated crawling and submitting designed for static form field names. The mere fact that you require your user to be on your page, absolutely, is enough in itself for attackers not to bother changing its tactics for millions of websites, or to lose so much time to making an exception to you that it becomes uneconomical to do so. As it stands, they may never even know that their submission was unsuccessful. You can of course push suspicious submissions to Akismet.</p>
<p><em>Yeah but sessions are evil and should never be used</em>. Some have said so. Not to long ago, they didn&#8217;t work very well. But this isnt the case anymore. Drupal doesn&#8217;t use sessions, for example, and other middlewares avoid them as well. Projects with requirements for handling legacy code, particular kinds of services or policies may insist that sessions not be used. But even more evil is to never use sessions because of not understanding how to use them properly and parsimoniously.</p>
<p>First comes your form page, use some php before the form to generate the fields that you need.</p>
<pre style="padding-left: 30px;">&lt;?php
session_start();
if(!$_SESSION["subscriber"]["values"]) {
  $fieldNamesCount = 11;
  $fieldNamesArray = array();
  for ($i = 0; $i &lt; $fieldNamesCount; $i++) {
    // $fieldNamesArray2[] =  md5("killSpam" . uniqid(microtime(), 1)); // random coctail with salt, if you wish
    $fieldNamesArray[] =  uniqid(md5(mt_rand())); // random coctail
  }
  $_SESSION["subscriber"]["fieldNames"] = $fieldNamesArray;
} else {
// do something when its a return pag
}</pre>
<pre>echo "&lt;pre&gt;";
print_r($fieldNamesArray)
echo "&lt;/pre&gt;";</pre>
<p>&#8230;&#8230;. and then your form fields look something like this:</p>
<pre>Name: &lt;input type="text" name="{$_SESSION["subscriber"]["fieldNames"][0]}" value="&lt;?php  echo  $_SESSION["subscriber"]["values"][0]; ?&gt;" size="20" maxlength="50" /&gt;</pre>
<pre>Phone: &lt;input name="{$_SESSION["subscriber"]["fieldNames"][1]}" type="text" value="&lt;?php echo  $_SESSION["subscriber"]["values"][1]; ?&gt;" size="20" maxlength="20" /&gt;</pre>
<p>You submit this to your form target script. If you look at your page Info in Firefox, under the forms tab, you will see you have form field names created from random hashes generated at runtime. The values for the names will be unique at every page load. The user must be on the page to submit.</p>
<p>So lets take a look at the script you are posting this data to.</p>
<p>Lets just assume that you are pointing this form submission to a different file, so here is what is required at a minimum:</p>
<pre>&lt;?php
session_start();
if (!$_POST) {
  echo "no post reference";
  exit();
}
// compare $_SESSION["subscriber"]["fieldNames"]
// to array_keys($_POST);
if(!$_SESSION["subscriber"]["fieldNames"]) {
  echo "no ref to my session";
  exit();
}</pre>
<pre>$postedKeys = array_keys($_POST); // I need to access this as an  array.</pre>
<pre>$_SESSION["subscriber"]["values"] = $_POST;
$realNames = array('Name','Telephone',.... etc);</pre>
<pre>for($i = 0; $i &lt; count($postedKeys); $i++) {
  if($postedKeys[$i] == $_SESSION["subscriber"]["fieldNames"][$i]) {
    // no cheating! you must you my randomly generated field names to use this page!!!!
    $realValues[$realNames[$i]] = $_SESSION["subscriber"]["values"][$_SESSION["subscriber"]["fieldNames"][$i]];
  } else {
    // its the work of satan
    echo "please dont do that ";
    exit();
  }
}</pre>
<p>so if it passes all the tests, its good to go. Otherwise, its like two people talking to each other who dont speak each others language. They will never get what each other is saying, will never understand, and will just move on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2008/05/13/web-form-security-moving-target-vs-honeypot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>the problem with cms packages is&#8230;.</title>
		<link>http://www.superwebdeveloper.com/2008/04/25/the-problem-with-cms-packages-is/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.superwebdeveloper.com/2008/04/25/the-problem-with-cms-packages-is/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 06:16:02 +0000</pubDate>
		<dc:creator>pbg</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.superwebdeveloper.com/wp/?p=14</guid>
		<description><![CDATA[I noticed yet again on vancouver.php.net that surprise surprise, while our backs were turned organizing the OpenWeb Vancouver 2008 conference, our Drupal based site got hammered with spam, again. We have a group of working professionals experienced in Drupal, up, down, and sideways, but we dont always have the time to monitor the website as [...]]]></description>
			<content:encoded><![CDATA[<p>I noticed yet again on vancouver.php.net that surprise surprise, while our backs were turned organizing the OpenWeb Vancouver 2008 conference, our Drupal based site got hammered with spam, again. We have a group of working professionals experienced in Drupal, up, down, and sideways, but we dont always have the time to monitor the website as closely as we would like. We make upgrades, we review configurations, security issues, we deal with issues as best as we can, but as volunteers, we have other things to do. We cannot keep ahead of exploits as fast as the exploiters, and I wonder who ever really does.</p>
<p>But really, this is a problem that is endemic to cms packages. A hacker can write one script and attack all drupal sites on the world wide web. Same problem for wordpress and every other website in a box. They all have a url that someone can post to with name &amp; value pairs. There are always lots of things to do to protect your site, but with every new upgrade and patch, there are always new exploits that might just work when applied to your site.</p>
<p>Without a human being to look and see, you wont know that your site has been tossed until you see it for yourself, and remains that way until it is fixed.</p>
<p>Randomizing not only the form name but also the field names was a very successful experiment in my case when someone had my number. The attacker cant presume the name of your fields then so easily, and then they cant attack you. Its like you become a moving target, not a static one. At the very least, they actually need to be on the page in real time in order to post something. Now other developers have told me that in fact it could be attacked with a position based form filler, say based on a xul widget or hacked firefox, but this solution, while possible by some attackers, is generally extra effort to include in the whole looping construct for the attack.</p>
<p>Spam networks hire out at at least $5000 an hour, I learned at a VanLug talk last year. So if an exploit takes too long to seize on to, it is not worth the time. CMS packages are uniform instances of software in terms of action urls and form and field names, so they are static things to sieze upon in the eyes of an attacker who has to provide the biggest bang for the buck. They are sitting ducks, just waiting to get attacked. If even an array key was constructed of a md5 hash at page load time, stored in a sessionÂ  (oops, no sessions in Drupal, not Kosher, if you are a Drupalist), that at a minimum would be enough to be a moving target an attacker would be unable to sieze upon without actually being on the page in real time. And that is the whole problem with spammers, they never even visit your site. Never have and never will.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superwebdeveloper.com/2008/04/25/the-problem-with-cms-packages-is/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

