<?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>PoundBangWhack.com &#187; Development</title>
	<atom:link href="http://www.poundbangwhack.com/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.poundbangwhack.com</link>
	<description>A web development/programming blog providing info, tips, and tricks on programming languages, scripting, Linux, MySQL and more</description>
	<lastBuildDate>Sat, 17 Jul 2010 05:17:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>What I learned from my first OWASP meeting (or why I will never use PHP Nuke)</title>
		<link>http://www.poundbangwhack.com/2010/07/06/what-i-learned-from-my-first-owasp-meeting-or-why-i-will-never-use-php-nuke/</link>
		<comments>http://www.poundbangwhack.com/2010/07/06/what-i-learned-from-my-first-owasp-meeting-or-why-i-will-never-use-php-nuke/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 05:23:02 +0000</pubDate>
		<dc:creator>Mark Stoecker</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Mike Brooks]]></category>
		<category><![CDATA[SQL Injection]]></category>

		<guid isPermaLink="false">http://www.poundbangwhack.com/?p=1376</guid>
		<description><![CDATA[Like I said, I learned a lot (much more than I though I was going to) at the meeting and look forward to attending every month.  I highly suggest checking for <a href="http://www.owasp.org/index.php/Category:OWASP_Chapter">an OWASP chapter in your area</a> and attending monthly meetings.  In closing, I'd like to leave a list of some of the things I took away from this meeting:]]></description>
			<content:encoded><![CDATA[<p>I just got home from attending my first meeting of the Phoenix chapter of <a href="http://www.owasp.org/" title="Open Web Application Security Project">OWASP.</a>  <strong>WOW!!!</strong>  That&#8217;s all I have to say.  The guest speaker was <a href="https://sitewat.ch">Mike Brooks</a>, currently <a href="http://stackoverflow.com/users/183528/the-rook">the top answerer and asker of security questions on Stack Overflow</a>, who will be giving the same talk at the upcoming <a href="http://www.defcon.org/">DEF CON 18.</a>  Mike gave an amazing presentation on chaining vulnerabilities in order to bypass layered security systems and ways of obtaining wormable remote code execution on a modern <abbr title="Linux Apache MySQL PHP">LAMP</abbr> platform.<br />
<span id="more-1376"></span><br />
First off, let me just start with this statement: <strong>Mike Brooks is brilliant!</strong>  I won&#8217;t go to much in to detail of what he spoke about as he will be speaking at DEF CON as well and I don&#8217;t want to give away his talk, even though it has been published on the web already.  However, Mike showed some interesting ways of not only exploiting holes in the PHP Nuke application, but exploits that can be used elsewhere as well.  Obviously, I think it goes without saying (but I&#8217;ll say it anyway): <strong>I do not condone hacking or any use of black-hat methodologies for malicious purposes.</strong>  However, when used for educational purposes, the information is very useful.  How may hacking be educational?  Mike summed it up with the following quote: </p>
<blockquote><p>What I cannot create, I do not understand.<br /><cite><a href="http://en.wikiquote.org/wiki/Richard_Feynman">Richard Feynman</a></cite></p></blockquote>
<p>In a nutshell, <strong>we can not solve the problem if we don&#8217;t understand what the problem is.</strong></p>
<p>Mike utilized the following exploits/weaknesses to take over an installation of PHP Nuke and enable a remote code execution:</p>
<ul>
<li><a href="http://www.owasp.org/index.php/Top_10_2010-A1">OWASP A1 &#8211; SQL Injection</a></li>
<li><a href="http://www.owasp.org/index.php/Top_10_2010-A3">OWASP A3 &#8211; Broken Authentication and Session Management</a></li>
<li><a href="http://cwe.mitre.org/data/definitions/200.html">CWE-200: Information Exposure</a></li>
<li><a href="http://www.owasp.org/index.php/Top_10_2010-A1">OWASP A1 &#8211; SQL Injection</a></li>
<li><a href="http://cwe.mitre.org/data/definitions/98.html">CWE-98: Improper Control of Filename for Include/Require Statement in PHP Program (&#8216;PHP File Inclusion&#8217;)</a></li>
</ul>
<p>While Mike said it took over a year to develop the exploit, it seemed very easy.  However, I&#8217;m sure there is a lot of &#8220;guess and check&#8221; involved in hacking.  Maybe by easy, to me it seems that some <strong>very basic security measures</strong> would have prevented this, measures that PHP Nuke isn&#8217;t taking, but very easily could.  Things like</p>
<ul>
<li>Proper usage of MySQL Data Types</li>
<li>Proper management of user sessions</li>
<li>Better MySQL input sanitzation</li>
<li>Proper login methods</li>
</ul>
<p>These are just a few of the things that could help prevent against this exploit.  More than anything, what I was amazed at was that Mike was able to login to the admin portion of the (his) site without having to decrypt the md5 password hash due to the shoddy session management.  Apparently, this has been a well-documented PHP Nuke exploit for years, however he had to use some clever hacking first to obtain the information necessary.</p>
<p>Like I said, I learned a lot (much more than I though I was going to) at the meeting and look forward to attending every month.  I highly suggest checking for <a href="http://www.owasp.org/index.php/Category:OWASP_Chapter">an OWASP chapter in your area</a> and attending monthly meetings.  In closing, I&#8217;d like to leave a list of some of the things I took away from this meeting:</p>
<ul>
<li>Modules (to any web app) are a major risk for attack (I pretty much knew this one already, just wanted to share it)</li>
<li>Do not mix XSS and SQL Injection sanitization methods in the same function</li>
<li>Limit the abilities of what even the admin of your application can do so even if it gets popped, the damage can be minimized</li>
<li><strong>Do not use md5 for password hashing!</strong>  Instead use sha1 or sha256 (this was news to me)</li>
<li>Don&#8217;t manage your sessions yourself, let php manage them with <span class="code">session_start()</span></li>
<li>Use <a href="http://phpsec.org/projects/phpsecinfo/">PhpSecInfo</a></li>
<li>Granting MySQL FILE privileges are worse than granting GRANT privileges</li>
<li>Security through Obscurity is not security at all, instead it is merely a stop-gap</li>
<li><strong>I will NEVER use, work on, or support PHP Nuke</strong> (it has more holes than swiss cheese)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.poundbangwhack.com/2010/07/06/what-i-learned-from-my-first-owasp-meeting-or-why-i-will-never-use-php-nuke/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New website launch: OneWordSurveys.com</title>
		<link>http://www.poundbangwhack.com/2009/10/19/new-website-launch-onewordsurveys-com/</link>
		<comments>http://www.poundbangwhack.com/2009/10/19/new-website-launch-onewordsurveys-com/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 06:45:51 +0000</pubDate>
		<dc:creator>Mark Stoecker</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Site Launches]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Wordpress Plugins]]></category>
		<category><![CDATA[Wordpress Themes]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.poundbangwhack.com/?p=1023</guid>
		<description><![CDATA[<a href="http://www.onewordsurveys.com" target="_blank">OneWordSurveys.com</a> is a site as simple as it's concept: Simple (one word) answers to simple questions.  The site poses simple questions to users, all with one word answers.  Questions like "Soda or Pop?", "Coke or Pepsi?", "Biscuits or Muffins?", and much, much more.  The site also provides a means for users to submit their own surveys as well.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.desertwebdesigns.com">Desert Web Designs</a> is pleased to announce the launch of our latest site:</p>
<blockquote>
<h4><a href="http://www.onewordsurveys.com" target="_blank">OneWordSurveys.com</a></h4>
</blockquote>
<h3>The Site</h3>
<p><a href="http://www.onewordsurveys.com" target="_blank">OneWordSurveys.com</a> is a site as simple as it&#8217;s concept: Simple (one word) answers to simple questions.  The site poses simple questions to users, all with one word answers.  Questions like &#8220;Soda or Pop?&#8221;, &#8220;Coke or Pepsi?&#8221;, &#8220;Biscuits or Muffins?&#8221;, and much, much more.  The site also provides a means for users to submit their own surveys as well.<br />
<span id="more-1023"></span></p>
<h3>The Design</h3>
<p>As you can see from visiting the site, the design is not overly complicated.  The client wanted to focus on the surveys and make them as visible as possible and make voting simple.  This meant a clean and simple design making the posts highly visible in the overall design.  The theme chosen is called SimpleX and is provided by <a href="http://wpshoppe.com/" target="_blank">WPShoppe.com</a>.</p>
<p>Only minor changes were made to the theme and installed plugins on the website after the initial design.  Most of these were simply aesthetic changes at the request of the client.  In addition to standard performance plugins, we also developed a plugin to allow all posts to be posted directly to the client&#8217;s <a href="http://twitter.com/onewordsurveys" target="_blank">Twitter account</a> as well as also posting directly to the client&#8217;s <a href="http://www.facebook.com/pages/One-Word-Surveys/157289412261" target="_blank">Facebook page</a> setup for <a href="http://www.onewordsurveys.com/" target="_blank">OneWordSurveys.com</a>.  Lastly, we also customized a contact form plugin so that when a user submits a survey of their own, it will automatically create the survey and schedule the post within the database, thus automating the website further.  At this point, all the client has to do is double check the post before it&#8217;s scheduled post time. </p>
<p>Overall, this site was a very quick and easy site we developed for the client.  However, as you can see, and as the client can attest to with the automation, quick and easy does not always sacrifice quality.  This site took approximately 5 hours to complete.</p>
<p><a href="http://www.onewordsurveys.com" target="_blank">OneWordSurveys.com</a> includes the following services:</p>
<ul>
<li><abbr title="HyperText Markup Language">HTML</abbr></li>
<li><abbr title="PHP Hypertext Preprocessor">PHP</abbr></li>
<li><abbr title="Cascading Style Sheets">CSS</abbr></li>
<li>Javascript</li>
<li><acronym title="Asynchronous JavaScript and XML">AJAX</acronym></li>
<li><acronym title="My Structured Query Language">MySQL</acronym></li>
<li>Customized WordPress Blog</li>
<li>WordPress Theme Customization</li>
<li>WordPress Plugin Development</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.poundbangwhack.com/2009/10/19/new-website-launch-onewordsurveys-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web design and development books in the Tech Library</title>
		<link>http://www.poundbangwhack.com/2009/05/27/web-design-and-development-books-in-the-tech-library/</link>
		<comments>http://www.poundbangwhack.com/2009/05/27/web-design-and-development-books-in-the-tech-library/#comments</comments>
		<pubDate>Thu, 28 May 2009 05:30:29 +0000</pubDate>
		<dc:creator>Mark Stoecker</dc:creator>
				<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tech Library]]></category>

		<guid isPermaLink="false">http://www.poundbangwhack.com/?p=337</guid>
		<description><![CDATA[I've always held to the mantra of "Never stop Learning", especially with Internet technologies and languages.  Now there is a lot of free information available on the Internet to help learn these things, but there have been countless books written on a multitude of subjects.  I myself have built up quite a collection of print books and ebooks alike on a wide variety of subjects from <acronym title="Cascading Style Sheets">CSS</acronym> to <acronym title="Search Engine Optimization">SEO<acronym>, Content Management to <acronym title="Visual Basic .NET">VB.NET</acronym>.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always held to the mantra of &#8220;Never stop Learning&#8221;, especially with Internet technologies and languages.  Now there is a lot of free information available on the Internet to help learn these things, but there have been countless books written on a multitude of subjects.  I myself have built up quite a collection of print books and ebooks alike on a wide variety of subjects from <acronym title="Cascading Style Sheets">CSS</acronym> to <acronym title="Search Engine Optimization">SEO</acronym>, Content Management to <acronym title="Visual Basic .NET">VB.NET</acronym>.</p>
<p>A while back, I started writing <a href="http://www.poundbangwhack.com/category/book-reviews/">book reviews</a> on some of the books that I have read.  This didn&#8217;t take off quite as I had expected, mainly because I didn&#8217;t write all that many reviews, although I have read plenty of my books.  My goal is to eventually read and write reviews for all the books that I own, although is quite the undertaking with the number of books that I own.<br />
<span id="more-337"></span><br />
Until I get all those books read and reviews written, I thought another good way to share with others the info from these books is to let people know which books I own.  I have posted a <a href="http://www.poundbangwhack.com/tech-library/">Tech Library</a> that will contain all the books that I own with links to purchase, authors&#8217; websites, and any reviews that I have written on that book.  I buy my books solely based on user reviews and ratings from other readers on <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fhomepage.html%3Fie%3DUTF8%26%252AVersion%252A%3D1%26%252Aentries%252A%3D0&#038;tag=httpwwwdese09-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=390957" target="_blank">amazon.com</a>.  I figure the most honest opinions about a book are going to come from the people that are actually reading and using the books on a daily basis, not technical reviews and critics who may have been paid to review the book.  I also feel that the authors have written the books for a reason, being experts on the subject and as such, I will provide links to their sites as I feel there is a lot to be learned from them.  </p>
<p><a href="http://www.poundbangwhack.com/tech-library/">Check out our library</a>, <a href="http://www.poundbangwhack.com/category/book-reviews/">read one of our reviews</a>, or head over to <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fhomepage.html%3Fie%3DUTF8%26%252AVersion%252A%3D1%26%252Aentries%252A%3D0&#038;tag=httpwwwdese09-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=390957" target="_blank">amazon.com</a> and pick up a new book and teach yourself something new, or expand on what you already know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.poundbangwhack.com/2009/05/27/web-design-and-development-books-in-the-tech-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New website launch: FreeAdviceForCharity.com</title>
		<link>http://www.poundbangwhack.com/2009/05/19/new-website-launch-freeadviceforcharitycom/</link>
		<comments>http://www.poundbangwhack.com/2009/05/19/new-website-launch-freeadviceforcharitycom/#comments</comments>
		<pubDate>Tue, 19 May 2009 08:16:16 +0000</pubDate>
		<dc:creator>Mark Stoecker</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Site Launches]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Wordpress Plugins]]></category>
		<category><![CDATA[Wordpress Themes]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.poundbangwhack.com/?p=205</guid>
		<description><![CDATA[When starting a professional blog-based site, I think the first step is finding a theme that you like and fits your needs.  I searched all over for a good financial-based theme and presented the client with a number of ideas to go off of.  He finally decided on not a financial theme, but a travel based theme from <a href="http://www.ezwpthemes.com/templates/peregrinator.html">EZWPthemes.com.</a>.  This site provides a number of great looking WordPress themes for free.  ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.desertwebdesigns.com">Desert Web Designs</a> is pleased to announce the launch of our latest site:</p>
<blockquote>
<h4><a href="http://www.freeadviceforcharity.com" target="_blank">FreeAdviceForCharity.com</a></h4>
</blockquote>
<h3>The Site</h3>
<p><a href="http://www.freeadviceforcharity.com" target="_blank">FreeAdviceForCharity.com</a> is a a site based out of Phoenix, AZ that looks to give back to it&#8217;s visitor&#8217;s, more than most sites on the internet usually do.  The basis behind <a href="http://www.freeadviceforcharity.com" target="_blank">FreeAdviceForCharity.com</a> is that the sites team of professional financial advisors provide FREE financial advice to it&#8217;s visitors and ask nothing in return, aside from a request to donate to <a href="http://www.rotary.org/en/Contribute/Funds/PolioPlusFund/Pages/ridefault.aspx">Rotary International&#8217;s PolioPlus Fund.</a>  The Mission Statement of the site is:</p>
<blockquote><p>FreeAdviceForCharity.com is to provide the best quality advice for individuals regarding various financial needs while at the same time promoting local charities and building a stronger community.</p></blockquote>
<p><span id="more-205"></span></p>
<h3>The Design</h3>
<p>When I was initially approached by the client about this site, his description of the site he wanted was one where he could provide financial information and articles to his visitors on a regular basis.  He wanted to be able to continue to update the content and keep it fresh.  Immediately my thoughts turned to WordPress to create a blog site.  What better way to continually update the site and information for visitor&#8217;s without needing all the technical expertise and know-how to do so?  </p>
<p>The client was initially turned off a bit by the idea of a blog.  I believe this was mainly due to the misconceptions of the usefulness and power of a blog, in addition to the poor image that blogs have received due to the over-saturation of blogs on the internet.  Many of the blogs out there are poor in design and (especially) content.  Once I started to show the client the power of a WordPress blog, and the fact that they can be altered so that the site does not even look like your &#8220;traditional&#8221; blog, he became more open to the prospect.  </p>
<p>When starting a professional blog-based site, I think the first step is finding a theme that you like and fits your needs.  I searched all over for a good financial-based theme and presented the client with a number of ideas to go off of.  He finally decided on not a financial theme, but a travel based theme from <a href="http://www.ezwpthemes.com/templates/peregrinator.html">EZWPthemes.com.</a>.  This site provides a number of great looking WordPress themes for free.  </p>
<p>After nailing down the theme, next came the customization.  If you compare the above theme to the current site, you&#8217;ll notice a number of differences.  These include changes made to the header to make it a financial theme, replacement of the image in the recent post section with the Mission Statement and info box, and the replacement of the Gallery on the left with multiple other modules.</p>
<p>After the customization of the theme, it was time to start working on the content for the site; content other than the main blog posts.  This included a <a href="http://www.freeadviceforcharity.com/request-a-consultation/">Request a Consultation</a> page with custom JavaScript and <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> built into the request form.  The other main piece of development was the &#8220;Did You Know?&#8221; module on the left hand side.  Visitor&#8217;s will be presented with various &#8220;Did You Know?&#8221; facts as they travel throughout the site.  This was a custom WordPress Plugin we developed specifically for this site.  The client has the ability to log into his WordPress dashboard and add new quotes, edit existing quotes, or delete existing quotes, all of which are stored in a separate table within the WordPress database itself.  With the WordPress Plugin <acronym title="Application Programming Interface">API</acronym>, plugin development is pretty simple as it is mostly just basic PHP programming that utilizes the hooks built into WordPress.  You will also notice the &#8220;Meet With An Advisor&#8221; module on the left hand side.  We are currently working on another plugin to allow this data to be changed by the client as well. </p>
<p>Overall this was not a complicated site, as WordPress makes it very easy to launch websites in short amounts of time.  This site took just over 18 hours to complete, most of which was spent on the theme customization and plugin development.  </p>
<p><a href="http://www.freeadviceforcharity.com" target="_blank">FreeAdviceForCharity.com</a> includes the following services:</p>
<ul>
<li><abbr title="HyperText Markup Language">HTML</abbr></li>
<li><abbr title="PHP Hypertext Preprocessor">PHP</abbr></li>
<li><abbr title="Cascading Style Sheets">CSS</abbr></li>
<li>Javascript</li>
<li><acronym title="Asynchronous JavaScript and XML">AJAX</acronym></li>
<li><acronym title="My Structured Query Language">MySQL</acronym></li>
<li>Customized WordPress Blog</li>
<li>WordPress Theme Customization</li>
<li>WordPress Plugin Development</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.poundbangwhack.com/2009/05/19/new-website-launch-freeadviceforcharitycom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First WordPress plugin a resounding success!</title>
		<link>http://www.poundbangwhack.com/2009/04/24/first-wordpress-plugin-a-resounding-success/</link>
		<comments>http://www.poundbangwhack.com/2009/04/24/first-wordpress-plugin-a-resounding-success/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 06:41:42 +0000</pubDate>
		<dc:creator>Mark Stoecker</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Wordpress Plugins]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.poundbangwhack.com/?p=55</guid>
		<description><![CDATA[I finished the development of my first WordPress plugin.  It is a simple plugin that updates <a href="http://twitter.com/mstoecker" target="_blank">my Twitter status</a> when I post a new blog entry . . . I havn't made the plugin public yet because there's still more that I want to do to it, including validating login info once saved, allowing for custom tweets, general cleaning up/maintenance and more.  Once complete, then I'll probably make it public.]]></description>
			<content:encoded><![CDATA[<p>So maybe the title is a bit of a stretch, but I&#8217;m absolutely thrilled!  I finished the development of my first WordPress plugin.  It is a simple plugin that updates <a href="http://twitter.com/mstoecker" target="_blank">my Twitter status</a> when I post a new blog entry.  Now for anyone who maintains a WordPress blog and/or knows a bit about WordPress plugins, you&#8217;ll know that this has already been done many times over.  WELL I DON&#8217;T CARE!!  The best way to learn is by doing right?<br />
<span id="more-55"></span><br />
So I set about to create my plugin which simply updates my twitter with a message about a new blog post, the title, and a link and that&#8217;s it.  The two biggest accomplishments for me here were:</p>
<ol style="margin-left: 40px; list-style-type: decimal;">
<li>The development of the plugin itself (and getting it to work)</li>
<li>The use of <a href="http://us.php.net/manual/en/book.curl.php" target="_blank">cURL</a> within the plugin itself</li>
</ol>
<p>For those of you who don&#8217;t know, cURL is a PHP library that allows you to make calls to remote websites via a PHP script.  I know this isn&#8217;t all that difficult to learn, but I really havn&#8217;t had a need to use it up until now and so I never learned it.</p>
<p>As far as the plugin itself goes, the process turned out to be really quite simple.  First, you obviously enter your twitter username and password which is then encrypted and stored in the database for later use.  Next, the plugin just waits for a new post (not a page) to be published (not saved) and it checks to make sure that I havn&#8217;t already tweeted (twaught?) that post.  If I havn&#8217;t, it adds an entry to make sure I don&#8217;t retweet if the post is updated again.  It then creates (through cURL) the <a href="http://tinyurl.com" target="_blank">TinyURL</a> to use with the &#8220;tweet&#8221; by connecting to the <a href="http://tinyurl.com" target="_blank">TinyURL <abbr title="Application Programming Interface">API</abbr></a> from the script then and makes sure the tweet is less than 140 characters long.  Once past there, the script then connects to the <a href="http://apiwiki.twitter.com/" target="_blank">Twitter <abbr title="Application Programming Interface">API</abbr></a> and logs into my account to make the post, all through the script.  </p>
<p>I havn&#8217;t made the plugin public yet because there&#8217;s still more that I want to do to it, including validating login info once saved, allowing for custom tweets, general cleaning up/maintenance and more.  Once complete, then I&#8217;ll probably make it public.  But it&#8217;s a huge step in the right direction for me and I&#8217;m really happy with the results so far.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.poundbangwhack.com/2009/04/24/first-wordpress-plugin-a-resounding-success/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New website launch: AngelWithCrookedFeet.org</title>
		<link>http://www.poundbangwhack.com/2008/07/16/new-website-launch-angelwithcrookedfeetorg/</link>
		<comments>http://www.poundbangwhack.com/2008/07/16/new-website-launch-angelwithcrookedfeetorg/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 07:14:59 +0000</pubDate>
		<dc:creator>Mark Stoecker</dc:creator>
				<category><![CDATA[Site Launches]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.desertwebdesigns.com/2008/07/16/new-website-launch-angelwithcrookedfeetorg/</guid>
		<description><![CDATA[<a href="http://www.angelwithcrookedfeet.org" target="_blank">AngelWithCrookedFeet.org</a> was actually a website redesign that we did.  The site was originally built by the client using Yahoo!'s SiteBuilder.  As is generally the problem with site builders, the site was chunky and contained a large amount of extraneous code that not only cause the site to have the look it did (alignments were off, elements overlapped each other and burst out of their parent elements, hovers didn't work properly, etc), but also increased the load time.  So, the majority of the work was simply taking the existing website and the intended layout, and converting it to a small, fast-loading, clean, and of course, standards-compliant website.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.desertwebdesigns.com">Desert Web Designs</a> is pleased to announce the launch of our latest site:</p>
<blockquote>
<h4><a href="http://www.angelwithcrookedfeet.org" target="_blank">AngelWithCrookedFeet.org</a></h4>
</blockquote>
<h3>The Site</h3>
<p><a href="http://www.angelwithcrookedfeet.org" target="_blank">AngelWithCrookedFeet.org</a> is the online home to the Angel With Crooked Feet Foundation providing support, guidance, and counseling to youth and their families who are victims of sexual abuse and more.  The Foundation was started by Anthony V. Sarjant Ph.D. of Show Low, Arizona and Gus Koernig of Mesa, Arizona.  Together Tony and Gus authored <a href="http://www.amazon.com/Angel-Crooked-Feet-Gus-Koernig/dp/1424152437/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1216192340&amp;sr=8-1" target="_blank"><em>Angel With Crooked Feet</em></a> which chronicles the life of Tony, born with a club foot to a mother who didn&#8217;t want him.  Through his years, Tony has suffered through time in and out of hospitals, petty crime, time in a juvenile detention center and later prison, sexual assault, the occult, marital infidelity, alcoholism, and suicide attempts.</p>
<blockquote><p>It&#8217;s a story that proves, again and again, that God never gives up on us, even when we want to give up on ourselves. It is the story I&#8217;m telling because I know that reading about my experiences, my ordeals, my challenges, and my victories will help thousands of people, young and old, overcome the challenges in their lives.</p></blockquote>
<p><span id="more-15"></span></p>
<h3>The Design</h3>
<p><a href="http://www.angelwithcrookedfeet.org" target="_blank">AngelWithCrookedFeet.org</a> was actually a website redesign that we did.  The site was originally built by the client using Yahoo!&#8217;s SiteBuilder.  As is generally the problem with site builders, the site was chunky and contained a large amount of extraneous code that not only cause the site to have the look it did (alignments were off, elements overlapped each other and burst out of their parent elements, hovers didn&#8217;t work properly, etc), but also increased the load time.  So, the majority of the work was simply taking the existing website and the intended layout, and converting it to a small, fast-loading, clean, and of course, standards-compliant website.</p>
<p>In this redesign, the client did not wish to change the layout.  He simply wanted a nice clean website.  The first step in this redesign was to discern which elements/data on the page would be kept, and which images would be needed.  After gathering the required elements and files, the next step was to redesign the layout based off the intentions that the client had with the original build.  The layout for the most part was there, it was just clunky.  In a redesign like this, I didn&#8217;t bother with the <abbr title="Cascading Style Sheets">CSS</abbr> at first, I simply wanted to get the code for the structure in place.  After I had a lean standards compliant base to work off of, the  <abbr title="Cascading Style Sheets">CSS</abbr> would be very easy to write and display the website in the intended manner.</p>
<p>The general structure of the website includes a main wrapper <span class="pre">&lt;div&gt;</span> that encompasses all the content on the website, a sidebar <span class="pre">&lt;div&gt;</span> with a navigation <span class="pre">&lt;table&gt;</span>, a main content <span class="pre">&lt;div&gt;</span>, and a footer <span class="pre">&lt;div&gt;</span> and that&#8217;s basically it.  The reason for the main wrapper <span class="pre">&lt;div&gt;</span> is that the Yahoo! SiteBuilder had aligned all the content flush left leaving approximately 40% of the screen blank on the right hand side.  Having this much blank space is almost standard for websites now, or at least is common, due to making sure the website will display fully on varying screen resolutions.  However, the better way to display this much space is to center the content and have the space divided equally on each side which gives the appearance of the content taking up more space that it does.</p>
<p>So the design and the <abbr title="Cascading Style Sheets">CSS</abbr> weren&#8217;t to difficult for this site.  The main thing I wanted to focus on for the client is getting that lean and clean website I was talking about.  The two biggest differences between the Yahoo! site and the current site is the amount of code that was removed, and the navigation hover technique.  As I said, the Yahoo! site had a lot of extraneous code in it, over 300 lines per page on such a small site.  The current size of the site is just barely over 50 lines for the &#8216;home&#8217; page and the &#8216;about&#8217; page and just under that for the content page, and of course is 100% <a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.angelwithcrookedfeet.org" target="_blank">W3 HTML 4.01 Standard Compliant.</a></p>
<p>The second reason for the smaller sizes is I changed the mouseover technique used on the navigation links.  Previously the mouseover was handled via Javascript.  Currently with the use of Image Sprites (post to come soon about these) and the <a href="http://www.w3.org/TR/CSS21/selector.html#dynamic-pseudo-classes" target="_blank"><abbr title="Cascading Style Sheets">CSS</abbr> 2 :hover pseudo-class,</a> we were able to duplicate this same functionality without all the Javascript getting in the way.  Basically what CSS Sprites do is takes multiple images and combines them all into one, then uses the :hover pseudo-class to reposition the background image when hovered over or selected to show the current image &#8220;state.&#8221;  There is one minor drawback to the :hover element.  It is not supported in <abbr title="Internet Explorer 6">IE 6</abbr> and below on any elements other than <span class="pre">&lt;a&gt;</span> tags.  To quote Andy Budd from <a href="http://www.poundbangwhack.com/2008/07/12/book-review-css-mastery-advanced-web-standards-solutions/">CSS Mastery: Advanced Web Standards Solutions</a></p>
<blockquote><p> This is an embellishment rather than an important feature&#8230;Users of more modern browsers will appreciate the added usability benefits, while those using <abbr title="Internet Explorer 6">IE 6</abbr> and below will be unaware they are missing anything</p></blockquote>
<p>However, using <a href="http://dean.edwards.name/ie7/" target="_blank">Dean Edwards&#8217; <abbr title="Internet Explorer 7">IE 7</abbr> scripts</a> gives this functionality to versions of <abbr title="Internet Explorer">IE</abbr> that are missing it using just a small 30KB Javascript file.</p>
<p>Overall this was a simple redesign for us that took just over 3 hours to complete, but was a huge improvement for the website and the client was extremely satisfied, not only because of the vast improvement in his website, but also because of the cheap price of the redesign since it didn&#8217;t take us long to make these changes.  All in all, <a href="http://www.angelwithcrookedfeet.org" target="_blank">AngelWithCrookedFeet.org</a> includes the following services:</p>
<ul>
<li><abbr title="HyperText Markup Language">HTML</abbr></li>
<li><abbr title="Cascading Style Sheets">CSS</abbr></li>
<li>Javascript</li>
</ul>
<p>P.S.  We are currently working on two corollary sites to go along with <a href="http://www.angelwithcrookedfeet.org" target="_blank">AngelWithCrookedFeet.org.</a>  These are AngelWithCrookedFeet.com and AngelWithCrookedFeet.info, which will have information articles about the Foundation, Inspirational/Motivational Speaking, Surviving Sexual Abuse and Child Abuse, and more, as well as give users the ability to schedule Tony for speaking engagements and the like.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.poundbangwhack.com/2008/07/16/new-website-launch-angelwithcrookedfeetorg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New website launch: AllOutdoorsPhotography.com</title>
		<link>http://www.poundbangwhack.com/2008/06/08/new-website-launch-alloutdoorsphotographycom/</link>
		<comments>http://www.poundbangwhack.com/2008/06/08/new-website-launch-alloutdoorsphotographycom/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 05:53:22 +0000</pubDate>
		<dc:creator>Mark Stoecker</dc:creator>
				<category><![CDATA[Site Launches]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.desertwebdesigns.com/2008/06/08/new-website-launch-alloutdoorsphotographycom/</guid>
		<description><![CDATA[AllOutdoorsPhotography.com is an online photo gallery displaying the photographs of Mesa, AZ photographer Gus Koernig. Gus’s portfolio features photographs from around the United States, including Arizona, Utah, Wyoming, Montana, North Carolina, and more, as well as Australia and New Zealand. AllOutdoorsPhotography.com focuses on capturing the beauty of the world that we live, from Mountains to Streams, Waterfalls to Seascapes, Sunrises and Sunsets to Cityscapes, these images will take your breath away. All photos on the site are available for sale with options of a print only or a beautiful museum-style mounting for easy display. All photos come hand-signed by the photographer.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.desertwebdesigns.com">Desert Web Designs</a> is pleased to announce the launch of our latest site:</p>
<blockquote>
<h4><a href="http://www.alloutdoorsphotography.com" target="_blank">AllOutdoorsPhotography.com</a></h4>
</blockquote>
<h3>The Site</h3>
<p><a href="http://www.alloutdoorsphotography.com" target="_blank">AllOutdoorsPhotography.com</a> is an online photo gallery displaying the photographs of Mesa, AZ photographer Gus Koernig. Gus&#8217;s portfolio features photographs from around the United States, including Arizona, Utah, Wyoming, Montana, North Carolina, and more, as well as Australia and New Zealand.  <a href="http://www.alloutdoorsphotography.com" target="_blank">AllOutdoorsPhotography.com</a> focuses on capturing the beauty of the world that we live, from Mountains to Streams, Waterfalls to Seascapes, Sunrises and Sunsets to Cityscapes, these images will take your breath away.  All photos on the site are available for sale with options of a print only or a beautiful museum-style mounting for easy display.  All photos come hand-signed by the photographer.<br />
<span id="more-10"></span></p>
<h3>The Design</h3>
<p>Our design process for <a href="http://www.alloutdoorsphotography.com" target="_blank">AllOutdoorsPhotography.com</a> started a little different than most.  First off, Gus was fairly open to the design of the site and didn&#8217;t really have anything in particular in mind with regards to the layout/design of the site.  This left us not only with an option to experiment, but also didn&#8217;t give us a lot of direction to start with either.  The ultimate goal of the site was to display the images in a gallery format with the implementation of a shopping cart functionality to allow for the purchase of the photos.</p>
<p>We started out by coming up with a number of different layout ideas in a process called &#8220;wireframing.&#8221;  Wireframing involves creating</p>
<blockquote><p>&#8220;black-and-white diagrams that illustrate blocks of content, navigation, or functionality&#8230;used as a tool to communicate content and structure without the distractions of color and imagery.&#8221;</p>
<p><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FTranscending-CSS-Design-Voices-Matter%2Fdp%2F0321410971%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1207006849%26sr%3D8-1&amp;tag=httpwwwdese09-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325" target="blank">Transcending CSS: The Fine Art of Web Design</a> by <a href="http://www.stuffandnonsense.co.uk/" target="_blank">Andy Clarke</a></p></blockquote>
<p><a href="http://www.poundbangwhack.com/wp-content/uploads/layouts.gif"><img title="Wireframes" src="http://www.poundbangwhack.com/wp-content/uploads/layouts.gif" alt="Sample Layouts" style="width: 200px; height: 200px; padding-right: 10px;" align="left" /></a></p>
<p>Here&#8217;s an example of some of our wireframes</p>
<p>With a layout selected by Gus, we set forth on creating our website comps.  The comps were the basic structure and layout of the site as actual web pages for Gus to get a feel for how the selected wireframe would translate to an actual working web site.  The comps were designed in basic <abbr title="HyperText Markup Language">HTML</abbr> and <abbr title="Cascading Style Sheets">CSS</abbr> and, once approved by Gus, were very easy to convert into <abbr title="PHP Hypertext Preprocessor">PHP</abbr> by taking our duplicate content (page headers, footers, and navigation bars) and copying them into a <abbr title="PHP Hypertext Preprocessor">PHP</abbr> include file.  This took care of the majority of the site</p>
<p>The remainder (and bulk) of the site involved displaying the photos from stored database information and creating the shopping cart.  By storing the image information in a database, it allows Gus to login to the <abbr title="Content Management System">CMS</abbr> we created for him to upload new photos, remove existing, change prices, on his own.  It also cuts down on the amount of code required for each page of the site.  From there, it was simply a matter of creating the shopping cart (which is not as easy as I&#8217;m making it sound) for purchasing the orders.  There are a lot of caveats to creating a custom shopping cart and, as a designer/developer, you need to make sure that all of those are covered.  I won&#8217;t cover those here, but let&#8217;s just say that the attention to detail is a high priority and can make or break a custom shopping cart.  For more information about creating shopping carts, I recommend <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2F1590594088&amp;tag=httpwwwdese09-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325" target="_blank">Constructing Usable Shopping Carts</a> by Clifton Evans, Jody Kerr, and Jon Stephens</p>
<p>All in all, the site for <a href="http://www.alloutdoorsphotography.com" target="_blank">AllOutdoorsPhotography.com</a> took us approximately 45 hours to complete and included the following services:</p>
<ul>
<li><abbr title="HyperText Markup Language">HTML</abbr></li>
<li><abbr title="Cascading Style Sheets">CSS</abbr></li>
<li>Javascript</li>
<li><abbr title="PHP Hypertext Preprocessor">PHP</abbr></li>
<li><acronym title="Asynchronous Javascript and XML">AJAX</acronym></li>
<li><abbr title="My Structured Query Language">MySQL</abbr></li>
<li>Flash</li>
<li>Custom Shopping Cart</li>
<li>Custom <abbr title="Content Management System">CMS</abbr></li>
<li>Logo Design</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.poundbangwhack.com/2008/06/08/new-website-launch-alloutdoorsphotographycom/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
