<?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>jonathan stegall: creative tension &#187; programming</title>
	<atom:link href="http://jonathanstegall.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonathanstegall.com</link>
	<description>culture, design, spirituality</description>
	<lastBuildDate>Sat, 04 Sep 2010 23:01:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Default .htaccess file for all sites</title>
		<link>http://jonathanstegall.com/2009/11/04/default-htaccess-file-for-all-sites/</link>
		<comments>http://jonathanstegall.com/2009/11/04/default-htaccess-file-for-all-sites/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 00:00:45 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[htaccess]]></category>

		<guid isPermaLink="false">http://jonathanstegall.com/?p=2195</guid>
		<description><![CDATA[Most of the sites I work with on a daily basis run on Linux servers, and run under the Apache web server. This gives me all the benefits and stresses of using <code>.htaccess</code> files to control things, from rewrite URLs to various security and performance aspects of sites. If you run any such sites and are unfamiliar with <code>.htaccess</code>, especially WordPress sites, I hope you'll find this helpful.

If you follow my <a href="/daily-links/">daily links</a>, from time to time I link to various articles and blog posts that share amazing Apache techniques. The most common place that I find well-written articles on these subjects that I can actually understand and implement is <a href="http://perishablepress.com/">Perishable Press</a>, and I can't recommend it enough if you need such knowledge.]]></description>
			<content:encoded><![CDATA[<p>Most of the sites I work with on a daily basis run on Linux servers, and run under the Apache web server. This gives me all the benefits and stresses of using <code>.htaccess</code> files to control things, from rewrite URLs to various security and performance aspects of sites. If you run any such sites and are unfamiliar with <code>.htaccess</code>, especially WordPress sites, I hope you&#8217;ll find this helpful.</p>
<p>If you follow my <a href="/daily-links/">daily links</a>, from time to time I link to various articles and blog posts that share amazing Apache techniques. The most common place that I find well-written articles on these subjects that I can actually understand and implement is <a href="http://perishablepress.com/">Perishable Press</a>, and I can&#8217;t recommend it enough if you need such knowledge.</p>
<p>At the moment, though, I want to share one simple technique that is too commonly forgotten &#8211; a default, basic <code>.htaccess</code> file to start off every website. It can and should be expanded for each website&#8217;s needs, but it ensures that really wonderful things are present from the start. Here is mine, as it currently stands, and I&#8217;ll comment on each section (defined as a <code># comment</code> in the example) following the example:</p>
<ol class="code">
<li class="comment"># basic compression</li>
<li><code>&lt;IfModule mod_gzip.c&gt;</code></li>
<li class="tab1"><code>mod_gzip_on       Yes</code></li>
<li class="tab1"><code>mod_gzip_dechunk  Yes</code></li>
<li class="tab1"><code>mod_gzip_item_include file      \.(html?|txt|css|js)$</code></li>
<li class="tab1"><code>mod_gzip_item_include mime      ^text/.*</code></li>
<li class="tab1"><code>mod_gzip_item_include mime      ^application/x-javascript.*</code></li>
<li class="tab1"><code>mod_gzip_item_exclude mime      ^image/.*</code></li>
<li class="tab1"><code>mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*</code></li>
<li><code>&lt;/IfModule&gt;</code></li>
<li class="comment"># Protect files and directories</li>
<li><code>&lt;FilesMatch "(\.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?
|xtmpl)|code-style\.pl|Entries.*|Repository|Root|Tag|Template)$"&gt;</code></li>
<li class="tab1"><code>Order allow,deny</code></li>
<li><code>&lt;/FilesMatch&gt;</code></li>
<li class="comment"># Don&#8217;t show directory listings</li>
<li><code>Options -Indexes</code></li>
<li class="comment"># Basic rewrite rules, stop unneeded PERL bot, block subversion directories</li>
<li><code>&lt;IfModule mod_rewrite.c&gt;</code></li>
<li class="tab1"><code>RewriteEngine On</code></li>
<li class="tab1"><code>RewriteRule ^(.*/)?\.svn/ - [F,L]</code></li>
<li class="tab1"><code>ErrorDocument 403 "Access Forbidden"</code></li>
<li class="tab1"><code>RewriteCond %{HTTP_USER_AGENT} libwww-perl.*</code></li>
<li class="tab1"><code>RewriteRule .* – [F,L]</code></li>
<li><code>&lt;/IfModule&gt;</code></li>
</ol>
<h2>Basic compression</h2>
<p>The code in this section asks Apache to compress all CSS, JavaScript, HTML, and txt files, while not compressing images (to preserve their quality). This can greatly reduce the time it takes to load these kind of files, especially for libraries like <a href="http://jquery.com/">jQuery</a>. In this case, it is done with the <code>mod_gzip</code> module, which usually is installed in Apache.</p>
<p>Now, it is important to note that in some cases, the <code>gzip</code> module is either not installed, or is not as effective as the <code>mod_deflate</code> module. I learned from a server admin friend that <code>mod_gzip</code> can compress better, while <code>mod_deflate</code> runs faster overall. So in cases where CPU cycles are more of a concern for you individually, or your host, you can use <code>mod_deflate</code> in place of this section like this:</p>
<ol class="code">
<li><code>&lt;FilesMatch "\\.(js|css|html|htm|php|xml)$"&gt;</code></li>
<li class="tab1"><code>SetOutputFilter DEFLATE</code></li>
<li><code>&lt;/FilesMatch&gt;</code></li>
</ol>
<h2>Protect files and directories</h2>
<p>This simply looks at some common file and directory types that should not be viewed by users. Install directories, include directories, files that would contain sensitive code, etc. You can certainly customize the list, but it is good to have this as a basic defense.</p>
<h2>Don&#8217;t show directory listings</h2>
<p>All this one does is keep directories that don&#8217;t have a default index page (index.php, index.html, etc.) from listing their contents. It isn&#8217;t always a problem for directories to list their contents, but it is never a problem to hide them, either. If you want to list files, do it yourself so you can choose what gets listed.</p>
<h2>Basic rewrite rules, stop unneeded PERL bot, block subversion directories</h2>
<p>Most Apache installations have the <code>mod_rewrite</code> module, which is invaluable for friendly URLs, changed URLs, and any number of other things. In this case, we are just detecting whether it is present. If it is, we are sending away the <code>libwww-perl</code> bot (from <a href="http://ocaoimh.ie/keep-the-libwww-perl-bad-guys-out/">this article</a>), and we are also keeping users from viewing any <code>.svn</code> directories. These are created by <a href="http://en.wikipedia.org/wiki/Subversion_%28software%29">Subversion</a>, which is a wonderful thing that is beyond the scope of this post. If you have these directories, you should never upload them, but should instead export repositories. But regardless, accidents happen and sometimes these directories can end up on servers. If they do, they shouldn&#8217;t be publicly accessible.</p>
<h2>Something extra for WordPress users</h2>
<p>If you are a WordPress user, you have a <code>wp-config.php</code> file that contains database information. Potential attackers know this, and it is always a good idea to keep them out of this file. If you use another CMS, find out what file(s) correspond to this one, and change it accordingly. It&#8217;s a simple command that prevents users from directly visiting this file, while still allowing the web server itself to access the configuration information it contains.</p>
<ol class="code">
<li class="comment"># block config file for the CMS, if any</li>
<li><code>&lt;files wp-config.php&gt;</code></li>
<li class="tab1"><code>order allow,deny</code></li>
<li class="tab1"><code>deny from all</code></li>
<li><code>&lt;/files&gt;</code></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://jonathanstegall.com/2009/11/04/default-htaccess-file-for-all-sites/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Beginning Android development</title>
		<link>http://jonathanstegall.com/2009/10/27/beginning-android-development/</link>
		<comments>http://jonathanstegall.com/2009/10/27/beginning-android-development/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 22:00:12 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://jonathanstegall.com/?p=2117</guid>
		<description><![CDATA[Recently, I have started to work with <a href="http://www.android.com/">Android</a>, Google's system for smartphones. This is mostly a work-related endeavor, though I am incredibly curious. I've wanted an iPhone since they came out, but have a Verizon contract and many friends and family who also do. I've hoped that eventually Verizon would get the iPhone, knowing that AT&#38;T's network is not a strong selling point. I don't know of any carrier other than Verizon that is likely to get it, but Verizon does have a knack for putting its foot in its mouth when it comes to the iPhone (a case in point is the commercial for the Droid).

So in light of all this, I'm interested in, though skeptical of, the <a href="http://www.verizonwireless.com/droid/">Droid</a> that is coming out soon, and hope that it will prove to be a positive impact on Verizon's so-far <del datetime="2009-10-27T13:50:17+00:00">terrible</del> <del datetime="2009-10-27T13:50:17+00:00">abysmal</del> useless lineup of attempts to compete with the iPhone. The Droid, of course, runs on Android. If Google has more control over it than Verizon, I think it can potentially provide the best competition to the iPhone that anyone has provided thus far, and this would be a good thing for everyone.]]></description>
			<content:encoded><![CDATA[<p>Recently, I have started to work with <a href="http://www.android.com/">Android</a>, Google&#8217;s system for smartphones. This is mostly a work-related endeavor, though I am incredibly curious. I&#8217;ve wanted an iPhone since they came out, but have a Verizon contract and many friends and family who also do. I&#8217;ve hoped that eventually Verizon would get the iPhone, knowing that AT&amp;T&#8217;s network is not a strong selling point. I don&#8217;t know of any carrier other than Verizon that is likely to get it, but Verizon does have a knack for putting its foot in its mouth when it comes to the iPhone (a case in point is the commercial for the Droid).</p>
<p>So in light of all this, I&#8217;m interested in, though skeptical of, the <a href="http://www.verizonwireless.com/droid/">Droid</a> that is coming out soon, and hope that it will prove to be a positive impact on Verizon&#8217;s so-far <del datetime="2009-10-27T13:50:17+00:00">terrible</del> <del datetime="2009-10-27T13:50:17+00:00">abysmal</del> useless lineup of attempts to compete with the iPhone. The Droid, of course, runs on Android. If Google has more control over it than Verizon, I think it can potentially provide the best competition to the iPhone that anyone has provided thus far, and this would be a good thing for everyone.</p>
<p>So have I begun researching and setting up to develop with Android. First problem: I don&#8217;t know any Java (though I know enough to be very angry when people confuse it with JavaScript, which I know and love). I&#8217;m a designer, and my knowledge of programming stems from a desire to solve problems and accomplish the designs I envision. So in light of this, I&#8217;m willing to spend some time with Java, as I am aware that it is a very powerful language.</p>
<h2>Beginning with Android</h2>
<p>It is with all of that context that I have set up a development environment on my Mac. Here are the steps to follow to do the same:</p>
<ol>
<li>Download the <a href="http://developer.android.com/sdk/1.6_r1/index.html">Android SDK</a>. At this time, the current version is 1.6</li>
<li>Install said SDK. On Snow Leopard, and maybe on other 64-bit operating systems, there is a necessary fix to prevent errors, <a href="http://michaelpardo.com/2009/09/ddms-for-android-sdk-1-6-on-snow-leopard/">making the swt 64-bit compatible</a>.</li>
<li>Between Linux and Mac OSX, there are different steps for configuring the <code>.bash_profile</code> configuration file. I&#8217;ll list the steps for Ubuntu (presumably other Debian systems as well) and OSX.
<ol>
<li>Ubuntu: In a Terminal, run <code>sudo gedit ~/.bash_profile</code> and add <code>export PATH=${PATH}:&lt;your_sdk_dir&gt;/tools</code> to it.</li>
<li>Mac OSX: In a Terminal, cd to <code>~/</code>, and run <code>sudo touch .bash_profile</code>, followed by <code>open -e .bash_profile</code>. Again, add <code>export PATH=${PATH}:&lt;your_sdk_dir&gt;/tools</code> to it.</li>
</ol>
</li>
<li>Install <a href="http://www.eclipse.org/downloads/">Eclipse for Java Developers</a>. I used the 64-bit Cocoa version.</li>
<li>Use <a href="http://developer.android.com/sdk/1.6_r1/installing.html">these instructions</a> to install the Android plugin for Eclipse.</li>
</ol>
<p>From this point, Android and Eclipse are installed and ready for use. Naturally, I went looking for a <a href="http://developer.android.com/guide/tutorials/hello-world.html">Hello World</a> application. This builds really easily, and gives a very small glimpse into what Android provides.</p>
<p>After this, I wanted to follow the <a href="http://developer.android.com/guide/tutorials/notepad/notepad-ex1.html">Notepad tutorial</a>. It gives a good deal more insight into Java syntax, and the kind of methods that Android employs.</p>
<p>When I tried to run this app in the emulator, though, I ran into an issue in which the app didn&#8217;t indicate that there were any errors, but also did not appear in the list of applications. Rather, the Hello World app continued to show up in the list, and would still run though I had attempted to close it inside Eclipse.</p>
<p>This may seem entirely obvious to iPhone developers, though I have a suspicion that Apple has made this happen behind the scenes, but in Android you (at least, I) have to create Android Virtual Devices to run each application. In Eclipse, these devices can be created under <em>Window > Android SDK and AVD Manager</em>, and (again, for me, running Snow Leopard) need to be started once they are created. This can be done in the same area, after creating them.</p>
<p>After doing this, the Notepad application runs in my environment, though I have to run the application, close it, and then run it again. My hope is that small roadblocks like this will be easier to overcome as the Android community grows, and my goal is to document these kind of things, and any other things that I learn, as I begin working on this platform.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanstegall.com/2009/10/27/beginning-android-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google to support microformats and RDFa</title>
		<link>http://jonathanstegall.com/2009/05/12/google-to-support-microformats-and-rdfa/</link>
		<comments>http://jonathanstegall.com/2009/05/12/google-to-support-microformats-and-rdfa/#comments</comments>
		<pubDate>Tue, 12 May 2009 21:00:51 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[rdfa]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://jonathanstegall.com/?p=1504</guid>
		<description><![CDATA[Today, we have been informed that <a href="http://radar.oreilly.com/2009/05/google-announces-support-for-m.html">Google will support microformats and RDFa</a>, which are ways to give machine-readable semantic structure, meaning, and connection to a web document. These methods are open standards, and have been used to varying degrees over the past few years. For example, iCal, Address Book, Thunderbird, and Firefox all are capable of reading microformats that are created by sites like <a href="http://www.flickr.com/">flickr</a>, <a href="http://www.last.fm/">Last.fm</a>, <a href="http://www.dopplr.com/">Dopplr</a>, and <a href="http://www.linkedin.com/">LinkedIn</a>, among others. They can read these pieces of data to understand ways that data is connected to other data, as well as what the data itself is.

In business (in the last year or so), as well as programming and design circles (ranging from the last four years to the last fifteen years), terms like "Semantic Web" have been thrown around a lot, and this is what it refers to. The ability for the Web to understand the kind of data that it contains, and make intelligent connections and decisions about that data. This has implications, of course, for any number of ways of connecting people with the things that are important to them.]]></description>
			<content:encoded><![CDATA[<p>Today, we have been informed that <a href="http://radar.oreilly.com/2009/05/google-announces-support-for-m.html">Google will support microformats and RDFa</a>, which are ways to give machine-readable semantic structure, meaning, and connection to a web document. These methods are open standards, and have been used to varying degrees over the past few years. For example, iCal, Address Book, Thunderbird, and Firefox all are capable of reading microformats that are created by sites like <a href="http://www.flickr.com/">flickr</a>, <a href="http://www.last.fm/">Last.fm</a>, <a href="http://www.dopplr.com/">Dopplr</a>, and <a href="http://www.linkedin.com/">LinkedIn</a>, among others. They can read these pieces of data to understand ways that data is connected to other data, as well as what the data itself is.</p>
<p>In business (in the last year or so), as well as design and programming circles (ranging from the last four years to the last ten years), terms like &#8220;<a href="http://en.wikipedia.org/wiki/Semantic_Web">Semantic Web</a>&#8221; have been thrown around a lot, and this is what it refers to. The ability for the Web to understand the kind of data that it contains, and make intelligent connections and decisions about that data. This has implications, of course, for any number of ways of connecting people with the things that are important to them.</p>
<p>Google&#8217;s announcement means that gradually, its own spiders will be able to understand this data. For the future of search, and the way that websites are coded for search, this is a game changer. Many large sites have, thus far, ignored microformats and RDFa, perhaps thinking that because they are lowly citizens of the HTML/XML world they are not important. This is no longer an option.</p>
<p>As Google and those that follow after it understand this data, it will be essential that websites support it in order to be a part of this new kind of user experience with search, and new kind of search index, that will result. The sites that do support it will greatly increase the amount of information available to us as users, as well as the ability to sift through all the information available to us and find the kind of things that we should be doing with this information.</p>
<p>For those interested in some of the thinking that has led up to this point, a great artistic introduction can be seen at the 2007 YouTube video <a href="http://www.youtube.com/watch?v=6gmP4nk0EOE">Web 2.0 &#8230; The Machine is Us/ing Us</a>, as well as many of <a href="http://www.youtube.com/user/mwesch">Mike Wesch</a>&#8216;s other videos. It is a fascinating day to think about the Web, so think about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanstegall.com/2009/05/12/google-to-support-microformats-and-rdfa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH into networked computer on Mac OSX</title>
		<link>http://jonathanstegall.com/2009/03/21/ssh-into-networked-computer-on-mac-osx/</link>
		<comments>http://jonathanstegall.com/2009/03/21/ssh-into-networked-computer-on-mac-osx/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 03:45:33 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://jonathanstegall.com/?p=1327</guid>
		<description><![CDATA[I've written occasionally about <a href="/category/linux/">my experiences</a> with Ubuntu Linux. Since I got accustomed to the system, everything has been overwhelmingly positive, especially when it relates to using Ubuntu for programming.

Predominantly, I program in <abbr title="PHP Hypertext Processor">PHP</abbr> and Ruby on Rails, depending on the project. For these, with the ways that I use them, Ubuntu has proven itself infinitely superior to any other development environment I've used.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written occasionally about <a href="/category/linux/">my experiences</a> with <a href="http://ubuntu.com/">Ubuntu Linux</a>. Since I got accustomed to the system, everything has been overwhelmingly positive, especially when it relates to using Ubuntu for programming.</p>
<p>Predominantly, I program in <abbr title="PHP Hypertext Processor">PHP</abbr> and Ruby on Rails, depending on the project. For these, with the ways that I use them, Ubuntu has proven itself infinitely superior to any other development environment I&#8217;ve used.</p>
<p>That said, recently I inherited a <a href="http://www.apple.com/macbookpro/">MacBook Pro</a> as my work computer. Naturally, I have fallen in love with it, and am using it for design work at home as well. Mac OSX, of course, has a UNIX foundation, and thus is much better for my kind of programming than Windows is, and works very well with most development.</p>
<p>However, particularly with Ruby on Rails applications, I still find Linux to be more intuitive with the management and storage of the apps. With the last one I was working on, I sought a way to <abbr title="Secure Shell"><code>ssh</code></abbr> into my Linux system through the Mac, so that I could have the best of both worlds. I couldn&#8217;t find anything in particular in various searches, so I asked about it in <a href="http://forums.macrumors.com/showthread.php?t=672638">a forum post</a>.</p>
<p>Thanks to the community there, I have an answer. Essentially, there are a couple of steps.</p>
<ol>
<li><a href="http://www.kremalicious.com/2008/06/ubuntu-as-mac-file-server-and-time-machine-volume/">Make Ubuntu a Mac File Server</a>
<p>This is the hardest part, as it involves a few steps on both the Linux system and the Mac system. That being said, the instructions in the linked post are fantastic. They are well-written and easy to follow.</p>
</li>
<li>Note the name of the Ubuntu system when it is mounted (for example: <code>ubuntu-desktop</code>).</li>
<li>Ensure that sshd server is installed on the Ubuntu system. <code>sudo apt-get openssh-server</code></li>
<li>If the Ubuntu system&#8217;s name is <code>ubuntu-desktop</code>, use the command <code>username@ubuntu-desktop.local</code> in the Mac&#8217;s Terminal, and you can log in.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://jonathanstegall.com/2009/03/21/ssh-into-networked-computer-on-mac-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Choose Authors From Registered Users</title>
		<link>http://jonathanstegall.com/2008/07/29/choose-authors-from-registered-users/</link>
		<comments>http://jonathanstegall.com/2008/07/29/choose-authors-from-registered-users/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 20:41:02 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://jonathanstegall.com/?p=323</guid>
		<description><![CDATA[I've made my first, hopefully useful for public consumption, plugin for <a href="http://wordpress.org/">WordPress</a>. I've made a few other plugins, but none of them seemed to be really useful or customizable to benefit others.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve made my first, hopefully useful for public consumption, plugin for <a href="http://wordpress.org/">WordPress</a>. I&#8217;ve made a few other plugins, but none of them seemed to be really useful or customizable to benefit others.</p>
<h2>About this plugin</h2>
<p>This plugin uses the same data as the WordPress function <code>wp_list_authors();</code>. This function lists all of the authors that have posts associated with their accounts. See the <a href="http://codex.wordpress.org/Template_Tags/wp_list_authors">Codex</a> for more information about this function.</p>
<p>Note that you cannot use this function outside the WordPress Loop. There is another <a href="http://guff.szub.net/2005/01/31/get-author-profile/">plugin</a> that creates a list of authors outside the loop, and it works very well for this purpose.</p>
<p>My plugin, which is a widget that can be used in any widgetized theme, allows you to pick users and list them by inserting the widget into your theme. If you have users with posts who should not be listed, simply do not check their names.</p>
<p>If there is interest, I&#8217;ll expand this so that it can be used inside the Loop as well, but it seems to me that it is most practical for sidebars.</p>
<h2>Why make this plugin?</h2>
<p>This plugin is not an attempt to compete with any of the methods listed above, although certainly it does have some of the same functionality and could easily be expanded to have all of the same functionality. Its difference is that it allows for users with posts to be excluded from the list. There are a couple of situations where this could be useful.</p>
<ul>
<li>You have a blog with a large number of authors, and would like to feature a few of them. Maybe they are more popular, or have more posts, or are more regular posters. You can check these to be included in the list.</li>
<li>On the flip side, you could have a blog with certain authors that you do not want to feature. You can simply leave these authors out of the list.</li>
<li>You use your user pages to include users that have comments, instead of just users that have posts. The configuration of this plugin shows all users, regardless of whether or not they have posted or are assigned a certain role.</li>
</ul>
<h2>Download</h2>
<p>Without further ado, feel free to download and try out this plugin.</p>
<dl>
<dt>Plugin:</dt>
<dd>Choose Authors From Registered Users (maybe it needs a better name).</dd>
<dt>Version:</dt>
<dd>0.5</dd>
<dt>Download</dt>
<dd><a href='http://jonathanstegall.com/wp-content/uploads/2008/07/wp-chooseauthors.zip'>wp-chooseauthors.zip</a></dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://jonathanstegall.com/2008/07/29/choose-authors-from-registered-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript functions on page load</title>
		<link>http://jonathanstegall.com/2008/04/17/javascript-functions-on-page-load/</link>
		<comments>http://jonathanstegall.com/2008/04/17/javascript-functions-on-page-load/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 16:30:15 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://jonathanstegall.com/?p=186</guid>
		<description><![CDATA[One of the biggest annoyances (for me) about JavaScript is that the famous window.onload = functionname; only works once on a given page. Over the years, many people have written various solutions to go around this, and cause the page to load multiple functions. Typically, my favorite is this one from Simon Wilson. It&#8217;s easy, [...]]]></description>
			<content:encoded><![CDATA[<p>One of the biggest annoyances (for me) about JavaScript is that the famous <code>window.onload = functionname;</code> only works once on a given page.</p>
<p>Over the years, many people have written various solutions to go around this, and cause the page to load multiple functions. Typically, my favorite is <a href="http://simonwillison.net/2004/May/26/addLoadEvent/">this one</a> from <a href="http://simonwillison.net/">Simon Wilson</a>. It&#8217;s easy, concise, and works in a myriad of different situations.</p>
<p>The other day, though, I ran into a situation where it didn&#8217;t work. I&#8217;m still not sure what the issue was, but Internet Explorer 6 (of course) refused to load a couple of the functions I was trying to use. Firefox, IE7, Safari, etc. all loaded them very nicely, but IE6 remained stubborn. I tried everything: rewriting the functions, removing everything else in the page, changing random things that were unrelated, and so on, all to no avail.</p>
<p>Finally, I decided to try <a href="http://jquery.com">jQuery</a>&#8216;s load solution:</p>
<ol class="code javascript">
<li><code>$(document).ready(function() {</code></li>
<li class="tab1"><code>functionname();</code></li>
<li><code>});</code></li>
</ol>
<p>This worked perfectly, in every browser. It didn&#8217;t occur to me to use this, mainly because the offending functions are not jQuery functions, and that particular page in the site didn&#8217;t have any jQuery on it at all. Now, it does.</p>
<p>File this away under: &#8220;I&#8217;m already using jQuery on a site, and I need to load some non-jQuery functions.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanstegall.com/2008/04/17/javascript-functions-on-page-load/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reasons for IE8&#8242;s Default Behavior</title>
		<link>http://jonathanstegall.com/2008/03/04/reasons-for-ie8s-default-behavior/</link>
		<comments>http://jonathanstegall.com/2008/03/04/reasons-for-ie8s-default-behavior/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 00:57:50 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[internet explorer]]></category>

		<guid isPermaLink="false">http://jonathanstegall.com/2008/03/04/reasons-for-ie8s-default-behavior/</guid>
		<description><![CDATA[As I&#8217;ve been thinking about the new default behavior that Microsoft announced for IE8, it occurs to me that there are a lot of reasons for Microsoft&#8217;s decision. In light of these thoughts, I want to look at the reasons that I think are likely possibilities. Standards as a whole Microsoft, especially in the last [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve been thinking about the new default behavior that <a href="http://www.microsoft.com/presspass/press/2008/mar08/03-03WebStandards.mspx">Microsoft announced for IE8</a>, it occurs to me that there are a lot of reasons for Microsoft&#8217;s decision. In light of these thoughts, I want to look at the reasons that I think are likely possibilities.</p>
<h2>Standards as a whole</h2>
<p>Microsoft, especially in the last year or two, has made a lot of moves toward standards, web and otherwise. They announced the <a href="http://www.microsoft.com/presspass/presskits/interoperability/default.mspx">Interoperability Principles</a>. They announced the ASP.NET MVC Framework, which finally allows programmers to control the HTML generated by ASP.NET. IE8 <a href="http://blogs.msdn.com/ie/archive/2007/12/19/internet-explorer-8-and-acid2-a-milestone.aspx">will pass Acid2</a>, and any number of other things.</p>
<p>While I&#8217;m not optimistic that any of this will cause Microsoft to act in any unexpected ways with respect to its attempts to acquire Yahoo, it is clear that a shift is occurring, to whatever extent.</p>
<h2>Noise from the web standards community</h2>
<p>Advocates of web standards have made a lot of noise about the original decision, and it is clear that Microsoft listened. Many people made logical arguments for why IE8, especially from a long-term perspective, should not default to IE7 behavior, while understanding that the option for IE7 behavior was a good thing.</p>
<h2>Legal issues</h2>
<p>It&#8217;s entirely possible that this is partly related to Microsoft&#8217;s various legal troubles, and that they are trying to appear as a better business citizen to help their case.</p>
<h2>Future versions of IE</h2>
<p>I think one of the most significant benefits, both from the perspective of future versions of IE, as well as future versions of Firefox, Opera, Safari, etc., is that the need for version targeting will probably become much less because IE8 is the default behavior. People who create sites that break in IE8 will, certainly, have the option of targeting IE7, but in order to do that they&#8217;ll have to learn that they can.</p>
<p>Most people who will run into the issue will probably not have the interest (or the time, possibly) to find out this kind of solution. The ones who do find out about the solution will find out that Microsoft doesn&#8217;t see it as the ideal solution, and will probably feel at least some pressure to learn proper ways of doing things. Thus, in a few years, it is entirely possible that versions of Internet Explorer that follow version 8 will be met with a majority of sites that do not break.</p>
<p>That&#8217;s not to say that the majority of sites will follow web standards. I&#8217;ve seen innumerable websites that didn&#8217;t break when IE7 came out, because they had such disregard for web standards that none of the changes affected them. I suspect we&#8217;ll have to deal with this for a long time. But that&#8217;s fine with me, as the future of web browsers can continue to look forward.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanstegall.com/2008/03/04/reasons-for-ie8s-default-behavior/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Expands Support for Web Standards</title>
		<link>http://jonathanstegall.com/2008/03/03/microsoft-expands-support-for-web-standards/</link>
		<comments>http://jonathanstegall.com/2008/03/03/microsoft-expands-support-for-web-standards/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 00:16:48 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[ie8]]></category>

		<guid isPermaLink="false">http://jonathanstegall.com/2008/03/03/microsoft-expands-support-for-web-standards/</guid>
		<description><![CDATA[See <a href="http://www.microsoft.com/presspass/press/2008/mar08/03-03WebStandards.mspx">this press release</a>:]]></description>
			<content:encoded><![CDATA[<p>See <a href="http://www.microsoft.com/presspass/press/2008/mar08/03-03WebStandards.mspx">this press release</a>:</p>
<blockquote><p>IE8 has been significantly enhanced, and was designed with great support for current Internet standards. This is evidenced by the fact that even in its first beta, IE8 correctly renders the popular test known as &#39;Acid2,&#39; which was created by the Web community to promote real-world interoperability,&#8221; said Ray Ozzie, Microsoft chief software architect. &#8220;Our initial plan had been to use IE7-compatible behavior as the default setting for IE8, to minimize potential impact on the world&#39;s existing Web sites. We have now decided to make our most current standards-based mode the default in IE8.</p>
</blockquote>
<p>The web standards world has been abuzz for the last few weeks, following the announcement that Internet Explorer 8 (and, presumably, any number of future releases) would have the default behavior of rendering websites in the same way that Internet Explorer 7 does. Causing the browser&#8217;s behavior to advance would have required that designers and developers direct it to do so with a meta tag.</p>
<p>Many standards-aware designers and developers were very understanding of the decision to allow websites to target IE7, avoiding issues with badly-programmed websites that break when browsers move forward. However, many of these designers and developers made a lot of noise wishing that Microsoft would allow the default behavior of websites to advance as the browser does, and require those who want to target IE7 to read a little bit and find out about the meta tag.</p>
<p>Apparently, Microsoft listened to the noise. I&#8217;m amazed and pleased by this change in strategy. I hope they will be able to spread the word enough, so that websites that will break with IE8&#8242;s improved standards support will learn about their options (1. learn how to write standards-compliant code, 2. include a one-line meta tag). I feel pretty confident that this is unrealistic, but I hope that it will happen to the extent that Microsoft doesn&#8217;t have to go back on this decision.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanstegall.com/2008/03/03/microsoft-expands-support-for-web-standards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe AIR comes out of beta</title>
		<link>http://jonathanstegall.com/2008/02/25/adobe-air-comes-out-of-beta/</link>
		<comments>http://jonathanstegall.com/2008/02/25/adobe-air-comes-out-of-beta/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 13:33:38 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[air]]></category>

		<guid isPermaLink="false">http://jonathanstegall.com/2008/02/25/adobe-air-comes-out-of-beta/</guid>
		<description><![CDATA[Today, Adobe AIR comes out of beta. AIR allows designers and developers to create web applications that run on the desktop. There have been little tastes of this, from the OSX and Yahoo widgets, to the Vista Gadgets, but none of these are full-featured applications that run on the desktop. Other than that, desktop applications [...]]]></description>
			<content:encoded><![CDATA[<p>Today, <a href="http://get.adobe.com/air/">Adobe AIR</a> comes out of beta. AIR allows designers and developers to create web applications that run on the desktop. There have been little tastes of this, from the OSX and Yahoo widgets, to the Vista Gadgets, but none of these are full-featured applications that run on the desktop.</p>
<p>Other than that, desktop applications have not been web applications. Developers have had to know desktop programming to create them, and they haven&#8217;t really had access to data that resides online. At least, not as part of their core functionality.</p>
<p>With AIR, full web applications can also be full desktop applications. It&#8217;s been an interesting thing to watch all this develop, and I look forward to coming up with ways of using it.</p>
<p>For what it&#8217;s worth, the example that first made me interested in this was the <a href="http://labs.adobe.com/showcase/air/ebay.html">eBay Desktop</a>. Worth a look, especially now that beta is over.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanstegall.com/2008/02/25/adobe-air-comes-out-of-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sun Microsystems to acquire MySQL</title>
		<link>http://jonathanstegall.com/2008/01/16/sun-microsystems-to-acquire-mysql/</link>
		<comments>http://jonathanstegall.com/2008/01/16/sun-microsystems-to-acquire-mysql/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 14:54:28 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://jonathanstegall.com/2008/01/16/sun-microsystems-to-acquire-mysql/</guid>
		<description><![CDATA[Today, Sun Microsystems announced an agreement to acquire MySQL AB, the developer of the open source MySQL database that powers Google, Facebook, and any number of other websites around the world. Interesting news.]]></description>
			<content:encoded><![CDATA[<p>Today, <a href="http://sun.com/">Sun Microsystems</a> announced <a href="http://mysql.com/news-and-events/sun-to-acquire-mysql.html">an agreement</a> to acquire <a href="http://mysql.com/">MySQL AB</a>, the developer of the open source MySQL database that powers Google, Facebook, and any number of other websites around the world. Interesting news.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanstegall.com/2008/01/16/sun-microsystems-to-acquire-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
