<?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>GeneralThreat.com &#187; projects</title>
	<atom:link href="http://www.generalthreat.com/tag/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.generalthreat.com</link>
	<description>Dangerously different projects and code</description>
	<lastBuildDate>Sun, 19 Jan 2014 20:00:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>Plugins now available on GitHub</title>
		<link>http://www.generalthreat.com/2012/12/plugins-now-available-on-github/</link>
		<comments>http://www.generalthreat.com/2012/12/plugins-now-available-on-github/#comments</comments>
		<pubDate>Tue, 11 Dec 2012 02:42:41 +0000</pubDate>
		<dc:creator><![CDATA[David]]></dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.generalthreat.com/?p=97</guid>
		<description><![CDATA[Most of my WordPress plugins are now mirrored on GitHub! This includes Networks for WordPress, which I have traditionally not linked back to this site.]]></description>
				<content:encoded><![CDATA[<p>Most of my WordPress plugins are <a href="https://github.com/ddean4040">now mirrored on GitHub</a>! </p>
<p>This includes Networks for WordPress, which I have traditionally not linked back to this site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.generalthreat.com/2012/12/plugins-now-available-on-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bbPress Topics for Posts</title>
		<link>http://www.generalthreat.com/projects/bbpress-post-topics/</link>
		<comments>http://www.generalthreat.com/projects/bbpress-post-topics/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 19:33:00 +0000</pubDate>
		<dc:creator><![CDATA[David]]></dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[bbpress]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.generalthreat.com/?page_id=55</guid>
		<description><![CDATA[Automate use of an integrated bbPress forum install for handling comments on your WordPress posts and pages. About About This plugin adds an option to the Discussion meta box allowing an author to create&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[<p>Automate use of an integrated bbPress forum install for handling comments on your WordPress posts and pages.</p>
<p><div class='postTabs_divs postTabs_curr_div' id='postTabs_0_55'>
<span class='postTabs_titles'><b>About</b></span></p>
<h3>About</h3>
<p>This plugin adds an option to the Discussion meta box allowing an author to create a new bbPress forum topic, or select an existing one, to attach to his post or page.  A site admin can also set a default forum for all new posts and pages.</p>
<p>Now authors can select from a wealth of display options, from the full topic to a simple link, and the display system has hooks for extension by developers or integrators.  The topic itself is built according to a rich template system to accommodate any site.</p>
<p></div>

<div class='postTabs_divs' id='postTabs_1_55'>
<span class='postTabs_titles'><b>Filters</b></span></p>
<h3>Some of the filters you can use to customize bbPress Topics for Posts to fit your needs:</h3>
<dl>
<dt><code>bbppt_eligible_post_status ( array( 'publish' ) )</code></dt>
<dd>Return an array of post statuses that you want to trigger new topic creation (when selected). By default, this is only publish.</dd>
<dt><code>bbppt_eligible_post_types ( array( 'post', 'page' ) )</code></dt>
<dd>Return an array of post types that you want to be able to associate with topics. By default, posts and pages are included.</dd>
<dt><code>bbppt_topic_content ( $topic_content, $post_ID )</code></dt>
<dd>Filter the content of the topic to be created. The first parameter is the topic content generated according to your template.  The second is the ID of the current post or page.</dd>
</dl>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.generalthreat.com/projects/bbpress-post-topics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BuddyPress Group Organizer</title>
		<link>http://www.generalthreat.com/projects/buddypress-group-organizer/</link>
		<comments>http://www.generalthreat.com/projects/buddypress-group-organizer/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 02:05:43 +0000</pubDate>
		<dc:creator><![CDATA[David]]></dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[buddypress]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.generalthreat.com/?page_id=50</guid>
		<description><![CDATA[About Easily organize your BuddyPress groups with drag and drop simplicity. Also known as the BP Group Organizer, this plugin adds a page to your BuddyPress admin menu letting you easily drag and drop&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[<p><div class='postTabs_divs postTabs_curr_div' id='postTabs_0_50'>
<span class='postTabs_titles'><b>About</b></span></p>
<p>Easily organize your <a href="http://buddypress.org">BuddyPress</a> groups with drag and drop simplicity. </p>
<p>Also known as the BP Group Organizer, this plugin adds a page to your BuddyPress admin menu letting you easily drag and drop your groups around, or create new groups just by filling out a single form.  No more paging through the group creation screen over and over again when setting up a new BuddyPress site!</p>
<p></div>

<div class='postTabs_divs' id='postTabs_1_50'>
<span class='postTabs_titles'><b>API for Developers</b></span></p>
<h3>Actions for extending the Organizer</h3>
<h5>bp_group_organizer_display_new_group_options</h5>
<p>Hook this action to display custom options when creating new groups in the Organizer.</p>
<h5>bp_group_organizer_display_group_options</h5>
<p>Hook this action to display custom options when creating new groups in the Organizer.</p>
<p>Parameters:</p>
<ul>
<li><code>$group</code> &#8211; object of group being edited in the Organizer</li>
</ul>
<h5>bp_group_organizer_save_new_group_options</h5>
<p>Hook this action to save custom options when users create new groups in the Organizer.</p>
<p>Parameters:</p>
<ul>
<li><code>$group_id</code> &#8211; ID of newly-created group</li>
</ul>
<h5>bp_group_organizer_save_group_options</h5>
<p>Hook this action to save custom options when users save changes in the Organizer.</p>
<p>Parameters:</p>
<ul>
<li><code>$group</code> &#8211; array of POSTed group options</li>
<li><code>$group_reference</code> &#8211; BP_Groups_Group object of the group being saved</li>
</ul>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.generalthreat.com/projects/buddypress-group-organizer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BuddyPress Group Hierarchy</title>
		<link>http://www.generalthreat.com/projects/buddypress-group-hierarchy/</link>
		<comments>http://www.generalthreat.com/projects/buddypress-group-hierarchy/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 02:26:32 +0000</pubDate>
		<dc:creator><![CDATA[David]]></dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[buddypress]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.generalthreat.com/?page_id=44</guid>
		<description><![CDATA[A plugin for BuddyPress that allows groups to belong to other groups About Features: Unlimited group hierarchy &#8211; nest groups as deeply as you like Per-group control over subgroups &#8211; create a site with&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[<p>A plugin for BuddyPress that allows groups to belong to other groups</p>
<p><div class='postTabs_divs postTabs_curr_div' id='postTabs_0_44'>
<span class='postTabs_titles'><b>About</b></span></p>
<p>Features:</p>
<ul>
<li>Unlimited group hierarchy &#8211; nest groups as deeply as you like</li>
<li>Per-group control over subgroups &#8211; create a site with &#8220;sections,&#8221; or keep certain groups free of user-created subgroups</li>
<li>Toggle top-level group creation &#8211; keep as much control over the hierarchy as your needs dictate</li>
<li>Expandable tree display that can replace — or supplement — the main group list</li>
</ul>
<p>Language support for:</p>
<ul>
<li>Spanish translation generously provided by <a href="http://dorsvenabili.com">_DorsVenabili</a></li>
<li>Russian translation generously provided by Roman</li>
<li>Slovak translation generously provided by Branco, (<a href="http://webhostinggeeks.com/blog/">WebHostingGeeks.com</a>)</li>
<li>Danish translation generously provided by Mort3n</li>
<li>French translation generously provided by Mecanographik</li>
<li>Brazilian Portugese translation generously provided by <a href="http://wordpress.org/support/profile/stickfinger">stickFinger</a></li>
<li>Dutch translation generously provided by Zé Vandenhoeck</li>
<li>Italian translation generously provided by Stefano Colarelli</li>
</ul>
<p></div>

<div class='postTabs_divs' id='postTabs_1_44'>
<span class='postTabs_titles'><b>FAQ</b></span></p>
<h5>Does privacy or status propagate from group to subgroup?</h5>
<p>&mdash; No. The plugin creates a hierarchy of group URLs, but does not put restrictions on the subgroup.</p>
<h5>Are group members automatically added to a subgroup?</h5>
<p>&mdash; No. I don&#8217;t know how you will want to use subgroups, so no assumptions have been made.</p>
<h5>If I restrict new groups to member or admins, can a subgroup be made with more lenient restrictions?</h5>
<p>&mdash; Yes. Restrictions affect only the group to which they are applied. Subgroups can themselves be more or less restrictive.</p>
<h5>Do activity stream messages propagate up (from child to parent) or down (from parent to child)?</h5>
<p>No. This function was available (without an interface) but was removed, possibly for use in a forthcoming project.</p>
<p></div>

<div class='postTabs_divs' id='postTabs_2_44'>
<span class='postTabs_titles'><b>API for Developers</b></span></p>
<h2>Filters</h2>
<h5>bp_group_hierarchy_directory_order_sort</h5>
<p>[coming soon]</p>
<h5>bp_group_hierarchy_available_parent_groups</h5>
<p>Filter this array to limit the groups presented as possible parents when creating a new group</p>
<p>Parameters:</p>
<ul>
<li><code>$display_groups</code> &#8211; array of available, active groups</li>
<li><code>$group</code> &#8211; BP_Group_Hierarchy object of the group being created or edited</li>
</ul>
<h5>bp_group_hierarchy_subgroup_permission_options</h5>
<p>Filter this array to add or remove subgroup creation permission options</p>
<p>Parameters:</p>
<ul>
<li><code>$permission_options</code> &#8211; array of available permission options</li>
<li><code>$group</code> &#8211; BP_Group_Hierarchy object of the group being created or edited</li>
</ul>
<h5>bp_group_hierarchy_enforce_subgroup_permission_{your permission name}</h5>
<p>Return TRUE to allow a user to create subgroups; allows custom subgroup creation permission options</p>
<p>Parameters:</p>
<ul>
<li><code>$user_id</code> &#8211; ID of the user seeking to add child group</li>
<li><code>$group_id</code> &#8211; ID of the group user is trying to use as parent</li>
</ul>
<h2>Actions</h2>
<h5>bp_group_hierarchy_route_requests</h5>
<p>Run after BuddyPress is initialized, but before it makes page routing decisions. Can be used for setting cookies and sending params to pages that don&#8217;t otherwise accept them.</p>
<h2>Functions for theme developers</h2>
<p>No parameters are needed for these functions when run in the loop.</p>
<h5>bp_group_hierarchy_full_name()</h5>
<p>Echoes the name of the current group and all its ancestors.<br /> Use <code>bp_group_hierarchy_get_full_name()</code> for more advanced options.</p>
<h5>bp_group_hierarchy_breadcrumbs()</h5>
<p>Echoes a string of links to the current group and all its ancestors.<br /> Use <code>bp_group_hierarchy_get_breadcrumbs()</code> for more advanced options.</p>
<h5>bp_group_hierarchy_get_breadcrumbs( $separator = &#8216; | &#8216;, $group = null )</h5>
<p>Returns a string of links to the current group and all its ancestors.</p>
<h5>bp_group_hierarchy_has_subgroups()</h5>
<p>Returns the number of subgroups, including 0 if the group has none.</p>
<h5>bp_group_hierarchy_get_subgroups()</h5>
<p>Returns an array containing the IDs of the direct descendants of the current group.</p>
<h5>bp_group_hierarchy_has_parent()</h5>
<p>Returns the ID of the parent group, or 0 if the group is at the top level.</p>
<h5>bp_group_hierarchy_get_parents()</h5>
<p>Returns an array containing the IDs of the ancestors of the current group.</p>
<h2>Functions for plugin developers or integrators</h2>
<h5>groups_hierarchy_create_group( array $params )</h2>
<p>A hierarchy-aware wrapper for the BuddyPress <code>groups_create_group</code> function. Can be used the same way, but also accepts a <code>parent_id</code> parameter to specify a new group&#8217;s parent group.</p>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.generalthreat.com/projects/buddypress-group-hierarchy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lists Improved for DokuWiki</title>
		<link>http://www.generalthreat.com/projects/lists-improved-for-dokuwiki/</link>
		<comments>http://www.generalthreat.com/projects/lists-improved-for-dokuwiki/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 23:41:13 +0000</pubDate>
		<dc:creator><![CDATA[David]]></dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[dokuwiki]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.generalthreat.com/?page_id=12</guid>
		<description><![CDATA[Background DokuWiki is a fantastic tool for collaborative documentation, but the included editor is a little rough around the edges in list management. WYSIWYG editors not only go against the spirit of the wiki,&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[<h3>Background</h3>
<p><a href="http://www.dokuwiki.org">DokuWiki</a> is a fantastic tool for collaborative documentation, but the included editor is a little rough around the edges in list management. <abbr title="What You See is What You Get">WYSIWYG</abbr> editors not only go against the spirit of the wiki, but also paint with broad strokes, eliminating the fine detail and tweaks that are a developer&#8217;s joy.</p>
<p>Lists Improved enhances list management by changing some key behaviors and creating intuitive actions. For the time being, it does <strong>NOT</strong> work in Internet Explorer.</p>
<ul>
<li>Press <strong>Enter</strong> on a list item to create another of the same type and level.</li>
<li>Use <strong>Tab</strong> and <strong>Shift + Tab</strong> to indent and outdent list items.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.generalthreat.com/projects/lists-improved-for-dokuwiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Network Lab Manager</title>
		<link>http://www.generalthreat.com/projects/network-lab-manager/</link>
		<comments>http://www.generalthreat.com/projects/network-lab-manager/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 23:26:58 +0000</pubDate>
		<dc:creator><![CDATA[David]]></dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Cisco]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.generalthreat.com/?page_id=11</guid>
		<description><![CDATA[A system for managing a network test rack]]></description>
				<content:encoded><![CDATA[<h3>What:</h3>
<p>A system for coordinating network equipment in a test lab. Allows you to track your test equipment and create configuration &#8220;sets&#8221; for projects.<br />
A group of automatically generated tags provides a convenient mechanism for finding the right set for your project. Syntax highlighting helps you quickly scan configuration files for the info you need.</p>
<h3>Why:</h3>
<p>While working toward my <a>CCIP</a> certification, I needed a way to manage the many setups that I used on a small rack of test equipment. After fighting with other methods, I created the Network Lab Manager so that I could focus on network experiments instead of file management.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.generalthreat.com/projects/network-lab-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>email me</title>
		<link>http://www.generalthreat.com/projects/email-me/</link>
		<comments>http://www.generalthreat.com/projects/email-me/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 05:05:48 +0000</pubDate>
		<dc:creator><![CDATA[David]]></dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.generalthreat.com/?page_id=9</guid>
		<description><![CDATA[A rudimentary copy-and-paste bookmarklet for iPhone]]></description>
				<content:encoded><![CDATA[<p><div class='postTabs_divs postTabs_curr_div' id='postTabs_0_9'>
<span class='postTabs_titles'><b>About</b></span></p>
<h3>What is it?</h3>
<p>A bookmarklet for the iPhone that delivers rudimentary copy and paste functionality. Data is stored in <a href="http://ajaxian.com/archives/whats-in-a-windowname">window.name</a>, so the usual security caveats apply.</p>
<p>This is primarily a proof of concept for working with <a href="http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/">iPhone-specific event handlers</a>, and is presented with that goal in mind. A few liberties have been taken with JavaScript syntax since there is a single platform in play and every character counts.</p>
<p>The necessary style sheet is included via a data URI. This turned out to be a nice way to avoid any server-side dependencies.</p>
<h3>How is it used?</h3>
<p>Hold down with one finger on the screen to pop up the context menu, which will vary depending on the status of the window.name variable. An additional option is exposed if you hold down over a paragraph (must be a real paragraph with a &lt;P&gt; tag). See line 55 of the source.</p>
<p></div>

<div class='postTabs_divs' id='postTabs_1_9'>
<span class='postTabs_titles'><b>Source</b></span></p>
<p>Here is an uncondensed version for your perusal.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span>
mD<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
d<span style="color: #339933;">=</span>document<span style="color: #339933;">;</span>
cT<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  clearTimeout<span style="color: #009900;">&#40;</span>mD<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">;</span>
data<span style="color: #339933;">=</span><span style="color: #009900;">&#123;</span>
  url<span style="color: #339933;">:</span><span style="color: #3366CC;">''</span><span style="color: #339933;">,</span>text<span style="color: #339933;">:</span><span style="color: #3366CC;">''</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">;</span>
d.<span style="color: #660066;">ontouchstart</span><span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>ev<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  t<span style="color: #339933;">=</span>ev.<span style="color: #660066;">touches</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">target</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>t.<span style="color: #660066;">id</span><span style="color: #339933;">!=</span><span style="color: #3366CC;">'contextMenu'</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #009900;">&#40;</span>t.<span style="color: #660066;">nodeName</span><span style="color: #339933;">!=</span><span style="color: #3366CC;">'A'</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span>t.<span style="color: #660066;">parentNode</span>.<span style="color: #660066;">nodeName</span><span style="color: #339933;">!=</span><span style="color: #3366CC;">'A'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    rCM<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    mD<span style="color: #339933;">=</span>setTimeout<span style="color: #009900;">&#40;</span>sCM<span style="color: #339933;">,</span><span style="color: #CC0000;">500</span><span style="color: #339933;">,</span>ev<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    d.<span style="color: #660066;">ontouchmove</span><span style="color: #339933;">=</span>cT<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">;</span>
d.<span style="color: #660066;">ontouchend</span><span style="color: #339933;">=</span>cT<span style="color: #339933;">;</span>
rCM<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>cM<span style="color: #339933;">=</span>d.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'contextMenu'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    cM.<span style="color: #660066;">parentNode</span>.<span style="color: #660066;">removeChild</span><span style="color: #009900;">&#40;</span>cM<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">;</span>
rP<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>ev<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  ps<span style="color: #339933;">=</span>d.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'textarea'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i
<span style="color: #CC0000;">150</span><span style="color: #339933;">?</span><span style="color: #009900;">&#40;</span>t.<span style="color: #660066;">pageY</span><span style="color: #339933;">-</span><span style="color: #CC0000;">150</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'px'</span><span style="color: #339933;">;</span>
  cM.<span style="color: #660066;">style</span>.<span style="color: #660066;">left</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>t.<span style="color: #660066;">pageX</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #CC0000;">150</span><span style="color: #339933;">?</span><span style="color: #009900;">&#40;</span>t.<span style="color: #660066;">pageX</span><span style="color: #339933;">-</span><span style="color: #CC0000;">150</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'px'</span><span style="color: #339933;">;</span>
  cM.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'none'</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">name</span><span style="color: #339933;">!=</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    html<span style="color: #339933;">=</span>unescape<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%3Cli%3E%3Ca href=%22#paste%22 onclick=%22rP();rCM();return false;%22%3EP%3C/a%3E%3C/li%3E%3Cli%3E%3Ca href=%22mailto:friend?subject=Web Link&amp;amp;body='</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span>window.<span style="color: #660066;">name</span><span style="color: #339933;">+</span>unescape<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%22%3EE%3C/a%3E%3C/li%3E%3Cli%3E%3Ca href=%22#clear%22 onclick=%22window.name=<span style="color: #000099; font-weight: bold;">\'</span><span style="color: #000099; font-weight: bold;">\'</span>;rCM();return false;%22%3EC%3C/a%3E%3C/li%3E'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
    html<span style="color: #339933;">=</span>unescape<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%3Cli%3E%3Ca onclick=%22window.name=data.url;%22%3EURI%3C/a%3E%3C/li%3E'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    data.<span style="color: #660066;">url</span><span style="color: #339933;">=</span>escape<span style="color: #009900;">&#40;</span>location.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>tt.<span style="color: #660066;">nodeName</span><span style="color: #339933;">==</span><span style="color: #3366CC;">'#text'</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span>tt.<span style="color: #660066;">parentNode</span>.<span style="color: #660066;">nodeName</span><span style="color: #339933;">==</span><span style="color: #3366CC;">'P'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      html<span style="color: #339933;">+=</span>unescape<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%3Cli%3E%3Ca onclick=%22window.name=data.text;%22%3E¶%3C/a%3E%3C/li%3E'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      data.<span style="color: #660066;">text</span><span style="color: #339933;">=</span>escape<span style="color: #009900;">&#40;</span>tt.<span style="color: #660066;">parentNode</span>.<span style="color: #660066;">innerHTML</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">' from: '</span><span style="color: #339933;">+</span>location.<span style="color: #660066;">href</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
  cM.<span style="color: #660066;">innerHTML</span><span style="color: #339933;">=</span>html<span style="color: #339933;">;</span>
  d.<span style="color: #660066;">body</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>cM<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  cM.<span style="color: #660066;">style</span>.<span style="color: #660066;">display</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'block'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">;</span>
init<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  css<span style="color: #339933;">=</span>d.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'link'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  css.<span style="color: #660066;">type</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'text/css'</span><span style="color: #339933;">;</span>
  css.<span style="color: #660066;">rel</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'stylesheet'</span><span style="color: #339933;">;</span>
  css.<span style="color: #660066;">href</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'data:text/css;base64,I2NvbnRleHRNZW51IHtsaXN0LXN0eWxlLXR5cGU6IG5vbmU7cG9zaXRpb246IGFic29sdXRlO29wYWNpdHk6IDAuODttYXJnaW46IDA7cGFkZGluZzogMTBweDtiYWNrZ3JvdW5kLWNvbG9yOiAjNmY4NmEzO3dpZHRoOiAyNSU7aGVpZ2h0OiAyNSU7Zm9udC1mYW1pbHk6IFwiTHVjaWRhIEdyYW5kZVwiLHNhbnMtc2VyaWY7fQ0KI2NvbnRleHRNZW51IGxpIHtmbG9hdDogbGVmdDt9DQojY29udGV4dE1lbnUgYSB7ZGlzcGxheTogYmxvY2s7dGV4dC1hbGlnbjogY2VudGVyO3RleHQtZGVjb3JhdGlvbjogbm9uZTtmb250LXNpemU6IDNlbTttaW4td2lkdGg6IDFlbTtwYWRkaW5nOiAxMHB4O2JvcmRlcjogMXB4IHNvbGlkICNjY2M7Y29sb3I6ICNmZmY7fQ0KI2NvbnRleHRNZW51IGE6aG92ZXIge2JvcmRlci1jb2xvcjogI2ZmZjt9'</span><span style="color: #339933;">;</span>
  d.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'head'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>css<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">;</span>
init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p></div>

</p>
]]></content:encoded>
			<wfw:commentRss>http://www.generalthreat.com/projects/email-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scansion</title>
		<link>http://www.generalthreat.com/projects/scansion/</link>
		<comments>http://www.generalthreat.com/projects/scansion/#comments</comments>
		<pubDate>Tue, 20 Feb 2007 05:15:01 +0000</pubDate>
		<dc:creator><![CDATA[David]]></dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[ahah]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[poetry]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.generalthreat.com/?page_id=5</guid>
		<description><![CDATA[Interactive poetry analysis ]]></description>
				<content:encoded><![CDATA[<h3>What:</h3>
<p>A way to explore poems visually. Apply and remove stress from syllables and see the effect on meter immediately. Also, alter syllabic construction of words with ease. Great for working with poems from different time periods.</p>
<h3>Features:</h3>
<ul>
<li>Javascript interface for quick modifications with no interruptions</li>
<li>Automatic syllable detection enhanced by memory of previous modifications</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.generalthreat.com/projects/scansion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sudoku</title>
		<link>http://www.generalthreat.com/vault/sudoku/</link>
		<comments>http://www.generalthreat.com/vault/sudoku/#comments</comments>
		<pubDate>Mon, 29 May 2006 04:18:31 +0000</pubDate>
		<dc:creator><![CDATA[David]]></dc:creator>
				<category><![CDATA[Archive]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.generalthreat.com/?page_id=7</guid>
		<description><![CDATA[Programmatic form generator test]]></description>
				<content:encoded><![CDATA[<h3>What:</h3>
<p>Programmatic form generator test. Play sudoku with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.generalthreat.com/vault/sudoku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PDFMaker</title>
		<link>http://www.generalthreat.com/vault/pdfmaker/</link>
		<comments>http://www.generalthreat.com/vault/pdfmaker/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 04:13:24 +0000</pubDate>
		<dc:creator><![CDATA[David]]></dc:creator>
				<category><![CDATA[Archive]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://www.generalthreat.com/?page_id=4</guid>
		<description><![CDATA[PHP-based essay renderer with MySQL backend]]></description>
				<content:encoded><![CDATA[<h3>What:</h3>
<p>Generates properly formatted <abbr title="Portable Document Format">PDF</abbr> essays with optional <abbr title="Modern Languages Association">MLA</abbr> citation based on text typed into a web form. Uses the CezPDF class.</p>
<h3>Why:</h3>
<p>Throughout college I had one of these, an Intermec 6651.<a href="http://www.pencomputing.com/frames/textblock_intermec_6651.html"><img style="width: 5.5em; height: 5.7em; border: 0px;" src="http://www.generalthreat.com/intermec_6651.jpg" alt="picture of an Intermec 6651 - this link may die at any moment" align="right" /></a></p>
<p>While it is a nice little machine, probably the most portable computer I&#8217;ll ever own, it doesn&#8217;t have a word processor worth a dime. And at 90 MHz, it&#8217;s way too slow for something like TextMaker. What it does have, though, is perfectly good wireless access. So when I got an off-campus place, I needed a way to finish papers in those crucial 15 minutes before class, and PDFMaker was born.</p>
<h3>Features:</h3>
<ul>
<li>Make printable, final-grade quality documents from any web browser, on any system.</li>
<li>Stores the paper in editable form between sessions for easy revisions.</li>
<li>A variety of formatting options, with optional citation support.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.generalthreat.com/vault/pdfmaker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

 Served from: www.generalthreat.com @ 2026-06-09 04:00:52 by W3 Total Cache -->