<?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>sillybean.net</title>
	<atom:link href="http://sillybean.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://sillybean.net</link>
	<description>reading, writing, web design, and the intersections thereof</description>
	<lastBuildDate>Sun, 01 Jan 2012 22:26:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Say hello</title>
		<link>http://sillybean.net/2012/01/say-hello/</link>
		<comments>http://sillybean.net/2012/01/say-hello/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 22:26:28 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[baby]]></category>

		<guid isPermaLink="false">http://sillybean.net/?p=7160</guid>
		<description><![CDATA[<p><a href="http://sillybean.net/wp-content/uploads/2012/01/100_07091.jpg"><img class="alignleft size-medium wp-image-7165" title="100_0709" src="http://sillybean.net/wp-content/uploads/2012/01/100_07091-264x300.jpg" alt="" width="264" height="300" /></a>The baby was born December 22. He was over a week late, and then was a bit distressed during labor, so we had to have a C-section. Easier on him; not so much for me. We&#8217;re all fine, though &#8212; …</p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://sillybean.net/wp-content/uploads/2012/01/100_07091.jpg"><img class="alignleft size-medium wp-image-7165" title="100_0709" src="http://sillybean.net/wp-content/uploads/2012/01/100_07091-264x300.jpg" alt="" width="264" height="300" /></a>The baby was born December 22. He was over a week late, and then was a bit distressed during labor, so we had to have a C-section. Easier on him; not so much for me. We&#8217;re all fine, though &#8212; except my laptop, which has been in kernel panic for most of the last week! So I&#8217;ve been on Twitter and Facebook via my phone, mostly at odd hours in the very early morning.</p>
<p><a href="http://forum.sillybean.net/">Support forum</a> answers and email replies will be delayed until the little one settles into a schedule. Right now, he&#8217;s all over the place.</p>
<p>Happy new year!</p>
]]></content:encoded>
			<wfw:commentRss>http://sillybean.net/2012/01/say-hello/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Countdown to insanity</title>
		<link>http://sillybean.net/2011/11/countdown-to-insanity/</link>
		<comments>http://sillybean.net/2011/11/countdown-to-insanity/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 02:45:31 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[baby]]></category>
		<category><![CDATA[highedweb]]></category>

		<guid isPermaLink="false">http://sillybean.net/?p=7145</guid>
		<description><![CDATA[<p>Life has been more interesting than usual lately.</p>
<p>First, work is stressful at the moment. The Provost has decided to consolidate all the IT-related positions in the academic offices, and that includes me. As a result, on Friday I&#8217;m being …</p>]]></description>
			<content:encoded><![CDATA[<p>Life has been more interesting than usual lately.</p>
<p>First, work is stressful at the moment. The Provost has decided to consolidate all the IT-related positions in the academic offices, and that includes me. As a result, on Friday I&#8217;m being moved out of the Writing Center and into the new group. Aside from the fact that I love the Writing Center and don&#8217;t want to leave, the timing really stinks &#8212; the baby&#8217;s due in less than a month. There are other issues that make the whole thing more fraught than it needs to be, about which the less said, the better.</p>
<p>One baby shower fell through at the last minute due to a death in the planner&#8217;s family, but there was a second one for my college friends, and that was awesome. Now I&#8217;m trying to get the family and local friends together for something informal at my house so they don&#8217;t feel too left out. Lots of timing problems there, too.</p>
<p>I thought we were just going to have my parents and one aunt over for Thanksgiving &#8212; I can&#8217;t travel anymore, so they sort of have to come here &#8212; but then my cousin somehow obtained tickets to the UT game, and now that whole side of the family is also coming over. I&#8217;ve just now figured out where they can all sleep. (Our house is just not that big.) Complicating factor: the delivery of the new couches we ordered a couple of months ago. They were going to be here on the 12th. Then they weren&#8217;t going to be here until after Thanskgiving. Now they <em>might</em> be here next week&#8230; but if they are, I won&#8217;t have room for the last couple of relatives who might need to sleep on the floor. So, people will either have no place to sit during the day or no place to sleep at night. Faaaaantastic.</p>
<p>(Why can&#8217;t they just sleep on the couches, you ask? Because this is the freakishly tall side of the family. None of them will <em>fit</em> on the couches.)</p>
<p>On the bright side, the baby&#8217;s room is painted, and Michael is almost done with the new kitchen island he&#8217;s been building on and off since we finished the rest of the remodeling last December. He couldn&#8217;t work on it for about six months because the garage is his workshop, and you might recall that it was hotter than the fires of hell this summer. By the time he got back to it, all the plywood had warped in the heat and he had to start over. He&#8217;s pulled it all together in about a month, and it looks wonderful.</p>
<p>I had a few weird pregnancy side effects pop up while I was at HighEdWeb, but they&#8217;ve mostly disappeared now and we&#8217;re both fine. And HighEdWeb was a blast, as always.</p>
<p>So now I just have to move offices, rearrange the living room, sell the old futon on Craigslist, get the new couches moved in, feed <del>eleven</del> nine (thank goodness) people a holiday meal, and host a last-minute, mom-organized baby shower. Then I can kick back and, you know, give birth.</p>
<p>&#8230; shoot me, please?</p>
]]></content:encoded>
			<wfw:commentRss>http://sillybean.net/2011/11/countdown-to-insanity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Small update to Twenty Links</title>
		<link>http://sillybean.net/2011/10/small-update-to-twenty-links/</link>
		<comments>http://sillybean.net/2011/10/small-update-to-twenty-links/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 18:34:55 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[twenty links]]></category>

		<guid isPermaLink="false">http://sillybean.net/?p=7135</guid>
		<description><![CDATA[<p>I&#8217;ve just posted a minor update that fixes several bugs: incorrect URLs for subdirectory installations (props <a href="http://forum.sillybean.net/forums/topic/incorrect-url-when-removing-a-tag/">aldolet</a>), an endless link tag in trashed post notice, and a bad layout on &#8220;not found&#8221; pages. I&#8217;ve also removed the plus links …</p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just posted a minor update that fixes several bugs: incorrect URLs for subdirectory installations (props <a href="http://forum.sillybean.net/forums/topic/incorrect-url-when-removing-a-tag/">aldolet</a>), an endless link tag in trashed post notice, and a bad layout on &#8220;not found&#8221; pages. I&#8217;ve also removed the plus links when viewing the home page, where they&#8217;re not needed and don&#8217;t work there anyway.</p>
<p><a href="http://sillybean.net/downloads/twenty-links.zip-0.6.2"><strong>Download 0.6.2</strong></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sillybean.net/2011/10/small-update-to-twenty-links/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Getting tag autocomplete (and other jQuery stuff) to work for visitors</title>
		<link>http://sillybean.net/2011/10/getting-tag-autocomplete-and-other-jquery-stuff-to-work-for-visitors/</link>
		<comments>http://sillybean.net/2011/10/getting-tag-autocomplete-and-other-jquery-stuff-to-work-for-visitors/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 14:53:21 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://sillybean.net/?p=7119</guid>
		<description><![CDATA[<p>The trickiest part of the <a href="http://sillybean.net/?p=7104">latest updates</a> to <a href="http://sillybean.net/?p=7091">Twenty Links</a> was getting the tag suggest function to work for users who aren&#8217;t logged in. I&#8217;m pretty much a n00b when it comes to jQuery &#8212; JavaScript in general has always …</p>]]></description>
			<content:encoded><![CDATA[<p>The trickiest part of the <a href="http://sillybean.net/?p=7104">latest updates</a> to <a href="http://sillybean.net/?p=7091">Twenty Links</a> was getting the tag suggest function to work for users who aren&#8217;t logged in. I&#8217;m pretty much a n00b when it comes to jQuery &#8212; JavaScript in general has always been my weakest skill &#8212; so I went looking for a handy tutorial, and I found one: <a href="http://sudarmuthu.com/blog/using-wordpress-built-in-tag-auto-complete-script-in-your-plugins">Using WordPress built-in tag auto complete script in your Plugins</a>, posted a couple of years ago by Sudar Muthu. That did the trick &#8212; but only for logged-in users.</p>
<h3>Why it doesn&#8217;t work</h3>
<p>WordPress handles jQuery requests using the <code>/wp-admin/admin-ajax.php</code> file. Here&#8217;s the catch:</p>
<blockquote><p>The only cave[a]t to this method is that right now the <code>admin-ajax.php</code> file needs you to be logged in and therefore can only be used in admin pages. But in WordPress 2.9 even anonymous users can load <code>admin-ajax.php</code> file. If you need use auto tag completing in blog pages, then you may have to wait till 2.9 is released.</p></blockquote>
<p>Obviously that was written before 2.9 came out, so it&#8217;s not quite accurate. As it turned out, <code>admin-ajax.php</code> does handle requests from anonymous users &#8212; <em>but it kicks them back out to a callback function you specify</em>. I didn&#8217;t quite understand what was going on until I actually opened the file and read the code.<span id="more-7119"></span> Here&#8217;s the relevant bit:</p>
<pre class="brush: php; title: ; notranslate">
if ( ! is_user_logged_in() ) {

	// [some stuff having to do with autosave]

	if ( !empty( $_REQUEST['action'] ) )
		do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );

	die('-1');
}
</pre>
<p>Translation: <em>if the user isn&#8217;t logged in, call functions hooked to the relevant action prefixed with <code>wp_ajax_nopriv_</code>. If there are no such functions, fail with an error message of -1</em>.</p>
<p>Upshot: your users see this.</p>
<p><img class="aligncenter size-full wp-image-7120" title="Autosuggest fail" src="http://sillybean.net/wp-content/uploads/2011/10/Screen-shot-2011-10-03-at-2.31.03-PM.png" alt="auto suggest shows -1 when the user types a word" width="148" height="53" /></p>
<p>So, in order to get this working for anonymous visitors, you have to use that <code>wp_ajax_nopriv_[something]</code> action.</p>
<h3>How it&#8217;s done for authenticated users</h3>
<p>Reading a little further down in <code>admin-ajax.php</code>, I found the bit that handles tag suggestions:</p>
<pre class="brush: php; title: ; notranslate">
switch ( $action = $_GET['action'] ) :
// [other stuff]
case 'ajax-tag-search' :
	if ( isset( $_GET['tax'] ) ) {
		$taxonomy = sanitize_key( $_GET['tax'] );
		$tax = get_taxonomy( $taxonomy );
		if ( ! $tax )
			die( '0' );
		if ( ! current_user_can( $tax-&gt;cap-&gt;assign_terms ) )
			die( '-1' );
	} else {
		die('0');
	}

	$s = stripslashes( $_GET['q'] );

	if ( false !== strpos( $s, ',' ) ) {
		$s = explode( ',', $s );
		$s = $s[count( $s ) - 1];
	}
	$s = trim( $s );
	if ( strlen( $s ) &lt; 2 )
		die; // require 2 chars for matching

	$results = $wpdb-&gt;get_col( $wpdb-&gt;prepare( &quot;SELECT t.name FROM $wpdb-&gt;term_taxonomy AS tt INNER JOIN $wpdb-&gt;terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.name LIKE (%s)&quot;, $taxonomy, '%' . like_escape( $s ) . '%' ) );

	echo join( $results, &quot;\n&quot; );
	die;
	break;
</pre>
<p>OK, so in order to avoid all those <code>die()</code> conditions, we need to set the action to <code>ajax-tag-search</code>, and the taxonomy has to be defined. I looked at Sudar&#8217;s code again. Sure enough, the query string sent to <code>jQuery.suggest()</code> includes both those things: <code>?action=ajax-tag-search&amp;tax=post_tag</code>. It&#8217;s only failing because the user never makes it this far if they&#8217;re not logged in. Even if they did get here, this code does an additional check to see if the user can assign tags: <code>if (!current_user_can($tax-&gt;cap-&gt;assign_terms))</code>. We&#8217;ll need to get rid of that in the anonymous version of the function.</p>
<h3>Duplicating the function for visitors</h3>
<p>I went back to reading about the <code>nopriv</code> callbacks. What I needed to do was define the function that would fetch tags from the database, just like the code in <code>admin-ajax.php</code>, and hook it to the <code>wp_ajax_nopriv_ajax-tag-search</code> action.</p>
<p>Here&#8217;s the code I added to the <code>functions.php</code> file, just after Sudar&#8217;s code:</p>
<pre class="brush: php; title: ; notranslate">
// autocompletion for non-logged-in users
add_action('wp_ajax_nopriv_ajax-tag-search', 'add_autosuggest_20links_callback');

// cribbed from admin-ajax.php
function add_autosuggest_20links_callback() {
	global $wpdb;
	if ( isset( $_GET['tax'] ) ) {
		$taxonomy = sanitize_key( $_GET['tax'] );
		$tax = get_taxonomy( $taxonomy );
		if ( ! $tax )
			die( '0' );
	} else {
		die('0');
	}

	$s = stripslashes( $_GET['q'] );

	if ( false !== strpos( $s, ',' ) ) {
		$s = explode( ',', $s );
		$s = $s[count( $s ) - 1];
	}
	$s = trim( $s );
	if ( strlen( $s ) &lt; 2 )
		die; // require 2 chars for matching

	$results = $wpdb-&gt;get_col( $wpdb-&gt;prepare( &quot;SELECT t.name FROM $wpdb-&gt;term_taxonomy AS tt INNER JOIN $wpdb-&gt;terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.name LIKE (%s)&quot;, $taxonomy, '%' . like_escape( $s ) . '%' ) );

	echo join( $results, &quot;\n&quot; );
}
</pre>
<p>It&#8217;s exactly the same as the section from <code>admin-ajax.php</code>, minus the capability check and the surrounding <code>switch</code>.</p>
<p>And it works! See it in action on <a href="http://links.sillybean.net/">my links site</a>. Grab the <a href="http://sillybean.net/code/themes/twenty-links-a-delicious-inspired-child-theme-for-wordpress/">Twenty Links theme</a> to see the completed <code>functions.php</code> file.</p>
]]></content:encoded>
			<wfw:commentRss>http://sillybean.net/2011/10/getting-tag-autocomplete-and-other-jquery-stuff-to-work-for-visitors/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Delicious XML Importer plugin and Twenty Links theme updated</title>
		<link>http://sillybean.net/2011/10/delicious-xml-importer-plugin-and-twenty-links-theme-updated/</link>
		<comments>http://sillybean.net/2011/10/delicious-xml-importer-plugin-and-twenty-links-theme-updated/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 15:48:16 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Delicious]]></category>
		<category><![CDATA[delicious xml importer]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[twenty links]]></category>

		<guid isPermaLink="false">http://sillybean.net/?p=7104</guid>
		<description><![CDATA[<p>If you use <a href="http://delicious.com">Delicious</a>, you&#8217;ve probably noticed that AVOS has started rolling out some changes. As a result, I&#8217;ve updated the <a href="http://sillybean.net/code/wordpress/delicious/">Delicious XML Importer</a> plugin and the <a href="http://sillybean.net/?p=7091">Twenty Links theme</a>. Between the importer and the theme, you can …</p>]]></description>
			<content:encoded><![CDATA[<p>If you use <a href="http://delicious.com">Delicious</a>, you&#8217;ve probably noticed that AVOS has started rolling out some changes. As a result, I&#8217;ve updated the <a href="http://sillybean.net/code/wordpress/delicious/">Delicious XML Importer</a> plugin and the <a href="http://sillybean.net/?p=7091">Twenty Links theme</a>. Between the importer and the theme, you can set up a pretty great alternative to Delicious on your own site. Here&#8217;s <a href="http://links.sillybean.net/">mine</a>.</p>
<h3>Twenty Links theme</h3>
<p><a href="http://sillybean.net/wp-content/uploads/2011/10/twenty-links.png"><img class="aligncenter size-large wp-image-7099" title="twenty-links" src="http://sillybean.net/wp-content/uploads/2011/10/twenty-links-1024x597.png" alt="" width="500" height="291" /></a></p>
<p>Twenty Links now includes autosuggest on the tag filter. It shows an RSS feed link and a count of all the links found for the selected combination of tags. (If you&#8217;re logged in, the count will include your private links.)</p>
<p><a href="http://sillybean.net/wp-content/uploads/2011/10/twenty-links-mobile.jpg"><img class="alignright size-medium wp-image-7106" title="twenty-links-mobile" src="http://sillybean.net/wp-content/uploads/2011/10/twenty-links-mobile-200x300.jpg" alt="" width="200" height="300" /></a>It also has a snazzy new (responsive) mobile version!</p>
<p>You can use the built-in Press This bookmarklet to save links to your site. The theme includes a few customizations for that screen to turn off things you probably won’t use (the Save Draft button, the Categories box).</p>
<p>Since this is a child theme for Twenty Ten, and Extend doesn&#8217;t allow child themes yet, you&#8217;ll have to follow me here to find out about updates to the theme. Use the <a href="http://sillybean.net/tag/twenty-links/feed/">Twenty Links tag feed</a> if you&#8217;d rather not subscribe to my general feed.</p>
<h3>Delicious XML Importer plugin</h3>
<p>Recent changes:</p>
<ul>
<li>Supports importing links into a custom post type.</li>
<li>New option to save the link into a custom field rather than the post content.</li>
<li>Delicious now exports links with the word &#8220;empty&#8221; in the extended description if you didn&#8217;t enter any notes. Links without tags are also tagged with &#8220;empty.&#8221; The importer will ignore this, so that your notes and tags are <em>actually</em> empty.</li>
<li>When importing links as posts, the link will now be the first thing saved in the content area, followed by your notes. (In previous versions, the notes came first.)</li>
<li>The export API now handles only 1000 links at a time. See the <a href="http://sillybean.net/code/wordpress/delicious/">plugin page</a> for a workaround if you need to export more than that.</li>
</ul>
<h3>Support</h3>
<p>There&#8217;s a <a href="http://forum.sillybean.net/forums/forum/delicious-xml-importer/">combined forum for the importer and the theme</a> over on my support site.</p>
]]></content:encoded>
			<wfw:commentRss>http://sillybean.net/2011/10/delicious-xml-importer-plugin-and-twenty-links-theme-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML Import 2.1 fixes your links</title>
		<link>http://sillybean.net/2011/08/html-import-2-1-fixes-your-links/</link>
		<comments>http://sillybean.net/2011/08/html-import-2-1-fixes-your-links/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 20:35:48 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[html import]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://sillybean.net/?p=7083</guid>
		<description><![CDATA[<p>I&#8217;ve just released <a href="http://wordpress.org/extend/plugins/import-html-pages/">version 2.1 of HTML Import</a>, which includes a new option to fix internal links. As the importer runs, it builds a list of old paths vs. new permalinks. You&#8217;ll see that list reflected in the <code>.htaccess</code>…</p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just released <a href="http://wordpress.org/extend/plugins/import-html-pages/">version 2.1 of HTML Import</a>, which includes a new option to fix internal links. As the importer runs, it builds a list of old paths vs. new permalinks. You&#8217;ll see that list reflected in the <code>.htaccess</code> redirects when the import is complete. This new function runs after all the files have been imported, so it can use that list to match up link URLs with the new WordPress posts.</p>
<p>Like the image import function added in 2.0, the link function should be able to handle relative links:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;a href=&quot;http://foo.com&quot;&gt;foo.com&lt;/a&gt;
&lt;a href=&quot;/images/foo.png&quot;&gt;foo.png&lt;/a&gt;
&lt;a href=&quot;../../foo.html&quot;&gt;foo.html&lt;/a&gt;
</pre>
<p>The new option is a checkbox in the Content section. Give it a whirl, and let me know how it goes in the <a href="http://forum.sillybean.net/">support forum</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sillybean.net/2011/08/html-import-2-1-fixes-your-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Warning users not to edit the posts container page in WordPress</title>
		<link>http://sillybean.net/2011/08/warning-users-not-to-edit-the-posts-container-page-in-wordpress/</link>
		<comments>http://sillybean.net/2011/08/warning-users-not-to-edit-the-posts-container-page-in-wordpress/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 18:26:44 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://sillybean.net/?p=7011</guid>
		<description><![CDATA[<p>I have this one user. You know the one; we all have one like her. Giving her the power to do things on her own is kind of pointless, because she can&#8217;t ever remember how to do them.</p>
<p>In particular, …</p>]]></description>
			<content:encoded><![CDATA[<p>I have this one user. You know the one; we all have one like her. Giving her the power to do things on her own is kind of pointless, because she can&#8217;t ever remember how to do them.</p>
<p>In particular, she can&#8217;t seem to retain the procedure for adding news to the site. She knows that to edit almost everything on the site, she goes to Pages. And since she sees a News page there, she clicks it, thinking that&#8217;s where the news goes. Of course, it isn&#8217;t. This site is set up to use a page for the front page, and the News page is the posts container.</p>
<p>But you know what? The WordPress UI is kind of unclear on this point, and if I have one user who calls me up because she can&#8217;t remember how to do this, I probably have twelve more who are just too frustrated and/or embarrassed to ask. So I put a warning on that page (and ONLY on that page) telling them to go to Posts instead of editing the page.</p>
<p><a href="http://sillybean.net/wp-content/uploads/2011/08/edit-posts-page-admin-notice.png"><img src="http://sillybean.net/wp-content/uploads/2011/08/edit-posts-page-admin-notice-300x101.png" alt="" title="edit-posts-page-admin-notice" width="300" height="101" class="aligncenter size-medium wp-image-7013" /></a></p>
<p>This is the code that went into <code>functions.php</code>:<span id="more-7011"></span></p>
<pre class="brush: php; title: ; notranslate">
// Admin Notice on Posts Page
add_action('admin_head-post.php', 'us2011_postspage_error_notice');
function us2011_postspage_error_notice() {
	$postspage = get_option('page_for_posts');
	if (!empty($postspage))
    	add_action('admin_notices', 'us2011_postspage_print_notices');
}
function us2011_postspage_print_notices() {
	$postspage = get_option('page_for_posts');
	// show this only if we're editing the posts page
	if (!empty($postspage) &amp;&amp; isset($_GET['action']) &amp;&amp; $_GET['action'] == 'edit' &amp;&amp; $_GET['post'] == $postspage)
		echo '&lt;div class=&quot;error&quot;&gt;&lt;p&gt;This page is a container for the most recent posts. It should always be empty, and you should never edit this page. To add a news item, go to &lt;a href=&quot;post-new.php&quot;&gt;Posts -- Add New&lt;/a&gt;.&lt;p&gt;&lt;/div&gt;';
}
</pre>
<p>If that goes over well, I might dump it into the network&#8217;s <code>mu-plugins</code> directory instead.</p>
]]></content:encoded>
			<wfw:commentRss>http://sillybean.net/2011/08/warning-users-not-to-edit-the-posts-container-page-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Pregnancy, insomnia: a metaphor</title>
		<link>http://sillybean.net/2011/08/pregnancy-insomnia-a-metaphor/</link>
		<comments>http://sillybean.net/2011/08/pregnancy-insomnia-a-metaphor/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 03:50:08 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://sillybean.net/?p=6978</guid>
		<description><![CDATA[<p>It was a quiet morning in the Admin offices, something that occurred all too infrequently these days. I took my coffee downstairs, to the internal monitoring room. It had been too long since I&#8217;d last checked in.</p>
<p>Joe was seated …</p>]]></description>
			<content:encoded><![CDATA[<p>It was a quiet morning in the Admin offices, something that occurred all too infrequently these days. I took my coffee downstairs, to the internal monitoring room. It had been too long since I&#8217;d last checked in.</p>
<p>Joe was seated at his semicircle of screens, as he always was. I&#8217;d never seen anyone else on duty down here, and I was beginning to wonder if he ever slept. Well, none of us slept much anymore.</p>
<p>&#8220;Hey,&#8221; he greeted me without turning around.</p>
<p>&#8220;How&#8217;s it going?&#8221; I hitched one leg up on the edge of his desk and sipped my coffee.</p>
<p>He sat back, turned to me, and grimaced.</p>
<p>&#8220;That well,&#8221; I said, and sipped again.</p>
<p>He shrugged. &#8220;Could be worse.&#8221; He gave me a sharp, assessing look. &#8220;You look like hell. How are things upstairs?&#8221;</p>
<p>&#8220;The boss still isn&#8217;t sleeping, so none of us are, either.&#8221; He made a sympathetic noise. &#8220;It&#8217;s getting bad. Last week, one of the interns just fell over while she was walking to the kitchen. She sat up again after a minute and went back to her desk, but she&#8217;s got this strung out look I don&#8217;t like.&#8221;</p>
<p>&#8220;You look pretty strung out, yourself.&#8221;</p>
<p>&#8220;Yeah, well, we&#8217;re all a little ragged up there. And Systems is reporting all kinds of weird glitches.&#8221;</p>
<p>&#8220;Like what?&#8221;</p>
<p>&#8220;Well, you know how at first everything was just really sluggish, and the external sensors&#8217; reports didn&#8217;t make any sense?&#8221; He nodded. &#8220;That&#8217;s gone away, but now we&#8217;re getting surges in processing, followed by gaps in the memory.&#8221;</p>
<p>He frowned and said, &#8220;We&#8217;ve got glitches, too. The plumbing crew is reporting an unusual amount of gas in the lines, but they say it&#8217;s not causing any problems.&#8221;</p>
<p>&#8220;Weird.&#8221;</p>
<p>He snorted. &#8220;You want weird? Take a look at screen number six.&#8221;</p>
<p>I scanned his array of monitors. Screen six was blank. &#8220;There is no number six.&#8221;</p>
<p>&#8220;Exactly. Been off since this whole mess started.&#8221;</p>
<p>&#8220;You can&#8217;t fix it?&#8221;</p>
<p>&#8220;That&#8217;s the weird thing. Nothing wrong with the monitor. We&#8217;re just not getting any input from that sector.&#8221;</p>
<p>I set my coffee down. &#8220;What do you mean?&#8221;</p>
<p>&#8220;I mean, it&#8217;s there. It&#8217;s just not reporting its status anymore. But &#8212; something&#8217;s going on in there.&#8221;</p>
<p>&#8220;Like what?&#8221;</p>
<p>&#8220;No idea. Without eyes in there, we&#8217;re just inferring from changes in the system. For example, it&#8217;s draining power. Not so much that it&#8217;s shut us down, but it&#8217;s noticeable. And it&#8217;s raising the temperature, too.&#8221;</p>
<p>I stared at him. &#8220;Something in there has control of the thermostat?!&#8221; That would be very, very bad. There were all sorts of delicate systems scattered throughout the facility. The slightest deviation&#8230;</p>
<p>&#8220;No,&#8221; he assured me. &#8220;I think it&#8217;s just that&#8230; well, there is <em>something</em> in there, and it&#8217;s warm. Raises the ambient temperature a bit.&#8221;</p>
<p>&#8220;Something warm is in there,&#8221; I repeated. I scrubbed one palm over my face. This was just too weird. Maybe I was starting to hallucinate.</p>
<p>&#8220;Yeah. We hear something thumping on the walls every now and then. Sometimes it&#8217;s hard enough to rattle the plumbing in sector seven.&#8221;</p>
<p>&#8220;It&#8217;s moving?! Can&#8217;t you get in there and see what&#8217;s going on?&#8221;</p>
<p>&#8220;Nope. Sealed up tight. Maintenance did run sonar, though. Take a look at this.&#8221;</p>
<p>I held up the printout he handed me. &#8220;What the hell is <em>that</em>?&#8221;</p>
<p>He sat back again and shrugged. &#8220;Beats the shit out of me.&#8221;</p>
<p>I rotated it this way and that. It didn&#8217;t help. &#8220;It looks kind of like a cross between a gray alien and a manatee.&#8221; I squinted at it again. &#8220;This is what&#8217;s thumping on the walls in there?&#8221;</p>
<p>&#8220;So Maintenance says.&#8221;</p>
<p>&#8220;And &#8230; what? You&#8217;re just going to leave it in there?&#8221;</p>
<p>&#8220;Not much we can do about it without knocking down the walls,&#8221; he pointed out. &#8220;And Maintenance says it&#8217;s not going to cause any major problems, and it&#8217;ll come out when it&#8217;s ready.&#8221;</p>
<p>&#8220;Yeah, they keep telling us everything&#8217;s fine, too.&#8221; We exchanged glances, and I said, &#8220;I&#8217;m not sure I trust Maintenance these days.&#8221; I rattled the printout. &#8220;Can I take this upstairs?&#8221;</p>
<p>He grinned. &#8220;Better you than me.&#8221; I picked up my coffee cup and slid off the desk. He nodded at the mug. &#8220;I thought the boss hated coffee.&#8221;</p>
<p>&#8220;Yeah, well, I don&#8217;t let her catch me drinking it.&#8221; I gave him a tired grin of my own. &#8220;Thanks, Joe. Um&#8230; let me know if that thing starts to cause trouble.&#8221;</p>
<p>&#8220;Oh, he drawled. &#8220;Believe me, if it starts causing trouble, you&#8217;ll know about it.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://sillybean.net/2011/08/pregnancy-insomnia-a-metaphor/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Plugin updates galore: HTML Import 2, Content Audit, Dashboard Notepad, and bonus! LiveJournal Crossposter</title>
		<link>http://sillybean.net/2011/07/plugin-updates-galore-html-import-2-content-audit-dashboard-notepad-and-bonus-livejournal-crossposter/</link>
		<comments>http://sillybean.net/2011/07/plugin-updates-galore-html-import-2-content-audit-dashboard-notepad-and-bonus-livejournal-crossposter/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 22:42:43 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[assign missing categories]]></category>
		<category><![CDATA[content audit]]></category>
		<category><![CDATA[dashboard notepad]]></category>
		<category><![CDATA[html import]]></category>
		<category><![CDATA[lj-xp]]></category>
		<category><![CDATA[mass format conversion]]></category>
		<category><![CDATA[private suite]]></category>

		<guid isPermaLink="false">http://sillybean.net/?p=6833</guid>
		<description><![CDATA[<p>I have been a coding fool this week. </p>
<p>The big news is that I&#8217;m now working on the <a href="http://code.google.com/p/ljxp/">LiveJournal Crossposter</a>. If you use it, you&#8217;ve probably been pulling your hair out all week because it stops WordPress in its …</p>]]></description>
			<content:encoded><![CDATA[<p>I have been a coding fool this week. </p>
<p>The big news is that I&#8217;m now working on the <a href="http://code.google.com/p/ljxp/">LiveJournal Crossposter</a>. If you use it, you&#8217;ve probably been pulling your hair out all week because it stops WordPress in its tracks when LJ is down. I&#8217;ve fixed it so it just shows you an error under the &#8220;Post published/updated&#8221; message instead. I had been tinkering with it for my own use anyway, adding support for userpics, fixing a problem with [gallery] tags posting the wrong images, and making it use a proper meta box (which means it now behaves like all the other boxes on the Edit Post screen; you can collapse it or move it around or turn it off entirely in Screen Options).</p>
<p>Since LJ was hosed, I decided to go ahead and release my version, and it&#8217;s now up <a href="http://code.google.com/p/ljxp/downloads/list">on the Google Code site</a>. I&#8217;m still waiting on the old developers to authorize me on <a href="http://wordpress.org/extend/plugins/lj-xp/">Extend</a>, which will let me update the plugin there and show everybody a nice auto-upgrade notice. (ETA 7/30/11: It&#8217;s there!) In the meantime, if you don&#8217;t mind uploading plugins by hand, you can upgrade now. (Note that old versions were inconsistent about directory and file names. This one is <code>lj-xp</code>. If your plugin directory was called <code>ljxp</code> or <code>lj-crosspost</code>, you should either remove that or, if you upload this one alongside the old one, deactivate your old version before activating this one.)</p>
<p>I&#8217;ve cleaned out the <a href="http://code.google.com/p/ljxp/issues/list">issue tracker</a>, so if you have problems with the new 2.1 version, you can post them there. The error thing is still pretty hinky &#8212; WordPress doesn&#8217;t have a very good built-in way to show custom errors, if you can believe that! &#8212; but I&#8217;m working on it.</p>
<p>(I know: LJ is back up now. I really wanted to update the existing version rather than posting a copy in <em>yet another</em> location, and it took a while to get my version ready and contact the old developers, who&#8217;ve long since abandoned the project. However, we&#8217;re in touch now, and it&#8217;ll all be much better the next time Russia decides to play DDoS games with its primary blogging service.)</p>
<p>On Saturday, I released <a href="http://sillybean.net/code/wordpress/html-import-2/">HTML Import 2</a>, as <a href="http://sillybean.net/2011/06/html-import-2-0-beta/">promised</a>. (Actually a little ahead of schedule, so the <a href="http://2011.boston.wordcamp.org/">WordCamp Boston</a> folks could grab it.) This is the big update that imports images along with the HTML files, uses index.html (or some other specified default file) for parent page content, supports custom post types, fixes problems with special characters, and bunches of other stuff. It also has a spiffy new <a href="http://sillybean.net/downloads/html-import/user-guide.html">user guide</a>.</p>
<p><a href="http://sillybean.net/code/wordpress/content-audit/">Content Audit</a> also got a big update. There was a compatibility problem with WordPress 3.2, which is now fixed. People had requested that authors not be able to audit their own posts, so I&#8217;ve added that feature. There were some big problems with auditing media files and with scheduling email notifications, all of which have been taken care of.</p>
<p>There was an issue with roles and permissions in <a href="http://sillybean.net/code/wordpress/dashboard-notepad/">Dashboard Notepad</a>, so that&#8217;s been updated.</p>
<p>As I was digging through old code, I discovered that <a href="http://sillybean.net/code/wordpress/assign-missing-categories/">Assign Missing Categories</a> and <a href="http://sillybean.net/code/wordpress/mass-format-conversion-for-wordpress/">Mass Format Conversion</a> both had some outdated stuff, and neither had ever been localized, so I took care of that.</p>
<p><a href="http://sillybean.net/code/wordpress/private-suite/">Private Suite</a> is somewhat outdated now that 3.2 includes some fixes for displaying private pages, so that&#8217;s up next.</p>
]]></content:encoded>
			<wfw:commentRss>http://sillybean.net/2011/07/plugin-updates-galore-html-import-2-content-audit-dashboard-notepad-and-bonus-livejournal-crossposter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Q: Beginning WordPress 3 was written for 3.0. Does that mean it&#8217;s outdated?</title>
		<link>http://sillybean.net/2011/07/q-beginning-wordpress-3-was-written-for-3-0-does-that-mean-its-outdated/</link>
		<comments>http://sillybean.net/2011/07/q-beginning-wordpress-3-was-written-for-3-0-does-that-mean-its-outdated/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 16:33:38 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://sillybean.net/?p=6789</guid>
		<description><![CDATA[<p>A: Nope! The book is not very outdated at all, which is why we haven&#8217;t done a new edition. I got lucky, and both <a href="http://wordpress.org/news/2011/02/threeone/">3.1</a> and <a href="http://wordpress.org/news/2011/07/gershwin/">3.2</a> were relatively minor releases. I&#8217;ve just updated the <a href="http://sillybean.net/?p=5285">Updates and Errata page</a> for …</p>]]></description>
			<content:encoded><![CDATA[<p>A: Nope! The book is not very outdated at all, which is why we haven&#8217;t done a new edition. I got lucky, and both <a href="http://wordpress.org/news/2011/02/threeone/">3.1</a> and <a href="http://wordpress.org/news/2011/07/gershwin/">3.2</a> were relatively minor releases. I&#8217;ve just updated the <a href="http://sillybean.net/?p=5285">Updates and Errata page</a> for the book to include a quick rundown of what&#8217;s changed since 3.0. If you haven&#8217;t gotten a copy yet, <a href="http://www.amazon.com/Beginning-WordPress-Experts-Voice-Development/dp/1430228954/">you totally should</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://sillybean.net/2011/07/q-beginning-wordpress-3-was-written-for-3-0-does-that-mean-its-outdated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

