<?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>The Life of Lew Ayotte &#187; plugins</title>
	<atom:link href="http://lewayotte.com/tag/plugins/feed/" rel="self" type="application/rss+xml" />
	<link>http://lewayotte.com</link>
	<description>Pursue righteousness, godliness, faith, love, perseverance and gentleness. Fight the good fight of faith; take hold of the eternal life to which you were called... - 1 Timothy 6:11-12</description>
	<lastBuildDate>Wed, 09 May 2012 16:30:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Custom WordPress Plugin Update Repository</title>
		<link>http://lewayotte.com/2012/04/18/custom-wordpress-plugin-update-repository/</link>
		<comments>http://lewayotte.com/2012/04/18/custom-wordpress-plugin-update-repository/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 16:30:31 +0000</pubDate>
		<dc:creator>Lew</dc:creator>
				<category><![CDATA[Mind]]></category>
		<category><![CDATA[add_filter]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lewayotte.com/?p=3035</guid>
		<description><![CDATA[I have recently been spending a lot of time developing the IssueM plugin for a company I do a lot of contract work for. IssueM is an issue manager plugin for WordPress, to manage issues for online magazines, periodicals, and such. The idea for IssueM started a couple years ago, and even started as a plugin, [...]<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2012/04/18/custom-wordpress-plugin-update-repository/' addthis:title='Custom WordPress Plugin Update Repository ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>I have recently been spending a lot of time developing the <a  href="http://issuem.com/">IssueM</a> plugin for a company I do a lot of contract work for. IssueM is an issue manager plugin for WordPress, to manage issues for online magazines, periodicals, and such. The idea for IssueM started a couple years ago, and even started as a plugin, then morphed into a theme, and now it is back to a plugin. There was a lot of reasoning for these changes, but the biggest was that we wanted to make a plugin that could be used in any theme. Since the IssueM theme didn&#8217;t suit everyone&#8217;s needs, it was much easier to turn the functionality into shortcodes and widgets. Plus, since WordPress 3.1, we have all the capabilities we need to make a plugin extremely useful and successful in this arena.</p>
<p>Anyway, since this is a premium plugin we need a way to notify people of plugin updates. Frankly, I have never needed to do this, so I needed to figure it out. Luckily, I have a copy of <a  href="http://www.amazon.com/gp/product/0470916222?ie=UTF8&#038;tag=phrugal-20&#038;linkCode=shr&#038;camp=213733&#038;creative=393185&#038;creativeASIN=0470916222&#038;ref_=sr_1_1&#038;qid=1334712096&#038;sr=8-1">Professional WordPress Plugin Development</a> and in Chapter 9 there is very simple example of exactly what I wanted to do. Unluckily, the example doesn&#8217;t work&#8230; well, not entirely. It was always reporting an update, even if it was on the latest version. But I had enough information to trace down what was happening and figure out what I needed to change. By the way, the example code for the book is available from the <a  href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-WordPress-Plugin-Development.productCd-0470916222,descCd-DOWNLOAD.html">publisher&#8217;s website</a>.</p>
<p>So, without further adieu, this is a modified version of what I did:</p>
<p>This is the code I added to my plugin:</p>
<pre name="code" class="php">
function my_plugin_plugins_api( $false, $action, $args ) {

	$plugin_slug = plugin_basename( __FILE__ );

	// Check if this plugins API is about this plugin
	if( $args->slug != $plugin_slug )
		return false;

	// POST data to send to your API
	$args = array(
		'action' 	=> 'get-plugin-information'
	);

	// Send request for detailed information
	$response = $this->my_plugin_api_request( $args );

	return $response;

}
add_filter( 'plugins_api', 'my_plugin_plugins_api', 10, 3 );

function my_plugin_update_plugins( $transient ) {

	// Check if the transient contains the 'checked' information
	// If no, just return its value without hacking it
	if ( empty( $transient->checked ) )
		return $transient;

	// The transient contains the 'checked' information
	// Now append to it information form your own API
	$plugin_path = plugin_basename( __FILE__ );

	// POST data to send to your API
	$args = array(
		'action' 	=> 'check-latest-version'
	);

	// Send request checking for an update
	$response = $this->my_plugin_api_request( $args );

	// If there is a new version, modify the transient
	if( version_compare( $response->new_version, $transient->checked[$plugin_path], '>' ) )
		 $transient->response[$plugin_path] = $response;

	return $transient;

}
add_filter( 'pre_set_site_transient_update_plugins', 'my_plugin_update_plugins' );

function my_plugin_api_request( $args ) {

	// Send request
	$request = wp_remote_post( http://api.url/location, array( 'body' => $args ) );

	if ( is_wp_error( $request ) || 200 != wp_remote_retrieve_response_code( $request ) )
		return false;

	$response = unserialize( wp_remote_retrieve_body( $request ) );

	if ( is_object( $response ) )
		return $response;
	else
		return false;

}
</pre>
<p>Then I setup a WordPress install for my API and created a custom template for the API page</p>
<pre name="code" class="php">
/**
 * Template Name: API
**/

$action = $_REQUEST['action'];

// Create new object
$response = new stdClass;

switch( $action ) {

    // API is asked for the existence of a new version of the plugin
    case 'check-latest-version':
        $response->slug = 'my_plugin_slug';
        $response->new_version = '1.0.2';
        $response->url = 'http://plugin.url/';
        $response->package = 'http://plugin.url/download/location';
		break;

    // Request for detailed information
    case 'get-plugin-information':
        $response->name = 'my_plugin_name';
        $response->slug = 'my_plugin_slug';
        $response->requires = '3.3';
        $response->tested = '3.3.1';
	$response->rating = 100.0; //just for fun, gives us a 5-star rating :)
        $response->num_ratings = 1000000000; //just for fun, a lot of people rated it :)
        $response->downloaded = 1000000000; //just for fun, a lot of people downloaded it :)
        $response->last_updated = "2012-04-15";
        $response->added = "2012-02-01";
		$response->homepage = "http://plugin.url/";
        $response->sections = array(
            'description' =>  'Add a description of your plugin',
            'changelog' =>  'Add a list of changes to your plugin'
        );
        $response->download_link = 'http://plugin.url/download/location';
        break;

}

echo serialize( $response );
</pre>
<p>This isn&#8217;t exactly what I did, but it&#8217;s much more basic. Here are some things you can think about. First, the IssueM plugin uses an API key, so I send the API Key to api to verify the user has the right to update the plugin (say they don&#8217;t pay next year or something). The download_link setting is dynamic, for IssueM, it&#8217;s something like http://api.url/download/location?api=API_KEY. Then I have a separate script at the download location that will also verify the API Key and will send the latest IssueM plugin (which is located in a hidden directory). I also didn&#8217;t hard-code the downloaded argument, I actually track the downloads by using the dynamic download script. So my $response->downloaded actually equals get_option( &#8216;my_plugin_downloads&#8217; ).</p>
<p>The download script I setup looks something like this:</p>
<pre name="code" class="php">
/**
 * Template Name: Download Latest Version
 *
**/

$downloads = get_option( 'my_plugin_downloads', 100 );
update_option( 'my_plugin_downloads', ++$downloads );

$file = '/physical/location/of/your/file.zip';
$file_content = file_get_contents( $file );

header( 'Content-type: application/force-download' );
header( 'Content-Disposition: attachment; filename="my_plugin.zip"' );

echo $file_content;

exit;
</pre>
<p>You can completely customize and expand this code to do whatever you want. By adding extra arguments being sent to your API, you could have several plugins in this same repository. You can send API key information, host information, and anything else you&#8217;d need/want.</p>
<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2012/04/18/custom-wordpress-plugin-update-repository/' addthis:title='Custom WordPress Plugin Update Repository ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://lewayotte.com/2012/04/18/custom-wordpress-plugin-update-repository/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Active Directory (LDAP) Authentication in WordPress Multi-Site</title>
		<link>http://lewayotte.com/2010/09/09/active-directory-ldap-authentication-in-wordpress-multi-site/</link>
		<comments>http://lewayotte.com/2010/09/09/active-directory-ldap-authentication-in-wordpress-multi-site/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 16:30:00 +0000</pubDate>
		<dc:creator>Lew</dc:creator>
				<category><![CDATA[Mind]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[mu-plugins]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wpms]]></category>

		<guid isPermaLink="false">http://lewayotte.com/?p=1881</guid>
		<description><![CDATA[As many of you know, I led the team that launched the College of Education at UGA&#8217;s new website (http://www.coe.uga.edu/) which is driven by WordPress Multi-Site. The first phase is complete, and the second phase has started up. Part of their second phase is to allow a custodian from each department to edit content on [...]<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2010/09/09/active-directory-ldap-authentication-in-wordpress-multi-site/' addthis:title='Active Directory (LDAP) Authentication in WordPress Multi-Site ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>As many of you know, I led the team that launched the College of Education at UGA&#8217;s new website (http://www.coe.uga.edu/) which is driven by WordPress Multi-Site. The first phase is complete, and the second phase has started up. Part of their second phase is to allow a custodian from each department to edit content on their own departmental site. UGA uses Active Directory campus wide, so I thought it would be best to incorporate the WordPress authentication mechanism into UGA&#8217;s current AD implementation.</p>
<p>When I first researched this there weren&#8217;t many plugins for WordPress Multi-Site that handled AD/LDAP authentication. I was planning on writing one myself, but I found one yesterday by <a  href="http://clifgriffin.com/2009/05/13/simple-ldap-login-13-for-wordpress/">Clifton Griffin</a> called <a  href="http://wordpress.org/extend/plugins/simple-ldap-login/">Simple LDAP Login</a>. I installed in on a development website, put in the necessary information and BAM it worked&#8230; but it wasn&#8217;t really designed for WordPress Multi-Site. What I needed was every site to use the Active Directory authentication, without having to set each site up individually. So I paired down the code a bit (to just what I needed) and stuck the files in the mu-plugins dir.</p>
<p>Clifton used the opensource <a  href="http://adldap.sourceforge.net/">PHP LDAP Class</a> in his plugin, which works great. So, in my version, I stripped out everything I didn&#8217;t need/want like auto account creation, non-AD functionality, etc. Basically, I just needed to authenticate users via Active Directory.</p>
<p>So I stuck this code into a file in my mu-plugins folder. Now whenever anyone tries to authenticate it, uses Active Directory instead of WordPress&#8217; user table:</p>
<pre class="php">&lt;?php
require_once( WPMU_PLUGIN_DIR . '/simple-ldap-login/adLDAP.php' );

define( 'DOMAIN_CONTROLLERS', 	'active.directory.controller.domain' );
define( 'SECURITY_MODE', 		'high' );
define( 'ACCOUNT_SUFFIX', 		'@account.edu');
define( 'BASE_DN', 				'OU=OUOU,DC=DCDC,DC=EDU' );
define( 'USE_TLS',				false );
define( 'USE_SSL', 				true );

//Authenticate function
function sll_authenticate( $user, $username, $password ) {
	if ( is_a( $user, 'WP_User' ) ) { return $user; }

	//Failed, should we let it continue to lower priority authenticate methods?
	if( "high" === SECURITY_MODE ) {
		remove_filter('authenticate', 'wp_authenticate_username_password', 20, 3);
	}

	if ( empty( $username ) || empty( $password ) ) {
		$error = new WP_Error();

		if ( empty( $username ) )
			$error-&gt;add( 'empty_username', __( '<strong>ERROR</strong>: The username field is empty.' ) );

		if ( empty($password) )
			$error-&gt;add( 'empty_password', __( '<strong>ERROR</strong>: The password field is empty.' ) );

		return $error;
	}

	if( sll_can_authenticate( $username, $password ) ) {
			$user = get_userdatabylogin( $username );

			if ( !$user || ( strtolower( $user-&gt;user_login ) != strtolower( $username ) ) ) {
				do_action( 'wp_login_failed', $username );
				return new WP_Error( 'invalid_username', __( '<strong>Login Error</strong> An error occurred while attempting to log in. If this continues please contact coeweb@uga.edu for support.' ) );
			} else {
				//we're ready to return the user
				return new WP_User( $user-&gt;ID );
			}
	} else {
		return new WP_Error( 'invalid_username', __( '<strong>Login Error</strong> An error occurred while attempting to log in. If this continues please contact coeweb@uga.edu for support.' ) );
	}
}
add_filter( 'authenticate', 'sll_authenticate', 1, 3 );

function sll_can_authenticate( $username, $password ) {
	$sll_options = array(
		'account_suffix'		=&gt;	ACCOUNT_SUFFIX,
		'base_dn'				=&gt;	BASE_DN,
		'use_tls'				=&gt;	USE_TLS,
		'use_ssl'				=&gt;	USE_SSL,
		'domain_controllers'	=&gt;	explode( ';', DOMAIN_CONTROLLERS )
	);

	$adldap = new adLDAP( $sll_options );

	$result = false;
	$result = $adldap-&gt;authenticate( $username, $password );

	return $result;
}
</pre>
<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2010/09/09/active-directory-ldap-authentication-in-wordpress-multi-site/' addthis:title='Active Directory (LDAP) Authentication in WordPress Multi-Site ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://lewayotte.com/2010/09/09/active-directory-ldap-authentication-in-wordpress-multi-site/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Notable Tech Posts &#8211; 2010.01.17</title>
		<link>http://lewayotte.com/2010/01/17/notable-tech-posts-2010-01-17/</link>
		<comments>http://lewayotte.com/2010/01/17/notable-tech-posts-2010-01-17/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 14:35:37 +0000</pubDate>
		<dc:creator>Lew</dc:creator>
				<category><![CDATA[Mind]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[cheat sheets]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lewayotte.com/?p=1452</guid>
		<description><![CDATA[TiptTp jQuery plugin Create a PHP  server load meter jQuery Events: MouseOver &#8211; MouseOut vs MouseEnter &#8211; MouseLeave 15 useful jQuery plugins and tutorials CSS important Sexy jQuery drop down multi-level menu jQuery quick guide Take your HTML tables to a new level with Javascript frameworks Javascript replace all using regex for 10 best tutorials [...]<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2010/01/17/notable-tech-posts-2010-01-17/' addthis:title='Notable Tech Posts &#8211; 2010.01.17 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://code.drewwilson.com/entry/tiptip-jquery-plugin" target="_blank">TiptTp jQuery plugin</a></p>
<p><a  href="http://boxietuts.com/web-development/php/create-a-php-server-load-meter/" target="_blank">Create a PHP  server load meter</a></p>
<p><a  href="http://www.bennadel.com/blog/1805-jQuery-Events-MouseOver-MouseOut-vs-MouseEnter-MouseLeave.htm" target="_blank">jQuery Events: MouseOver &#8211; MouseOut vs MouseEnter &#8211; MouseLeave</a></p>
<p><a  href="http://www.designer-daily.com/15-useful-jquery-plugins-and-tutorials-5207" target="_blank">15 useful jQuery plugins and tutorials</a></p>
<p><a  href="http://www.webcredible.co.uk/user-friendly-resources/web-dev/css-important.shtml" target="_blank">CSS important</a></p>
<p><a  href="http://www.narga.net/sexy-jquery-drop-down-multi-level-menu/" target="_blank">Sexy jQuery drop down multi-level menu</a></p>
<p><a  href="http://www.tutorialspoint.com/jquery/jquery-quick-guide.htm" target="_blank">jQuery quick guide</a></p>
<p><a  href="http://www.thepixelart.com/take-your-html-tables-to-a-new-level-with-javascript-frameworks/" target="_blank">Take your HTML tables to a new level with Javascript frameworks</a></p>
<p><a  href="http://icfun.blogspot.com/2009/12/javascript-replace-all-using-regex-for.html" target="_blank">Javascript replace all using regex for</a></p>
<div>
<p><a  href="http://aext.net/2010/01/10-best-tutorials-to-learn-css3/" target="_blank">10 best tutorials to learn CSS3</a></p>
<p><a  href="http://craigsworks.com/projects/qtip/" target="_blank">http://craigsworks.com/projects/qtip/</a></p>
<p><a  href="http://www.1stwebdesigner.com/wordpress/wordpress-plugins-handy-toolbars-blog/" target="_blank">WordPress plugins handy toolbars blog</a></p>
<p><a  href="http://www.queness.com/post/1696/create-a-beautiful-looking-custom-dialog-box-with-jquery-and-css3" target="_blank">Create a beautiful looking custom dialog box with jQuery and CSS3</a></p>
<p><a  href="http://futurecolors.ru/jquery/" target="_blank">jQuery 1.4 API Cheat Sheet</a></p>
<p><a  href="http://lifehacker.com/5447726/" target="_blank">Install PHProxy in Your Web Space to Access Blocked Sites</a></p>
<p><a  href="http://www.devtheweb.net/blog/2010/01/12/things-you-probably-didnt-know-about-php/" target="_blank">Things you probably didn&#8217;t know about PHP</a></p>
</div>
<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2010/01/17/notable-tech-posts-2010-01-17/' addthis:title='Notable Tech Posts &#8211; 2010.01.17 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://lewayotte.com/2010/01/17/notable-tech-posts-2010-01-17/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notable Tech Posts &#8211; 2010.01.10</title>
		<link>http://lewayotte.com/2010/01/10/notable-tech-posts-2010-01-10/</link>
		<comments>http://lewayotte.com/2010/01/10/notable-tech-posts-2010-01-10/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 03:06:22 +0000</pubDate>
		<dc:creator>Lew</dc:creator>
				<category><![CDATA[Mind]]></category>
		<category><![CDATA[cheat sheets]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lewayotte.com/?p=1430</guid>
		<description><![CDATA[Getting started with jQuery Free furry cushions social icons set WordPress shopping cart plugins Converting your PHP app to MySQLi prepared statements Autosuggest jQuery plugin jQuery validation with regular expressions Extending CSS with jQuery a new years guide CSS 3D meninas -  just something cool to look at, pure CSS/HTML jQuery animations a 7-step program [...]<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2010/01/10/notable-tech-posts-2010-01-10/' addthis:title='Notable Tech Posts &#8211; 2010.01.10 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://sixrevisions.com/javascript/getting-started-with-jquery/" target="_blank">Getting started with jQuery</a></p>
<p><a  href="http://www.noupe.com/freebie/free-furry-cushions-social-icons-set.html" target="_blank">Free furry cushions social icons set</a></p>
<p><a  href="http://www.zlwo.com/wordpress/wordpress-shopping-cart-plugins/" target="_blank">WordPress shopping cart plugins</a></p>
<p><a  href="http://www.greebo.net/2010/01/02/converting-your-php-app-to-mysqli-prepared-statements/" target="_blank">Converting your PHP app to MySQLi prepared statements</a></p>
<p><a  href="http://code.drewwilson.com/entry/autosuggest-jquery-plugin" target="_blank">Autosuggest jQuery plugin</a></p>
<p><a  href="http://www.9lessons.info/2010/01/jquery-validation-with-regular.html" target="_blank">jQuery validation with regular expressions</a></p>
<p><a  href="http://addyosmani.com/blog/extending-css-with-jquery-a-new-years-guide/" target="_blank">Extending CSS with jQuery a new years guide</a></p>
<p><a  href="http://www.romancortes.com/blog/css-3d-meninas/" target="_blank">CSS 3D meninas</a> -  just something cool to look at, pure CSS/HTML</p>
<p><a  href="http://net.tutsplus.com/tutorials/javascript-ajax/jquery-animations-a-7-step-program/" target="_blank">jQuery animations a 7-step program</a></p>
<p><a  href="http://www.webstuffshare.com/2010/01/implement-password-strength-meter-gauge-js/" target="_blank">Implement password strength meter gauge JS</a></p>
<p><a  href="http://tutorialzine.com/2009/12/colorful-clock-jquery-css/" target="_blank">Colorful clock jQuery CSS</a></p>
<p><a  href="http://usejquery.com/posts/5/the-best-of-the-best-jquery-resources-number-1" target="_blank">The best of the best jQuery resources</a></p>
<p><a  href="http://www.designussion.com/cheat-sheet-series-java-script/" target="_blank">Cheat sheet series Javascript</a></p>
<p><a  href="http://www.electrictoolbox.com/mysql-using-if-in-where/" target="_blank">MySQL: Using if in where</a></p>
<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2010/01/10/notable-tech-posts-2010-01-10/' addthis:title='Notable Tech Posts &#8211; 2010.01.10 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://lewayotte.com/2010/01/10/notable-tech-posts-2010-01-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notable Tech Posts &#8211; 2009.12.06</title>
		<link>http://lewayotte.com/2009/12/06/notable-tech-posts-2009-12-06/</link>
		<comments>http://lewayotte.com/2009/12/06/notable-tech-posts-2009-12-06/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 20:00:16 +0000</pubDate>
		<dc:creator>Lew</dc:creator>
				<category><![CDATA[Mind]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lewayotte.com/?p=1394</guid>
		<description><![CDATA[10 usability crimes you really shouldn&#8217;t commit Design WordPress theme scratch 10 useful code snippets and plugins to spice up WordPress avatar How to create a simple API with PHP and MySQL Star Wars HTML and CSS a New Hope 10 ways to make WordPress more useful 10 front end techniques to improve your site [...]<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2009/12/06/notable-tech-posts-2009-12-06/' addthis:title='Notable Tech Posts &#8211; 2009.12.06 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://line25.com/articles/10-usability-crimes-you-really-shouldnt-commit" target="_blank">10 usability crimes you really shouldn&#8217;t commit</a></p>
<p><a  href="http://www.grafpedia.com/tutorials/design-wordpress-theme-scratch-theme" target="_blank">Design WordPress theme scratch</a></p>
<p><a  href="http://aext.net/2009/12/10-useful-code-snippets-and-plugins-to-spice-up-wordpress-avatar/" target="_blank">10 useful code snippets and plugins to spice up WordPress avatar</a></p>
<p><a  href="http://brenelz.com/2009/11/30/how-to-create-a-simple-api-with-php-and-mysql/" target="_blank">How to create a simple API with PHP and MySQL</a></p>
<p><a  href="http://ajaxian.com/archives/star-wars-html-and-css-a-new-hope" target="_blank">Star Wars HTML and CSS a New Hope</a></p>
<p><a  href="http://www.openforum.com/idea-hub/topics/marketing/article/10-ways-to-make-wordpress-more-useful-john-jantsch" target="_blank">10 ways to make WordPress more useful</a></p>
<p><a  href="http://www.catswhocode.com/blog/10-front-end-techniques-to-improve-your-site-usability" target="_blank">10 front end techniques to improve your site usability</a></p>
<p><a  href="http://blog.tuvinh.com/the-ultimate-toolbox-for-iphone-development/" target="_blank">The ultimate toolbox for iPhone development</a></p>
<p><a  href="http://www.1stwebdesigner.com/wordpress/premium-free-fresh-wordpress-themes-year-2009/" target="_blank">Premium free fresh WordPress themes year 2009</a></p>
<p><a  href="http://www.webm.ag/2009/12/04/10-wordpress-security-plugins-to-keep-your-blog-safe/" target="_blank">10 WordPress security plugins to keep your blog safe</a></p>
<p><a  href="http://webdesignfan.com/jquery-slider-tutorials-and-plugins/" target="_blank">jQuery slider tutorials and  plugins</a></p>
<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2009/12/06/notable-tech-posts-2009-12-06/' addthis:title='Notable Tech Posts &#8211; 2009.12.06 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://lewayotte.com/2009/12/06/notable-tech-posts-2009-12-06/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notable Tech Posts &#8211; 2009.11.01</title>
		<link>http://lewayotte.com/2009/11/01/notable-tech-posts-2009-11-01/</link>
		<comments>http://lewayotte.com/2009/11/01/notable-tech-posts-2009-11-01/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 14:28:01 +0000</pubDate>
		<dc:creator>Lew</dc:creator>
				<category><![CDATA[Mind]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[freelance]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lewayotte.com/?p=1285</guid>
		<description><![CDATA[20 do&#8217;s and dont&#8217;s of effective web design ten most popular firefox plugins of web designers six foundations of freelance success 5 rules to write more readable CSS files the Blueprint CSS framework tutorials how to guides and tools how to write a permission system using bits and bitwise operations in  PHP CSS framework comparison [...]<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2009/11/01/notable-tech-posts-2009-11-01/' addthis:title='Notable Tech Posts &#8211; 2009.11.01 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://webdesignledger.com/tips/20-dos-and-donts-of-effective-web-design" target="_blank">20 do&#8217;s and dont&#8217;s of effective web design</a></p>
<p><a  href="http://webdesignledger.com/tools/ten-most-popular-firefox-plugins-of-web-designers" target="_blank">ten most popular firefox plugins of web designers</a></p>
<p><a  href="http://freelancefolder.com/six-foundations-of-freelance-success/" target="_blank">six foundations of freelance success</a></p>
<p><a  href="http://woorkup.com/2009/10/18/5-rules-to-write-more-readable-css-files/" target="_blank">5 rules to write more readable CSS files</a></p>
<p><a  href="http://speckyboy.com/2009/10/26/the-blueprint-css-framework-tutorials-how-to-guides-and-tools/" target="_blank">the Blueprint CSS framework tutorials how to guides and tools</a></p>
<p><a  href="http://blog.code-head.com/how-to-write-a-permission-system-using-bits-and-bitwise-operations-in-php" target="_blank">how to write a permission system using bits and bitwise operations in  PHP</a></p>
<p><a  href="http://sethetter.com/web-design/css-framework-comparison/" target="_blank">CSS framework comparison</a></p>
<p><a  href="http://hungred.com/useful-information/ways-optimize-sql-queries/" target="_blank">ways optimizeSQL queries</a></p>
<p><a  href="http://blog.tuvinh.com/top-7-php-security-blunders/" target="_blank">top 7 PHP security blunders</a></p>
<p><a  href="http://www.incomediary.com/18-alternative-ways-to-use-wordpress/" target="_blank">18 alternative ways to use WordPress</a></p>
<p><a  href="http://webdesignledger.com/resources/12-essential-plugins-that-extend-wordpress-as-a-cms" target="_blank">12 essential plugins that extend WordPress as a CMS</a></p>
<p><a  href="http://cashrevelations.com/magazine/2009/10/ajax-and-javascript-techniques/" target="_blank">AJAX and Javascript techniques</a></p>
<p><a  href="http://www.owasp.org/index.php/Main_Page" target="_blank">Open Web Application Security Project</a></p>
<p><a  href="http://www.jquery.wisdomplug.com/jquery-plugins/jquery-table-plugins-jquery-plugins/30-amazing-jquery-plugins-to-play-with-tables/" target="_blank">30 amazing jQuery plugins to play with tables</a></p>
<p><a  href="http://www.devshed.com/c/a/PHP/Mastering-WHILE-Loops-for-PHP-and-MySQL/?kc=rss" target="_blank">Mastering WHILE Loops for PHP and MySQL</a></p>
<p><a  href="http://net.tutsplus.com/tutorials/javascript-ajax/simple-draggable-element-persistence-with-jquery/" target="_blank">simple draggable element persistence with jQuery</a></p>
<p><a  href="http://www.geekology.co.za/blog/2009/10/12-tips-improve-your-jquery-code/" target="_blank">12 tips improve your jQuery code</a></p>
<p><a  href="http://www.webdesignbooth.com/9-useful-jquery-calendar-and-date-picker-plugins-for-web-designers/" target="_blank">9 useful jQuery calendar and date picker plugins for web designers</a></p>
<p><a  href="http://www.geeksucks.com/showcases/14-great-posts-on-jquery-plugins.htm" target="_blank">14 great posts on jQuery plugins</a></p>
<p><a  href="http://woorkup.com/2009/10/30/how-to-improve-your-wordpress-theme-with-9-useful-plugins/" target="_blank">how to improve your WordPress theme with 9 useful plugins</a></p>
<p><a  href="http://www.appsheriff.com/web-apps/script/15-unforgettable-websites-to-find-code-snippets-with-ease/" target="_blank">15 unforgettable websites to find code snippets with ease</a></p>
<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2009/11/01/notable-tech-posts-2009-11-01/' addthis:title='Notable Tech Posts &#8211; 2009.11.01 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://lewayotte.com/2009/11/01/notable-tech-posts-2009-11-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notable Tech Posts &#8211; 2009.10.25</title>
		<link>http://lewayotte.com/2009/10/25/notable-tech-posts-2009-10-25/</link>
		<comments>http://lewayotte.com/2009/10/25/notable-tech-posts-2009-10-25/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 01:51:22 +0000</pubDate>
		<dc:creator>Lew</dc:creator>
				<category><![CDATA[Mind]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lewayotte.com/?p=1280</guid>
		<description><![CDATA[7 areas of PHP you might want to optimize jQuery concrete concreteui programming in jQuery Adaptive web forms .ASPX 10 astonishing jQuery resources to spice up your website the mystery of CSS float property website accessibility and usability ten tips on how to make your website more viewer friendly using RSS 35 fresh useful jQuery [...]<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2009/10/25/notable-tech-posts-2009-10-25/' addthis:title='Notable Tech Posts &#8211; 2009.10.25 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.webdesignbooth.com/7-areas-of-php-you-might-want-to-optimize/" target="_blank">7 areas of PHP you might want to optimize</a></p>
<p><a  href="http://ajaxian.com/archives/jquery-concrete-concreteui-programming-in-jquery" target="_blank">jQuery concrete concreteui programming in jQuery</a></p>
<p><a  href="http://www.jankoatwarpspeed.com/post/2009/10/19/Adaptive-web-forms.aspx" target="_blank">Adaptive web forms .ASPX</a></p>
<p><a  href="http://www.catswhocode.com/blog/10-astonishing-jquery-resources-to-spice-up-your-website" target="_blank">10 astonishing jQuery resources to spice up your website</a></p>
<p><a  href="http://www.smashingmagazine.com/2009/10/19/the-mystery-of-css-float-property/" target="_blank">the mystery of CSS float property</a></p>
<p><a  href="http://designreviver.com/articles/website-accessibility-and-usability-ten-tips-on-how-to-make-your-website-more-viewer-friendly/" target="_blank">website accessibility and usability ten tips on how to make your website more viewer friendly</a></p>
<p><a  href="http://boagworld.com/reviews/usingrss" target="_blank">using RSS</a></p>
<p><a  href="http://www.noupe.com/jquery/35-fresh-useful-jquery-plugins.html" target="_blank">35 fresh useful jQuery plugins</a></p>
<p><a  href="http://www.sitepoint.com/blogs/2009/04/14/how-to-estimate-time-for-a-project/" target="_blank">how to estimate time for a project</a></p>
<p><a  href="http://www.nathanrice.net/blog/an-introduction-to-wordpress-action-hooks/" target="_blank">an introduction to WordPress action hooks</a></p>
<p><a  href="http://webdesignledger.com/resources/14-jquery-plugins-for-enhanced-content-viewing" target="_blank">14 jQuery plugins for enhanced content viewing</a></p>
<p><a  href="http://www.tripwiremagazine.com/tutorials/tutorials/jquery-and-general-javascript-tips-to-improve-your-code.html" target="_blank">jQuery and general Javascript tips to improve your code</a></p>
<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2009/10/25/notable-tech-posts-2009-10-25/' addthis:title='Notable Tech Posts &#8211; 2009.10.25 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://lewayotte.com/2009/10/25/notable-tech-posts-2009-10-25/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notable Tech Posts &#8211; 2009.09.13</title>
		<link>http://lewayotte.com/2009/09/13/notable-tech-posts-2009-09-13/</link>
		<comments>http://lewayotte.com/2009/09/13/notable-tech-posts-2009-09-13/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 16:00:20 +0000</pubDate>
		<dc:creator>Lew</dc:creator>
				<category><![CDATA[Mind]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[illustrator]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lewayotte.com/?p=1134</guid>
		<description><![CDATA[15 great jquery plugins for better table manipulation 27 useful logo design tutorials and tips 22 very useful adobe illustrator tutorials 10 incredible jquery navigation menus speed up sites with htaccess caching 50 useful resources for web designers and developers 11 classic css techniques made simple with css3 20 fresh jquery plugins to enhance your [...]<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2009/09/13/notable-tech-posts-2009-09-13/' addthis:title='Notable Tech Posts &#8211; 2009.09.13 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.webdesignbooth.com/15-great-jquery-plugins-for-better-table-manipulation/" target="_blank">15 great jquery plugins for better table manipulation</a></p>
<p><a  href="http://webdesignledger.com/tutorials/27-useful-logo-design-tutorials-and-tips" target="_blank">27 useful logo design tutorials and tips</a></p>
<p><a  href="http://webdesignledger.com/tutorials/22-very-useful-adobe-illustrator-tutorials" target="_blank">22 very useful adobe illustrator tutorials</a></p>
<p><a  href="http://www.catswhocode.com/blog/10-incredible-jquery-navigation-menus" target="_blank">10 incredible jquery navigation menus</a></p>
<p><a  href="http://www.askapache.com/htaccess/speed-up-sites-with-htaccess-caching.html" target="_blank">speed up sites with htaccess caching</a></p>
<p><a  href="http://www.admixweb.com/2009/09/08/50-useful-resources-for-web-designers-and-developers/" target="_blank">50 useful resources for web designers and developers</a></p>
<p><a  href="http://net.tutsplus.com/tutorials/html-css-techniques/11-classic-css-techniques-made-simple-with-css3/" target="_blank">11 classic css techniques made simple with css3</a></p>
<p><a  href="http://sixrevisions.com/javascript/20-fresh-jquery-plugins-to-enhance-your-user-interface/" target="_blank">20 fresh jquery plugins to enhance your user interface</a></p>
<p><a  href="http://www.webdesignbooth.com/wordpress-anti-spam-12-great-wordpress-plugins-to-help-you-fight-spam/" target="_blank">wordpress anti spam 12 great wordpress plugins to help you fight spam</a></p>
<p><a  href="http://www.tripwiremagazine.com/tools/ajax-techniques/50-jquery-plugins-for-form-enhancements.html" target="_blank">50 jquery plugins for form enhancements</a></p>
<p><a  href="http://www.buildingwebapps.com/learningrails" target="_blank">Learning Rails</a></p>
<p><a  href="http://www.webhostingsearch.com/10-css-lifesavers-for-efficient-web-design.php" target="_blank">10 css lifesavers for efficient web design</a></p>
<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://lewayotte.com/2009/09/13/notable-tech-posts-2009-09-13/' addthis:title='Notable Tech Posts &#8211; 2009.09.13 ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://lewayotte.com/2009/09/13/notable-tech-posts-2009-09-13/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

