<?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>Archetyped</title>
	<atom:link href="http://archetyped.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://archetyped.com</link>
	<description>Explore, Experiment, Inspire</description>
	<lastBuildDate>Fri, 17 May 2013 21:52:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>30 Days of Email Domination: Workout</title>
		<link>http://archetyped.com/blog/30-days-email-domination-workout/</link>
		<comments>http://archetyped.com/blog/30-days-email-domination-workout/#comments</comments>
		<pubDate>Sun, 05 May 2013 02:47:37 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[30 Days]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Experiment]]></category>
		<category><![CDATA[Failure]]></category>
		<category><![CDATA[Progress]]></category>

		<guid isPermaLink="false">http://archetyped.com/auto-draft/</guid>
		<description><![CDATA[<p>The Warm Up I don&#8217;t really want to check my email. Four weeks have passed and the idea of processing my messages feels really foreign. It feels strange loading up Gmail without doing a specific search to find a particular message. I just checked and it&#8217;s actually been 5 weeks since I last saw the ...</p><p>The post <a href="http://archetyped.com/blog/30-days-email-domination-workout/">30 Days of Email Domination: Workout</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></description>
				<content:encoded><![CDATA[<h2>The Warm Up</h2>
<p>I don&#8217;t really want to check my email. Four weeks have passed and the idea of <em>processing</em> my messages feels really foreign.</p>
<p>It feels strange loading up Gmail without doing a <a title="Custom Gmail searches" href="http://archetyped.com/blog/30-days-email-domination-skip-day/">specific search</a> to find a particular message.</p>
<p>I just checked and it&#8217;s actually been <strong>5 weeks</strong> since I last saw the inside of my inbox. Oops.</p>
<p>I suppose I should check my messages today or soon <strong>6 weeks</strong> will have passed without email (is that such a bad thing?).</p>
<p>Let&#8217;s do this.</p>
<h2>Post Workout</h2>
<p>I just finished processing nearly 400 messages and I&#8217;m exhausted. I didn&#8217;t like it at all.</p>
<p>Checking my email didn&#8217;t feel smooth or easy. Instead, it felt like something very <strong>unnatural</strong>.</p>
<p>Perhaps 4 weeks is too long to let email go unchecked, or perhaps 4 weeks is just long enough to <strong>stop caring about email</strong>. I&#8217;m all for that.</p>
<p>I can just barely hear a little voice in my ear telling me that I shouldn&#8217;t be giving email the time of day even if just once a month. It&#8217;s saying that I should let the email pile up and do whatever it wants to my inbox as long as I don&#8217;t have to touch it ever again. I can just cherry pick the messages I want from now on.</p>
<p>Sounds good to me.</p>
<p>At the same time, a more reasonable, even-tempered, and <strong>organized</strong> voice is screaming, pleading, and waving its hands frantically in the air to stop me from even <em>entertaining</em> such a notion.</p>
<p><strong>&#8220;Once you go down that road,&#8221; it says, &#8220;you can never come back.&#8221;</strong></p>
<p>You decide you want to get your inbox in order one day down the road? You&#8217;ll be in for a world of pain trying to clear the weeds and make the inbox fit for use once again.</p>
<p>&#8220;Far better to go back to processing messages every <a title="Checking email every 3 weeks" href="http://archetyped.com/blog/30-days-email-domination-three-weeks/">3 weeks</a>, &#8221; the voice quite reasonably assures me. After all, that yielded the fastest message processing time in months, and it was <em>easy</em>.</p>
<p><strong>If it&#8217;s easy, it&#8217;s not hard right?</strong></p>
<p>Okay, tiny reasonable voice, you win. I&#8217;ll go back to checking my messages once every 3 weeks&#8230;<strong>for now</strong>.</p>
<p>But I still like that <em>dropping-email-forever</em> idea, so you&#8217;ll have to be <em>very</em> convincing in 3 weeks.</p>
<h2>Today&#8217;s Stats</h2>
<ul>
<li>Checked email: 1 time</li>
<li>Time: 14:59:23</li>
<li>Total messages: 379
<ul>
<li>Inbox: 61</li>
<li>Bulk: 65</li>
<li>Important: 0</li>
<li>Action: 53</li>
<li>To Read: 53</li>
</ul>
</li>
<li>Management: 36
<ul>
<li>Incorrect Smart Label: 0</li>
<li>Unsubscribe: 33</li>
<li>Update filtering: 2</li>
<li>Spam: 1</li>
</ul>
</li>
<li>Time per Message
<ul>
<li>Inbox: 06:42 (9.1 messages/minute)</li>
<li>Bulk: 07:08 (9.1 messages/minute)</li>
<li>Management (filters, etc.): 11:15 (3.2 messages/minute)</li>
<li>Total: 25:05</li>
<li>Average: 15.1 messages/minute</li>
</ul>
</li>
</ul>
<p>The post <a href="http://archetyped.com/blog/30-days-email-domination-workout/">30 Days of Email Domination: Workout</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/blog/30-days-email-domination-workout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SLB 2.0: Release Candidate 2</title>
		<link>http://archetyped.com/lab/slb-2-0rc2/</link>
		<comments>http://archetyped.com/lab/slb-2-0rc2/#comments</comments>
		<pubDate>Thu, 02 May 2013 03:12:24 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Feature]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[RC]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Simple Lightbox]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://archetyped.com/auto-draft/</guid>
		<description><![CDATA[<p>The first release candidate of Simple Lightbox 2.0 was met with very positive feedback. Release Candidate 2 takes that feedback and optimizes things even further for an even better lightbox.</p><p>The post <a href="http://archetyped.com/lab/slb-2-0rc2/">SLB 2.0: Release Candidate 2</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>The <a title="Simple Lightbox 2.0RC1" href="http://archetyped.com/lab/slb-2-0rc1/">first release candidate</a> of <a title="Simple Lightbox" href="http://archetyped.com/tools/simple-lightbox/">Simple Lightbox</a> 2.0 was met with very positive feedback. Release Candidate 2 takes that feedback and optimizes things even further for an even better lightbox.</p>
<div class="highlight">
<h2>Release Candidate?</h2>
<p>For the uninitiated, a release candidate is a version that is considered ready for official release. All features are finished and there are no known bugs. As there are many users who depend on Simple Lightbox to work without issues, release candidates are vitally important to make sure the kinks are worked out before releasing a new version to the masses.</p>
</div>
<h2>Direct to your dashboard</h2>
<p>This release marks the first time SLB 2.0 will be accessible directly via WordPress&#8217; admin dashboard. SLB is used on a huge variety of WordPress websites so this will open up testing to many more users. It may also expose some issues with various setups and configurations, which is exactly what we need right now before the final version is released.</p>
<p>While quite stable for the hundreds of brave testers that have been enjoying beta versions of SLB 2.0 for several months via <a title="Simple Lightbox on GitHub" href="https://github.com/archetyped/simple-lightbox/">GitHub</a>, installing release candidates is not for the faint of heart. As with any prerelease version of any software, it is highly recommended that you test SLB 2.0 Release Candidate 2 on a staging server prior to updating your production site. As an added precaution, SLB even provides a beta notice on the plugin listings page so that no user is caught unaware.</p>
<div>
<div id="attachment_1278" class="wp-caption alignnone" style="width: 608px"><a href="http://archetyped.com/wp-content/uploads/slb_beta_notice.png"><img class="size-large wp-image-1278" alt="Simple Lightbox Beta Notice" src="http://archetyped.com/wp-content/uploads/slb_beta_notice-598x150.png" width="598" height="150" /></a><p class="wp-caption-text">Simple Lightbox Beta Notice</p></div>
</div>
<h2>Optimizations</h2>
<p>As previously mentioned, this release was completely focused on optimizations.</p>
<h3>JavaScript loaded in footer</h3>
<p>SLB&#8217;s JavaScript code that controls the lightbox functionality is now loaded in the document&#8217;s footer instead of the header. This will help pages to load faster.</p>
<p>Props to SLB user <strong>scruffy1</strong> for nudging me to <a title="Load SLB JS in footer" href="http://http://wordpress.org/support/topic/minor-js-issue">move JavaScript loading to the footer</a>. The truth is that I thought this was already implemented in a previous release, but it never made it in. Now it is, and it is good.</p>
<h3>A More Flexible Viewport</h3>
<p>SLB 2.0RC1 <a title="Simple Lightbox 2.0RC1" href="http://archetyped.com/lab/slb-2-0rc1/">unlocked the viewport</a> so that, in addition to being fully responsive in mobile browsers, users can still pinch and zoom in on the lightbox if they want to get a closer look. RC2 adds even greater flexibility by supporting non-conflicting settings that a responsive theme may be implementing. The result is increased compatibility with your responsive WordPress theme and an all-around smoother lightbox experience.</p>
<h3>Ready for Translations</h3>
<p>Now that SLB&#8217;s UI is locked down for v2.0, the time was right to generate a new POT file for localizing SLB. If you would like to provide a translation, simply <a title="Simple Lightbox on GitHub" href="https://github.com/archetyped/simple-lightbox/">fork SLB on GitHub</a> and submit a pull request with your translation file.</p>
<p>Check out WordPress&#8217; official documentation to <a title="WordPress Internationalization" href="http://codex.wordpress.org/I18n_for_WordPress_Developers">learn more about WordPress internationalization</a>.</p>
<h2>2.0 Final: Coming Soon</h2>
<p>It&#8217;s totally cool if you&#8217;re not comfortable with installing a beta version or even a release candidate on your site. You&#8217;ll just have to hold off from experiencing SLB 2.0 goodness for just a little bit longer while our brave testers kick the tires on these release candidates.</p>
<p>If you are feeling brave though, install SLB 2.0RC, and <a title="Send feedback for Simple Lightbox" href="https://github.com/archetyped/simple-lightbox/wiki/Reporting-Issues">send your feedback</a>!</p>
<p>The post <a href="http://archetyped.com/lab/slb-2-0rc2/">SLB 2.0: Release Candidate 2</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/slb-2-0rc2/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>SLB 2.0: Release Candidate 1</title>
		<link>http://archetyped.com/lab/slb-2-0rc1/</link>
		<comments>http://archetyped.com/lab/slb-2-0rc1/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 02:07:03 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Feature]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[RC]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Simple Lightbox]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://archetyped.com/auto-draft/</guid>
		<description><![CDATA[<p>Thanks to feedback from our brave testers, Simple Lightbox 2.0 is even closer to an official release with its latest update to Release Candidate status.</p><p>The post <a href="http://archetyped.com/lab/slb-2-0rc1/">SLB 2.0: Release Candidate 1</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></description>
				<content:encoded><![CDATA[<div class="notice">
<p><strong>Update: </strong><a title="SLB 2.0: Release Candidate 2" href="http://archetyped.com/lab/slb-2-0rc2/">Simple Lightbox 2.0 Release Candidate 2 has been released!</a></p>
</div>
<p>Thanks to feedback from our brave testers, <a title="Simple Lightbox 2.0: Beta" href="http://archetyped.com/lab/simple-lightbox-2-0-beta/">Simple Lightbox 2.0</a> is even closer to an official release with its latest update to <strong>Release Candidate status</strong>.</p>
<h2>Release Candidate?</h2>
<p>For the uninitiated, a release candidate is a version that is considered ready for official release. All features are finished and there are no known bugs. As there are many users who depend on Simple Lightbox to work without issues, release candidates are vitally important to make sure the kinks are worked out before releasing a new version to the masses.</p>
<p>That being said, this release candidate is the first version that may be made available to users via WordPress&#8217; admin dashboard. This will open up testing to many more users and may expose some issues with various setups and configurations, but that&#8217;s exactly what we need at this point. My only hope is that users read and understand the beta notice before updating SLB on their site.</p>
<div>
<div id="attachment_1278" class="wp-caption alignnone" style="width: 608px"><a href="http://archetyped.com/wp-content/uploads/slb_beta_notice.png"><img class="size-large wp-image-1278" alt="Simple Lightbox Beta Notice" src="http://archetyped.com/wp-content/uploads/slb_beta_notice-598x150.png" width="598" height="150" /></a><p class="wp-caption-text">Simple Lightbox Beta Notice</p></div>
</div>
<h2>Optimizations</h2>
<p>First off, SLB 2.0RC1 includes some notable optimizations.</p>
<h3>Component API file paths</h3>
<p>File paths set when registering various components for SLB such as Template Tags, Content Handlers, and Themes now follow the convention set by WordPress&#8217; own file loading functions like <code>wp_enqueue_script()</code>.</p>
<p>When the component APIs were introduced in <a title="SLB 2.0: Beta 7" href="http://archetyped.com/lab/slb-2-0-beta-7/">SLB 2.0 beta 7</a>, file paths were expected to be relative to WordPress&#8217; plugins directory. This effectively meant that only plugins could create component as files had exist in the plugins directory. To make things more flexible, file paths defined in all component APIs now require a full URI, just like WordPress&#8217; built-in file loading functions (<code>wp_register_script()</code>, <code>wp_enqueue_script()</code>, <code>wp_enqueue_style()</code>, etc.).</p>
<p>Custom components can now be added by plugins <em>and</em> themes. No favoritism here.</p>
<h3>Label text updated for internationalization</h3>
<p>Providing SLB in each user&#8217;s native language is very important. To that end, I a (long) walk through SLB&#8217;s <em>entire</em> codebase to check for any text labels (e.g. UI text) that did not yet support internationalization. The next update will include a file for contributors to translate all of SLB&#8217;s text into any language (even <a title="Simple Lightbox in Klingon - It's possible!" href="https://en.wikipedia.org/wiki/Klingon_language">Klingon</a>, if that&#8217;s your thing).</p>
<h2>Fixes</h2>
<p>Of course, no update to SLB would be complete without the carcasses of squashed bugs left in it&#8217;s wake and 2.0RC1 delivers.</p>
<h3>Unlocking the Viewport</h3>
<p>In order to display properly on mobile devices, SLB modifies the browser&#8217;s <code>viewport</code> property while a lightbox is displayed. This allows the lightbox to fill these small screens, making it easier to view the lightbox&#8217;s content without distraction. However, prior to 2.0RC1, the viewport settings and associated CSS were a bit too aggressive, and while they properly filled the screen with content, they also restricted zooming in to get a closer look at the content in the lightbox.</p>
<p>The viewport settings and CSS have been updated in 2.0RC1 to be more flexible. Now, while the lightbox still fills the screen, users are able to zoom in on the content. SLB user zephyr88 was the first to <a title="Viewport bug report" href="https://github.com/archetyped/simple-lightbox/issues/8">report the issue</a>, so this bug fix shall henceforth be referred to as <strong>Zooming Zephyr</strong> in honor of their contribution.</p>
<h3>Group Navigation</h3>
<p>How often do you do this: Open a group of images in SLB, navigate through a few photos, and close it. Then, open up a <em>different</em> group of images on the same page and navigate through those images.</p>
<p>It sounds complicated, but it&#8217;s really quite common. Strangely, SLB was having a bit of problem navigating through a 2nd group of images, but only if you had previously viewed another group of images first.</p>
<p>This issue took a bit of time to track down because it was affecting such low-level behavior (i.e. navigating between grouped images). In the end, the issue was caused by object references leaking into a JavaScript object&#8217;s prototype&#8211; yeah, that old one. Thankfully the fix was simple and SLB user larryjmoore <a title="Group Navigation bug" href="https://github.com/archetyped/simple-lightbox/issues/6">caught the bug and reported it</a> in time for this update. To commemorate his contribution, the fix to this group navigation bug is named <strong>Larry the Navigator</strong>.</p>
<h2>Release Candidate 2?</h2>
<p>Whether there will be additional release candidates after this one strongly depends on user feedback and bug reports. If you find a bug, please <a title="Report your issue for Simple Lightbox" href="https://github.com/archetyped/simple-lightbox/wiki/Reporting-Issues">report it</a> so that it can be attended to.</p>
<p>I&#8217;m very excited about SLB 2.0 and I want everyone to be able to use all the new features, so let&#8217;s squash some bugs and get this thing released!</p>
<p>The post <a href="http://archetyped.com/lab/slb-2-0rc1/">SLB 2.0: Release Candidate 1</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/slb-2-0rc1/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>30 Days of Email Domination: Three Weeks</title>
		<link>http://archetyped.com/blog/30-days-email-domination-three-weeks/</link>
		<comments>http://archetyped.com/blog/30-days-email-domination-three-weeks/#comments</comments>
		<pubDate>Sun, 07 Apr 2013 22:28:12 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Feature]]></category>
		<category><![CDATA[30 Days]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Experiment]]></category>
		<category><![CDATA[Progress]]></category>

		<guid isPermaLink="false">http://archetyped.com/auto-draft/</guid>
		<description><![CDATA[<p>After 3 weeks away from the inbox, I was not looking forward to checking my email today. Would it be too much?</p><p>The post <a href="http://archetyped.com/blog/30-days-email-domination-three-weeks/">30 Days of Email Domination: Three Weeks</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I was not looking forward to checking my email today.</p>
<p>Processing 3 week&#8217;s worth of messages in 10 minutes or less seemed <strong>highly unlikely</strong>. I had 67% more messages to process this time than last time (2 week&#8217;s worth of messages) and I only just made it under 10 minutes (09:34) then.</p>
<p>Basically, I had no chance.</p>
<h2>Inbox</h2>
<p>Interestingly, though I was processing 3 week&#8217;s worth of messages, today&#8217;s message processing rate (MPR) in the inbox was pretty close to the inbox MPR when processing 1 or 2 week&#8217;s worth of messages. This may indicate that the same <em>type</em> of messages are in the inbox each time, with the rest of the messages being properly routed to the appropriate <a title="30 Days of Email Domination: Buckets of Messages" href="http://archetyped.com/blog/30-days-email-domination-message-buckets/">bucket</a> by filters.</p>
<p>I&#8217;ll need to look into whether there are any additional types of messages I can automatically filter out of the inbox to improve the MPR without affecting my efficiency in other buckets.</p>
<h2>Bulk</h2>
<p>I am happy to see that the average amount of bulk messages appears to be decreasing each week. Today there were 49 bulk messages, which breaks down to about 16 bulk messages per week, which is an improvement over the previous average of 19.5 bulk messages per week.</p>
<p>Unfortunately, processing bulk messages took a bit longer this week with an MPR of 13.8/minute (compared to the previous MPR of 19.3/minute). There were more bulk messages that I actually wanted to read this week, so this likely contributed to a slower MPR.</p>
<h2>Management</h2>
<p>Management went pretty quickly, with the fastest MPR since late-January.</p>
<p>While I still wish there were a bulk unsubscribe feature, using the <strong>Message Sneak Peek</strong> Labs feature in Gmail makes it pretty painless to find the unsubscribe link in messages without having to open each message individually.</p>
<div>
<div id="attachment_1276" class="wp-caption alignnone" style="width: 608px"><img class="size-full wp-image-1276" alt="Message Sneak Peek in Gmail Labs" src="http://archetyped.com/wp-content/uploads/Gmail_Labs_Message-sneak-peek.png" width="598" height="121" /><p class="wp-caption-text">Message Sneak Peek in Gmail Labs</p></div>
</div>
<p>Now I just go down the list of messages I want to unsubscribe from, right-clicking each one to pop open a quick preview, and click on the unsubscribe link at the bottom of the message.</p>
<p>Thankfully, most email senders are pretty responsible about providing a quick and easy way to unsubscribe from mailing lists without having to jump through a bunch of hoops like logging in and updating preferences directly (though I did have to do that for a couple messages today).</p>
<div class="highlight">
<h3>How this could be improved</h3>
<p>Mailing list management services such as Campaign Monitor, AWeber, and MailChimp (my favorite) need to introduce a standard for denoting unsubscribe links in messages (i.e. a <a title="Microformat" href="http://microformats.org/">microformat</a>) which Gmail could then extract to provide quick and easy bulk unsubscription functionality.</p>
<p>I know that my opinion of a company lowers every time I receive another unwanted email from them (which explains why I have a <strong>very</strong> low opinion of Facebook), so making it easy to extricate myself from a sender&#8217;s mailing list keeps their reputation as high as possible.</p>
</div>
<p>For the stone-age senders that still require you to send them an email with &#8220;Remove&#8221; in the subject line, I just mark their messages as <strong>Spam</strong> and let Gmail handle it from there.</p>
<h2>Close</h2>
<p>In the end, I spent 11:49 processing messages today. Close, but not quite under 10 minutes. I&#8217;m not beating myself up too much though because it&#8217;s not that bad for 3 week&#8217;s worth of email. Better still, my average MPR shot up 36% over the average MPR from processing 2 week&#8217;s worth of email, which tells me I&#8217;m on the right track.</p>
<h2>Plans</h2>
<p>I could stick to checking email every 3 weeks to see if my results are consistent, but I think I&#8217;ll move on to checking email <strong>once every 4 weeks</strong>. 4 is a nice round number and I can see if message processing is further improved by adding an additional week&#8217;s worth of messages.</p>
<h2>Today&#8217;s Stats</h2>
<ul>
<li>Time: 09:57</li>
<li>Total messages: 273
<ul>
<li>Inbox: 51</li>
<li>Bulk: 49</li>
<li>Important: 2</li>
<li>Action: 42</li>
<li>To Read: 54</li>
</ul>
</li>
<li>Management: 10
<ul>
<li>Incorrect Smart Label: 0</li>
<li>Unsubscribe: 7</li>
<li>Update filtering: 1</li>
<li>Spam: 2</li>
</ul>
</li>
<li>Time per Message
<ul>
<li>Inbox: 05:16 (9.7 messages/minute)</li>
<li>Bulk: 03:33 (13.8 messages/minute)</li>
<li>Management (filters, etc.): 03:00 (3.3 messages/minute)</li>
<li>Total: 11:49</li>
<li>Average: 23.1 messages/minute</li>
</ul>
</li>
</ul>
<p>The post <a href="http://archetyped.com/blog/30-days-email-domination-three-weeks/">30 Days of Email Domination: Three Weeks</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/blog/30-days-email-domination-three-weeks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Lightbox for Noobs</title>
		<link>http://archetyped.com/know/simple-lightbox-for-noobs/</link>
		<comments>http://archetyped.com/know/simple-lightbox-for-noobs/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 18:10:50 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Simple Lightbox]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://archetyped.com/auto-draft/</guid>
		<description><![CDATA[<p>Want to get up to speed on Simple Lightbox as fast as possible? This tutorial is for you.</p><p>The post <a href="http://archetyped.com/know/simple-lightbox-for-noobs/">Simple Lightbox for Noobs</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Dear Noob,</p>
<p>I heard you&#8217;re having problems using <a title="Simple Lightbox" href="http://archetyped.com/tools/simple-lightbox/">Simple Lightbox</a> (SLB), the incredibly simple lightbox for WordPress. Have no fear, I made this rapid fire guide just for you.</p>
<h2>You&#8217;re probably overthinking it</h2>
<p>SLB strives to live up to its name&#8211; it&#8217;s incredibly simple to use. If things seem hard, it&#8217;s most likely because you&#8217;re used to the endless hoops of settings many plugins make you jump through just to <em>start</em> using them. With SLB, you really can just activate it on your site and it works.</p>
<p>Bottom line: <strong>Don&#8217;t overthink it.</strong></p>
<h2>What&#8217;s a lightbox?</h2>
<p>Good question, <a title="Click here to see SLB in action" href="http://archetyped.com/wp-content/uploads/SLB_Lightbox-Example_Placeholder.png">this is a lightbox</a>.</p>
<p>If you weren&#8217;t sure what to do just now, see the next section.</p>
<h2>What&#8217;s a link?</h2>
<p>This may be the most complex concept to grasp in order to use SLB. Thankfully, it&#8217;s very simple. On a web page, <strong>a link is something you can click on to make something happen</strong>. Navigating to another page or displaying images in a lightbox are made possible by clicking on links. Remember what you just clicked on in the previous section? That was a link.</p>
<p>SLB&#8217;s functionality hinges on links because there needs to be something on the page for users to click in order to display the lightbox. Specifically, SLB works with links to <em>media</em> such as images. If you have a link to a PNG, JPEG, GIF image file in a post, then SLB will load it in a lightbox rather than force the user to load a completely new page just for the image.</p>
<h2>How do I create an image link?</h2>
<p>Most users want to insert a small version of an image (i.e. a <em>thumbnail</em>) and have SLB display a lightbox of the full-size image when it is clicked on.</p>
<p>If this already sounds complicated to you, rest assured that it is very simple to do in WordPress. In fact, <strong>you&#8217;ll be an expert in it in less than 5 minutes</strong>.</p>
<p>First, read through WordPress&#8217; official documentation on <a title="Inserting images in WordPress" href="http://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages">inserting images into posts and pages</a>. It&#8217;s just a few steps, I&#8217;ll wait.</p>
<p>Next&#8230;well, that&#8217;s it! If you can insert an image into a post in WordPress then you know everything you need to insert an image link.</p>
<p><strong>The key</strong> is the <a title="Image link" href="http://codex.wordpress.org/Inserting_Images_into_Posts_and_Pages#Image_Link">Image Link section</a> in the aforementioned documentation. You need to make sure that this option is set to either <strong>Attachment Page</strong> or <strong>Media File</strong> <em>before</em> you insert the image into your post. This will wrap the inserted thumbnail image with a link that loads the full-size version of the image when it is clicked. Thanks to SLB, the full-size image will be displayed in a lightbox rather than loading an entirely new page.</p>
<h2>Getting Help</h2>
<p>Simple Lightbox should be&#8230;simple. If you&#8217;re having a problem with SLB, think you&#8217;ve found a bug, or even have a feature you&#8217;d like to request, please <a title="Simple Lightbox issue tracker" href="https://github.com/archetyped/simple-lightbox/wiki/Reporting-Issues">report it on SLB&#8217;s official issue tracker</a>.</p>
<h2>Noob no longer</h2>
<p>Congratulations, you now know everything you need to use Simple Lightbox. You&#8217;ve graduated from <em>noob</em> to <strong><em>user</em></strong>.</p>
<p>The post <a href="http://archetyped.com/know/simple-lightbox-for-noobs/">Simple Lightbox for Noobs</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/know/simple-lightbox-for-noobs/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>30 Days of Email Domination: On to Three</title>
		<link>http://archetyped.com/blog/30-days-email-domination-on-to-three/</link>
		<comments>http://archetyped.com/blog/30-days-email-domination-on-to-three/#comments</comments>
		<pubDate>Mon, 18 Mar 2013 04:00:14 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[30 Days]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Experiment]]></category>
		<category><![CDATA[Milestone]]></category>
		<category><![CDATA[Progress]]></category>

		<guid isPermaLink="false">http://archetyped.com/auto-draft/</guid>
		<description><![CDATA[<p>Has skipping email for 2 weeks proven to be too much to handle?</p><p>The post <a href="http://archetyped.com/blog/30-days-email-domination-on-to-three/">30 Days of Email Domination: On to Three</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Has skipping email for 2 weeks proven to be too much to handle?</p>
<p>Nope.</p>
<p>I can&#8217;t say I had any difficulty with the wait at all. In fact, I seriously considered just <em>letting it ride</em> and steer clear of email for another whole week. The only reason I processed my messages today was because I needed to check for bills and bank statements.</p>
<h2>Ruthless</h2>
<p>Being <strong>ruthless</strong> about auto-blocking unwanted messages held additional significance today when I set up a filter to block messages from a <strong>family member</strong> who sends links to articles to everyone in the family. We all get emails from someone like this, but I still felt bad about it. However, since I&#8217;m not going to read those articles, these messages were just noise and had to go.</p>
<p>At first I thought, &#8220;it&#8217;s not so bad, I can just delete these messages as they come.&#8221; This confirmed once and for all that auto-blocking was my only option&#8211; <strong>never manually do anything that can be automated</strong>.</p>
<h2>Two Better than One?</h2>
<p>I was quite curious how long it would take to process 2 weeks worth of messages today. Would the increased message volume lead to faster processing? Would I end up with even more messages to filter? In any case, keeping message processing under 10 minutes did not seem likely, but I remained my goal nonetheless.</p>
<p>Thankfully, total message processing required less than 10 minutes with a bit of time to spare. Additionally, today&#8217;s average message processing rate is the highest since January, so that&#8217;s nice. All in all, I&#8217;d say that the <strong>2 week experiment was a success</strong>.</p>
<p>On to three.</p>
<h2>Today&#8217;s Stats</h2>
<ul>
<li>Checked email: 1 time</li>
<li>Time: 14:10</li>
<li>Total messages: 163
<ul>
<li>Inbox: 23</li>
<li>Bulk: 39</li>
<li>Important: 0</li>
</ul>
</li>
<li>Management: 9
<ul>
<li>Incorrect Smart Label: 1</li>
<li>Unsubscribe: 4</li>
<li>Update filtering: 2</li>
<li>Spam: 2</li>
</ul>
</li>
<li>Time per Message
<ul>
<li>Inbox: 03:45 (9.9 messages/minute)</li>
<li>Bulk: 02:01 (19.3 messages/minute)</li>
<li>Management (filters, etc.): 03:48</li>
<li>Total: 09:34</li>
<li>Average: 17.0 messages/minute</li>
</ul>
</li>
</ul>
<p>The post <a href="http://archetyped.com/blog/30-days-email-domination-on-to-three/">30 Days of Email Domination: On to Three</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/blog/30-days-email-domination-on-to-three/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>30 Days of Email Domination: Mind Control</title>
		<link>http://archetyped.com/blog/30-days-email-domination-mind-control/</link>
		<comments>http://archetyped.com/blog/30-days-email-domination-mind-control/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 02:30:16 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[30 Days]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Experiment]]></category>
		<category><![CDATA[Progress]]></category>

		<guid isPermaLink="false">http://archetyped.com/auto-draft/</guid>
		<description><![CDATA[<p>After 5 months fervently seeking email domination, is email's grip stronger than ever?</p><p>The post <a href="http://archetyped.com/blog/30-days-email-domination-mind-control/">30 Days of Email Domination: Mind Control</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s been a week and a half since I last checked my email.</p>
<p>I don&#8217;t miss it in the least.</p>
<p>Checking my messages has been a regular Saturday morning activity for the past 5 months, so I was curious about how I would feel when Saturday came rolling by without a visit to the inbox. Surprisingly, when I remembered that I wouldn&#8217;t be checking my email until <em>next</em> week, all I felt was <strong>relief</strong>. The thought passed and so did any urge to see how many unread messages I had.</p>
<p>Two weeks without email should be easy.</p>
<p>While <a title="Gmail Smartlabels" href="http://archetyped.com/blog/30-days-email-domination-3-days/">Smartlabels</a> have made managing messages a breeze, <a title="Forwarding filters in Gmail" href="http://archetyped.com/blog/30-days-email-domination-priority-account/">forwarding filters</a> have virtually liberated me from email altogether. I no longer wonder whether there&#8217;s an important message waiting for me&#8211; when a message that <strong>I deem to be important</strong> arrives, I am notified immediately.</p>
<p>And that&#8217;s the problem.</p>
<p>Don&#8217;t get me wrong, I love my forwarding filters. Nonetheless, these instant message notifications&#8211; even if they are for messages that I <em>want</em>&#8211; are distractions. No, it&#8217;s worse&#8211; notifications are <strong>mind control</strong>.</p>
<p>Even if I&#8217;m completely focused on something else, when that little bell rings, my hand is lifting my phone out of my pocket to check the message before I even realize it. If I don&#8217;t check the message, like this morning when I woke up and saw that I had new messages, then I&#8217;m burning with curiosity until I do (I forced myself to wait for a few hours).</p>
<h2>By Appointment Only</h2>
<p>So what are you to do when your forwarding filters are deciding when you are notified about messages? Well, you ask if has an appointment of course!</p>
<h3>1. Be Exclusive</h3>
<p>First, I have completely disabled Gmail sync on my Android phone. This means <strong>zero notifications</strong> for new messages&#8211; no one gets in.</p>
<h3>2. Set up Office Hours</h3>
<p>Using the flexible <a title="Llama - Location Profiles" href="https://play.google.com/store/apps/details?id=com.kebab.Llama">Llama</a> app, I set up an automated event that uses <a title="Synker" href="https://play.google.com/store/apps/details?id=com.afterhoursdevelopers.android.synker">Synker</a> to sync with Gmail <strong>once a day</strong>. Now email invades my mind on <strong>my</strong> schedule.</p>
<h2>Finally, I&#8217;m Cheating</h2>
<p>While my phone is now protected from rogue email notifications, my <em>tablet</em> is not. That&#8217;s right, I&#8217;ll still be getting instant notifications on my tablet, but there are two good(ish) reasons for this:</p>
<p>First, turning off sync 99% of the time is pretty aggressive, so continuing to receive notifications on my tablet is a &#8220;safe&#8221; way to test this on my phone while still having to instant notifications in case I did not account for all potential issues (note: I did not).</p>
<p>Second, the tablet is out of sight for most of the day, generally only coming out after dinner for some reading. As a result, even if the tablet is getting instant notifications, I generally will not be seeing them.</p>
<p>I&#8217;ll be testing this setup for the next week and report back.</p>
<p>The post <a href="http://archetyped.com/blog/30-days-email-domination-mind-control/">30 Days of Email Domination: Mind Control</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/blog/30-days-email-domination-mind-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a WordPress Series Plugin: Decision</title>
		<link>http://archetyped.com/lab/building-a-wordpress-series-plugin-decision/</link>
		<comments>http://archetyped.com/lab/building-a-wordpress-series-plugin-decision/#comments</comments>
		<pubDate>Fri, 08 Mar 2013 05:11:37 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Decision]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Direction]]></category>
		<category><![CDATA[Organization]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Progress]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[Series]]></category>
		<category><![CDATA[Structure]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://archetyped.com/?post_type=devlog&#038;p=1246</guid>
		<description><![CDATA[<p>I have decided on this plugin's direction.</p><p>The post <a href="http://archetyped.com/lab/building-a-wordpress-series-plugin-decision/">Building a WordPress Series Plugin: Decision</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I have decided on this plugin&#8217;s direction. Here it is:</p>
<pre><code>git checkout -b entry-cpt
</code></pre>
<p>Exciting, right? For everyone else, I have decided that <strong>entries will be a custom post type</strong>.</p>
<h2>Why?</h2>
<p>In the end, the decision wasn&#8217;t that hard. There are a few reasons why creating series entries as custom post types is ideal:</p>
<h3>Organization is priority #1</h3>
<p>The whole point of a series plugin is to <em>organize</em> posts. Letting organization take a back seat to other factors is simply not a good idea.</p>
<p>As a custom post type with <em>strong connections</em> to a series, entries will be well-organized by default.</p>
<h3>Better Compromises</h3>
<p>Each option had their <a title="Risky Business" href="http://archetyped.com/lab/building-a-wordpress-series-plugin-risky-business/">risks</a> and compromises. In the end, I can sleep better with the compromises of this option and I&#8217;m confident that most (if not all) of the issues can be handled with minimal hackery.</p>
<h3>I Need to Use It</h3>
<p>I&#8217;m sharing the development of this plugin because I want as many people as possible to benefit from it. Once it&#8217;s ready to go, I want as many people as possible benefit from the plugin itself as well.</p>
<p>However, I readily admit that I decided to create this plugin because <strong>I want it</strong>. While I would love for everyone else to use it as well, I must also accept that this plugin won&#8217;t fit certain users&#8217; needs. The plugin needs to fit my needs because that&#8217;s the only way to guarantee its continued development.</p>
<h2>New Territory</h2>
<p>I&#8217;m jumping into highly untested waters from this point out. This is going to be fun.</p>
<p>The post <a href="http://archetyped.com/lab/building-a-wordpress-series-plugin-decision/">Building a WordPress Series Plugin: Decision</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/building-a-wordpress-series-plugin-decision/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a WordPress Series Plugin: Risky Business</title>
		<link>http://archetyped.com/lab/building-a-wordpress-series-plugin-risky-business/</link>
		<comments>http://archetyped.com/lab/building-a-wordpress-series-plugin-risky-business/#comments</comments>
		<pubDate>Thu, 07 Mar 2013 22:38:45 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[Comparison]]></category>
		<category><![CDATA[Decision]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Direction]]></category>
		<category><![CDATA[Organization]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[Series]]></category>
		<category><![CDATA[Structure]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://archetyped.com/?post_type=devlog&#038;p=1244</guid>
		<description><![CDATA[<p>What is the best way to organize entries in a series? I've been turning this question around in my head for a while now. Each option has their merits as well as some very real pitfalls.</p><p>The post <a href="http://archetyped.com/lab/building-a-wordpress-series-plugin-risky-business/">Building a WordPress Series Plugin: Risky Business</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>What is the best way to organize entries in a series? I&#8217;ve been turning this question around in my head (and in my notes) for a while now. Each option has their merits as well as some very real pitfalls. In one moment, the answer seems clear and obvious and in the next, the very same answer seems absurd.</p>
<h2>Option 1: Entries are Posts</h2>
<h3>The Rundown</h3>
<p>Currently, entries are standard posts. Ultimately, options would be used allow the user to select which post types can be part of a series.</p>
<h4>URI Structure</h4>
<ul>
<li>Series: <code>site.com/series/series-name/</code></li>
<li>Entry: <code>site.com/post-name/</code> (based on the site&#8217;s permalink settings)</li>
</ul>
<h4>Entry Management</h4>
<ul>
<li>Existing management page for the entry&#8217;s post type</li>
<li>Custom UI for listing/managing entries of a series</li>
</ul>
<h3>Good News</h3>
<h4>Flexibility</h4>
<p>Flexibility is the star quarterback when any post type can be a series entry. Entries can be easily selected from existing and new content alike.</p>
<p>Series content could be as varied as the custom post types that are defined on your site. An image gallery here, a podcast there, and finish it off with a normal post! Anything is possible!</p>
<h3>Bad News</h3>
<p>Of course, there are some downsides to using any old post type as series entries.</p>
<h4>Organization</h4>
<p>Organization definitely suffers in this option. For example, our series about &#8220;Awesome Things&#8221; may have a URI such as:</p>
<pre><code>site.com/series/awesome-things/
</code></pre>
<p>However, the URI of each entry in this series will be completely unrelated. For example, the URI for the &#8220;Kittens&#8221; entry would be:</p>
<pre><code>site.com/kittens/
</code></pre>
<p>There&#8217;s no connection between the URI for a series and the URIs of its entries.</p>
<p>This is just one example of an organizational issue I refer to as <strong>Weak Links</strong>. In addition to URIs, an entry&#8217;s slug, taxonomies (e.g. tags, categories, etc.), etc. have no connection to the series it is part of. In fact, the only connection entries have to a series is a simple metadata value indicating the entry&#8217;s series.</p>
<p>Of course, there are ways to work around this. For example, we can prefix entry slugs with the series&#8217; slug (manually or automatically). It&#8217;ll do, but it&#8217;s not ideal.</p>
<p>Simply wrangling all of a series&#8217; entries could be an issue as well. Each post type in WordPress has it&#8217;s own admin page, so entries for a single series could be strewn about in multiple admin sections. Though this plugin will have its own UI for managing a series&#8217; entries, the fact that an entry is accessible in multiple places in the admin creates a real management issue.</p>
<h4>Metadata</h4>
<p>Since <em>any</em> post type can be an entry in a series, there is also no good way to implement fields for entry-specific metadata on the post editor, making it difficult to identify specific entries within the context of a series. It would be pretty straightforward to display entry-specific fields <strong>once a post has been added to a series</strong>, but that would create an inconsistency between when a post is first assigned to a series (no entry-specific fields) and after that post is saved (entry-specific fields displayed).</p>
<h2>Option 2: Entries are a Custom Post Type</h2>
<h3>The Rundown</h3>
<p>Entries are fully-fledged custom post types in this scenario, just like the series that they belong to.</p>
<h4>URI Structure</h4>
<ul>
<li>Series: <code>site.com/series/series-name/</code></li>
<li>Entry: <code>series-uri/entry-name</code> (e.g. <code>site.com/series/series-name/entry-name</code>)</li>
</ul>
<h4>Entry Management</h4>
<ul>
<li>Entries are explicit children of a Series (set using <code>post_parent</code>)</li>
<li>Entries are managed via Series editor/management page
<ul>
<li>No specific menu item for general entry management</li>
<li>Series must first be selected to view its entries</li>
<li>Example: Series editor has &#8220;Add Entry&#8221; and &#8220;View Entries&#8221; buttons</li>
</ul>
</li>
</ul>
<h3>Good News</h3>
<h4>Organized</h4>
<p>Organization is vastly improved in this option.</p>
<p>URI structures are logical and <strong>hackable</strong>. Our &#8220;Kittens&#8221; entry in the &#8220;Awesome Things&#8221; series the following URI:</p>
<pre><code>site.com/series/awesome-things/kittens/
</code></pre>
<p>Removing the <code>kittens/</code> segment from the URI will bring us up one level to the series&#8217; main page:</p>
<pre><code>site.com/series/awesome-things/
</code></pre>
<p>When a user looks at the URI of a series or an entry, they will know exactly where they are in the context of a series.</p>
<p>In addition, this option creates the strongest possible link between a series and its entries using WordPress&#8217; <code>post_parent</code> data. A post can have only one post parent, so there is <strong>zero confusion</strong> about what series an entry belongs to.</p>
<h4>Simple</h4>
<p>The workflow for creating entries for a series is clear and straightforward. Instead of creating a post and assigning it a series from the post editor (thus making it a series), an entry is created for a series. In this case, the chicken (series) always comes before the egg (entry).</p>
<p>This workflow also isolates series and entry management from other administration tasks. There is no way for entries to be modified (e.g. deleted, edited, etc.) via actions taken in other pages.</p>
<p>Basically, a structured workflow keeps things simple. Too many options and configuration makes things overly complex when the ultimate goal is simply to create content.</p>
<h4>Metadata</h4>
<p>As entries are a custom post type, they can have all the fields for entry-specific metadata we want. It would be dead simple to valuable data to an entry in the context of the series that it belongs to (e.g. milestones, final entries, etc.).</p>
<p>In addition, as all entries are explicit children of a series, we can let an entry <strong>inherit</strong> the series&#8217; metadata (taxonomies, etc.) dynamically. This means you don&#8217;t have to type the same tags for each entry (only the tags that are unique to that entry).</p>
<h3>Bad News</h3>
<h4>Flexibility</h4>
<p>Though we gain a lot of ground in terms of organization and simplicity, we also lose ground in terms of flexibility.</p>
<p>For one, we can no longer add any type of post to a series. Entries can only be the custom post type created specifically for this purpose. This means that a series cannot be a grab bag of different types of content, but must fit within the constraints of what this custom post type allows.</p>
<p>One thing that I&#8217;ll be looking into is whether custom post types can take advantage of <a title="Post formats" href="http://codex.wordpress.org/Post_Formats">post formats</a>. This would at least provide some additional variability in the type of content you can add to a series.</p>
<p>Obviously, there will be a way to convert existing posts to entries so that previously-created content can be integrated into series. This is no small task however, as there are several factors to account for (e.g. redirection from the entry&#8217;s old URI), so this functionality may be added in a later update.</p>
<p>As always, there are workarounds to allow other custom post types to be used as series entries, but as they all circumvent WordPress&#8217; default behavior, it may be more of a hassle than it&#8217;s worth.</p>
<h4>Visibility</h4>
<p>Finally, as custom post types, series and entries would not show up in standard post queries (home, feeds, etc.) by default.</p>
<p>Depending on how you look at it, this actually might be a <strong>good thing</strong> since it means that you can keep series content separate from the rest of the site&#8217;s content if desired.</p>
<p>In any case, it is a fairly simple matter to integrate custom post types into default post queries, so this will likely be made available as a user option.</p>
<h2>Decisions</h2>
<p>As you can see, there are good and bad things about each option. Nonetheless, there are always tradeoffs with any decision, so I&#8217;m making the decision on which option to choose <strong>today</strong>. I&#8217;d be glad to hear any thoughts you may have as well.</p>
<p>I&#8217;m going to go for a ride. Maybe some fresh air will make things clearer.</p>
<p>The post <a href="http://archetyped.com/lab/building-a-wordpress-series-plugin-risky-business/">Building a WordPress Series Plugin: Risky Business</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/building-a-wordpress-series-plugin-risky-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SLB 2.0: Beta 7</title>
		<link>http://archetyped.com/lab/slb-2-0-beta-7/</link>
		<comments>http://archetyped.com/lab/slb-2-0-beta-7/#comments</comments>
		<pubDate>Wed, 06 Mar 2013 18:53:32 +0000</pubDate>
		<dc:creator>Sol</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Beta]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Progress]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Simple Lightbox]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://archetyped.com/?post_type=devlog&#038;p=1242</guid>
		<description><![CDATA[<p>From new release schedules to awesome APIs, Beta 7 is a turning point in Simple Lightbox's development.</p><p>The post <a href="http://archetyped.com/lab/slb-2-0-beta-7/">SLB 2.0: Beta 7</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><a title="Simple Lightbox 2.0 Beta" href="http://archetyped.com/lab/simple-lightbox-2-0-beta/">Simple Lightbox 2.0</a> is coming along nicely. It&#8217;s been in beta for a while, but thanks to our brave testers, it has improved by leaps and bounds in each release.</p>
<p>Beta 7 is a turning point for SLB in multiple ways.</p>
<h2>Git Out</h2>
<p>SLB has recently been migrated over to <a title="Git" href="http://git-scm.com/">Git</a>, which I&#8217;m very happy about. Among other things, Git facilitates a workflow that allow easy experimentation and fast iteration. Working on new features is far more controlled and manageable as a result.</p>
<p>SLB&#8217;s entire Git repository has also been published on <a title="Get Simple Lightbox on GitHub" href="https://github.com/archetyped/simple-lightbox/">GitHub</a>. GitHub makes it easy to <a title="GitHub Collaboration" href="https://help.github.com/articles/be-social">collaborate</a> on projects using things like forking and pull requests. I initially published SLB&#8217;s <a title="Simple Lightbox Master branch" href="https://github.com/archetyped/simple-lightbox/tree/master">Master branch</a> to give users easy access to new releases. Later, I bit the bullet and also published SLB&#8217;s <a title="Simple Lightbox Development branch" href="https://github.com/archetyped/simple-lightbox/tree/develop">Development branch</a>. It&#8217;s a little uncomfortable putting my raw code out there for you to see, but it&#8217;s ideal for anyone who wants to test the bleeding edge or wants to get involved in development.</p>
<p>All of this was actually possible since Beta 5; the big difference starting with Beta 7 is that I&#8217;ve optimized my workflow so that I can prepare releases far more easily. For example, Beta 7 has been released, but it&#8217;s not done. There are several new features planned for this phase, but I did not want to wait until they were all done before you had access to them. As a result, Beta 7 is being released in <strong>multiple stages</strong>. Once a new feature is done, it&#8217;s heading out into the big world for all to test it. Young features are impatient&#8211; they don&#8217;t want to wait for their brother and sister features to be ready.</p>
<p><strong>What this means for you:</strong> More frequent updates. <em>(Why didn&#8217;t you just say that? Geez.)</em></p>
<h2>Content Handlers</h2>
<p>One of the major features of SLB 2.0 is support for multiple content types. Why should <em>images</em> have a monopoly on lightboxes? What about <strong>videos</strong>, <strong>forms</strong>, and even <strong>tweets</strong>?</p>
<p>SLB 2.0 was built from the ground up to support multiple content types, and Beta 7 provides an API for developers to add support for any type of content quickly and easily.</p>
<p><strong>What this means for you:</strong> Any type of content can be displayed in a lightbox. <em>(Didn&#8217;t I just say that? Really&#8230;)</em></p>
<p>Even SLB&#8217;s default content types (e.g. images) use the new <strong>Content Handler API</strong>:</p>
<pre class="brush:php">$handlers-&gt;add('image', array(
    'match'         =&gt; 'match_image',
    'client_script' =&gt; 'handler.image.js'
));</pre>
<h3>Match</h3>
<p>The <code>match</code> property specifies the callback function used to determine if a link <em>matches</em> this content type. The callback does not have to be anything fancy; for example, here&#8217;s the callback to match image links:</p>
<pre class="brush:php">/**
 * Matches image URIs
 * @param string $uri URI to match
 * @return bool TRUE if URI is image
 */
public function match_image($uri) {
    return ( $this-&gt;util-&gt;has_file_extension($uri, array('jpg', 'jpeg', 'jpe', 'jfif', 'jif', 'gif', 'png')) ) ? true : false;
}</pre>
<h3>Client Script</h3>
<p>The <code>client_script</code> property specifies a JavaScript file to load in the browser for client-side functionality. This controls things such as how the content is rendered in the lightbox.</p>
<p>The file path provided in <code>client_script</code> is relative to WordPress&#8217; plugins directory.</p>
<p>The client script code needs to return an object which is added to the content handler. Here&#8217;s the client script for images:</p>
<pre class="brush:js">(function($) {
return {
    render: function(item) {
        var dfr = $.Deferred();
        //Create image object
        var img = new Image();
        var type = this;
        //Set load event
        var handler = function(e) {
            //Save Data
            item.set_data(this);
            //Set attributes
            var dim = {'width': this.width, 'height': this.height};
            item.set_attribute('dimensions', dim);
            //Build output
            var out = $('&lt;img /&gt;', {'src': item.get_uri()});
            //Resolve deferred
            dfr.resolve(out);
        };

        //Attach event handler
        if ( img.addEventListener ) {
            img.addEventListener('load', handler, false);
        } else if ( img.attachEvent ) {
            img.attachEvent('onload', handler);
        } else {
            handler(img);
        }
        //Load image
        img.src = item.get_uri();
        //Return promise
        return dfr.promise();
    }
}
})(jQuery)</pre>
<h3>Register</h3>
<p>All that&#8217;s left is to register the new content type at the appropriate time:</p>
<pre class="brush:php">/**
 * Add custom content handler(s)
 * @param object $handlers Content Handlers
 */
public function my_custom_content_handler($handlers) {
    $handlers-&gt;add('handler-id', array (
        'match'         =&gt; 'match_callback',
        'client_script' =&gt; 'path-to-handler/handler.handler-id.js'
    ));
}

//Hook into content handler initialization
add_action('slb_content_handlers_init', 'my_custom_content_handler');</pre>
<p>That&#8217;s all there is to it! When links are processed on the server, the registered content handlers are cycled through until a match is found and assigned to the link. To make things as fast as possible, only the content handlers that have been matched to a link will be loaded into the browser.</p>
<h3>Priorities</h3>
<p>Content handlers can also be prioritized so that a handler can be evaluated before other handlers. For example, if you wanted to create a custom handler for Flickr images, then you would want links to be matched against this handler <em>before</em> the standard image content handler.</p>
<p>Setting a content handler&#8217;s priority is easy and follows the example of WordPress&#8217; own <a title="WordPress' add_action function" href="http://codex.wordpress.org/Function_Reference/add_action"><code>add_action()</code></a>/<a title="WordPress' add_filter function" href="http://codex.wordpress.org/Function_Reference/add_filter"><code>add_filter()</code></a> functions. That is, by default, all handlers have a priority of <code>10</code>. If a handler should be evaluated earlier, use a lower number (e.g. 1-9). Conversely, if a handler should be evaluated later, use a higher number (e.g. 11+). All content handlers with the same priority will be evaluated in the order that they were registered.</p>
<p>Basically, content handlers are added like so:</p>
<pre class="brush:php">$handlers-&gt;add($id, $properties, [$priority]);</pre>
<p>Here&#8217;s an example of registering a content handler with a high priority:</p>
<pre class="brush:php">/**
 * Register content handler for Flickr images
 * @param object $handlers Content Handlers
 */
public function register_flickr_handler($handlers) {
    $args = array (
        'match'         =&gt; 'match_flickr',
        'client_script' =&gt; 'path-to-handler/handler.flickr.js'
    );
    $handlers-&gt;add('flickr', $args, 5);
}

//Hook into content handler initialization
add_action('slb_content_handlers_init', 'register_flickr_handler');</pre>
<p>The Content Handler API is quite robust and new handlers can easily be added to SLB!</p>
<h2>Template Tags</h2>
<p>Template tags also get a shiny new API in this update. Adding your own template tags is now easier than ever.</p>
<pre class="brush:php">$template_tags-&gt;add('tag-name', array(
    'client_script' =&gt; 'path-to-file/tag.tag-name.js'
));</pre>
<h3>Client Script</h3>
<p>Like content handlers, template tags have a <code>client_script</code> property that specifies the JavaScript file that will be loaded in the browser to handle a template tag&#8217;s client-side functionality. This controls how a template tag is rendered in the browser.</p>
<p>The file path provided in <code>client_script</code> is relative to WordPress&#8217; plugins directory.</p>
<p>The code in this file returns an object which is added to the template tag. Here&#8217;s the client script for the <code>{{item}}</code> template tag:</p>
<pre class="brush:js">(function($) {
return {
    render: function(item, tag) {
        var dfr = $.Deferred();
        var m = 'get_' + tag.get_prop();
        var ret = ( this.util.is_method(item, m) ) ? item[m]() : item.get_attribute(tag.get_prop(), '');
        if ( this.util.is_promise(ret) ) {
            ret.done(function(output) {
                dfr.resolve(output);
            });
        } else {
            dfr.resolve(ret);
        }
        return dfr.promise();
    }
}
})(jQuery);</pre>
<h3>Register</h3>
<p>Once the client script is ready, all that&#8217;s left is to register the new content type at the appropriate time:</p>
<pre class="brush:php">/**
 * Add custom template tag(s)
 * @param obj $tags Template tags collection
 */
public function my_custom_template_tags($tags) {
    $tags-&gt;add('mytag', array(
        'client_script' =&gt; 'path-to-file/tag.mytag.js'
    ));
}

//Add hook to register custom template tags
add_action('slb_template_tags_init', 'my_custom_template_tags');</pre>
<p>If that seemed really simple, that&#8217;s because it is! In-depth documentation on how to develop custom template tags is forthcoming, but the focus for this release was getting the API in order. Thankfully, the work done the content handler API made this pretty simple to do and much of the code is shared between these APIs.</p>
<h2>Themes</h2>
<p>The Theme API has also been updated to align with the other component APIs in this release.</p>
<pre class="brush:php">$themes-&gt;add('theme-id', array (
    'name'          =&gt; 'Theme Name',
    'parent'        =&gt; 'parent-theme',
    'layout'        =&gt; 'path-to-file/layout.html',
    'client_script' =&gt; 'path-to-file/client.js',
    'client_style'  =&gt; 'path-to-file/style.css',
));</pre>
<h3>Name</h3>
<p>The <code>name</code> property defines the theme&#8217;s display name. The name is displayed in the theme selection list.</p>
<h3>Parent</h3>
<p>Themes can optionally have a <em>parent</em> that they inherit the properties of. This makes customizing existing themes incredibly simple. For example, if you want to update the CSS of SLB&#8217;s default theme (ID: <code>slb_default</code>), you would simply add a new theme, but only define the <code>client_style</code> parameter:</p>
<pre class="brush:php">$themes-&gt;add('my-child-theme', array (
    'name'          =&gt; 'My Child Theme',
    'parent'        =&gt; 'slb_default',
    'client_style'  =&gt; 'path-to-file/my-style.css',
));</pre>
<h3>Layout</h3>
<p>The <code>layout</code> is a file that contains the HTML for the theme&#8217;s lightbox. The layout contains standard HTML and template tags that control how an item&#8217;s data is displayed when viewed in the lightbox.</p>
<h3>Client Script</h3>
<p>Like the other components, themes have a <code>client_script</code> property that specifies the JavaScript file that will be loaded in the browser to handle a theme&#8217;s client-side functionality. This controls a theme&#8217;s capabilities such as animations, etc.</p>
<p>The file path provided in <code>client_script</code> is relative to WordPress&#8217; plugins directory.</p>
<h3>Client Style</h3>
<p>Finally, the <code>client_style</code> property specifies a CSS file for the theme.</p>
<p>Just like the <code>client_script</code> property (and all other file paths in these APIs), the file path provided in <code>client_style</code> is relative to WordPress&#8217; plugins directory.</p>
<h3>Register</h3>
<p>Theme&#8217;s are registered just like other components:</p>
<pre class="brush:php">/**
 * Add custom theme(s)
 * @param obj $themes Themes collection
 */
function my_custom_theme($themes) {
    $themes-&gt;add('theme-id', array (
        'name'          =&gt; 'Theme Name',
        'parent'        =&gt; 'parent-theme',
        'layout'        =&gt; 'path-to-file/layout.html',
        'client_script' =&gt; 'path-to-file/client.js',
        'client_style'  =&gt; 'path-to-file/style.css',
    ));
}

//Add hook to register custom theme
add_action('slb_themes_init', 'my_custom_theme');</pre>
<p>Simple!</p>
<h2>Get the Beta</h2>
<p>Want to get access to the next generation of Simple Lightbox <em>and</em> be part of its progress? <a title="Get Simple Lightbox on GitHub" href="https://github.com/archetyped/simple-lightbox/">Get the beta now</a> and <a title="Provide Feedback on Simple Lightbox" href="https://github.com/archetyped/simple-lightbox/wiki/Reporting-Issues">leave feedback</a>!</p>
<h2>Next Steps</h2>
<p>SLB 2.0 Beta 7 was a big update. Simple Lightbox 2.0 is now <strong>feature complete</strong> and from here we&#8217;re going to move straight into <strong>release candidates</strong>.</p>
<p>The post <a href="http://archetyped.com/lab/slb-2-0-beta-7/">SLB 2.0: Beta 7</a> appeared first on <a href="http://archetyped.com">Archetyped</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://archetyped.com/lab/slb-2-0-beta-7/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>
