<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
	<channel>
		<title>P&amp;T Blog</title>
		<link>https://pixelandtonic.com/blog</link>
		
		<description>What’s happening with Pixel &amp; Tonic</description>
		<language>en-us</language>
		<pubDate>Sat, 25 May 2013 02:16:41 +0000</pubDate>
		<lastBuildDate>Sat, 25 May 2013 02:16:41 +0000</lastBuildDate>

					<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blogandtonic" /><feedburner:info uri="blogandtonic" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
				<title>Craft by the Numbers</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/FLoYMJkS2OI/craft-by-the-numbers</link>
				<pubDate>Tue, 07 May 2013 17:00:00 +0000</pubDate>
				<author>Brad Bell</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/craft-by-the-numbers</guid>
				<description><![CDATA[
					<p>Sunday marked the two month anniversary since we launched the Craft public beta, and now seems as good of a time as any to take another look at some relevant stats.</p><!--pagebreak--><ul class="square"><li><strong>1,346</strong> Craft licenses have been issued.<br></li><li><strong>19</strong> updates have been released including 94 bug fixes, 87 improvements, and 33 new features.<br></li><li><strong>205</strong> packages have been purchased by extremely intelligent, charismatic, and hard working people.<br></li><li><strong>376</strong> package trials have been started by equally gifted people that might have some commitment issues to work through.<br></li><li><strong>568</strong> awesome members in our very helpful <a href="https://plus.google.com/communities/106505340287442511226">Google+ community</a>!<br></li><li><strong>1,365</strong> tweeple are following <a href="http://twitter.com/craftcms">@craftcms</a>&nbsp;on Twitter.</li><li><strong>2,007</strong> one-click auto-updates have been successfully served. Turns out that people like to stay up-to-date if you make it easy enough.<br></li><li><strong>7</strong> engaging community chats and events.</li><li><strong>9</strong> - The impressive percentage of visitors to our site from Germany. The Germans... they love Craft.</li></ul>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/craft-by-the-numbers</feedburner:origLink></item>
					<item>
				<title>We Gave Craft a Better Watch</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/MyByHOHu81U/we-gave-craft-a-better-watch</link>
				<pubDate>Thu, 25 Apr 2013 10:00:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/we-gave-craft-a-better-watch</guid>
				<description><![CDATA[
					<p>It quickly became clear that the time support in <a href="http://pixelandtonic.com/blog/we-gave-craft-a-watch">yesterday’s release</a> was a bit underwhelming. That didn’t sit well with us, so we went back to the drawing board, and came up with something much better.</p>
<!--pagebreak-->
<img src="/content/blog/2013-04/new-time.png" style="float: right; margin-left: 15px; width: 218px; height: 298px;">
<p>We just released <a href="http://buildwithcraft.com/releases#build2218">Craft 0.9.2218</a> which separates the date and time inputs, gives time selection its own menu (using <a href="http://jonthornton.github.io/jquery-timepicker/">jquery.timepicker</a>), and it even displays the dates and times based on the date/time formats defined by the user’s preferred locale. So people in the US are going to get dates displayed as MM/DD/YYYY, while people in the UK will get DD/MM/YYYY.</p><p>Date fields also got a new “Show time” setting, so now you get to choose whether your Date field is just for a date, or for a specific date and time.</p><p>We’ve also beefed up Craft’s Timezone setting to include all known timezones rather than just the ones that have unique abbreviations, and there are a few bug fixes in there as well. So fire up those auto-updaters!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/we-gave-craft-a-better-watch</feedburner:origLink></item>
					<item>
				<title>We Gave Craft a Watch</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/QSzVJ3Fo93M/we-gave-craft-a-watch</link>
				<pubDate>Wed, 24 Apr 2013 17:04:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/we-gave-craft-a-watch</guid>
				<description><![CDATA[
					<p>We just released <a href="http://buildwithcraft.com/releases#build2216">Craft 0.9.2216</a>, which added a few pretty cool new features.</p><!--pagebreak-->

<img src="/content/blog/2013-04/time.png" style="float: right; width: 238px; height: 305px;">
<h2>Time support</h2>
<p>That’s right – you can finally set the time of day within entry Post/Expiration Date fields, as well as within your Date fields. We’re even displaying the time in the proper 12 or 24-hour format depending on your preferred locale.</p><p>Dates and times are displayed in the site’s timezone (set in Settings &gt; General), but continue to be stored in UTC.</p><h2>Rich Text improvements</h2><p>The Rich Text fieldtype got a lot of love in this update. We dropped the Min Height setting in favor of full-blown <a href="http://docs.buildwithcraft.com/components/fieldtypes/richtext.html#field-settings">custom Redactor config support</a>. Now you can place .json files in craft/config/redactor/, and they will be available config options when editing your Rich Text fields. We’ve even started bundling two configs with Craft for you – Simple and Standard.</p><p>Next up, while we wait for Redactor 9.0 with its promised HTML output improvements, we figured we’d give Rich Text fields a new “Clean up HTML?” setting. If it’s checked (and it’s checked by default), Craft will remove all <code>&lt;span&gt;</code> tags, empty tags, and most <code>style</code> attributes from the submitted HTML.</p><p>And finally, we’ve written a new Page Break plugin for Redactor, which is included in the new “Standard” config. It adds a new button to your Redactor fields labelled “Insert Page Break”. When you click it, Craft adds a marker to your content at the insertion point. There are <a href="http://docs.buildwithcraft.com/components/fieldtypes/richtext.html#working-with-page-breaks">three template functions</a> available to you for getting all individual pages in an array, getting a specific page, and getting the total number of pages. The final code example on that page is exactly how we’re doing the “Read more” links on <a href="http://pixelandtonic.com/blog">pixelandtonic.com/blog</a>.</p>
<img src="/content/blog/2013-04/pagebreaks.jpg" style="width: 552px; height: 169px;">

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/we-gave-craft-a-watch</feedburner:origLink></item>
					<item>
				<title>All Fieldtypes Updated for EE 2.6</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/eg2ha1QQ-Tc/ee-2-6</link>
				<pubDate>Tue, 23 Apr 2013 20:05:06 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/ee-2-6</guid>
				<description><![CDATA[
					<p>We just released updates to all of our fieldtypes, fixing various compatibility issues with EE 2.6, as well as some other bug fixes and minor enhancements.</p><!--pagebreak--><p>Here are links to the release notes:<br></p><ul class="square"><li><a href="http://docs.pixelandtonic.com/matrix/changelog.html">Matrix 2.5.4</a></li><li><a href="http://docs.pixelandtonic.com/wygwam/changelog.html">Wygwam 2.7.1</a></li><li><a href="http://docs.pixelandtonic.com/playa/changelog.html">Playa 4.4.2</a></li><li><a href="http://docs.pixelandtonic.com/assets/changelog.html">Assets 2.1.1</a></li></ul><p>We’ve also taken this opportunity to drop the ee1/ folders from Matrix and Wygwam. At this point we haven’t touched the EE1 files for quite some time, and the latest versions we’ve released are pretty stable so we don’t expect to be doing much more&nbsp;maintenance&nbsp;on them going forward.</p><p>If you have a need for an EE1 version of Matrix, Wygwam, or Playa, you can request it by emailing us at&nbsp;<a href="mailto:support@pixelandtonic.com">support@pixelandtonic.com</a>.</p><p>Oh, and one more thing…</p><h2>Field Pack 2</h2><p>One of our favorite features in EE 2.6 is the ability for each add-on package to provide multiple fieldtypes. That enabled us to revisit the old Dive Bar fieldtypes, and package them all up into a single add-on, which we’re calling <a href="http://devot-ee.com/add-ons/field-pack">Field Pack 2</a>.</p><p>We’ve made a few EE 2.6 compatibility updates to Field Pack’s bundled fieldtypes as well, so be sure to grab it if you’re running any of the old Dive Bar fieldtypes.</p><p>We’ve taken time to ensure the upgrade process from the Dive Bar fieldtypes goes smoothly as well. When you install a Field Pack 2 fieldtype, it will check if its Dive Bar counterpart was installed. If it was, it’ll handle the field conversions and fieldtype uninstallation for you. All you have to do is delete the old files.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/ee-2-6</feedburner:origLink></item>
					<item>
				<title>Keep Calm and Carry On</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/-ubr64SCiGs/keep-calm-and-carry-on</link>
				<pubDate>Tue, 23 Apr 2013 13:47:47 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/keep-calm-and-carry-on</guid>
				<description><![CDATA[
					<p>There has been some concern about our commitment to EE after seeing our new <a href="http://pixelandtonic.com">homepage</a>. I’ve <a href="http://pixelandtonic.com/blog/what-is-blocks">said this before</a> but it’s worth reiterating: we’re still fully committed to the platform and our products.</p><!--pagebreak--><p>We’ve been working on Craft for 2 1/2 years now, and throughout that time, we’ve kept up the pace on maintaining and supporting all of our add-ons. We’ve even written a major update to Assets, which in and of itself was the most challenging thing we’ve <em>ever</em> done with ExpressionEngine.<br></p><p>EE 2.6 is about to come out. While we’re not thrilled about one particular new feature, there are some cool things in the release that we’re very excited about, and have already taken advantage of in one of our add-ons. (More on that soon!)</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/keep-calm-and-carry-on</feedburner:origLink></item>
					<item>
				<title>Rebirth</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/26ksSrLlAJA/rebirth</link>
				<pubDate>Mon, 22 Apr 2013 00:00:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/rebirth</guid>
				<description><![CDATA[
					<p>I launched this site over three years ago now. I was working solo at the time, with three commercial EE add-ons and the drive to build a company.&nbsp;Today there are <a href="/about">four of us</a>, we’ve got two more <a href="/ee">add-ons</a>, our own <a href="/craft">frickin’ CMS</a>, and we’re fostering a new <a href="https://plus.google.com/communities/106505340287442511226">community</a> that’s growing around that CMS.</p><p>Times have changed, and so the time has come to to rethink this site’s purpose. There are things it should be focussing on that it wasn’t, and things it shouldn’t be focussing on anymore that it was.</p><!--pagebreak--><h2>Devoted to devot:ee</h2><p>Back when the site launched, <a href="http://devot-ee.com">devot:ee</a> was in its infancy, and its add-on store was merely a twinkle in Ryan Masuga’s eye. Now that site is a vital resource for the EE community, and with its user reviews, favorites, store, and now&nbsp;<a href="http://devot-ee.com/news/item/introducing-lists">lists</a>, it’s a much better place to find out about, share, and purchase our add-ons than this site could ever be. So rather than try to compete with that, we have decided to let devot:ee handle the dedicated add-on overview pages and purchasing exclusively. The <a href="/ee">EE add-ons</a> section of this site is now an elegant menu of our add-ons, with links to devot:ee.</p><p>If you’ve purchased any add-on licenses on pixelandtonic.com in the past, all of those licenses have already been transferred to your devot:ee account. If you don’t have one, or there’s an email mismatch between your devot:ee and former P&amp;T accounts, you’ll receive an email with instructions to reclaim your licenses.</p><h2>Static add-on docs</h2><p>As of today, all of our add-on documentation is available as good ol’ Apache-served HTML files at&nbsp;<a href="http://docs.pixelandtonic.com/">docs.pixelandtonic.com</a>.&nbsp;We’ve been meaning to do this for a while now – this way they can remain available even when we need to take our site down for maintenance.</p><h2>New pages</h2><p>We’ve added two new pages to the site: <a href="/craft">Craft</a>&nbsp;and <a href="/about">About Us</a>.&nbsp;The Craft page&nbsp;features a gorgeous photo taken by the super-talented <a href="http://iamashley.co.uk/">Ashley Baxter</a>, and About Us has illustrations and quick bios for each of us.</p><h2>Built with Craft</h2><p>If there’s any wonder, yes the new pixelandtonic.com was built with Craft. We like it!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/rebirth</feedburner:origLink></item>
					<item>
				<title>Craft Talk at The Nerdary</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/BiPjeK-uPdg/craft-talk-at-the-nerdary</link>
				<pubDate>Tue, 16 Apr 2013 17:38:18 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/craft-talk-at-the-nerdary</guid>
				<description><![CDATA[
					<p>
	Kenny Meyers of <a href="http://www.thenerdary.net">The Nerdary</a> interviewed me about Craft last week, and <a href="http://www.thenerdary.net/post/48123188844/interview-with-brandon-kelly-creator-of-craft">published it</a> this morning.&nbsp;<span style="font-size: 1em; line-height: 1.4;">We covered a pretty wide range of topics, including why we built Craft in the first place, code and technology choices, our internal apps and processes for updating Craft, thoughts on piracy, plugins, and the future of Craft.</span></p>
<p>
	If you’re interested in hearing about the more technical aspects of Craft, it’s definitely <a href="http://www.thenerdary.net/post/48123188844/interview-with-brandon-kelly-creator-of-craft">worth a read</a>!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/craft-talk-at-the-nerdary</feedburner:origLink></item>
					<item>
				<title>Playa 4.4 Released with Better Workflow Support</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/As4ZhfeV-io/playa-4-4</link>
				<pubDate>Tue, 16 Apr 2013 16:51:57 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/playa-4-4</guid>
				<description><![CDATA[
					<p>
	We just released <a href="http://pixelandtonic.com/playa/releasenotes">Playa 4.4</a>, which adds&nbsp;<a href="http://betterworkflow.electricputty.co.uk/">Better Workflow</a> support!&nbsp;<span style="font-size: 1em; line-height: 1.4;">Better Workflow allows you to create drafts of your entries that you can work on without affecting what’s live. It’s a great add-on, and we’re &nbsp;happy to announce that now </span><strong style="font-size: 1em; line-height: 1.4;">all</strong><span style="font-size: 1em; line-height: 1.4;"> of P&amp;T’s add-ons work perfectly with it!</span></p>

<!--pagebreak-->
<p>
	Some changes were required to Better Workflow to make this possible, so you’ll need to grab the just-released BWF 1.6 as well. Many thanks to Electric Putty for working with us to make this happen!</p>
<p>
	Playa 4.4 also includes security and performance improvements, making this a highly recommended update for all Playa users, even if you aren’t using BWF. View the <a href="http://pixelandtonic.com/playa/releasenotes">release notes</a> for a full list of changes.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/playa-4-4</feedburner:origLink></item>
					<item>
				<title>Assets and Craft get Rackspace and Google Cloud Support</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/r04Z9WhTUDE/the-cloud</link>
				<pubDate>Tue, 09 Apr 2013 15:49:45 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/the-cloud</guid>
				<description><![CDATA[
					<p>
	We just released <a href="http://pixelandtonic.com/assets/releasenotes">Assets 2.1</a> and <a href="http://buildwithcraft.com/releases#build2211">Craft 0.9.2211</a>, adding support for Rackspace Cloud Files and Google Cloud Storage in one fell swoop.</p>
<p>
	If you’ve been thinking about using either of those platforms for file storage or as a CDN, you now have a great way to connect your favorite CMS to them!</p>
<p>
	Assets also got lots of handy new template tags, enabling you to do things like output a complete folder/file tree based on your Assets sources. Check the <a href="http://pixelandtonic.com/assets/releasenotes">release notes</a> for a full list of new features.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/the-cloud</feedburner:origLink></item>
					<item>
				<title>Craft Chat: Fridays at 1:30 PST</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/1ThEaIGMl7Y/craft-chat</link>
				<pubDate>Thu, 04 Apr 2013 19:52:15 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/craft-chat</guid>
				<description><![CDATA[
					<p>
	Last week we tested the waters of hosting our own help chat for Craft. And you know what? We had a lot of fun! We talked about a range of topics, from package licensing to Twig to running Craft on multiple environments.</p>

<!--pagebreak-->
<p>
	Here’s what one person had to say about it:</p>
<blockquote class="twitter-tweet">
	<p>
		lots of useful info gleaned chatting with the @<a href="https://twitter.com/craftcms">craftcms</a> folks - lovely looking product backed up by a really nice team. HipChat a nice tool!</p>
	— Al Power (@alpower) <a href="https://twitter.com/alpower/status/317746946947289088">March 29, 2013</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>
	We have decided to make Craft Chats a regular thing. Friday at 1:30 PST worked out really well for us, so we’re going to stick with that for now.</p>
<p>
	The URL is going to change week-to-week, so make sure you’re following&nbsp;<a href="https://twitter.com/craftcms">@craftcms</a> on Twitter to get notified.</p>
<p>
	Talk tomorrow!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/craft-chat</feedburner:origLink></item>
					<item>
				<title>Craft Gets 30-day Package Trials, a Table Fieldtype and More!</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/QAsgzjhcHA4/craft-30-day-trials</link>
				<pubDate>Tue, 26 Mar 2013 15:19:30 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/craft-30-day-trials</guid>
				<description><![CDATA[
					<p>
	We just kicked out Craft’s <a href="http://buildwithcraft.com/releases#build2199">sixth</a> release since the Public Beta began just three weeks ago. The previous five releases have been pretty typical – minor enhancements, bug fixes, and security improvements. But today, we’ve actually got some new features to talk about!</p>

<!--pagebreak-->
<h5>
	30-day Free Package Trials</h5>
<p>
	A number of people have requested a way to try out Craft’s five <a href="http://docs.buildwithcraft.com/packages/index.html">extended feature packages</a>. While we did make it possible to give them a spin via our <a href="https://github.com/pixelandtonic/ontherocks">On the Rocks</a> demo site, that was just a stopgap solution. Now with the latest Craft release, there’s a new “Try” button right next to each package’s “Buy” button, which will start your 30-day free trial. No credit card is necessary – the package is immediately installed, and you have 30 days to decide whether you want to buy the package or uninstall it.</p>
<h5>
	Table Fieldtype</h5>
<p>
	One of the most popular feature requests we’ve received is for&nbsp;<a href="http://pixelandtonic.com/matrix">Matrix</a>. While that’s definitely on the roadmap, our plans for Matrix are pretty ambitious and it will probably end up being a commercial plugin. There are plenty of use cases for a simple table field without all the bells and whistles however, so we created a new “Matrix Light”-esque fieldtype, called Table.</p>
<p>
	With Table, you can set up multiple columns, and<span style="font-size: 1em; line-height: 1.4;">&nbsp;for each one choose a Heading, Handle, Width, and Type (Single-line Text, Multi-line Text, or Number). The columns and the rows are sortable with drag-n-drop, and you can loop through the rows in your templates using a simple <a href="http://twig.sensiolabs.org/doc/tags/for.html">for-loop</a>.</span></p>
<h5>
	Date Fieldtype</h5>
<p>
	We’ve also added a new Date fieldtype, which summons a standard jQuery Datepicker. Dates are stored as MySQL DATETIME columns, so you can set it to dates before January 1, 1970 without issue.</p>
<h5>
	Introducing the Forecast Page</h5>
<p>
	Unrelated to this new Craft release (but awesome nonetheless), we just launched a new <a href="http://buildwithcraft.com/forecast">Forecast</a> page on buildwithcraft.com. It pulls in our “Craft 1.0” to-do list on Basecamp daily, so you can get a sense of what’s in store for Craft as we work toward 1.0. <a href="http://buildwithcraft.com/forecast">Check it out</a>!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/craft-30-day-trials</feedburner:origLink></item>
					<item>
				<title>Craft: One Week Later</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/P3Z_6z10uQ0/craft-one-week-later</link>
				<pubDate>Tue, 12 Mar 2013 18:48:18 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/craft-one-week-later</guid>
				<description><![CDATA[
					<p>
	It’s been one full week since we <a href="http://pixelandtonic.com/blog/craft">launched</a> the <a href="http://buildwithcraft.com/">Craft Public Beta</a>, and it’s been pretty crazy! To give you a taste, here are a few things that have happened In that time:</p>
<ul class="square">
	<li>
		606 Craft licenses have been issued.</li>
	<li>
		3 Craft&nbsp;updates have been released, with a total of 12 improvements, 12 bug fixes, and 5 new features.</li>
	<li>
		267 one-click updates have been issued.</li>
	<li>
		296 people have joined <a href="https://plus.google.com/communities/106505340287442511226">Craft’s Google+ community</a>.</li>
	<li>
		2 community-orchestrated events have taken place.</li>
</ul>

<!--pagebreak-->
<p>
	In today’s release, we added a pretty awesome new feature: <strong>On&nbsp;Demand Asset Transforms</strong>. It’s easier to show you this feature than explain it, so we created a video of the feature in action:</p>
<p>
	<iframe allowfullscreen="" frameborder="0" height="281" mozallowfullscreen="" src="http://player.vimeo.com/video/61658996" webkitallowfullscreen="" width="500"></iframe></p>
<p>
	So, lots going on. We’re having a ton of fun with this, and we hope you are too!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/craft-one-week-later</feedburner:origLink></item>
					<item>
				<title>Craft</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/3K6WV5XBRxc/craft</link>
				<pubDate>Tue, 05 Mar 2013 14:18:42 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/craft</guid>
				<description><![CDATA[
					<p>
	Today’s the day: After 27 months of about 12,500 total man hours, 3,483 commits, three product strategies, 31 redesigns, 7 major architecture shifts, countless code refactors, one <strong>name change</strong>, and approximately 327 liters of consumed Jameson, it is my very great pleasure to introduce you to <strong><a href="http://buildwithcraft.com">Craft</a></strong>.</p>

<!--pagebreak-->
<p>
	If you have’t been <a href="http://pixelandtonic.com/blog/what-is-blocks">paying attention</a>, Craft is a beautiful, robust, extremely powerful, ridiculously flexible CMS which we’ve been diligently working away on, mostly in secret up until a few months ago.</p>
<p>
	Yes, we renamed it. (Previously we called it Blocks.) There was some legal influence in the decision, but ultimately it came down to the fact that we built something very different than we set out to build. “Blocks” was the name of a lightweight little CMS that sounded like a fun 6 month project back in 2011. Those six months passed, another six months passed, and then another before we realized what we had done – built a real, full-featured CMS that we had completely fallen in love with.</p>
<p>
	It wasn’t until a few weeks ago, as we started figuring out how to market the thing, that we realized that “Blocks” didn’t really make sense anymore. We knew our target market, and we knew who <em>wasn’t</em> in our target market, and decided that we needed a name that helped identify that. The CMS is for people who like to take their time and do things right. It’s for those of us who truly approach our work with the utmost skillfulness and craft. We craftsmen actually <em>like</em> writing every last HTML tag by hand, and we wouldn’t touch an off-the-shelf theme with a ten-foot stick.</p>
<p>
	If you can identify with that, I highly recommend that you give <a href="http://buildwithcraft.com">Craft</a> a shot. Today marks its first day in Public Beta, and it has really shaped up to be something great. We’re totally thrilled to have made it this far, and we can’t wait to see what you do with it!</p>
<p>
	We will be posting more about Craft in the coming weeks – we have plenty of stories to tell! – but if we make this post any longer we’re going to lose half of you, so we’ll keep it short and sweet. Go <a href="http://buildwithcraft.com">download Craft!</a></p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/craft</feedburner:origLink></item>
					<item>
				<title>Congrats to the Photo Contest Winners!</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/0Ke9z_jedzk/photo-contest-winners</link>
				<pubDate>Wed, 16 Jan 2013 23:33:32 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/photo-contest-winners</guid>
				<description><![CDATA[
					<p>
	Remember that <a href="http://pixelandtonic.com/blog/snap-a-martini">photo contest</a> we had back in October? Well it took us long enough, but we <a href="http://pixelandtonic.com">finally</a> selected the best ones and put your gorgeous drink photos to use.</p>

<!--pagebreak-->
<p>
	Without further ado, here are the winning photos, in the order they were submitted:</p>
<p>
	Darcy O’Neil <img src="/content/blog/2013-01/drink_contest_winners/Darcy_ONeil.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Derek Hogue <img src="/content/blog/2013-01/drink_contest_winners/Derek_Hogue.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Adam Kragt <img src="/content/blog/2013-01/drink_contest_winners/Adam_Kragt.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Paulo Elias <img src="/content/blog/2013-01/drink_contest_winners/Paulo_Elias.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Chad Clark <img src="/content/blog/2013-01/drink_contest_winners/Chad_Clark.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Seamus Holman <img src="/content/blog/2013-01/drink_contest_winners/Seamus_Holman.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Lea Alcantara <img src="/content/blog/2013-01/drink_contest_winners/Lea_Alcantara.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Luca Di Bella <img src="/content/blog/2013-01/drink_contest_winners/Luca_Di_Bella.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Brendan Underwood <img src="/content/blog/2013-01/drink_contest_winners/Brendan_Underwood.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Wim Bezemer <img src="/content/blog/2013-01/drink_contest_winners/Wim_Bezemer.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Ian Pitts <img src="/content/blog/2013-01/drink_contest_winners/Ian_Pitts.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Matt Gossman <img src="/content/blog/2013-01/drink_contest_winners/Matt_Gossman.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Gomi Child <img src="/content/blog/2013-01/drink_contest_winners/Gomi_Child.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Erwin Heiser <img src="/content/blog/2013-01/drink_contest_winners/Erwin_Heiser.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Simon Cox <img src="/content/blog/2013-01/drink_contest_winners/Simon_Cox.png" style="display: block; margin: 0 -5px;" /></p>
<p>
	Congratulations, guys! We’ll be contacting each of you shortly to find out where we should send your Assets 2 license.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/photo-contest-winners</feedburner:origLink></item>
					<item>
				<title>Assets 2</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/9VGtp1wq5Es/assets2</link>
				<pubDate>Tue, 15 Jan 2013 19:13:31 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/assets2</guid>
				<description><![CDATA[
					<p>
	Assets 1.0 was an interesting launch. Within <em>minutes</em>, people started posting feature requests left and right. It was immediately clear that people weren’t happy with the current state of affairs with file management in EE, and they were hoping Assets would become the solution they’d always hoped for.</p>

<!--pagebreak-->
<p>
	By far, the most popular request we received was for Amazon S3 support. There was just one little problem: the Assets codebase was very much married to EE. To simply lump S3 support onto it would have been freakishly hacky – a maintainability nightmare. If we were going to do it with any sort of elegance, we’d have to rewrite it from scratch.</p>
<p>
	Blocks was already well underway by the time Assets launched, and it was looking more and more like it would be a real thing. Of course, it too would need a good file manager. With that in mind we decided to go ahead and start rewriting Assets, with a new architecture that refactored all of the EE upload directory-specifc code into its own “connector class”. That approach would enable us to add new connectors with relative ease, like one for Blocks, and one for S3.</p>
<p>
	Now, a year and a half later, we finally get to show you what has shaped up to be a very awesome Assets 2.0 release.</p>
<h3>
	What’s new?</h3>
<h5>
	Amazon S3</h5>
<p>
	In case it wasn’t obvious, yes, Assets 2 can connect to S3. You can hook it up to as many S3 buckets from as many AWS accounts as you want. They’ll show up right alongside the rest of your EE upload directories, and you can drag files and folders around between them all, just like you could in Assets 1. It’s really quite magical.</p>
<h5>
	File Indexing</h5>
<p>
	To speed things up, and prevent excessive S3 requests, Assets now stores a record of all of your files and folders in the database. There’s a new “Update Indexes” tab in Assets’ module where you can tell Assets which EE upload directories and/or Amazon S3 buckets to reindex (similar to EE’s “Synchronize” feature). We’ve also added a “Refresh” button to Assets’ file manager, which will quickly reindex whichever folder you’re currently viewing.</p>
<h5>
	Conflict Resolution</h5>
<p>
	When you upload a file with the same name as an existing file, Assets now lets you chose how to proceed. You can rename the new file, replace the original file, or cancel the upload. We didn’t stop at file uploads: you’re given similar choices any time you perform any action which would result in two files or folders with the same name living in the same directory.</p>
<h5>
	Lossless File Replacement</h5>
<p>
	You can now replace existing files while preserving the original file’s metadata and entry associations. Simply upload a new file with the same name as the original. When you’re asked how you want to handle the naming conflict, choose to replace the original file, and presto: new file, same old metadata.</p>
<h5>
	New Module Tags</h5>
<p>
	We’ve given Assets two of its own module tags: <code>&#123;exp:assets:files&#125;</code> and <code>&#123;exp:assets:folders&#125;</code>. You can use them to access your files and folders directly from your templates, rather than going through an Assets field.</p>
<h5>
	Simple File Uploading for SafeCracker</h5>
<p>
	If you have a SafeCacker form and would like users to be able to upload a file to your Assets field with a simple HTML file input, now you can.</p>
<h5>
	Redesigned from the Ground Up</h5>
<p>
	What major P&amp;T add-on update would be complete without a new UI? We pulled all the stops on this one: Assets 2 has been completely redesigned from the ground up. It’s really quite something, and we think it sets a new bar for how beautiful EE2’s control panel can be. The whole thing is Retina-ready (including image thumbnails!), so if you’ve got a Retina MacBook Pro, you’re in for a treat.</p>
<h3>
	Available Now!</h3>
<p>
	Assets 2 is <a href="http://pixelandtonic.com/assets">available now</a> for $99. And it’s a free upgrade for all Assets 1 licenses. We’re really excited to get this out there. It’s a pretty amazing update, and we think you’re going to love it.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/assets2</feedburner:origLink></item>
					<item>
				<title>A Quick Update on Blocks</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/dsSNcK2Thas/a-quick-update-on-blocks</link>
				<pubDate>Mon, 14 Jan 2013 14:52:32 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/a-quick-update-on-blocks</guid>
				<description><![CDATA[
					<p>
	It’s been a couple months since we <a href="http://pixelandtonic.com/blog/what-is-blocks">announced</a> Blocks, and we’re probably due for an update. So here it is!</p>

<!--pagebreak-->
<p>
	We kicked off a private beta in mid-November, and it has been going great. You couldn’t ask for better beta testers. They’ve really been putting Blocks through its paces: they’ve been reporting bugs, sharing ideas, and building plugins (not to mention building websites).</p>
<p>
	There’s a Google Group dedicated to the beta where literally hundreds of discussions have taken place. It’s been invaluable to us as we shape Blocks. Our beta testers have provided direction for things as simple as how to access the CP (looking for an “/admin/” URL segment rather than requiring a separate admin.php file), to much broader subjects like content localization.</p>
<p>
	So to all of our beta testers: <em><strong>Thanks for your help!</strong></em> Blocks will be better for it.</p>
<p>
	If you weren’t invited to the beta, don’t worry – you’ll get your chance to play soon enough. We’re just wrapping up a couple big under-the-hood changes, and then we’ll open the beta up to the public. At that point Blocks will be 99% feature complete for 1.0, and it’ll just be a matter of building out <a href="http://blockscms.com">blockscms.com</a>.</p>
<p>
	…“just”.</p>
<p>
	Anyway, we’re thrilled with the progress we’ve made in the past couple months, and the passion and excitement of this new little Blocks community is truly inspiring. This is fun!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/a-quick-update-on-blocks</feedburner:origLink></item>
					<item>
				<title>P&amp;T’s Got a Brand New Support Site</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/uaUZbbn_orY/ee-stack-exchange</link>
				<pubDate>Tue, 08 Jan 2013 17:50:32 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/ee-stack-exchange</guid>
				<description><![CDATA[
					<p>
	When you need help with ExpressionEngine, it can be difficult to know where to turn. It’s usually not clear whether you should be talking to EllisLab or an add-on developer. Guess wrong, and you must hike over to another website to post the same question again. Sometimes the official support staff gets it wrong, too: We’ve seen customers instructed to repost their question on our forum, only to find out that they actually posted it in the right place to begin with, once we’ve had a chance to dig in.</p>
<p>
	<span style="font-size: 1em; line-height: 1.4;">For years, we’ve been dreaming of a place where customers can get support for EE and their add-ons, all under one roof. And t</span><span style="font-size: 1em; line-height: 1.4;">hanks to the the initiative and drive of the awesome EE community, that dream is becoming a reality.</span></p>

<!--pagebreak-->
<p>
	You’re probably familiar with the developer Q&amp;A site,&nbsp;<a href="http://stackoverflow.com/">Stack Overflow</a> – it’s at the top of most Google searches for anything related to web development. The guys who created Stack Overflow have also created a whole network of domain-specific Q&amp;A sites, called <a href="http://stackexchange.com/">Stack Exchange</a>. And now there’s a new Stack Exchange site dedicated to ExpressionEngine: <a href="http://expressionengine.stackexchange.com">expressionengine.stackexchange.com</a>.</p>
<p>
	There have already been a number of questions posted involving P&amp;T’s add-ons, so a couple weeks ago we started subscribing to our products’ tags and helping out where we can. And as of today, we’re making <a href="http://expressionengine.stackexchange.com">EE Stack Exchange</a> our <strong>primary</strong> support site.</p>
<p>
	To ease the transition, we’ve built a whole new <a href="http://pixelandtonic.com/support">Support</a> page, with a centralized search that brings in results from EE Stack Exchange as well as our old Get Satisfaction site. We’ll continue monitoring Get Satisfaction, but in two weeks we’re planning on putting the site in an archived state.</p>
<p>
	Thanks to all of you who have made the EE Stack Exchange a reality. Your hard work has really paid off!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/ee-stack-exchange</feedburner:origLink></item>
					<item>
				<title>Bring It</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/HsjubV4KtzA/bring-it</link>
				<pubDate>Mon, 26 Nov 2012 03:24:50 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/bring-it</guid>
				<description><![CDATA[
					<p>
	<a href="http://ellislab.com/blog/entry/new-ceo-chief-maker-and-ellislab-focus">Derek Jones</a>:</p>
<blockquote>
	<p>
		“bring it”</p>
</blockquote>
<p>
	OK!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/bring-it</feedburner:origLink></item>
					<item>
				<title>Lisa Wess is joining Pixel &amp; Tonic</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/qzx7JX-WhUI/lisa-wess</link>
				<pubDate>Thu, 01 Nov 2012 18:09:31 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/lisa-wess</guid>
				<description><![CDATA[
					<p>
	Exciting news! Lisa Wess, former VP of Operations at EllisLab, is joining Pixel &amp; Tonic.</p>

<!--pagebreak-->
<p>
	If you haven’t had the pleasure of meeting her, you’re in for a treat! Lisa is kind, fun loving, and eager to help.&nbsp; We’re placing her at the helm of community outreach, where she’ll do what she does best: help people succeed, and cultivate a community of passionate, web-loving individuals.</p>
<p>
	Lisa’s first day will be Monday, November 12, but that hasn’t stopped her from spending her down time playing with <a href="http://blockscms.com">Blocks</a> (see what we did there?).</p>
<p>
	<span style="font-size: 1em; line-height: 1.4;">Here’s what she had to say:</span></p>
<blockquote>
	<p>
		“I am excited to join Pixel &amp; Tonic in building an exciting, engaging, and innovative community. Cheers to a bright future; let us journey together to new adventures, my friends!</p>
</blockquote>
<p>
	You can catch Lisa on Twitter <a href="http://twitter.com/lisajill">@lisajill</a>, and she blogs at&nbsp;<a href="http://lisajill.net/">lisajill.net</a>.</p>
<p>
	<span style="font-size: 1em; line-height: 1.4;">Welcome to the team, Lisa!</span></p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/lisa-wess</feedburner:origLink></item>
					<item>
				<title>What is Blocks?</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/VPa8nwiRfps/what-is-blocks</link>
				<pubDate>Tue, 23 Oct 2012 16:47:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/what-is-blocks</guid>
				<description><![CDATA[
					<p>
	For the past two years, we’ve been working on a little side project here at Pixel &amp; Tonic: a new CMS called <a href="http://blockscms.com">Blocks</a>. We broke our silence a week ago with a <a href="http://twitter.com/pixelandtonic/status/258374794427387905">tweet</a>, which admittedly left a lot of people with a lot of questions. Today, we’re going to begin to answer those questions.</p>

<!--pagebreak-->
<p>
	Ironically, the question we expected to hear the most, hasn’t been asked even once: <em>Why bother?</em> Perhaps that’s because the answer is obvious: This is what Pixel &amp; Tonic was created to do.</p>
<p>
	<a href="http://blockscms.com"><img alt="" src="http://pixelandtonic.com/content/blog/2012-10/what-is-blocks/blocks.jpg" style="width: 500px; height: 400px;" /></a></p>
<h3>
	What’s special about it?</h3>
<p>
	Blocks gets its name from its biggest feature: Content Blocks. It’s our name for “fields”. We realize that every site is different, and has different content requirements. So out of the box, we supply only the bare minimum of content<em>-y</em> fields –&nbsp;titles for entries, first and last names for users, etc. Beyond that, the choice is yours. Sections, pages, users, and assets all get their own “content block sets”, where you can define exactly which content blocks you want to be associated with them. From a development perspective, we’ve made it extremely easy to add content block support to entities in the system, so plugins will be able to take advantage of them as well, with very little effort.</p>
<p>
	Beyond content blocks, the entire system is filled with goodies that will make you smile: Internationalization support, entry drafts and versioning, multi-group assignment for users, one-click updating (for the system and for plugins), and extremely powerful templating, to name a few. Oh, and did we mention that it’s P&amp;T-designed?</p>
<p>
	If you’re a fan of our add-ons, it’s safe to say you’re going to love Blocks.</p>
<h3>
	Who’s it for?</h3>
<p>
	Blocks was built for web designers and developers who like to code every last HTML node by hand. It’s for web agencies that strive to make their clients happy by delivering the best solution possible. And it’s for site owners, who just want a simple tool to keep their website updated with fresh content, without going up a steep learning curve.</p>
<h3>
	What types of sites can be built with Blocks?</h3>
<p>
	It’s hard to answer this question without sounding a little crazy, but here goes. Whether you want to build a small brochure site, a multi-section news site, or anything in between, we want Blocks to be the best CMS option you’ve got, from both cost and feature perspectives.</p>
<p>
	To accomplish that, Blocks has been divided into 6 parts: the core, and five strategic packages, each providing features geared at different types of sites. When you go to purchase Blocks, you can pick and choose which packages you want included, based on your site’s requirements. As your site grows in scope, so can the CMS.</p>
<p>
	So what are they? <strong>Publish Pro</strong> ($100) adds multiple section support, entry drafts and versioning; <strong>Users</strong> ($100) adds user management, groups and permissions; <strong>Language</strong> ($100) adds internationalization support; <strong>Cloud</strong> ($50) adds Amazon S3 and other cloud-based file management support; and <strong>Rebrand</strong> ($50) adds the ability to brand the system for your agency or client. Oh, and if you’re building a simple website with no use for any of those packages, we’re going to give you Core…(drum roll please!)… for <strong>free.</strong></p>
<h3>
	Just how extensible is it?</h3>
<p>
	It should go without saying that we’re big fans of plugins here at Pixel &amp; Tonic. So rest assured, Blocks has been written from the ground up with extensibility in mind. The app has a comprehensive service layer providing APIs that handle absolutely all the business logic, and plugins can tap into those APIs in the exact same way that the core components do. Plugins can even offer their own APIs, enabling cross-compatibility with other plugins. They can have their own controllers, front-end resources, templates… the list goes on. So yeah… Blocks is pretty darn extensible. And if you just want to write a plugin that adds a new block type or widget to the system, it’s as easy to do as it should be.</p>
<h3>
	When will it be available?</h3>
<p>
	We’re gearing up for a private beta as quickly as possible. The initial focus will be finalizing our plugin APIs, so plugin developers will get access first. Once we’re ready, we’ll start to let more people in, and keep scaling it until we’re ready to launch 1.0. To stay in the loop, you can either follow <a href="http://twitter.com/blockscms">@blockscms</a> on Twitter, or signup for the newsletter on <a href="http://blockscms.com">blockscms.com</a>.</p>
<h3>
	What does this mean for our EE add-ons?</h3>
<p>
	In a word: Nothing. ExpressionEngine is a great tool and we’re honored to be a part of its community. We’ve had two years to figure out how to balance working on Blocks and EE add-ons side by side, and we’ve made it work. We’ll continue to maintain and support our existing add-ons, and even write new ones when we feel so compelled.</p>
<p>
	So there you have it! Hopefully this answered most of the big questions floating around, but if you’re still curious about something, feel free to <a href="mailto:support@pixelandtonic.com">email us</a> or ask on <a href="http://twitter.com/pixelandtonic">Twitter</a>. We’re extremely excited about Blocks, and we hope you are too.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/what-is-blocks</feedburner:origLink></item>
					<item>
				<title>Snap a Martini, Get a Free Add-on License</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/qzrz4ckA-EU/snap-a-martini</link>
				<pubDate>Fri, 05 Oct 2012 18:23:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/snap-a-martini</guid>
				<description><![CDATA[
					<p>
	Hey everyone,</p>
<p>
	We’ve got a big add-on update coming out soon, and we need your help! Before we can launch, we need lots and lots of pictures of adult beverages.</p>

<!--pagebreak-->
<p>
	Go out tonight and order your favorite cocktail/vino/beer, snap a photo of it, and send it to <a href="mailto:ontherocks@pixelandtonic.com">ontherocks@pixelandtonic.com</a>. If we end up using your photo on our website, we’ll add a free add-on license to your account!</p>
<p>
	There’s no limit to the number of photos you can send us, or to the number of licenses we’ll give you. You have until 11:59pm PST next Friday (October 12) to send us your photos.</p>
<p>
	Drink up!</p>
<p>
	<em><strong>The not-so-fine print:</strong> Please don’t send us any photos that you didn’t take yourself. By sending us photos, you grant Pixel &amp; Tonic free license to use them for promotional purposes for the rest of time. (You still own them though!) Pixel &amp; Tonic is not responsible for any harm done to yourself, anyone else, or your camera, as a result of drinking alcoholic beverages. Please drink responsibly.</em></p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/snap-a-martini</feedburner:origLink></item>
					<item>
				<title>Welcome, Andris!</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/LjMUKzEDJ0o/welcome-andris</link>
				<pubDate>Mon, 02 Jul 2012 17:03:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/welcome-andris</guid>
				<description><![CDATA[
					<p>
	For the past <a href="http://pixelandtonic.com/blog/php-developer">eight months</a> (!) we’ve been keeping our eyes open for a great PHP developer to join our team. But as we found out, it takes a lot of time and effort to find a good fit, and that’s difficult to manage when you don’t have any time to spare in the first place.</p>
<p>
	Finally about a month ago we decided it was time to get serious. So we opened up a new job posting, and spent two solid weeks emailing, IMing, and video chatting with a slew of candidates.</p>
<p>
	We’re excited to announce that we’ve found our guy!</p>

<!--pagebreak-->
<p>
	His name is Andris Šev-something-or-other, he lives in a small village called <a href="https://maps.google.com/maps?q=latvia">Latvia</a>, and his favorite whiskey is <a href="http://www.laphroaig.com/">Laphroaig</a>.</p>
<p>
	Today was his first day, and he hit the ground running. He updated <a href="http://github.com/pixelandtonic/matrix_multi_upload">Matrix Multi-Upload</a> to support image manipulation preferences and the exp_files table, so it’s no longer necessary to sync your upload directories after uploading files.</p>
<p>
	You can catch Andris on Twitter (<a href="http://twitter.com/piparvecis">@piparvecis</a>), so make sure to give him a big #eecms welcome!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/welcome-andris</feedburner:origLink></item>
					<item>
				<title>Displaying Similar Entries with Playa</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/XVYrwg4vEpk/playa-coparents</link>
				<pubDate>Tue, 15 May 2012 10:38:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/playa-coparents</guid>
				<description><![CDATA[
					<p>
	Today we released <a href="http://pixelandtonic.com/playa/releasenotes">Playa 4.3</a> which introduces a powerful new concept: <strong>co-parents</strong>. With it, we can do some pretty cool things, like show a list of similar entries, without a direct relationship.</p>

<!--pagebreak-->
<p>
	To make sense of the name, first let’s do a quick refresher on Playa’s terminology:</p>
<p>
	Say you had two channels, Ingredients and Drinks. You want to store which ingredients go in each drink, so you put a Playa field on the Drinks channel called “Ingredients”. You create a new Drinks entry, called “Gin &amp; Tonic”, and within the Ingredients field, you select “Gin” and “Tonic Water”.</p>
<p>
	In that example, the “Gin &amp; Tonic” entry becomes the <strong>parent</strong> of the “Gin” and “Tonic Water” entries. Likewise, the “Gin” and “Tonic Water” entries become the <strong>children</strong> of the “Gin &amp; Tonic” entry, as well as <strong>siblings</strong> of each other.</p>
<p>
	Now you create a new entry, “Vodka Tonic”. Its ingredients are “Vodka” and “Tonic Water”. Same story here – “Vodka Tonic” becomes a parent, “Vodka” and “Tonic Water” become children, and siblings of each other. But as of Playa 4.3, one additional relationship is formed: Since both “Gin &amp; Tonic” and “Vodka Tonic” share the child “Tonic Water”, they become <strong>co-parents</strong>&nbsp;of each other.</p>
<p>
	One last Drink entry to add: “<a href="http://pixelandtonic.com/blog/pixel-and-tonic">Pixel &amp; Tonic</a>”. This one’s ingredients include “Red Bull”, “Gin”, “Bitters”, and “Tonic Water”. With this entry in place, two new co-parent relationships are formed: P&amp;T-to-G&amp;T (via “Gin” and “Tonic Water”), and P&amp;T-to-VT (via “Tonic Water”). This case illustrates another feature of co-parent relationships: When you show an entry’s co-parents in the templates, they will be ordered by the number of common children between the entries.</p>
<p>
	That makes for a useful way to use Playa to show similar entries. Take this template, for example. Pretend it’s the Drinks’ single entry page template, located at drinks/index.</p>
<pre><code>&#123;exp:channel:entries channel="drinks"&#125;
  &lt;h1&gt;&#123;title&#125;&lt;/h1&gt;
  &#123;description&#125;

  &lt;h3&gt;Ingredients&lt;/h3&gt;
  &lt;ul&gt;
    &#123;ingredients&#125;
      &lt;li&gt;&#123;title&#125;&lt;/li&gt;
    &#123;/ingredients&#125;
  &lt;/ul&gt;

  &lt;h3&gt;Similar Drinks&lt;/h3&gt;
  &lt;ul&gt;
    &#123;exp:playa:coparents field="ingredients"&#125;
      &lt;li&gt;&lt;a href="&#123;path=drinks/&#123;url_title&#125;"&gt;&#123;title&#125;&lt;/a&gt;&lt;/li&gt;
    &#123;/exp:playa:coparents&#125;
  &lt;/ul&gt;
&#123;/exp:channel:entries&#125;</code></pre>
<p>
	If you were viewing the single entry page for “Gin &amp; Tonic,” both “Pixel &amp; Tonic” and “Vodka Tonic” would show up under Similar Drinks. “Pixel &amp; Tonic” would come first, since they share two of the same ingredients.</p>
<p>
	There are three new tags for getting at co-parent relationships: <code>{exp:playa:coparents}</code> (shown above), <code>{exp:playa:total_coparents}</code>, and <code>{exp:playa:coparent_ids}</code>. Read all about them in Playa’s <a href="http://pixelandtonic.com/playa/docs/templates">Template Tags and Parameters</a> page in the docs.</p>
<p>
	We’re looking forward to what you’ll accomplish with this!</p>
<p>
	&nbsp;</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/playa-coparents</feedburner:origLink></item>
					<item>
				<title>Low Variables Compatibility Across the Board</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/a76IA_So4H4/low-variables</link>
				<pubDate>Tue, 17 Apr 2012 18:14:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/low-variables</guid>
				<description><![CDATA[
					<p>
	We’re happy to announce that <a href="http://pixelandtonic.com/matrix">Matrix</a> and <a href="http://pixelandtonic.com/playa">Playa</a> have just been updated to support <a href="http://gotolow.com/addons/low-variables">Low Variables</a>!</p>
<p>
	These were the last two stragglers, so as of today, we can say that Pixel &amp; Tonic offers Low Variables compatibility across the board!</p>
<p>
	This has been, by far, the most popular feature request for Matrix, so this should be great news for many of you.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/low-variables</feedburner:origLink></item>
					<item>
				<title>Announcing Bulk Discounts</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/Is5_EMInSsY/bulk-discounts</link>
				<pubDate>Wed, 07 Mar 2012 20:02:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/bulk-discounts</guid>
				<description><![CDATA[
					<p>
	Many of you have requested that we offer some sort of discount on large purchases. We’ve always liked the idea, and today, we’re happy to announce that if you buy 10 or more licenses of a product at once, we’re going to knock 10% off the price!</p>
<p>
	In related news, you can now buy Assets, Matrix, and Playa from <a href="http://www.enginehosting.com/">EngineHosting</a> while you’re signing up for a new hosting account. They’ll even install them for you!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/bulk-discounts</feedburner:origLink></item>
					<item>
				<title>Assets Voted Module of the Year</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/KrG7zZ_5zF0/assets-moty</link>
				<pubDate>Thu, 22 Dec 2011 17:16:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/assets-moty</guid>
				<description><![CDATA[
					<p>
	Each December, Devot:ee hosts their AcademEE Awards, where people can vote on their favorite new ExpressionEngine add-ons from the past year.</p>
<p>
	Well, the results are in, and we’re happy to announce that our very own <a href="http://pixelandtonic.com/assets">Assets</a> has been voted 2011’s Module of the Year!</p>

<!--pagebreak-->
<p>
	Beyond that,&nbsp;<a href="https://github.com/pixelandtonic/matrix_multi_upload">Matrix Multi-Upload</a> is a runner-up for Accessory of the Year, and Pixel &amp; Tonic is a runner-up for Developer of the Year.</p>
<p>
	So, a big Thank You to all of you who voted for us! And congrats to the other winners! It’s been a great year for EE add-ons.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/assets-moty</feedburner:origLink></item>
					<item>
				<title>We’re Looking for a PHP Developer</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/WXqTFhOZP0o/php-developer</link>
				<pubDate>Fri, 02 Dec 2011 15:39:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/php-developer</guid>
				<description><![CDATA[
					<p>
	We’ve decided it’s time to grow our two-man team a bit! For starters, we’re looking for a PHP developer to help out with add-on development and support.</p>

<!--pagebreak-->
<p>
	We’re looking for someone who:</p>
<ul class="square">
	<li>
		is proficient﻿ at PHP</li>
	<li>
		is reasonably competent﻿ at HTML/CSS/JS</li>
	<li>
		has experience developing a CodeIgniter application and/or ExpressionEngine add-on (EE 1 or 2)</li>
	<li>
		has experience using Playa, Matrix, or Assets</li>
	<li>
		has strong communication skills and a desire to help others succeed</li>
</ul>
<p>
	&nbsp;</p>
<div>
	This is a contract-to-hire position. After one or two projects, we’ll evaluate how we think you’re doing, and see how you’re feeling about the work. If everybody loves everybody, we’ll offer you a full-time position with us, with benefits.</div>
<div>
	&nbsp;</div>
<div>
	If you think you fit the bill, send us an email at <a href="mailto:work@pixelandtonic.com">work@pixelandtonic.com</a>!</div>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/php-developer</feedburner:origLink></item>
					<item>
				<title>Introducing Assets</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/hwoW_CDbEF8/introducing-assets</link>
				<pubDate>Tue, 28 Jun 2011 16:56:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/introducing-assets</guid>
				<description><![CDATA[
					<p>
	It’s <a href="http://dribbble.com/shots/125658-Assets-file-manager">no secret</a> that over the past several months, we’ve been working on a file management add-on for ExpressionEngine. And today, we’re finally ready to show it to you!</p>

<!--pagebreak-->
<p>
	<a href="http://pixelandtonic.com/assets"><strong>Assets</strong></a> is composed of two parts: a module and a fieldtype. The module hosts a full-blown file manager, unlike anything you’ve ever seen on the web. Two different view modes, file name searching, subfolder support, folder/file drag-n-dropping, the list goes on. We set out to make this thing as easy to use for standard CRUD operations as your desktop OS’s file windows, and I think we’ve achieved just that.</p>
<p>
	The fieldtype enables you to associate files with your individual entries, or Matrix cells. You can choose to allow multiple file selections, or just one. You can also restrict it to specific EE upload directories if you want. And the selected files can either be displayed as thumbnails or in a list view.</p>
<p>
	Double-clicking on a file, either in the module or an Assets field, reveals a little modal window where you can edit the file’s metadata, including&nbsp;Title, Date, Caption, Author, and more. Changes you make here are global, so you don’t have to keep entering the same stuff over and over again. And all of that metadata, as well as other basic info about your files, are readily available for your templates, via Assets’ powerful <a href="http://pixelandtonic.com/assets/docs/templates">template tags</a>.</p>
<p>
	We’ve made it easy to convert File fields over to Assets fields – simply edit the field, and change its Field Type to Assets, and Assets will update your existing entries for you. And if you’re using Wygwam, we’ve even updated that to support Assets’ file browser for file selection. So you can finally have a consistent file browsing experience throughout your Publish page.</p>
<p>
	Assets is available now for just $55, so go <a href="http://pixelandtonic.com/assets">check it out</a>! We think you’ll agree that Assets is file management done right.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/introducing-assets</feedburner:origLink></item>
					<item>
				<title>Wygwam 2.2 Released!</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/D2fEpY3KITQ/wygwam22</link>
				<pubDate>Thu, 10 Feb 2011 03:31:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/wygwam22</guid>
				<description><![CDATA[
					<p>
	Earlier today we released <a href="/wygwam/releasenotes">Wygwam 2.2</a>, which packs a few long-requested features, namely Pages and Structure module integration.&nbsp;But the best part about this update is what it represents.</p>

<!--pagebreak-->
<p>
	Up until now, we’ve always included the stock release of CKEditor, never modifying it beyond our custom skin. When a request came along that fell into CKEditor’s turf, we’d just shrug and apologize that it’s not something we have control over.</p>
<p>
	But here’s the thing: Unlike the other CKEditor implementations for ExpressionEngine, Wygwam is actually an OEM-licensed application for CKEditor (and CKFinder). Which is why we’re allowed to distribute it as part of the add-on, rather than requiring you to download and install it separately. With that, we’re also free to modify it to our liking. So it’s never been a legal matter that we haven’t touched CKEditor; just that we haven’t taken the time to get to know it.</p>
<p>
	With Wygwam 2.2, we’ve finally rolled up our sleeves and started digging around in the internals of CKEditor, tweaking things here and there. So that Pages and Structure integration, that Relationship field in the Link dialog – those were changes we were able to make right in CKEditor’s core code. No external hacks required.</p>
<p>
	And those are just the beginning! We’ve already got a list going of changes we’d like to make, and are analyzing the best ways to go about them.</p>
<p>
	Of course, we’d love to hear your thoughts as well. Do you have any special features you wish Wygwam had? Let us know!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/wygwam22</feedburner:origLink></item>
					<item>
				<title>Playa 4 has arrived!</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/To6-CuOmKlA/playa4</link>
				<pubDate>Wed, 02 Feb 2011 16:17:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/playa4</guid>
				<description><![CDATA[
					<p>
	Today, we’re thrilled to announce the immediate release of <a href="/playa">Playa 4</a>, the next major version of our premiere relationship machine for ExpressionEngine.</p>
<p>
	The update packs some new UI goodness (as always), plus a ton of big under-the-hood changes that make Playa more powerful than ever!</p>

<!--pagebreak-->
<h3>
	Translucent UI</h3>
<p>
	Playa now sports the same translucent UI styling that we pioneered with Matrix 2, making your Playa fields look stunning regardless of which Control Panel theme you’re using.</p>
<h3>
	Autocomplete for Single-Selects</h3>
<p>
	We’ve written a new single-select UI with autocomplete, for the times you only want to allow one selection. This is especially useful if you’ve got hundreds or thousands of entries to choose from – no more scrolling through a list of entries a mile long!</p>
<h3>
	New Database Table</h3>
<p>
	We know this isn’t quite as sexy as the UI stuff, but it’s a very huge part of this update. Playa has outgrown EE’s native exp_relationships table, and has moved into its own exp_playa_relationships. This has enabled us to significantly simplify parts of the code, while making Playa more powerful at the same time.</p>
<h3>
	Playa Converters</h3>
<p>
	We’ve made it much easier to <a href="/playa/docs/conversion">convert</a> Relationship fields and even relationships created by Solspace’s Related Entries module over to Playa.</p>
<h3>
	Seriously Powerful Templating</h3>
<p>
	We’ve added tons of new <a href="/playa/docs/templates">templating tags</a>, and even enhanced the ones that were already there. With Playa 4, you’re free to do what you want.</p>
<h3>
	Dropping EE1 Compatibility</h3>
<p>
	Now that ExpressionEngine 2 has been out for over a year, we decided it’s time to stop worrying about EE1. So starting with Playa 4, all major new Pixel &amp; Tonic releases are going to be for EE2 only. We do realize that some people still <em>need</em> to use EE1 though, so for the time being we’re bundling the latest release of Playa 3 in with the download.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/playa4</feedburner:origLink></item>
					<item>
				<title>Have a drink on us!</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/-_2ubWim4y0/have-a-drink-on-us</link>
				<pubDate>Thu, 09 Sep 2010 21:20:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/have-a-drink-on-us</guid>
				<description><![CDATA[
					<p>
	Thanks to all of you, yesterday was our strongest sales day yet! To show our gratitude for your continued support, we’re picking up the tab at a couple upcoming ExpressionEngine get-togethers:</p>

<!--pagebreak-->
<h3>
	<a href="http://eeci2010.com/">EECI2010, The Netherlands</a></h3>
<p>
	On the second night of this year’s <a href="http://eeci2010.com/">European EECI conference</a>, we’re sponsoring the “P&amp;T PartEE”. And we’ll be there to enjoy it too, so make sure to say hi!</p>
<h3>
	<a href="http://expressionenginecamp.com/">ExpressionEngine Camp, Denver, CO</a></h3>
<p>
	Live in the US? You should check out <a href="http://expressionenginecamp.com/">ExpressionEngine Camp</a>, which looks like it’ll be a promising event in late October. The best part? The venue <em>has</em> a bar!</p>
<p>
	Naturally, we’ll see to it that both events are serving <a href="http://pixelandtonic.com/blog/pixel-and-tonic">pixel and tonics</a>&nbsp;:)</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/have-a-drink-on-us</feedburner:origLink></item>
					<item>
				<title>Introducing the Dive Bar</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/W2uvFhoKd5M/divebar</link>
				<pubDate>Fri, 23 Jul 2010 09:00:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/divebar</guid>
				<description><![CDATA[
					<p>
	Ever since we opened our doors – <em>exactly 5 months ago today!</em> – the site has been missing a key ingredient: a place to release lightweight add-ons. Add-ons that are simple enough that I couldn’t write a whole Overview page for if I tried, and have no need for public changelogs, documentation, or support links.</p>
<p>
	So today, we take the wraps off of a new section here on P&amp;T.com: the <a href="{site_url}divebar">Dive Bar</a>.</p>
<p>
	We’ve got four new add-ons on tap for you downloading pleasure, and more on the way. They’re all free, so check them out!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/divebar</feedburner:origLink></item>
					<item>
				<title>The Pixel &amp; Tonic</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/6uLarUt8rs4/pixel-and-tonic</link>
				<pubDate>Fri, 21 May 2010 14:13:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/pixel-and-tonic</guid>
				<description><![CDATA[
					<p>
	Let’s face it: you can’t name your company “Pixel &amp; Tonic” and not have a drink named after it.</p>
<p>
	So we’ve been hard at work figuring out just what a <em>Pixel &amp; Tonic</em> is made of. It’s been a true labor of love, and today, we’re excited to share our findings with you!</p>

<!--pagebreak-->
<p>
	The big challenge was deciding what a “pixel” is, when referring to drinks.</p>
<p>
	Well, what is a pixel made up of? Red, Green, and Blue lights.</p>
<p>
	<em>RGB</em>.</p>
<p>
	So we set out to find three things, beginning with R, G, and B, that would go well together, along with tonic water, and look handsome when garnished with a lemon.</p>
<p>
	After some trial and error, we came up with Red Bull, Gin, and Bitters.</p>
<p>
	<em>RGB</em>.</p>
<p>
	Without further ado, here’s the official recipe. Enjoy!</p>
<h5>
	Ingredients</h5>
<ul class="square">
	<li>
		2 parts Gin</li>
	<li>
		1 part Red Bull</li>
	<li>
		1 part Tonic Water</li>
	<li>
		a dash of Bitters</li>
</ul>
<h5>
	Mixing Instructions</h5>
<p>
	Build over ice in a highball glass. Stir and garnish with a lemon wedge.</p>
<p>
	<a href="http://www.flickr.com/photos/brandonkelly/4627364691/in/set-72157624109260290/"><img alt="Pixel &amp; Tonic" src="/content/blog/2010-05/pixel_and_tonic.jpg" style="width: 500px; height: 368px; "></a></p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/pixel-and-tonic</feedburner:origLink></item>
					<item>
				<title>P&amp;T Progress Report, May ’10</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/bhKxrfZIASM/progress-report-may-10</link>
				<pubDate>Fri, 21 May 2010 07:03:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/progress-report-may-10</guid>
				<description><![CDATA[
					<p>
	It’s been three months since Pixel &amp; Tonic opened its doors. So much has happened since then (even beyond reaching <a href="http://pixelandtonic.com/">100% EE2-readiness</a>), we felt it was time to show off some of what we’ve been up to.</p>

<!--pagebreak-->
<h3>
	“We” means *we*</h3>
<p>
	On Monday, May 3, <a href="http://twitter.com/takobell">Brad Bell</a> joined Pixel &amp; Tonic, officially making this a two-man operation. Brad and I worked at a web agency together a couple years ago, where we built a gaming portal for a well-known tech company. We’re not ready to talk about what he’s working on yet, suffice to say that we’re trying something new, and we think it’s going to be awesome.</p>
<h3>
	New digs</h3>
<p>
	It didn’t take long to realize that working from home isn’t for me. So shortly before Brad started, I signed a lease for an office in downtown Willow Glen, a vibrant little town in San Jose.</p>
<p>
	Here’s a pic of the office. Click to view a couple others on Flickr.</p>
<p>
	<a href="http://www.flickr.com/photos/brandonkelly/sets/72157624109260290/"><img alt="P&amp;T Digs" src="/content/blog/2010-05/pt_digs.jpg" style="width: 500px; height: 332px;"></a></p>
<h3>
	New storefront</h3>
<p>
	On Wednesday, May 12, <a href="http://devot-ee.com/">Devot:ee</a> announced the opening of their <a href="http://devot-ee.com/add-ons/store/">Add-on Store</a>. So the best place to discover EE add-ons is now the best place to buy them, too. To show our support, <a href="http://devot-ee.com/add-ons/matrix/">Matrix</a>, <a href="http://devot-ee.com/add-ons/wygwam/">Wygwam</a>, and <a href="http://devot-ee.com/add-ons/playa/">Playa</a> were all available for sale from day one. So now you can buy your favorite P&amp;T add-ons right alongside <a href="http://devot-ee.com/add-ons/bucketlist/">BucketList</a>, <a href="http://devot-ee.com/add-ons/cartthrob/">CartThrob</a>, <a href="http://devot-ee.com/add-ons/low-variables/">Low Variables</a>, and whatever else you need for your upcoming EE project, all with one purchase. Plus, 20% of your purchase will go to Devot:ee, so it’s a great way to show your support for the site.</p>
<p>
	Along with the Add-on Store, Devot:ee also dropped its “Devot:ed” paid memberships. Now, anyone can rate and review add-ons for free! *<a href="http://devot-ee.com/developers/ee/pixelandtonic/">Cough</a>*</p>
<p>
	So, a big congrats to Ryan and Jacob for their game-changing work!</p>
<h3>
	New drink</h3>
<p>
	This past week we’ve been hard at work defining just what a “Pixel &amp; Tonic” is. Yesterday, we found it, and it’s delicious! <a href="/blog/pixel-and-tonic" title="Pixel and Tonic">Read about it here</a>.</p>
<h3>
	Workshop at EECI2010</h3>
<p>
	I’ll be giving a <a href="http://eeci2010.com/speakers/%23brandon-kelly">workshop</a> at <a href="http://eeci2010.com/">EECI2010</a> in a little over a week. The subject will be ‘creating engaging experiences’. Here’s the synopsis:</p>
<blockquote>
	<p>
		User experience matters, whether you’re designing a website or developing an add-on. Will yours be engaging, downright annoying, or just plain forgettable? It’s up to you! Learn what works (and what doesn’t) from a connoisseur of interaction design in this two-hour workshop.</p>
</blockquote>
<p>
	The conference is almost sold out. If you hurry, you can buy one of the view remaining tickets <a href="http://eeci2010.com/tickets/">here</a>. And for those who can’t come, they’re also making a DVD of the conference, which will only cost $99.</p>
<p>
	Thanks for tuning in!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/progress-report-may-10</feedburner:origLink></item>
					<item>
				<title>Matrix 2 Released</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/G_q_L-ga20A/matrix2</link>
				<pubDate>Tue, 04 May 2010 09:48:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/matrix2</guid>
				<description><![CDATA[
					<p>
	Today, we’re thrilled to announce the release of <a href="/matrix">Matrix 2</a> for ExpressionEngine 1 and 2.</p>
<p>
	Matrix 2 is a complete rewrite of what was formerly called FF Matrix.&nbsp;We’ve added some great new features along the way:</p>

<!--pagebreak-->
<h3>
	New UI</h3>
<p>
	As if you didn’t see this coming :) Matrix 2 sports a new translucent skin that looks great on both ExpressionEngine 1 and all of the ExpressionEngine 2 themes.</p>
<h3>
	File Celltype for ExpressionEngine 2</h3>
<p>
	Thanks to EE2’s new File Manager, adding a File celltype to Matrix was too easy to pass up. Plus, we realize how essential file upload celltypes have become to many of Matrix’s uses.</p>
<h3>
	New Column Settings</h3>
<p>
	You can now give each of your columns their own instructions for authors, set their widths, and decide whether data entered into that column should be used as search keywords or not.</p>
<h3>
	Its Own Database Table</h3>
<p>
	Rather than jumbling all of your data into a giant serialized array and storing it in your <code>exp_weblog_data</code> table, Matrix 2 actually saves its data in a new <code>exp_matrix_data</code> table, which leads to better reliability and performance.</p>
<h3>
	Free Upgrade</h3>
<p>
	If you’ve already purchased an FF Matrix Site License, upgrading to Matrix 2 is completely free. And new licenses are just $55.</p>
<p>
	Hope you like it!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/matrix2</feedburner:origLink></item>
					<item>
				<title>Playa 3 Released</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/0wz3Pv-OxtQ/playa3</link>
				<pubDate>Mon, 12 Apr 2010 21:45:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/playa3</guid>
				<description><![CDATA[
					<p>
	Today we released a major update to <a href="http://pixelandtonic.com/playa">Playa</a>, everyone’s favorite relationship counselor!</p>
<p>
	Here are the big new features:</p>

<!--pagebreak-->
<h3>EE2 Compatibility</h3>
<p>
	Playa 3 works seamlessly in the ExpressionEngine 2 Public Beta, making it our second EE2 offering.</p>
<h3>
	New UI</h3>
<p>
	We’ve redesigned and reengineered Playa’s Drop Panes UI from the ground up, simplifying its appearance and making it a ton of fun to use!</p>
<h3>
	Huge Performance Improvements</h3>
<p>
	Performance was a major focus for this release. You can now use Playa on large-scale sites with thousands of entries without worrying about slow Control Panel load times.</p>
<p>
	Best part? If you already own a Playa site license, Playa 3 is a free upgrade! So what are you waiting for? <a href="http://pixelandtonic.com/playa">Go grab a copy!</a></p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/playa3</feedburner:origLink></item>
					<item>
				<title>Launch Giveaways Given Away</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/-tQeYVxhiJs/launch-giveaways-given-away</link>
				<pubDate>Tue, 30 Mar 2010 16:03:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/launch-giveaways-given-away</guid>
				<description><![CDATA[
					<p>
	Well, we’re a month late, but our little <a href="/blog/launch-giveaways">Launch Giveaways</a> have finally come about!</p>

<!--pagebreak-->
<p>
	The three <em>big</em> winners are:</p>
<ul class="square">
	<li>
		Grand Prize: <a href="http://eetemplates.com/">Marcus Neto</a></li>
	<li>
		Second Prize: <a href="http://www.liamcrean.co.uk/">Liam Crean</a></li>
	<li>
		Third Prize: <a href="http://www.poccuo.com/">Mason Kessinger</a></li>
</ul>
<p>
	50 Playa, Wygwam, and FF Matrix licenses have also been shipped out – check your email to see if you’ve won!</p>
<p>
	So <em>Congrats</em> to all of the winners! And we look forward to seeing Marcus at EECI2010!</p>
<p>
	Finally, thanks again to <a href="http://ellislab.com/">EllisLab</a> and <a href="http://www.enginehosting.com/">EngineHosting</a>&nbsp;for your generous contributions to the Giveaways!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/launch-giveaways-given-away</feedburner:origLink></item>
					<item>
				<title>Making P&amp;T: Juniper</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/836vL4EFV78/making-pt-juniper</link>
				<pubDate>Thu, 04 Mar 2010 17:00:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/making-pt-juniper</guid>
				<description><![CDATA[
								<p class="aside">
	This is the fourth and final installment in a series about the design and development behind what is now Pixel &amp; Tonic. <a href="http://v1.pixelandtonic.dev/blog/making-pt-docs">Yesterday</a> we looked at how we’re doing documentation. Today we’ll take a look at the other aspects of add-on management and commerce.</p>

			
<p>
	November, 2008. Four months since I had moved out and taken a new job. And I was under the impression that my stint with ExpressionEngine was over. I had only developed a couple websites with EE at my previous job. One of them required I build <a href="http://v1.pixelandtonic.dev/playa">Playa</a>, and when the site was done I released it for free as a token of thanks for all of the other free add-ons people had released. I had no intention of actively supporting or maintaining it – especially since I wasn’t even using EE at the new job.</p>
<p>
	But then I joined Twitter. ExpressionEngine users followed me, and I followed them back. I started seeing mentions of Playa here and there, and realized that people were actually using it. But they weren’t all nice things – many were having issues. I wouldn’t stand for that, so I started releasing updates. And with that, finding a way to manage releases.</p>
<p>
	At first, I turned to LG Data Matrix. Each time I released an update, I’d create a new row in an LGDM field – saving only the Version and Release Date in text fields, and the Release Notes in a textarea. A separate MH File field held the latest file.</p>
<p>
	But I wanted the dates to be stored as actual timestamps – something I could reformat within my templates (for, say, a <a href="http://eeinsider.com/articles/feeding-entries-with-lg-data-matrix/">Changelog feed</a>). And I wanted a checkbox cell to define which rows would show up on my add-on overview pages (in a “Recent Changes” section). So I hacked those cell-types into LG Data Matrix myself. (Later, Leevi was kind enough to include my changes in his 1.1 update.)</p>
<p>
	Working on LG Data Matrix got me thinking: How cool would it be if the add-on came with an API that made it easy for anyone to create cell-types? Wait… how <i>awesome</i>&nbsp;would it be if there were an API that made entire <i>field-types</i>&nbsp;easy to create? And, once that was established, I could clone LG Data Matrix with that API, and then <i>it</i>&nbsp;could load these field-types itself, so they’d&nbsp;<i>double</i>&nbsp;as cell-types!</p>
<p>
	A couple months later, <a href="http://v1.pixelandtonic.dev/fieldframe">FieldFrame</a> and <a href="http://v1.pixelandtonic.dev/ffmatrix">FF Matrix</a> were born. And not long after that,&nbsp;<a href="http://www.ngenworks.com/software/ee/ngen-file-field/">nGen File Field</a>.</p>
<p>
	<i>Which brings us back to managing releases.</i>&nbsp;With FF Matrix and nGen File, I could now store each individual release’s ZIP file right alongside the rest of its metadata:</p>
<p>
	</p><figure class="flush"><img alt="FF Matrix" height="188" src="http://pixelandtonic.com/content/blog/2010-03/making-pt-juniper/ffmatrix.jpg" width="580"></figure>
<h3>
	Going Commercial</h3>
<p>
	April, 2009. I released Playa 2, a notable update that brought the add-on far beyond its original scope. So I decided that it was time to start charging.</p>
<p>
	For payment processing, I did what I think most add-on developers have done to date: take the Simple Commerce module, and hack the hell out of it.</p>
<p>
	The two big changes were:</p>
<ol>
	<li>
		Don’t require a user to be logged-in to make a purchase. (I didn’t have any sort of member accounts, and wasn’t interested in dealing with that just so people could buy things.)</li>
	<li>
		Upon completion of a purchase, generate a license key. Store it alongside the other purchase data in <kbd>exp_simple_commerce_purchases</kbd>, and make it an available variable for my Customer Email Template.</li>
</ol>
<p>
	When a customer completed a purchase, they would receive their License email, which included a Download URL. The URL was essentially a script that searched the purchases table for the license key it was passed, and if a record was found, served up the latest File for the associated product.</p>
<p>
	Though the system <em>worked</em>&nbsp;(for the most part, anyway), I was never happy with it. I didn’t like how disconnected everything was – release metadata and files being stored in a Matrix field; purchases being handled by a separate, hacked module; and file downloading by its own one-off script. I like to keep things contained, and this was anything but.</p>
<h3>
	Enter Juniper</h3>
<p>
	Pixel &amp; Tonic gave me a clean slate. I could do anything I wanted. So I spent some time identifying what I disliked about the old system, what type of features I’d like to see, and what would be the most straightforward solution for myself and my customers.</p>
<p>
	Here’s a summary of what I came up with:</p>
<ul class="square">
	<li>
		Since items for purchase are typically associated with entries, so their commerce setup should take place right within a tab on the publish page.</li>
	<li>
		This tab should hold two things: the item’s price, and release matrix. The release matrix should record the Version, Release Date, Release Notes, and File for each release.</li>
	<li>
		Since license generation is tied to purchases, the module should handle the commerce.</li>
	<li>
		Since file downloading is conditional upon either the item being free or the member having paid for it, the module should handle that as well.</li>
</ul>
<p>
	Essentially, take each of the components of the old system, and combine them into one module that’s specifically tailored to my own needs (selling software).</p>
<p>
	The end result is Juniper. Here’s what the publish tab looks like:</p>
<p>
	</p><figure class="flush"><img alt="Juniper" height="545" src="http://pixelandtonic.com/content/blog/2010-03/making-pt-juniper/juniper.jpg" width="580"></figure>
<p>
	For the Releases matrix, I took the opportunity to try a couple new things that might make their way into the next major release of FF Matrix. The most noticeable being that previously-saved content is initially presented in a non-editable state. If you do want to edit a cell, simply clicking on it will swap its static state with an editable field. Hitting the ESC key while that input has focus will revert the cell back. This drastically cuts down the visual clutter of the matrix, and also makes it easier to identify which cells have unsaved changes.</p>
<h4>
	Templating with Juniper</h4>
<p>
	I spent a lot of time on the templating end of the module, which helped me keep my site’s templates straightforward.</p>
<p>
	With the help of an additional field, <code>for_sale</code>, those Download / Buy Now buttons at the top of each of my add-on pages were as simple as:</p>
<pre><code>{if for_sale == "y"}
    &lt;a href="{exp:juniper:add_to_cart_url entry_id='{entry_id}' return='store/cart'}"&gt;Buy Now&lt;/a&gt;
{if:else}
    &lt;a href="{exp:juniper:download_url entry_id='{entry_id}'}"&gt;Download&lt;/a&gt;
{/if}</code></pre>
<p>
	<code>{exp:juniper:add_to_cart_url}</code> adds the item associated with the passed-in <code>{entry_id}</code> to the user’s cart (an array stored in the session), and optionally redirects the browser to a specified template. In this case, users are redirected to <kbd>store/cart</kbd>, whose template looks a bit like this:</p>
<pre><code>{exp:juniper:cart_form checkout="store/checkout"}
    {if no_items}&lt;p&gt;Your cart is empty.&lt;/p&gt;{/if}

    &lt;table class="cart"&gt;
        &lt;thead&gt;&lt;tr&gt;
            &lt;th scope="col"&gt;Product&lt;/th&gt;
            &lt;th scope="col"&gt;Quantity&lt;/th&gt;
            &lt;th scope="col"&gt;Price&lt;/th&gt;
            &lt;th scope="col"&gt;Total&lt;/th&gt;
        &lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
            {items}
                &lt;tr&gt;
                    &lt;th scope="col"&gt;&lt;a href="{path={url_title}}"&gt;{title}&lt;/a&gt;&lt;/th&gt;
                    &lt;td&gt;&lt;input type="text" name="quantity[{item_id}]" size="2" value="{quantity}" /&gt;&lt;/td&gt;
                    &lt;td&gt;${price}&lt;/td&gt;
                    &lt;td&gt;${total}&lt;/td&gt;
                &lt;/tr&gt;
            {/items}
            &lt;tr&gt;
                &lt;td colspan="3"&gt;&lt;/td&gt;
                &lt;td&gt;&lt;strong&gt;Grand Total:&lt;/strong&gt; ${grand_total}&lt;/td&gt;
            &lt;/tr&gt;
        &lt;/tbody&gt;
    &lt;/table&gt;

    &lt;input class="button" type="submit" name="update" value="Update Cart" /&gt;
    &lt;input class="button submit" type="submit" name="checkout" value="Checkout" /&gt;

{/exp:juniper:cart_form}</code></pre>
<p>
	The <code>{items}</code> tag pair loops through each unique item in the user’s cart. Both Submit buttons will update the user’s cart with the new item quantities, and then either reload the current template, or redirect to the template specified in <code>{exp:juniper:cart_form}</code>’s <code>checkout=</code> parameter, depending on which Submit button the user pressed.</p>
<p>
	The other two Juniper-related templates, <kbd>store/checkout</kbd> and <kbd>members/index</kbd>, look much like you’d expect, so we’ll skip those.</p>
<h4>
	Much to be done</h4>
<p>
	I launched with many of Juniper’s to-do list items unchecked, and have been adding them as I have time. This past week has seen the addition of PayPal integration, some fancy charts behind the scenes, and even public module actions for generating a LG Addon Updater <kbd>version.xml</kbd> file and NSM Addon Updater <kbd>releases.rss</kbd> files. Purchase management isn’t quite finished yet, which is why I’m running a little late on those <a href="http://v1.pixelandtonic.dev/blog/launch-giveaways">Launch Giveaways</a>, and there are quite a few other nice-to-have’s in the pipeline.</p>
<p>
	But I couldn’t be happier with what I accomplished in this module, especially considering all of the other things I’ve been juggling these last couple months. I feel very confident about Juniper as my new release management/purchasing/downloading platform, and the initial reaction to its checkout experience has been quite positive.</p>
<h4>
	Release</h4>
<p>
	It’s very likely that Juniper will be released in some fashion this year. Given that it’s a very targeted product, how I go about it – the price, the availability, the support model, etc. – are still up in the air. But <a href="http://vimeo.com/7561777">it’s no secret</a> that I think more EE add-on developers should start charging for their work, and I’m happy to help make that a reality.&nbsp;If it’s something you’re interested in, let me know in the comments.</p>

<p class="aside">
	This concludes Making P&amp;T, our series on the design and development of what is now Pixel &amp; Tonic. If you have any other subjects you’d like to hear about on Blog &amp; Tonic, feel free to share in the comments. But for now, we’re going to get back to doing what we do best: developing add-ons.</p>
				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/making-pt-juniper</feedburner:origLink></item>
					<item>
				<title>Making P&amp;T: Docs</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/-LQ9ZfT_MLI/making-pt-docs</link>
				<pubDate>Thu, 04 Mar 2010 07:00:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/making-pt-docs</guid>
				<description><![CDATA[
					<p class="aside">
	This is the third installment in a series about the design and development behind what is now Pixel &amp; Tonic. <a href="/blog/making-pt-structure">Yesterday</a> we looked at how the site is structured, and how we’re handling URLs. Today I’m going to focus on how I’m managing my product documentation.</p>

<!--pagebreak-->
<p>
	When I decided to migrate my FieldFrame documentation from the GitHub wiki to brandon-kelly.com, I was spoiled by a variety of approaches to choose from. I could have simply created a “FieldFrame Docs” weblog, and created a contents tree with your standard <code>{exp:weblog:entries}</code> tag, or done something a bit more interesting using Structure.</p>
<p>
	But as I’m always looking to bend my own products in strange new ways, what I came up with was quite absurd.</p>
<p>
	I started by creating that FieldFrame Docs weblog and giving each page its own entry. For the contents tree, I made a new FF Matrix field within my EE Add-ons field group, and gave it two cells: <i>Page</i> (a Playa select related to the Docs weblog), and <i>Alternate Heading</i> (a text field). I wanted to be able to organize my pages into groups, so a row with an Alt Heading set would appear as a heading, and the others would be linked titles. I also created a new FF Matrix celltype, “FFM Hierarchy”, and used that to establish a hierarchy within the tree.</p>
<p>
	<img alt="" class="flush" src="/content/blog/2010-02/making/docs-matrix.jpg" style="width: 580px; height: 331px; "></p>
<p>
	It might look decent, but in practice it’s been a pain in the ass to maintain. Every time I wanted to add a new page, I’d first create the new page’s entry, then go to FieldFrame’s entry, add a new row to the Docs matrix and relate it to the page. If that page was to be placed anywhere but at the end, the hierarchy would tend to get screwed up, and require readjustment. Oh, and when I gave Playa its own Docs section, I had to relate the Playa cell to its weblog as well as FieldFrame Docs, so if I wasn’t careful I could accidentally relate FieldFrame to a Playa Docs page, and vise-versa.</p>
<p>
	But the <em>worst part</em> was the templates. There was the <kbd>site/_docs</kbd> template (routed from <kbd>site/index</kbd> and <kbd>site/_apps</kbd>), which displayed the current page’s contents:</p>
<pre><code>&#123;exp:weblog:entries dynamic="off" weblog="docs_&#123;segment_1&#125;"
       url_title="&#123;segment_3&#125;&#123;if segment_3 == ''&#125;docs_&#123;segment_1&#125;&#123;/if&#125;"
       limit="1" ... &#125;

&#123;embed="site/_docs_tree" url_title="&#123;url_title&#125;" title="&#123;title&#125;"&#125;
   &lt;div class="col first wide body"&gt;
       &#123;exp:textile&#125;&#123;docs_body&#125;&#123;/exp:textile&#125;
   &lt;/div&gt;
&#123;/exp:weblog:entries&#125;</code></pre>
<p>
	And the subsequently-embedded <kbd>site/_docs_tree</kbd> was responsible for building the actual contents tree, as well as embedding the site header and footer:</p>
<pre><code>&#123;exp:weblog:entries dynamic="off" weblog="ee" url_title="&#123;segment_1&#125;"
       limit="1" ... &#125;

&#123;embed="site/_header" ... &#125;

&lt;ul class="subnav"&gt; ... &lt;/ul&gt;

&lt;h1&gt;&#123;embed:title&#125;&lt;/h1&gt;

&lt;div class="col last callout"&gt;
   &lt;h3&gt;&#123;title&#125; Documentation&lt;/h3&gt;

   &lt;ul&gt;
       &#123;docs_tree&#125;
           &lt;li&gt;
               &#123;if page&#125;
                   &#123;page&#125;&lt;a&#123;if url_title == "&#123;embed:url_title&#125;"&#125; class="active"&#123;/if&#125; href="/&#123;segment_1&#125;/&#123;segment_2&#125;&#123;if url_title != weblog_short_name&#125;/&#123;url_title&#125;&#123;/if&#125;"&gt;
                       &#123;title&#125;
                   &lt;/a&gt;&#123;/page&#125;
               &#123;if:else&#125;
                   &lt;h4&gt;&#123;heading&#125;&lt;/h4&gt;
               &#123;/if&#125;
               &#123;if subpages&#125;
                   &lt;ul&gt;
                       &#123;subpages&#125;
                   &lt;/ul&gt;
               &#123;/if&#125;
           &lt;/li&gt;
       &#123;/docs_tree&#125;
   &lt;/ul&gt;
&lt;/div&gt;

&#123;/exp:weblog:entries&#125;</code></pre>
<p>
	It was a mess.</p>
<h3>
	The Docs Module</h3>
<p>
	Thankfully I decided to use EE2 on pixelandtonic.com, where such an abomination isn’t yet possible, while I wait for… myself… to port FF Matrix over. So this time around, I took the cleanest possible approach: I wrote a new module!</p>
<p>
	Thanks to EE2’s new module tab API, each of my EE Add-on entries have their own “Docs” tab on the publish page, where I can manage all documentation for that entry, including the hierarchy:</p>
<p>
	<img alt="Docs module tab" class="flush" src="/content/blog/2010-02/making/docs-module.jpg" style="width: 580px; height: 318px; "></p>
<p>
	And since my module’s tag pair doesn’t conflict with <code>{exp:weblog:entries}</code>, I can now fit the entire Docs page in a single primary template, ee/docs:</p>
<pre><code>&#123;exp:channel:entries channel="ee" url_title="&#123;segment_3&#125;" ...&#125;
&lt;em&gt;&#123;exp:docs:page entry_id="&#123;entry_id&#125;" url_title="&#123;segment_4&#125;"&#125;&lt;/em&gt;
&#123;embed="site/-header" title="&#123;title&#125; - Docs - &#123;docs_page_title&#125;" ...&#125;
&#123;embed="ee/-header" title="&#123;title&#125;" ...&#125;

&lt;div class="content"&gt;
    &lt;div class="grid23 clearafter"&gt;
        &lt;div class="left"&gt;
            &#123;if segment_4&#125;&lt;h1&gt;&#123;docs_page_title&#125;&lt;/h1&gt;&#123;/if&#125;
            &lt;em&gt;&#123;docs_page_contents&#125;&lt;/em&gt;
        &lt;/div&gt;
        &lt;nav class="right"&gt;
            &lt;em&gt;&#123;exp:docs:tree entry_id="&#123;entry_id&#125;" base_url="&#123;site_url&#125;&#123;url_title&#125;/docs" selected="&#123;docs_page_url_title&#125;"&#125;&lt;/em&gt;
        &lt;/nav&gt;
    &lt;/div&gt;
&lt;/div&gt;

&#123;embed="site/-footer"&#125;
&lt;strong&gt;&#123;/exp:docs:page&#125;&lt;/strong&gt;
&#123;/exp:channel:entries&#125;</code></pre>
<p>
	In its current state, the module is pretty simple – pages are stored in their own table, and are only given the four fields shown above (Parent, Title, URL Title, and Contents). Page order is defined by drag-n-dropping the pages within the contents tree on the right. The module has two tags, one for outputting the entire tree in an unordered list (not currently customizable), and one for outputting a single page’s contents.</p>
<p>
	It’s a good starting point, but there are areas for improvement. Once I’m done porting Playa and Matrix to EE2, I’d like to go back and add HTML archive exporting (for on-the-fly downloadable docs) and maybe even release branching.</p>
<h3>
	Release?</h3>
<p>
	Whether or not I release Docs publicly is up in the air. I’ll do it if there’s sufficient demand; otherwise it’ll remain private. So if you think you could use this, sound off in the comments! Include your use case for extra P&amp;T Points (worth about 1/2 a Schrute Buck in today’s economy).</p>
<p class="aside">
	And that’s it for today; thanks for tuning in! This series will continue tomorrow with a look into how I’m managing releases and processing payments, so make sure you’re following <a href="http://twitter.com/pixelandtonic">@pixelandtonic</a> or subscribed to our <a href="{blogandtonic_url}">RSS feed</a> to be notified about that.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/making-pt-docs</feedburner:origLink></item>
					<item>
				<title>Making P&amp;T: Structure and URLs</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/63j3ersNrn0/making-pt-structure</link>
				<pubDate>Wed, 03 Mar 2010 11:30:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/making-pt-structure</guid>
				<description><![CDATA[
					<p class="aside">
	This is the second installment in a series about the design and development behind what is now Pixel &amp; Tonic. <a href="/blog/making-pt-frontend">Yesterday</a> we looked at the origin of the name and logo, and a bit of the design process. Today I’m going to focus on how the site is structured.</p>

<!--pagebreak-->
<p>
	One of the great, horrifying things about ExpressionEngine is that your website’s structure is completely up to you. EE makes no assumptions whatsoever, which makes it a fantastic tool for everything from simple blogs to full-blown portals like iLounge. And the best part is that, should you decide to scale your website into something bigger, you can do it without starting from scratch. Your content is already sitting in non-assuming weblogs / channels / sections / buckets, ready to be presented in any variety of new ways.</p>
<p>
	This was essentially the story with my <a href="http://brandon-kelly.com">previous site</a>. It began as a simple Movable Type-based blog, whose content was a mix of blog posts, portfolio entries, and a couple downloadable goods. Once I started releasing ExpressionEngine add-ons, I attempted to restructure things a bit by applying categories to entries. But it didn’t take long before the site started showing its seams, so in December of 2008 I decided to <em>do the right thing</em>, and migrate to EE.</p>
<p>
	The migration was simple enough – I used the Movable Type Import Utility to get the content into EE, and then I distributed my entries into separate weblogs: Sites, EE Add-ons, Mint Pepper, Mac Apps, and Posts. I came up with a basic design that only consisted of a homepage and a single entry page, and called it a day. Since then, I’ve revamped the homepage to focus solely on EE add-ons (only giving other content a small home in the global footer), revamped the blog, introduced documentation sections for FieldFrame and Playa, created the Playa in Action page and Fieldtype Showcase, and made a few other iterative enhancements.</p>
<h3>
	URL Routing</h3>
<p>
	While that site is a testament to ExpressionEngine’s malleability, I’ve never been very happy with its structural implementation. A prime example of that is how I’m handling URL routing. I wanted all product URLs to begin at the first URL segment, e.g., <kbd>http://brandon-kelly.com/playa</kbd>, rather than <kbd>http://brandon-kelly.com/ee/playa</kbd>. I&nbsp;accomplished that using segment conditionals:</p>
<pre><code>{if segment_1 == ""}
   {embed="site/_home"}
{if:else}
   {embed="site/_apps"}
{/if}</code></pre>
<p>
	In this case, if the <kbd>site/index</kbd> template gets called (and thus, the request hasn’t already been routed to an existing template group, like “<kbd>blog</kbd>”), I’m assuming that either the homepage or a product of some sort should be displayed.</p>
<p>
	While this approach <em>works</em>, it’s not ideal, since things like template caching go out the window, not to mention the performance hit from loading and parsing an additional template. So when I set out to make pixelandtonic.com, I decided to try something new.</p>
<p>
	I started with a simple and straightforward template structure. The “<kbd>site</kbd>” group is for the homepage and globally-embedded templates, like the site header and footer. Then there’s an “<kbd>ee</kbd>” group for ExpressionEngine add-ons, which includes the templates “<kbd>index</kbd>”, “<kbd>releasenotes</kbd>”, and “<kbd>docs</kbd>”. The <kbd>ee/index</kbd> template checks <code>{segment_2}</code> for the add-on’s URL Title, and the other two check <code>{segment_3}</code>.</p>
<p>
	When you visit an EE add-on’s section on pixelandtonic.com, the first step in URL routing takes place not in a template, but in the site’s <kbd>.htaccess</kbd> file:</p>
<pre><code>RewriteRule ^index.php/(playa|wygwam|fieldframe|ffmatrix)(/[^\/]+)?(/.+)?$ /index.php/ee$2/$1/$3 [NC,L]</code></pre>
<p>
	This little redirect (coupled with a standard <kbd>index.php</kbd> redirect) will take an incoming URI like <kbd>/playa</kbd>, and turn it into <kbd>/index.php/ee/playa</kbd> behind the scenes. Sub-pages like <kbd>/playa/releasenotes</kbd> become <kbd>/index.php/ee/releasenotes/playa</kbd>. Now, the first template EE loads is also the last (well, besides the site header and footer embeds). No template segment conditionals required!</p>
<p>
	My only caveat is that it will require manually adding new URL Titles to the regular expression as I introduce new products, but that’s certainly an acceptable tradeoff.</p>
<h3>
	Trailing Slashes</h3>
<p>
	While on the subject of .htaccess redirects, there’s another little tidbit probably worth sharing: how I’m handling trailing slashes in the URI. While EE doesn’t know the difference between URIs like <kbd>/playa</kbd> versus <kbd>/playa/</kbd>, web analytics apps and search engines may consider these separate web pages. If you’re developing a static website, this isn’t a big deal, because if you attempt to go to the former URI (<em>sans</em> trailing slash), Apache will automatically redirect the client to the latter (<em>with</em> trailing slash).</p>
<p>
	But for a web application like EE, where everything in the URI after “<kbd>index.php</kbd>” is handled by the application rather than Apache, this redirection is left up to you. Just like the decision to use or not use a “<kbd>www</kbd>” subdomain, it doesn’t matter whether you choose to force a trailing slash or vise-versa; it just matters that you force one or the other.</p>
<p>
	I decided to force URIs <em>without</em> trailing slashes, if only because they look a little cleaner, and in this 140-char world, every character counts. Here’s the rewrite rule I’m using to do it:</p>
<pre><code>RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]</code></pre>
<p>
	If you decide to force URIs <em>with</em> trailing slashes instead, simply change that last line to:</p>
<pre><code>RewriteRule ^(.+[^/])$ /$1/ [R=301,L]</code></pre>
<p>
	For this redirect to be applied, it must first pass a couple conditions that make sure that this isn’t a POST request, and the URI does not map to an existing file or directory. (They’re the same conditions I’m using for <kbd>index.php</kbd> redirection.) The rule must be placed <em>before</em> your index.php rule, since by that point, your request has already been redirected to an existing file (<kbd>index.php</kbd>).</p>
<h3>
	SSL</h3>
<p>
	Being that I’m handling payments now, SSL was crucial. But I only wanted it on certain pages (anything in <kbd>members/</kbd>, and <kbd>store/checkout</kbd>). So after getting my SSL certificate up and running, I set a new redirect in place to force SSL on these pages:</p>
<pre><code>RewriteCond %{ENV:SECURE_REDIRECT} !=on
RewriteRule ^(members|store/checkout) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]</code></pre>
<p>
	Note that <code>%{ENV:SECURE_REDIRECT}</code> is a custom environment variable set by EngineHosting. Due to the way their servers are set up, the normal <code>%{HTTPS}</code> variable doesn’t reflect the actual SSL status of the request. If you’re not on EngineHosting, use <code>%{HTTPS}</code> instead.</p>
<p>
	Then there was the problem of forcing forms living on SSL pages to also post to SSL pages. (Since most forms on P&amp;T are generated from EE modules which just use the Site URL as the form action’s prefix, this wasn’t as simple as remembering to type “<kbd>https://</kbd>”.) For that I wrote a simple plugin that converts all instances of “<kbd>http://</kbd>” into “<kbd>https://</kbd>”:</p>
<pre><code>function https()
{
	$tagdata = $this-&gt;EE-&gt;TMPL-&gt;tagdata;
	return str_replace('http://', 'https://', $tagdata);
}</code></pre>
<p>
	Wrapping module form tags with <code>{exp:pt:https}</code> and <code>{/exp:pt:https}</code> then did the trick.</p>
<p>
	So that covers the initial HTML response, but not the in-page elements (CSS, JS, images). And unfortunately, some browsers make a big fuss when HTML is transferred over SSL, but not the in-page elements.</p>
<p>
	To force all elements to load over the same protocol the HTML was being sent in, I opened up <kbd>index.php</kbd>, and added a couple new global variables:</p>
<pre><code>$assign_to_config['site_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/';
$assign_to_config['global_vars']['site_ssl_url'] = str_replace('http://', 'https://', $assign_to_config['site_url']);
$assign_to_config['global_vars']['site_proto_url'] = ($_SERVER['HTTPS'] == 'on' ? $assign_to_config['global_vars']['site_ssl_url'] : $assign_to_config['site_url']);
</code></pre>
<p>
	Now, <code>{site_url}</code> is being defined right in <kbd>index.php</kbd>, <code>{site_ssl_url}</code> will always be the same as <code>{site_url}</code> except with an <kbd>https://</kbd> prefix, and <code>{site_proto_url}</code> is either set to the <code>{site_url}</code> <i>or</i> <code>{site_ssl_url}</code>, depending on whether or not the current request is coming over SSL.</p>
<p>
	From there, it was just a matter of plugging these new tags in where appropriate. Links to <kbd>members/*</kbd> (which would be redirected to <kbd>https://</kbd> <i>anyway</i>) are now created using <code>{site_ssl_url}</code>:</p>
<pre><code>&lt;li&gt;&lt;a id="sitenav-signin" href="{site_ssl_url}members/signin"&gt;Sign In&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a id="sitenav-register" href="{site_ssl_url}members/register"&gt;Register&lt;/a&gt;&lt;/li&gt;</code></pre>
<p>
	And page resources are pulled in using <code>{site_proto_url}</code>:</p>
<pre><code>&lt;link rel="stylesheet" type="text/css" href="{site_proto_url}global/styles/pt.css" /&gt;</code></pre>
<p>
	The end result is that pages which don’t require SSL don’t get SSL; links going to pages that should be served with SSL have appropriate <code>href</code> attributes; pages that should be on SSL are forced to be served over SSL as well as their resources, and forms living on those pages will submit over SSL. All bases covered.</p>
<p class="aside">
	And that’s it for today; thanks for tuning in! This series will continue tomorrow with a look into how I’m handling product documentation, so make sure you’re following <a href="http://twitter.com/pixelandtonic">@pixelandtonic</a> or subscribed to our <a href="http://feeds.feedburner.com/blogandtonic">RSS feed</a> to be notified about that.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/making-pt-structure</feedburner:origLink></item>
					<item>
				<title>Making P&amp;T: The Front End</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/8GcseCJ0v4k/making-pt-frontend</link>
				<pubDate>Tue, 02 Mar 2010 10:00:00 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/making-pt-frontend</guid>
				<description><![CDATA[
					<p class="aside">
	I don’t get to build EE sites that often anymore, but when I do, interesting things are bound to happen. Now that Pixel &amp; Tonic has <em>(finally)</em> launched, I figured I’d take the opportunity to talk a bit about the process behind it, and show off some of the cooler parts at work. This is the first installment of a week-long series. Enjoy!</p>

<!--pagebreak-->
<h3>
	The Name</h3>
<p>
	Several people have asked me how I came up with the name. I’d love to tell you that it just came to me – that it’s a way of saying <em>“We work hard and we play hard”</em> or some BS.</p>
<p>
	Truth is, it’s the result of spending <em>days</em> on GoDaddy, hunting for that one halfway-decent, available domain name. At one point I almost settled on “EngineApparel”, but the initial reaction from a few friends was less than validating. Finally the idea of “<em>something</em>-and-tonic” came to me while driving to work one morning. PixelAndTonic.com was my first choice, and when it turned out to be available, I swear I could hear angels singing.</p>
<h3>
	The Logo</h3>
<p>
	I got in touch with <a href="http://digitalmash.com/">Rob Morris</a>, the mastermind behind those Playa 2 ads, pleading for help with the logo. And despite my jumbled, self-contradicting attempt to describe what I wanted, I think we can all agree that what he gave me is <em>perfect</em>:</p>
<p>
	<img alt="Pixel &amp; Tonic logo" height="89" src="/content/blog/2010-02/making/ptlogo.jpg" width="468" style=""></p>
<h3>
	The Design</h3>
<p>
	The only problem with a great logo is designing a site that does it justice. And unfortunately, Rob didn’t have the bandwidth. I got in touch with one of my favorite agencies, who were happy to help, but unfortunately it became apparent that my timeline and their availability weren’t matching up. So I decided to give it a go myself.</p>
<p>
	I started with an add-on overview page, since the lot of those tend to get the most traffic. My first take ended up looking pretty decent:</p>
<p>
	<img alt="" class="flush" height="540" src="/content/blog/2010-02/making/design1.jpg" width="579" style=""></p>
<p>
	But then I moved onto the homepage, where I found this design to be stubbornly immalleable. I couldn’t for the life of me find a way to mold it for another layout. So I decided to pull the plug on it, and start over.</p>
<p>
	This time, I started by listing out the types of elements needed on a few different types of pages: the homepage, an add-on overview page, an add-on documentation page, etc. I then made a few rough sketches of those pages, and got to work on the homepage. A few false starts later, I came up with something not far off from the final design:</p>
<p>
	<img alt="" class="flush" height="539" src="/content/blog/2010-02/making/design2.jpg" width="579" style=""></p>
<p>
	My goal for the homepage was simple: to get the message across that although <em>Pixel &amp; Tonic</em> may be new, the guy behind it, and the add-ons, are not. Originally I was planning on accomplishing that by including a blurb about myself on the homepage, leveraging my own name’s recognition and reputation. But amidst the design process I realized that it would be far more effective to instead feature a few notable quotes from respected people in the community, and list a bunch of recognizable logos of agencies who are using my add-ons. I think the <a href="http://pixelandtonic.com">end result</a> gets the job done very well.</p>
<p>
	Against all odds, I’m happy to say that I’m indeed proud with the design of this site. Although I do love designing <em>interfaces</em>, designing a full website from scratch – that big, empty canvas – scares the hell out of me. I’m glad I faced my fear, but I’m not exactly about to go looking for more web design gigs anytime soon.</p>
<h3>
	HTML5, CSS3, IE Zero</h3>
<p>
	This is the first time I’ve gone all-out with HTML5 on a website. Not talking about those arrogant frontmen <code>&lt;video&gt;</code> and <code>&lt;audio&gt;</code>, but rather <code>&lt;header&gt;</code>, <code>&lt;footer&gt;</code>, <code>&lt;section&gt;</code>, <code>&lt;nav&gt;</code>, <code>&lt;hgroup&gt;</code>, <code>&lt;article&gt;</code>,&nbsp;<code>&lt;figure&gt;</code>, and <code>&lt;aside&gt;</code>&nbsp;– the real musicians.</p>
<p>
	Overall it’s been nice, mainly because it makes the markup that much easier to follow while working on it. There’s less thought involved in reading and comprehending a <code>&lt;/article&gt;</code> than something like <code>&lt;/div&gt;&lt;!--/.article--&gt;</code>. If you’re thinking about seeing what all the fuss is about for yourself, <a href="http://html5doctor.com/glossary/">HTML5 Doctor’s Glossary</a> proved an invaluable resource for discovering the new toys, and learning how to use them the way God intended.</p>
<p>
	There’s also a healthy mix of CSS3 on the site, mainly in the form of border radii, box shadows (outer <i>and</i>&nbsp;inset, for those of you that take the FF 3-6 to work), and background gradients. There’s even a CSS mask on the homepage, creating that fade-out effect when an add-on hero image nears the edges of the container (Chrome 5 and Webkit nightlies only).</p>
<p>
	So what about IE? Well, thanks to the fact that I’m targeting other web developers, I can say with 97.3% certainty that you’re not using it. Which is awesome, because that gave me a <i>practical</i>&nbsp;reason not to worry about it (besides just not caring). I did scope out the damages a couple days before launching, and it wasn’t pretty. Not even remotely usable. I’ll probably deal with that in some form eventually, but it’s most certainly not going to be full support.</p>
<p class="aside">
	That’s it for today; thanks for tuning in! This series will continue tomorrow with a look into how the site is structured, so make sure you’re following <a href="http://twitter.com/pixelandtonic">@pixelandtonic</a> or subscribed to our <a href="http://feeds.feedburner.com/blogandtonic">RSS feed</a> to be notified about that.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/making-pt-frontend</feedburner:origLink></item>
					<item>
				<title>Launch Giveaways!</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/GKbSm1SGejs/launch-giveaways</link>
				<pubDate>Tue, 23 Feb 2010 07:04:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/launch-giveaways</guid>
				<description><![CDATA[
					<p>
	What better way to celebrate this Pixel &amp; Tonic launch than a massive launch giveaway? Yeah, we thought you’d like that.</p>
<p>
	So one week from today (March 2), we’ll be handing out <b>over $5,000</b>-worth in prizes!</p>

<!--pagebreak-->
<p>
	<span _fck_bookmark="1" style="display: none; ">&nbsp;</span>To enter, all you have to do is join our Mailing List. Just enter your email address to the little form found at the bottom of every page.&nbsp;</p>
<p>
	So what are these prizes, exactly? Here’s the breakdown:</p>
<h3>
	Grand Prize</h3>
<ul class="square">
	<li>
		<a href="http://eeci2010.com">EECI2010 SF</a> Full Conference Ticket ($525 value)</li>
	<li>
		<a href="http://expressionengine.com/public_beta/">ExpressionEngine 2</a> Commercial license ($299.95 value)</li>
	<li>
		12-month <a href="http://www.enginehosting.com/">EngineHosting</a> S-2 package ($240 value)</li>
	<li>
		<a href="http://pixelandtonic.com/playa">Playa</a> license ($75 value)</li>
	<li>
		<a href="http://pixelandtonic.com/wygwam">Wygwam</a> license ($35 value)</li>
	<li>
		<a href="http://pixelandtonic.com/ffmatrix">FF Matrix</a> license ($35 value)</li>
</ul>
<h3>
	Second Prize</h3>
<ul class="square">
	<li>
		<a href="http://expressionengine.com/public_beta/">ExpressionEngine 2</a> Non-Commercial license ($149.95 value)</li>
	<li>
		12-month <a href="http://www.enginehosting.com/">EngineHosting</a> S-2 package</li>
	<li>
		<a href="http://pixelandtonic.com/playa">Playa</a> license</li>
	<li>
		<a href="http://pixelandtonic.com/wygwam">Wygwam</a> license</li>
	<li>
		<a href="http://pixelandtonic.com/ffmatrix">FF Matrix</a> license</li>
</ul>
<h3>
	Third Prize</h3>
<ul class="square">
	<li>
		<a href="http://expressionengine.com/public_beta/">ExpressionEngine 2</a> Freelancer license ($99.95 value)</li>
	<li>
		12-month <a href="http://www.enginehosting.com/">EngineHosting</a> S-2 package</li>
	<li>
		<a href="http://pixelandtonic.com/wygwam">Wygwam</a> license</li>
	<li>
		<a href="http://pixelandtonic.com/ffmatrix">FF Matrix</a> license</li>
</ul>
<h3>
	50 More Lucky Winners</h3>
<ul class="square">
	<li>
		20 <a href="http://pixelandtonic.com/wygwam">Wygwam</a> licenses</li>
	<li>
		20 <a href="http://pixelandtonic.com/ffmatrix">FF Matrix</a> licenses</li>
	<li>
		10 <a href="http://pixelandtonic.com/playa">Playa</a> licenses</li>
</ul>
<p>
	 </p>
<p>
	Many thanks to <a href="http://ellislab.com/">EllisLab</a> for donating the EE2 licenses, and <a href="http://www.enginehosting.com/">EngineHosting</a> for donating the hosting packages!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/launch-giveaways</feedburner:origLink></item>
					<item>
				<title>FF Matrix Goes It Alone</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/-FsjaOLCrwA/ff-matrix-goes-it-alone</link>
				<pubDate>Tue, 23 Feb 2010 07:03:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/ff-matrix-goes-it-alone</guid>
				<description><![CDATA[
					<p>
	Ever since I released <a href="/fieldframe">FieldFrame</a> a year ago, there’s been some confusion surrounding the difference between&nbsp;<em>FieldFrame</em> and <a href="/ffmatrix"><em>FF Matrix</em></a>. This is entirely my fault, since to date they’ve been bundled together. You’ve never actually downloaded FF Matrix – it just comes with FieldFrame. And many people download FieldFrame <em>for</em> FF Matrix.</p>

<!--pagebreak-->
<p>
	Initially the development of the two went hand-in-hand, so it made sense to continue packaging them together, even if it meant dealing with their colliding perceptions. But now that EE2 includes an API that roughly mimics FieldFrame’s, and the two products have begun taking lifecycles of their own, the time has come for them to part ways.</p>
<p>
	While FieldFrame remains free, FF Matrix now costs $35.&nbsp;That will fund its continued support and development as I work on version 2, which will be a free upgrade when released.</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/ff-matrix-goes-it-alone</feedburner:origLink></item>
					<item>
				<title>Wygwam 2 Released</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/lJwh503HGV0/wygwam2</link>
				<pubDate>Tue, 23 Feb 2010 07:02:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/wygwam2</guid>
				<description><![CDATA[
					<p>
	In concert with the launch of Pixel &amp; Tonic, it is my pleasure to announce the immediate release of <a href="http://pixelandtonic.com/wygwam">Wygwam 2.0</a>.</p>
<p>
	We’ve packed several big new features into this release:</p>

<!--pagebreak-->
<h4>
	EE2 Compatibility</h4>
<p>
	That’s right! Wygwam 2 is officially our first EE2-compatible add-on. And we’re using EE2’s new fieldtype API, so FieldFrame isn’t required. Granted, FF Matrix is not yet available for EE2, so that feature isn’t either. But beyond that, the EE1 and EE2 versions stack up feature-for-feature.</p>
<h4>
	A New Look</h4>
<p>
	We went back to the drawing board for Wygwam’s custom CKEditor skin, and came up with something that does a better job of blending into your ExpressionEngine control panel, allowing you to focus on That Which Matters Most – your content.</p>
<h4>
	Easy Conversions</h4>
<p>
	Already have a weblog full of entries? We’ve implemented <em>XHTML</em>,&nbsp;<em>Auto &lt;br&gt;</em>, and Textile conversion, so text fields that began their life with something less than full-blown HTML content can be easily changed to Wygwam fields without manually updating all previously-saved content.</p>
<h4>
	Streamlined Field Settings</h4>
<p>
	Wygwam 1.0 raised the bar for text field settings. It provided a simple interface for creating custom toolbar configurations - a process that traditionally can be somewhat tedious, even to developers.</p>
<p>
	Now with Wygwam 2, we’ve provided an interface for virtually all of CKEditor’s <a href="http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html">config settings</a>. That means you no longer have to bother fiddling with CKEditor’s config.js file to further customize your editing experience.</p>
<h3>
	Good to Your Wallet</h3>
<p>
	So what does all of this cost? Well, if you’ve already purchased a license for Wygwam 1.x, Wygwam 2 is a <strong>free upgrade!</strong> Consider it a big <em>thank you</em> for giving Wygwam a chance, even though so many free alternatives are available. We hope you’ve found it to be worth the cost of admission.&nbsp;And if you’re purchasing a new license, it’ll cost just $35.</p>
<p>
	<a href="http://pixelandtonic.com/wygwam">Buy Wygwam now!</a></p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/wygwam2</feedburner:origLink></item>
					<item>
				<title>Meet Pixel &amp; Tonic</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/XY5qDraGv_E/meet-pixel-tonic</link>
				<pubDate>Tue, 23 Feb 2010 07:01:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/meet-pixel-tonic</guid>
				<description><![CDATA[
					<p>
	After a couple months of 20-hour days packed full of sweat, blood, and tears, I’m thrilled (and relieved) to announce that Pixel &amp; Tonic has landed!</p>
<p>
	P&amp;T is the&nbsp;embodiment of my <a href="http://brandon-kelly.com/blog/transitions" title="Transitions | Blog | Brandon Kelly">decision</a> to go solo. It’s the platform for my future internet endeavors. And its office looks awfully similar to my bedroom.</p>

<!--pagebreak-->
<p>
	So: <em>why?</em>&nbsp;I had a pretty good thing going with the Brandon Kelly brand after all.</p>
<p>
	But it had reached its limits on a couple fronts.</p>
<p>
	One is simple: I want to expand. Not just in that I want to do this full time. I mean grow the business. Employ other people, and find new ways to better service the EE/web communities. This would have been awkward to do under my own name.</p>
<p>
	The other is not so obvious, but important nonetheless: I believe my add-on sales suffered to a degree by an inherent lack of confidence in their future support and development. Because, who’s to say I won’t decide to abandon EE in favor of iPad development a year from now? Or, God forbid, I’m involved in some tragic event? Fact is, <em>people</em> are unreliable. And Brandon Kelly is a person (so far as you know).</p>
<p>
	Creating this company is my way of saying that you needn’t worry. These add-ons are here to stay.&nbsp;Sure I’m still just one guy, but&nbsp;that’s going to change soon. (In anticipation, you’ll notice we’re already practicing talking as a plural entity.)</p>
<p>
	So it’s all about scaling up. I want to see how far I can run – and how big I can make this.</p>
<p>
	The launch is composed of a few parts:</p>
<ol>
	<li>
		<a href="/"><strong>This website</strong></a> – I’ve moved my most popular add-ons over to this new domain. That includes their marketing copy, purchase processes, release notes, and documentation. I’ve also introduced member accounts, where you can keep track of all your licenses.</li>
	<li>
		<a href="/blog"><strong>Blog &amp; Tonic</strong></a> – Going forward, all P&amp;T-related announcements and other tidbits will be posted here.</li>
	<li>
		<a href="http://twitter.com/pixelandtonic"><strong>@pixelandtonic</strong></a> – The official P&amp;T Twitter account.</li>
	<li>
		<a href="/blog/wygwam2"><strong>Wygwam 2</strong></a> – We managed to pack even more features into our premiere text editor for ExpressionEngine, not the least of which is EE2 compatibility!</li>
	<li>
		<a href="/blog/ff-matrix-goes-it-alone"><strong>FF Matrix Going It Alone</strong></a> – It’s time.</li>
	<li>
		<strong>Making P&amp;T</strong> – A series of blog posts that will show off some of the inner-workings of this site, starting tomorrow.</li>
	<li>
		<a href="http://pixelandtonic.com/blog/launch-giveaways"><strong>Launch Giveaways</strong></a> – We’ve got a few things to give away in celebration of the launch. Subscribe to our mailing list for a chance to win something!</li>
	<li>
		Minor updates to <a href="/ffmatrix">FF Matrix</a>, <a href="/playa">Playa</a>, and <a href="/fieldframe">FieldFrame</a>.</li>
</ol>
<p>
	Been busy. But color me optimistic – the future is very bright!</p>
<h3>
	Thank You!</h3>
<p>
	Pixel &amp; Tonic simply wouldn’t have been possible if not for your humbling loyalty and support over the last couple years. So give yourself a big pat on the back – you’ve earned it!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/meet-pixel-tonic</feedburner:origLink></item>
					<item>
				<title>P&amp;T Sponsoring EECI2010 SF</title>
				<link>http://feedproxy.google.com/~r/blogandtonic/~3/h5tt_VrCCUY/sponsoring-eeci2010</link>
				<pubDate>Wed, 13 Jan 2010 07:01:35 +0000</pubDate>
				<author>Brandon Kelly</author>
				<guid isPermaLink="false">http://pixelandtonic.com/blog/sponsoring-eeci2010</guid>
				<description><![CDATA[
					<p>
	Pixel &amp; Tonic is proud to be a sponsor of <a href="http://eeci2010.com">EECI2010 SF</a>, the world’s grandest ExpressionEngine and CodeIgniter conference.</p>
<p>
	Last October, I had the <a href="http://brandon-kelly.com/blog/ee-month" title="EE Month Wrap-up">pleasure</a> of attending (and speaking at)<a href="http://eeci2009.com/">&nbsp;EECI2009</a>&nbsp;in Leiden, Netherlands. Every aspect of the conference was top-notch.&nbsp;So when EECI2010 was announced (and that it would be in my own backyard, no less), I didn’t think twice about throwing some money at it.</p>
<p>
	If last year’s success is any indication, this conference is going to be magical. Don’t miss it!</p>

				]]></description>
			<feedburner:origLink>http://pixelandtonic.com/blog/sponsoring-eeci2010</feedburner:origLink></item>
			</channel>
</rss>
