<?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>Chris Jean&#039;s Blog &#187; Development</title>
	<atom:link href="http://chrisjean.com/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://chrisjean.com</link>
	<description>Linux, WordPress, programming, anime, and other stuff</description>
	<lastBuildDate>Mon, 30 Aug 2010 16:30:25 +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>Updating Multiple Git Repositories Easily Using Bash for Loop</title>
		<link>http://chrisjean.com/2009/09/15/updating-multiple-git-repositories-easily-using-bash-for-loop/</link>
		<comments>http://chrisjean.com/2009/09/15/updating-multiple-git-repositories-easily-using-bash-for-loop/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 16:42:14 +0000</pubDate>
		<dc:creator>gaarai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips 'n Tricks]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Mastering The Command Line]]></category>

		<guid isPermaLink="false">http://gaarai.com/?p=1508</guid>
		<description><![CDATA[All of the WordPress themes that I work on for iThemes are managed as Git repositories. Recently, we moved past the 100 repositories mark. That&#8217;s a lot of repositories to manage, and unfortunately, too many of those repositories contain duplicated information. Later on, I might delve into how we use Git to manage our theme [...]]]></description>
			<content:encoded><![CDATA[<!-- filtered -->
<p>All of the <a href="http://wordpress.org/" target="_blank">WordPress</a> themes that I work on for <a href="http://ithemes.com/" target="_blank">iThemes</a> are managed as Git repositories. Recently, we moved past the 100 repositories mark. That&#8217;s a lot of repositories to manage, and unfortunately, too many of those repositories contain duplicated information.</p>
<p>Later on, I might delve into how we use Git to manage our theme repos. For today, however, I&#8217;d like to focus on how I quickly and easily pushed up changes to more than a dozen repos in a single, albeit long, Bash command.</p>
<p>I had finished making updates to 16 <a href="http://ithemes.com/purchase/flexx-theme-wordpress-blog-themes/" target="_blank">Flexx</a> repos, and I needed to push all of those changes up. Since I had multiple working repos in that folder, I was lucky that each of these repos began with the text &#8220;Flexx&#8221;. Also, since they are all part of the same series and need to keep the same version number, that simplified the tagging as all could be tagged as 2.5.0.</p>
<p>Given this information, I simply ran the following command from the directory that contained all the repository directories:</p>
<div class="code">for i in `ls|grep Flexx`; do echo &#8220;&#8212; Pushing $i&#8221;; cd $i; git commit -am &#8217;2.5.0&#8242; &amp;&amp; git push &amp;&amp; git tag 2.5.0 &amp;&amp; git push &#8211;tags; cd ..; echo &#8220;&#8212; Finished $i&#8221;; done</div>
<p>There&#8217;s a lot going on here, so I&#8217;ll break it up and explain what I&#8217;m doing.</p>

<div class="code">for i in `ls|grep Flexx`</div>
<p>This is basically a compound command. Bash&#8217;s <code>for</code> command is being used to step through the results of <code>ls|grep Flexx</code>. Each result will be stored to the variable <code>i</code> which can be referred to with <code>$i</code>.</p>
<p>In other words, I&#8217;m going to loop through each directory that contains the text &#8220;Flexx&#8221; (technically, it isn&#8217;t limited to just directories, but I don&#8217;t have any files containing &#8220;Flexx&#8221;, so I&#8217;m safe). For each iteration of the loop, the variable <code>$i</code> will contain the name of the folder I&#8217;m interested in.</p>
<div class="code">do echo &#8220;&#8212; Pushing $i&#8221;</div>
<p>The most important bit here is <code>do</code>. <code>do</code> simply begins the functional part of the loop and could be followed by any command that I wanted to start the loop with.</p>
<p>The <code>echo</code> command isn&#8217;t technically necessary. I simply have it there so that I can better determine what output belongs to which repository.</p>
<div class="code">cd $i</div>
<p>This is a very important command. It changes the directory to the repository I wish to run commands on.</p>
<div class="code">git commit -am &#8217;2.5.0&#8242; &amp;&amp; git push &amp;&amp; git tag 2.5.0 &amp;&amp; git push &#8211;tags</div>
<p>This is the command that actually does what I want to do in each repo directory. This adds all the modified files, commits them with a message of &#8220;2.5.0&#8243;, pushes the changes to the remote repository, creates a new tag of 2.5.0, and pushes up the new tag.</p>
<p>I have all of these commands chained together with <code>&amp;&amp;</code> so that if one command fails, the other ones won&#8217;t run. This prevents tagging in the event that the repository couldn&#8217;t be committed or pushed.</p>
<div class="code">cd ..</div>
<p>It&#8217;s a small command but necessary. This switches back to the main directory that holds all the repos, thus returning us back to a state that the next loop iteration can work with.</p>
<div class="code">echo &#8220;&#8212; Finished $i&#8221;</div>
<p>As with the other <code>echo</code> command, this simply allows me to keep track of what is going on more easily.</p>
<div class="code">done</div>
<p>The <code>done</code> command finishes out the loop iteration.</p>
<p>I hope that by sharing this you can gain a bit of insight into how I work with repositories while also learning more about how you can do things with Bash.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrisjean.com/2009/09/15/updating-multiple-git-repositories-easily-using-bash-for-loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Still Don&#8217;t Like Fancy Programming Editors</title>
		<link>http://chrisjean.com/2008/10/27/i-still-dont-like-fancy-programming-editors/</link>
		<comments>http://chrisjean.com/2008/10/27/i-still-dont-like-fancy-programming-editors/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 22:49:10 +0000</pubDate>
		<dc:creator>gaarai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Random Ramblings]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://gaarai.com/?p=417</guid>
		<description><![CDATA[For about eight years now, I&#8217;ve been hapily using Crimson Editor. At its simplest, Crimson Editor is nothing more than a fancy Notepad; however, it is so much more than that. While it doesn&#8217;t have all sorts of fancy tools that some editors have, it does support customizable syntax highlighting, customizable colors, line number, visible [...]]]></description>
			<content:encoded><![CDATA[<!-- filtered -->
<p>For about eight years now, I&#8217;ve been hapily using <a href="http://crimsoneditor.com/" target="_blank">Crimson Editor</a>. At its simplest, Crimson Editor is nothing more than a fancy <a href="http://en.wikipedia.org/wiki/Notepad" target="_blank">Notepad</a>; however, it is so much more than that. While it doesn&#8217;t have all sorts of fancy tools that some editors have, it does support customizable syntax highlighting, customizable colors, line number, visible whitespace characters, basic smart indenting, a file/directory navigation pane, project support, and a MDI interface. Those features aren&#8217;t really the reason why I use it as almost all programming editors support such features. I use it because it gives me tools that help me program without doing things that hinder my productivity.</p>

<p>Two relatively-small features that most people would miss but make working with Crimson Editor a pleasure are as follows:</p>
<ul>
<li><strong>Built-in macro ability with quick access keys</strong> &#8211; I have a number of pre-defined macros that do all sorts of tasks that I find take too much time without. For example, I have macros that duplicate the line that I&#8217;m currenlty on, replace all the white-space characters at the front of the line with a single tab (this makes reformatting files with spaces for tabs much quicker), comment out or remove he comment from the current line, and so on.The addition of a quick-record button makes doing a number of repeat tasks extremely easy. I once had to remove every third line from a document that was 500 lines long. It would take too long to do it line-by-line and wasn&#8217;t worth the time required to crank out a script to do it for me. Using the quick macro ability, I created a macro and had all those lines removed in less than a minute.</li>
<li><strong>Regular expressions in search and replace</strong> &#8211; A number of programming tools are starting to add support for this, but Crimson Editor was one of the first ones that I encountered with this ability. Even many of the newer editors that I have tried fail at reproducing the ease that Crimson Editor has when it comes to this extremely helpful ability. You can even perform the replace command on all the currently open files at the same time.</li>
<li><strong>Remembers what I was doing last time I had the editor open</strong> &#8211; This is a slick feature that some of the newer editors are starting to pick up on. When I&#8217;m done for the day, I close everything out. When I come in the next day and open up Crimson Editor, it opens up all the files that I had open last time. Heck, it even puts the cursor where it was in all the files that I had opened previously.</li>
</ul>
<p>I think that editors these days try too hard. Rather than providing extremely robust syntax highlighting and a slick/customizable editor, they build in all these tools that are supposed to make my life easier. Unfortunately, most of these tools are touted as the &#8220;features&#8221; of the editor and cannot be disabled. Even more upsetting is that many of these tools actually decrease my productivity.</p>
<p>There are a number of trends in the current generation of editors that are coming these days that I really don&#8217;t like. Once again, it&#8217;s not that I think everything should be changed to accommodate me, I just think that the developers of these editors need to understand that not everyone wants feature X thus features that affect how editing works should be have the option of being disabled/enabled. I&#8217;ll pick on <a href="http://www.e-texteditor.com/" target="_blank">E-Text Editor</a> as it is so close to being great, but it has some of these failings as listed below:</p>
<ul>
<li><strong>Constantly adding characters that I didn&#8217;t type</strong> &#8211; This is a major point of frustration for me. So many of the modern editors that I have tried out want to &#8220;help&#8221; me write my programs. In their attempt to do so, they make mistakes and introduce syntax errors into my code. Those mistakes go by unnoticed by me as I can type out most of my code without looking and often am not looking since I&#8217;m looking at a terminal window, database output, or other information source while programming.For those who don&#8217;t know what I&#8217;m talking about, take <a href="http://www.e-texteditor.com/" target="_blank">E-Text Editor</a> as a good example of this behavior. Whenever I create an open parenthesis, it automatically creates a closed parenthesis. This seems like a nice way to prevent from forgetting a close parenthesis, but what if you are putting together something that requires an open parenthesis but not a close (such as regular expressions or adding new conditional checks inside an existing conditional)? Suddenly you have new characters that you may forget were created peppered around in your code that will create syntax errors. Frankly, I produce fewer syntax errors because of forgetting to close a paren than I did because of unnecessary close parens added by my editor while using E.</li>
<li><strong>Smart tabs that get too smart for their own good</strong> &#8211; I enjoy smart tabs. I like automatically having my next line indented after adding an open curly brace. I don&#8217;t like it when my editor continuously tries to force what it believes to be proper tabbing after I finish typing out a line. If I want to break out of the standard tab flow for whatever reason, that is my business. E-Text Editor, like so many modern text editors, refuses to allow me to do this. I say refuse, but it&#8217;s not always a 100% thing, which drives me nuts more than anything. Every so often, if I start a new line outside the common tab flow in E-Text Editor, when I hit enter, the previous line gets auto-tabbed and my new line is tabbed to match. No! I do not want that line there. If I go back and correct the auto-correction, as soon as I arrow out of the line, E moves it right back to where it was before. If I explicitly go outside of the &#8220;smart&#8221; tabbing, my editor should no longer try to force its rules on me.</li>
<li><strong>Ability to remember some things but not others</strong> &#8211; As mentioned before, I love how Crimson Editor remembers to open up all the files as I had them last time it was run. E-Text Editor, as well as many other newer editors, also have this feature. However, I feel that they aren&#8217;t doing enough. E-Text Editor implements code-folding, which is a very nice tool BTW. However, if you have lots of files open with many areas of code folded and you close the editor, when E reopens, all the files won&#8217;t be as you had left them; rather, they all open up but all the code folding is now gone. Not restoring the code folding state seems to be a major oversight to me as I want to come back to not just the same files I had yesterday but to the exact same state that my editor was in when I closed it. I really don&#8217;t want to spend the first part of my day refolding all my files so that I can get back to work.</li>
</ul>
<p>I suppose to some, these are not earth-shattering problems. I thought I could deal with them too and used E-Text Editor for the full 30 days of the trial. I fully expected to have my programming worldview changed and to fall in love with E. Instead, I was just as frustrated by the problems as I was on day one. I never got passed how I felt like some parts of E were just as annoying as <a href="http://en.wikipedia.org/wiki/Microsoft_Office_Word" target="_blank">Microsoft Word</a> when it autocorrects things. At least in Word, you could disable autocorrect. I wouldn&#8217;t be surprised if someone tells me to just turn off smart tabs in E. It&#8217;s not that I don&#8217;t like the smart tabs, it&#8217;s that I don&#8217;t like how E&#8217;s implementation of smart tabs doesn&#8217;t let me modify the text as I want it. I want it to auto-tab as I type but not enforce its will when I&#8217;m manually formating.</p>
<p>I suppose the crux of the problem I have with E, and most other next-gen editors, is that the features that are supposed to make me feel powerful and productive all too often times make me feel controlled and frustrated. Who knows&#8230; E is still new. I very well may be a convert if it becomes a bit more flexable.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrisjean.com/2008/10/27/i-still-dont-like-fancy-programming-editors/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tool to Optimize MySQL Configuration and Performance</title>
		<link>http://chrisjean.com/2008/10/23/optimize-mysql-configuration-and-performance/</link>
		<comments>http://chrisjean.com/2008/10/23/optimize-mysql-configuration-and-performance/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 16:21:03 +0000</pubDate>
		<dc:creator>gaarai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips 'n Tricks]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://gaarai.com/?p=367</guid>
		<description><![CDATA[Web applications developers such as myself often have a hard time keeping up with everything that&#8217;s going on. There&#8217;s always some new programming or scripting language, new standards, new browsers, new technologies, new paradigms, new social networks, and on and on. Every day, something new happens. The end result of all of this always ends [...]]]></description>
			<content:encoded><![CDATA[<!-- filtered -->
<p>Web applications developers such as myself often have a hard time keeping up with everything that&#8217;s going on. There&#8217;s always some new programming or scripting language, new standards, new browsers, new technologies, new paradigms, new social networks, and on and on. Every day, something new happens. The end result of all of this always ends up being very similar: people demand faster applications that deal with ever-increasing amounts of data which end up putting massive stress on the server architecture.</p>
<p>As we toil to improve the performance of the applications and their snappy response times, it becomes easy to forget about how we can tweak settings on a low level to provide massive speed improvements on the front-end. For example, most people don&#8217;t know that you can configure MySQL to take better advantage of the resources that the server has available.</p>
<p>By default, MySQL is configured to consume a relatively limited amount of memory resources. Start giving MySQL more memory to work with, and your application&#8217;s performance can improve greatly.</p>

<p>Unfortunately, I&#8217;m not a MySQL configuration guru. I&#8217;ve never read through the source code or any low-level technical documents about how it functions. So most of the configurations options are a complete mystery to me, and I don&#8217;t know if changing a specific option could benefit me at all.</p>
<p>Fortunately, I don&#8217;t have to be a MySQL configuration guru to get better performance. There is an amazing tool created by Matthew Montgomery called the <a href="http://day32.com/MySQL/" target="_blank">MySQL performance tuning primer script</a>.</p>
<p>Matthew Montgomery&#8217;s script does an amazing job of giving me information about how my MySQL configuration may be inappropriate for the queries being executed and provides information about what variables to modify in order to better optimize my configuration. For example, the &#8220;TEMP TABLES&#8221; section of the output tells me the following:</p>
<pre style="padding-left: 30px;">TEMP TABLES
Current max_heap_table_size = 512 M
Current tmp_table_size = 512 M
Of 1684 temp tables, 10% were created on disk
Effective in-memory tmp_table_size is limited to max_heap_table_size.
Created disk tmp tables ratio seems fine</pre>
<p>Previously, I had my <code>max_heap_table_size</code> and <code>tmp_table_size</code> variables set to default settings and had up to 60% of my temp tables created on disk. As much as possible, temp tables should be created in memory to reduce the performance penalty of using the disk for random access to such data rather than memory which is much faster.</p>
<p>Now this doesn&#8217;t mean that you should set your variables to the same settings as I have. The server that this is running on is dedicated to running a dispatching system that has many tables containing hundreds of thousands of rows each. The value of the script is that it will help you tailor your settings to best use your hardware without having MySQL consume too many resources that other processes (such as you web server) could use.</p>
<p>The script is provided as a standard Linux shell script. <a href="http://day32.com/MySQL/tuning-primer.sh" target="_blank">Download the script</a> into a folder of your choosing and run &#8220;<code>sh tuning-primer.sh</code>&#8220;.</p>
<p>Good luck with your MySQL optimization. I hope that you get as great of results as I have. Keep in mind that if your table structures and queries are inefficient to begin with, that configuration optimization can only do so much to improve the performance.</p>
<h2>Further Reading</h2>
<ul>
<li><a href="http://www.ibm.com/developerworks/library/l-tune-lamp-3.html" target="_blank">Tuning LAMP systems, Part 3: Tuning your MySQL server</a><br />
This is a great read that should help most novice database administrators understand some of the basics about tuning their database&#8217;s performance.</li>
<li><a href="http://www.mysqlperformanceblog.com/" target="_blank">MySQL Performance Blog</a><br />
A blog by the authors of <a href="http://oreilly.com/catalog/9780596101718/" target="_blank">High Performance MySQL</a> (also highly recommended). This blog is updated frequently with great tips that will help you develop higher-performance apps.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://chrisjean.com/2008/10/23/optimize-mysql-configuration-and-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Empty uploaded files with Perl</title>
		<link>http://chrisjean.com/2008/07/30/empty-uploaded-files-with-perl/</link>
		<comments>http://chrisjean.com/2008/07/30/empty-uploaded-files-with-perl/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 16:28:46 +0000</pubDate>
		<dc:creator>gaarai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[empty upload]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://gaarai.com/?p=223</guid>
		<description><![CDATA[I work for a company that has a proprietary CMS software package written in Perl. We have a number of servers that run this code, and everything has been fine for a number of years and many different versions and customizations.  A few months back, something changed. One of our servers started producing completely empty [...]]]></description>
			<content:encoded><![CDATA[<!-- filtered -->
<p>I work for a company that has a proprietary CMS software package written in Perl. We have a number of servers that run this code, and everything has been fine for a number of years and many different versions and customizations.  A few months back, something changed. One of our servers started producing completely empty files for all uploads. This affected all of our code, all of our versions, and every site.</p>
<p>After some time debugging and testing, I finally found the problem. Apparently some code was updated, either Perl itself or one of its packages, and that caused my CGI object to be recylced before the upload code ran. When the CGI object gets recylced, all the file handles are closed resulting in reading and saving an empty file.</p>
<p>The solution was deceptively simple. All I had to do was store the CGI object in a persistent variable that has scope throughout the end of the program execution.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrisjean.com/2008/07/30/empty-uploaded-files-with-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing WP Easy Uploader</title>
		<link>http://chrisjean.com/2008/06/28/introducing-wp-easy-uploader/</link>
		<comments>http://chrisjean.com/2008/06/28/introducing-wp-easy-uploader/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 05:08:44 +0000</pubDate>
		<dc:creator>gaarai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.realthemes.com/?p=59</guid>
		<description><![CDATA[This time I have a plugin for the masses. WP Easy Uploader will make any WordPress user&#8217;s life easier. No longer will you have to rely on FTP to upload new plugins, themes, or random files. Now you can take care of those tasks quickly and easily from the admin screen of WordPress. For full [...]]]></description>
			<content:encoded><![CDATA[<!-- filtered -->
<p>This time I have a plugin for the masses. WP Easy Uploader will make any WordPress user&#8217;s life easier. No longer will you have to rely on FTP to upload new plugins, themes, or random files. Now you can take care of those tasks quickly and easily from the admin screen of WordPress.</p>
<p>For full details, check out <a href="http://chrisjean.com/wp-easy-uploader/" target="_self">WP Easy Uploader&#8217;s release page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrisjean.com/2008/06/28/introducing-wp-easy-uploader/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>WordPress.org&#8217;s Plugin Directory Needs Some Changes</title>
		<link>http://chrisjean.com/2008/06/27/wordpressorgs-plugin-directory-needs-some-changes/</link>
		<comments>http://chrisjean.com/2008/06/27/wordpressorgs-plugin-directory-needs-some-changes/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 20:53:45 +0000</pubDate>
		<dc:creator>gaarai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://gaarai.com/?p=131</guid>
		<description><![CDATA[Starting a little over a month ago, I started submitting plugins to WordPress.org&#8217;s Plugin Directory. Overall, the system is great for developers since it offers Subversion and enables the automatic plugin upgrades that the latest WordPress versions support. However, it has some major problems that causes developers like me some headaches. The instructions on how [...]]]></description>
			<content:encoded><![CDATA[<!-- filtered -->
<p>Starting a little over a month ago, I started submitting plugins to <a href="http://wordpress.org/extend/plugins/" target="_blank">WordPress.org&#8217;s Plugin Directory</a>. Overall, the system is great for developers since it offers Subversion and enables the automatic plugin upgrades that the latest WordPress versions support. However, it has some major problems that causes developers like me some headaches.</p>

<p>The instructions on how the request for adding new plugins works has the following information:</p>
<ol>
<li>Sign up.</li>
<li>Within some vaguely defined amount of time, some one will approve your request.</li>
<li>You&#8217;ll then have access to a Subversion Repository where you&#8217;ll store your plugin.</li>
<li>Once you put your plugin (and a readme file!) in that repository, it will shortly be automatically entered into the plugins browser.</li>
</ol>
<p>The &#8220;vaguely defined amount of time&#8221; isn&#8217;t defined at all. I&#8217;m sure that there are some people that handle new plugin approvals on their spare time and set up the subversion for the new projects, so I understand how there can&#8217;t be definitive times for new plugin approvals. However, I think the language here needs to clarify the details of how the approval process works and what type of feedback will be sent when the approval process is complete.</p>
<p>I was pulling out my hair when trying to submit my first plugin. I put in the request and then checked back a few hours later, nothing had changed. I checked a day later, not approved. Finally, after three days, the site said that my plugin was approved. I eagerly dug into the documentation on how to add the plugin to Subversion and started the submission process. When it came time to check in the repository (this is how you submit your new version), I received the following message:</p>
<p style="padding-left: 30px;">Error: Commit failed (details follow):<br />
Error: CHECKOUT of &#8216;/!svn/ver/52171/current-date-time-widget/trunk&#8217;: 403 Forbidden (http://svn.wp-plugins.org)</p>
<p>Forbidden? There must be an easy fix for this problem. I started searching around Forums, and found a large number of people were having the <a href="http://wordpress.org/support/topic/137365" target="_blank">same problem</a>. No one had any help for these people and there weren&#8217;t any official responses. Everyone just guessed that some random accounts just aren&#8217;t set up correctly and that there isn&#8217;t any way to fix it or to get help. After making official help requests and sending an email off to Matt Mullenweg with no response to either, I figured that they were probably right.</p>
<p>A few days after seeing that my submission request had been approved, I received an email telling me that my request was approved and that my Subversion would be ready in about an hour. I was extremely happy to get this email but was also very confused. If I had known that I just had to wait for an email, I would have just waited patiently. Instead, I wasted hours of time searching the forum, requesting official help, and doing some trial-and-error testing.</p>
<p>So what do I want to do about this? I&#8217;d like for the documentation to be improved. Sure, it&#8217;s kind of cute, but it doesn&#8217;t help a developer know what to do when they run into the problem I did. The documentation should read:</p>
<ol>
<li>Sign up.</li>
<li>Approval of your request can take anywhere from a few hours to more than a week.</li>
<li>When your request is approved, you will be sent an email notifying you of the request approval with instructions for submitting your plugin to the <a href="http://wordpress.org/extend/plugins/about/svn/" target="_blank">Subversion Repository</a>.</li>
<li>Once you put your plugin (and a <a href="http://wordpress.org/extend/plugins/about/#readme" target="_blank">readme file</a>!) in that repository, it will shortly be automatically entered into the <a href="http://wordpress.org/extend/plugins/" target="_blank">plugins browser</a>.</li>
</ol>
<p>The change is simple, but it would prevent a lot of frustration that may cause promising developers to ignore the repository due to their frustration.</p>
<p>Just last night, I found a new irritation with the plugin submission system. Since approval takes so long, I thought I&#8217;d go ahead and put in requests for some plugins that I&#8217;m working on so that when they are ready to be released, their spot is ready and waiting. I released the <a href="http://wordpress.org/extend/plugins/wp-developer-assistant/" target="_blank">WP Developer Assistant</a> late last night and was dismayed to see that my plugin wasn&#8217;t listed on the <a href="http://wordpress.org/extend/plugins/browse/new/" target="_blank">new plugins page</a>. I went to bed thinking that I would see my plugin listed there today. For those that don&#8217;t know, getting a plugin listed on that page is crucial since you get a lot of exposure and can build an initial user base quickly. To my disappointment, I didn&#8217;t find the plugin on the new page today either. After a &#8220;what if&#8221; thought, I went back a couple pages and found my plugin listed on the third page. Apparently, the plugins are ordered in that list based upon when the plugin request was approved, not when the first version is loaded.</p>
<p>Due to my desire to release the plugin as soon as it was ready rather than waiting for request approval before I can release, my plugin has lost it&#8217;s best chance to get good initial exposure. I&#8217;m not sure how the back-end of the system is structured, but it would make sense to me that plugins should be listed in order of their initial version release rather than by their approval date.</p>
<p>Please don&#8217;t misunderstand me, I love the system. I just think that it has some issues that could be simple to fix and would improve the experience greatly. I&#8217;m still sad that my plugin that I&#8217;m really excited about didn&#8217;t get a chance to sit on the front page for a few days. Oh well, maybe next time.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrisjean.com/2008/06/27/wordpressorgs-plugin-directory-needs-some-changes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Introducing WP Developer Assistant</title>
		<link>http://chrisjean.com/2008/06/27/introducing-wp-developer-assistant/</link>
		<comments>http://chrisjean.com/2008/06/27/introducing-wp-developer-assistant/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 05:07:25 +0000</pubDate>
		<dc:creator>gaarai</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.realthemes.com/?p=55</guid>
		<description><![CDATA[Time to release another public plugin into the wild. This plugin is a bit different in that it has nothing to do with how your site looks or operates. As a matter of fact, no one will even know that you have it, but you can rest well knowing that it is just a click [...]]]></description>
			<content:encoded><![CDATA[<!-- filtered -->
<p>Time to release another public plugin into the wild. This plugin is a bit different in that it has nothing to do with how your site looks or operates. As a matter of fact, no one will even know that you have it, but you can rest well knowing that it is just a click away in the admin menu. For you see, <a href="http://chrisjean.com/wp-developer-assistant/" target="_self">WP Developer Assistant</a> is a plugin for developers.</p>
<p>Now some of you may wonder what a developer needs a plugin for. Well, there are lots of reasons. The main one being that it would be a lot nicer if WordPress had a few extra tools that would make a developer&#8217;s life a lot easier. For example, being able to run any needed query from inside WordPress, being able to show PHP errors without turning them on for everyone, or uploading files and extracting archives anywhere in the site would be great tools to have, but WordPress doesn&#8217;t have anything like that&#8230; Until now!</p>
<p>If you are a WordPress developer, you need this plugin. You can find the full details on the <a href="http://chrisjean.com/wp-developer-assistant/" target="_self">WP Developer Assistant page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrisjean.com/2008/06/27/introducing-wp-developer-assistant/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
