<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Extensible</title>
	<atom:link href="http://ext.ensible.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://ext.ensible.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 09 Jan 2013 09:50:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Squash Variable Leaks with Siesta</title>
		<link>http://ext.ensible.com/blog/2013/01/squash-variable-leaks-with-siesta/</link>
		<comments>http://ext.ensible.com/blog/2013/01/squash-variable-leaks-with-siesta/#comments</comments>
		<pubDate>Wed, 09 Jan 2013 09:43:39 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[siesta]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=94</guid>
		<description><![CDATA[JavaScript makes it incredibly easy to create global variables accidentally, which is inefficient and can also lead to very hard-to-debug bugs later. Simply omit the var keyword before a variable assignment, and you&#8217;ve inadvertently leaked a variable by defining it &#8230; <a href="http://ext.ensible.com/blog/2013/01/squash-variable-leaks-with-siesta/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>JavaScript makes it incredibly easy to create global variables accidentally, which is inefficient and can also lead to very hard-to-debug bugs later.  Simply omit the <code>var</code> keyword before a variable assignment, and you&#8217;ve inadvertently leaked a variable by defining it in the <code>window</code> scope.</p>
<h2>Detecting Leaks with Siesta</h2>
<p><a href="http://www.bryntum.com/products/siesta/" title="Siesta" target="_blank">Siesta</a>, an awesome general-purpose unit and UI testing tool by the fine folks at Bryntum, includes a handy feature that allows you to automatically check for unexpected globals added during test runs.  When setting up your test harness, you simply enable monitoring and define any expected globals like so:</p>
<p></p><pre class="crayon-plain-tag">Harness.configure({
    ...
    autoCheckGlobals: true,
    expectedGlobals: ['Ext', 'Extensible']
});</pre><p></p>
<p>If anything unexpected shows up in global scope during testing it gets flagged as a test failure &mdash; awesome!</p>
<p>However, tracking down the offending code can sometimes be tricky.  The simple approach is to search in your project for instances of variable assignment.  If you are leaking a variable named <code>foo</code>, a search on &#8220;foo =&#8221; will likely locate the problem code pretty quickly.  In my case, I was leaking a variable named <code>el</code>, which is only assigned about a bazillion times in Extensible.  My initial search returned a ton of matches, so it was time to think of something quicker.</p>
<p><a href="http://ext.ensible.com/blog/2013/01/squash-variable-leaks-with-siesta/global_var/" rel="attachment wp-att-95"><img src="http://ext.ensible.com/blog/wp-content/uploads/2013/01/global_var.png" alt="Global var failure" width="334" height="115" class="aligncenter size-full wp-image-95" /></a></p>
<h2>Locating any Leak Instantly</h2>
<p>A cool trick you can do in JavaScript is to override <a href="http://ejohn.org/blog/javascript-getters-and-setters/" target="_blank">getter and setter functions</a> (in modern browsers at least, I&#8217;m using Chrome).  Thinking about it, adding a global is really the same thing as &#8220;setting a property&#8221; on the built-in window object, so I figured you should be able to do something like this:</p>
<p></p><pre class="crayon-plain-tag">window.__defineSetter__('el', function() {
    debugger;
});</pre><p></p>
<p>I threw that into the top of my test case and refreshed, and instantly the browser paused in the console right on the <code>debugger;</code> line. Looking at the previous line in the stack trace showed me this lovely piece of code in the calendar&#8217;s Month view:</p>
<p></p><pre class="crayon-plain-tag">if (el = e.getTarget(this.moreSelector, 3)) {</pre><p></p>
<p>Oy. I don&#8217;t write code like that any more, but this was a holdover from several years ago that simply never got noticed before. A simple fix that literally took seconds to find with this handy little hack.</p>
<h2>Don&#8217;t Forget to Remove Your Hack</h2>
<p>One gotcha that took a few minutes for me to realize&#8230; this hack itself, by defining the setter function, is effectively <em>adding the exact same property to the global scope</em> (you end up with a property called <code>window.el</code> by doing this). So Siesta will still see <code>window.el</code> after the test and register a failure, but if you&#8217;ve fixed the actual bug, the <code>debugger;</code> line will no longer be hit.  This was momentarily confusing, but once I realized what was happening and simply removed my temporary setter override, everything worked with no errors.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2013/01/squash-variable-leaks-with-siesta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Extensible 1.6.0 Beta</title>
		<link>http://ext.ensible.com/blog/2012/08/extensible-1-6-0-beta/</link>
		<comments>http://ext.ensible.com/blog/2012/08/extensible-1-6-0-beta/#comments</comments>
		<pubDate>Mon, 13 Aug 2012 06:40:11 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=84</guid>
		<description><![CDATA[Well, it&#8217;s been a bit longer in the making than I had originally planned, but 1.6 is now ready for beta testing (definitely not yet ready for production use!). Of course the primary goal of this release has been to &#8230; <a href="http://ext.ensible.com/blog/2012/08/extensible-1-6-0-beta/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Well, it&#8217;s been a bit longer in the making than I had originally planned, but 1.6 is now ready for beta testing (definitely not yet ready for production use!). Of course the primary goal of this release has been to introduce support for recurring events, which is in place and working pretty well.  In addition to that, a few other nice features have been added including the ability to copy events in the calendar and improved remote exception handling, as well as a lot of bug fixes.  Check the <a href="https://github.com/bmoeskau/Extensible/wiki/Extensible-Release-Notes">release notes</a> for details.</p>
<h2>Before We Begin&#8230;</h2>
<p>Recurrence is an extremely complex area to delve into.  There are many different potential approaches to implementing it, and there is no single standard for doing so.  The de facto standard for dealing with the data for recurrence is the <a href="http://www.ietf.org/rfc/rfc2445.txt">RFC 2445 iCalendar standard</a>, which specifies the syntax for recurrence (among many other things).  The most practical reference I&#8217;ve found for using the RFC is <a href="http://www.kanzaki.com/docs/ical/rrule.html">here</a>.</p>
<p>While the data format is (pretty) clearly defined, there is no clear-cut standard for actually <em>implementing</em> recurrence in a real system.  It&#8217;s easy enough to construct and parse an RRULE string, but how do you actually translate that into a working set of calendar events?  How do you handle the myriad ways in which recurring events can be edited?</p>
<p>It&#8217;s important to understand up front that the bulk of the complexity you&#8217;ll encounter in your own implementation will be on the back end.  Luckily, all of the UI complexity has been (hopefully) taken care of for you by Extensible.  I&#8217;ve also provided a basic example implementation in PHP, but it&#8217;s by no means a canonical, drop-in solution.  In fact, it can still use some improvement (more on this below) and I am quite open to improving it before the final release.  With that said&#8230;</p>
<h2>Getting Started with Recurrence</h2>
<p>I&#8217;m not going to get in depth on implementing the back end portion in this article.  In fact, I&#8217;m planning a dedicated series of posts that will cover the overall theory and architecture of recurrence as well as all of the different choices to consider when dealing with it on the back end (this post will already be long enough!).  For now, I&#8217;m going to focus on simply setting up recurrence in Extensible, which is quite simple.</p>
<h3>Enabling Recurrence</h3>
<p>To enable the recurrence field in the event edit form, you can simply add the new <code>recurrence</code> config to your CalendarPanel:</p><pre class="crayon-plain-tag">Ext.create('Extensible.calendar.CalendarPanel', {
        eventStore: eventStore,
        calendarStore: calendarStore,
        title: 'Recurrence Calendar',
        recurrence: true  // That's it!
    });</pre><p>That&#8217;s all it takes to get this field to show up in your form (by default it is only in the detailed edit form, not the simple editing popup window):</p>
<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2012/08/recur-field.gif"><img class="aligncenter size-full wp-image-87" title="Recurrence Field" src="http://ext.ensible.com/blog/wp-content/uploads/2012/08/recur-field.gif" alt="" width="523" height="138" /></a></p>
<p>Just be aware though that your server will have to be ready to accept and parse recurring events properly in order for this to be useful!  The best place to start for now will be to look at the example implementation, the logic of which is primarily in the <a href="https://github.com/bmoeskau/Extensible/blob/master/examples/calendar/remote/php/app/models/event.php">Event</a> PHP model class.  The source code is pretty heavily documented, so read through it to get an idea of what&#8217;s going on.  I do realize though that it&#8217;s a bit intimidating, and a more detailed explanation and documentation is forthcoming&#8230;</p>
<h3>Recurrence Data Mappings</h3>
<p>The other addition on the Extensible side needed for recurrence are a few new model fields, which you can customize as usual via the <code>EventMappings</code> class.  They are <code>RRule</code>, <code>Duration</code>, <code>OriginalEventId</code>, <code>RInstanceStartDate</code> and <code>REditMode</code>.  Each new attribute is explained in the source, so <a href="https://github.com/bmoeskau/Extensible/blob/master/src/calendar/data/EventMappings.js">take a look</a>.  Extensible already handles them on the client side, so you would simply add those into your existing data model code as needed.</p>
<p><em>Note that these model attributes are still subject to change if needed before the final release of 1.6!</em></p>
<h3>Editing Recurring Events</h3>
<p>Editing existing recurring events is where it gets a little more complicated, and for the UI side Extensible has a built-in component called the recurrence <code>RangeEditWindow</code>, and it looks like this:</p>
<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2012/08/recur-edit-panel.png"><img class="aligncenter size-full wp-image-88" title="Recurrence Edit Panel" src="http://ext.ensible.com/blog/wp-content/uploads/2012/08/recur-edit-panel.png" alt="" width="366" height="254" /></a></p>
<p>This is what sets the new <code>REditMode</code> data attribute on your event, letting you know how to handle the recurrence edit action on the back end.  Much more on this later&#8230;</p>
<h2>So, Really&#8230; How Do I Use This?</h2>
<p>The full beta release is <a href="https://github.com/bmoeskau/Extensible/downloads">available for download</a>, or as always you can simply update from the master branch in Github if you&#8217;ve cloned/forked.</p>
<p>I know, I know.  You need more documentation and more guidance on implementing the server side.  I hear ya, and I&#8217;m working on that.  Even though it&#8217;s a tad early from that perspective, I really wanted to put this release out now to start getting feedback on the usability of both the recurrence UI components and the API.  I&#8217;m definitely hoping for some feedback during beta testing.  I also expect that there are still a few bugs (and probably a regression or two) so please <a href="http://ext.ensible.com/forum/viewtopic.php?f=3&amp;t=478&amp;sid=fd9e24dfb2851c241a3c2ead422bf9ba">report</a> any issues you find in the forums.</p>
<p>The hosted <a href="http://ext.ensible.com/deploy/1.6.0b1/examples/calendar/remote/recurrence.html">recurrence example</a> is now live on the site, so even if you don&#8217;t feel like setting it up yourself right now you can still try it out and let me know what you think!</p>
<h2>More to Come</h2>
<p>As I&#8217;ve already mentioned, there is still a lot to do before 1.6 will be finalized.  Here are the major items still on my plate:</p>
<ul>
<li><strong>Documentation!</strong><br />
I plan to complete all of the API docs, in addition to adding several tutorials and hopefully even a screencast before the final release.</li>
<li><strong>A Database Example</strong><br />
Initially I created the PHP example using the same session-based approach that the existing remote example uses, hoping it would keep things simple. While this does work, it&#8217;s become apparent to me that it requires too much code to essentially fake a data access layer.  Not only is it complicated to maintain, it also makes the code overly complex for other developers looking at it, while reducing the reusability of the example.  I very much hope to rewrite this example to use a simple DB implementation before final release (although it may not happen until afterwards, depending on the time required).</li>
<li><strong>Localization Improvements</strong><br />
At the moment, while the strings used inside the recurrence field can be easily changed, the layout of the interior fields cannot be.  Before final release I plan to template these fields in such a way as to make their layouts fully customizable.</li>
<li><strong>Ext JS 3.x Support?</strong><br />
This may or may not happen. Originally I had intended recurrence to be the final major feature implemented for Extensible 1.0.x. However, after looking at how much effort it took to get recurrence to where it is now for Ext 4, porting it back into Extensible 1.0.x is looking increasingly not worth the effort.  My sense is that most people are already moving to Ext 4, or will be soon, and I&#8217;d prefer to expend my energy creating new features to move Extensible forward.  I am open to feedback from the community on this &#8212; if you are still using Extensible 1.0.x with no plans to upgrade and you were hoping to use recurrence, <a href="mailto:brian@ext.ensible.com?subject=1.0.x Recurrence Support">let me know soon</a>.  If I hear from enough people I may reconsider.</li>
</ul>
<h2>You Can Help!</h2>
<p>Implementing the back end of recurrence is definitely going to be the hardest part for most developers, and my goal is to be able to provide useful starting points in more languages than just PHP.  In my next post I&#8217;ll outline some existing third party recurrence libraries, but for now, if anyone integrates with an existing server library or API, or implements their own custom server-side recurrence handling, please post in the forums or send me a pull request to share back to the community!</p>
<p>Thanks for your patience if you read this far.  I look forward to getting recurrence shipped and getting back to adding more new features to Extensible!</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2012/08/extensible-1-6-0-beta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Blog Lives</title>
		<link>http://ext.ensible.com/blog/2012/05/the-blog-lives/</link>
		<comments>http://ext.ensible.com/blog/2012/05/the-blog-lives/#comments</comments>
		<pubDate>Thu, 24 May 2012 07:12:57 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=80</guid>
		<description><![CDATA[Hopefully this post marks the end of the broken RSS feed we&#8217;ve had for a while now. It&#8217;s been quite an adventure getting it restored. The entire process left me feeling something like this: Anyway&#8230; We&#8217;ve also moved the feed &#8230; <a href="http://ext.ensible.com/blog/2012/05/the-blog-lives/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><em>Hopefully</em> this post marks the end of the broken RSS feed we&#8217;ve had for a while now. It&#8217;s been quite an adventure getting it restored. The entire process left me feeling something like this:</p>
<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2012/05/sigh.jpg"><img class="aligncenter size-full wp-image-81" title="sigh" src="http://ext.ensible.com/blog/wp-content/uploads/2012/05/sigh.jpg" alt="" width="586" height="330" /></a></p>
<p>Anyway&#8230; We&#8217;ve also moved the feed over to FeedBurner as long as things were already changing, so you might want to update your subscription to the <a href="http://feeds.feedburner.com/Extensible">new feed url</a> (or take this opportunity to subscribe if you haven&#8217;t already!).</p>
<p>A quick update on Calendar Pro — <strong>the first release of recurrence is done</strong> and just about ready for a beta release. I&#8217;m finalizing it now and will be pushing out a release within the next day or two for testing and feedback. It still needs a lot of documentation and undoubtedly has a few bugs, but I&#8217;d love to start getting input from the community ASAP.  It&#8217;s been a longer road than expected, so I&#8217;m excited to get this thing shipped and start moving toward the next set of features.</p>
<p>Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2012/05/the-blog-lives/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Recurrence Teaser</title>
		<link>http://ext.ensible.com/blog/2012/03/recurrence-teaser/</link>
		<comments>http://ext.ensible.com/blog/2012/03/recurrence-teaser/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 19:17:31 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[recurrence]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=70</guid>
		<description><![CDATA[A quick look at the current progress (click for full size): I&#8217;ll have a lot of details about implementation along with a version for testing in my next post, coming very soon&#8230;]]></description>
				<content:encoded><![CDATA[<p>A quick look at the current progress (click for full size):</p>
<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2012/03/recur-teaser.gif"><img class="aligncenter size-full wp-image-72" title="Recurrence Preview" src="http://ext.ensible.com/blog/wp-content/uploads/2012/03/recur-teaser.gif" alt="Recurrence Preview" width="885" height="528" /></a></p>
<p>I&#8217;ll have a lot of details about implementation along with a version for testing in my next post, coming very soon&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2012/03/recurrence-teaser/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Preparing for Ext 4.1 (Part 3)</title>
		<link>http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-3/</link>
		<comments>http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-3/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 06:07:10 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Ext JS]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[Ext 4.1]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=65</guid>
		<description><![CDATA[As of this writing, Ext 4.1 Release Candidate 1 was just published a couple of days ago, so I thought it would be a good time to wrap up this series. In part 1 I outlined resources for learning about &#8230; <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>As of this writing, <a href="http://www.sencha.com/forum/showthread.php?187908-Ext-JS-4.1-RC1-is-Now-Available">Ext 4.1 Release Candidate 1</a> was just published a couple of days ago, so I thought it would be a good time to wrap up this series. In <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-1/">part 1</a> I outlined resources for learning about Ext 4.1, and in <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-2/">part 2</a> I dove into some of the common issues I dealt with myself while upgrading Extensible to support 4.1. In this final post I&#8217;m going to illustrate a couple of examples where I&#8217;ve had to implement API patches while still supporting multiple versions of Ext simultaneously (this will be especially useful for anyone writing components used by other developers).</p>
<h2>Ext.getVersion() is Your Friend</h2>
<p>Earlier in the development cycle of Ext 4.1, I realized that all of my XTemplate subclasses stopped rendering output correctly. In Extensible I override the <code>applyTemplate</code> method in my custom template classes to customize the incoming data object before it gets applied and generated to markup. At the time of the issue, XTemplate had already been switched to support the new rendering pipeline which now requires an output buffer to be passed along so that new markup is captured for deferred rendering, rather than rendered immediately. Since then <code>apply</code> and <code>applyTemplate</code> have both been aliased so that they will still work as expected in 4.1 (and so this problem has been resolved), but at the time they simply broke and I needed to work around them.</p>
<p>The problem wasn&#8217;t fixing the code &#8212; that part was easy. My big issue as a component developer was fixing the code <em>so that it still worked under all versions of Ext going back to 4.0.1</em> (4.0.0 is hopelessly broken for Extensible and is not supported). If I simply switched the method to return the output buffer (which would have fixed it for 4.1) I would have broken it for all versions of Ext <em>prior to</em> 4.1. So how to solve it generically across Ext versions?</p>
<p>Ext 4.0 introduced a very handy new class <code><a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Version">Ext.Version</a></code>, which tells you everything you never realized you&#8217;d need to know about the currently-loaded version of Ext. Try typing  <code>Ext.getVersion()</code> into the console with Ext loaded:</p>
<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2012/03/getVersion.png"><img class="aligncenter size-full wp-image-66" title="getVersion" src="http://ext.ensible.com/blog/wp-content/uploads/2012/03/getVersion.png" alt="" width="367" height="214" /></a></p>
<p>The class also contains some useful comparison methods, which allowed me to effectively solve me problem by changing the last line of my XTemplate subclasses to look like this:</p><pre class="crayon-plain-tag">if (Ext.getVersion().isLessThan('4.1')) {
    return this.callParent([data]);
}
else {
    return this.applyOut(data, []).join('');
}</pre><p>Like I mentioned, this specific XTemplate issue has been resolved, but the key point is the strategy that you can use in any scenario where you have to branch your logic or syntax based on the version of Ext currently loaded.</p>
<h2>Version-specific Overrides</h2>
<p>Another example is with overrides that I ship with Extensible, which is an even more common scenario for component developers. Ext 4.1 is introducing a brand new syntax for defining overrides (teased near the end of <a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">this blog post</a>), but unfortunately since my code still has to work back to 4.0.1, I can&#8217;t take advantage of that yet. However I commonly have to provide version-specific overrides, including removing overrides for things that have been fixed in 4.1, while continuing to override them for 4.0.x!</p>
<p>Applying overrides conditionally by version is simple using <code>Ext.getVersion</code>. Here&#8217;s a quick example from Extensible (the issue being patched was fixed in 4.1):</p><pre class="crayon-plain-tag">if (extVersion.isLessThan('4.1')) {
    if (Ext.data &amp;&amp; Ext.data.reader &amp;&amp; Ext.data.reader.Reader) {
        Ext.data.reader.Reader.override({
            extractData : function(root) {
                // etc.
            }
        });
    }
}</pre><p>In general it&#8217;s a wise approach to keep your overrides as limited as possible, including to the specific version(s) of Ext required to be overridden. This will limit your exposure to unexpected regressions due to changes in the code in future versions of Ext as well.</p>
<h2>Extending Ext.dd.StatusProxy</h2>
<p>Hopefully you haven&#8217;t had to do this yourself (I can&#8217;t imagine that it&#8217;s too common), but if you have then you may be in for a big surprise with 4.1. I have a StatusProxy subclass that uses custom markup internally to display extra information during drag operations. As of 4.0.7, this was quite a pain as all of the markup definition was private to the StatusProxy constructor (an unfortunate piece of legacy design that did not get updated during the migration from 3.x). Even worse, the class was not an <code>Ext.Component</code> &#8212; it simply extended the native <code>Object</code> &#8212; so there was no managed rendering process to hook your way into either. The only way to customize the markup under 4.0.x was to override the entire constructor and re-implement it.</p>
<p>In 4.1 the StatusProxy class has finally received its due attention and gotten a nice makeover. It extends <code>Ext.Component</code>, and now uses the standard <code>renderTpl</code> config to define its markup, making customization a breeze. So what&#8217;s the problem? Since I was overriding the constructor (and never calling a superclass constructor since it was not a Component previously) I was now inadvertently breaking the Component lifecycle (which caused runtime errors).</p>
<p>To fix this I essentially had to branch the entire constructor, keeping my existing legacy code for 4.0.x, but then also using <code>renderTpl</code> and deferring to the parent constructor under 4.1.  That new structure now looks like this (I&#8217;m leaving the entire legacy constructor in place just to demonstrate how nasty it was before to override):</p>
<p></p><pre class="crayon-plain-tag">// Override the template here for 4.1+
renderTpl: [
    '&lt;div class=&quot;' + Ext.baseCSSPrefix + 'dd-drop-icon&quot;&gt;&lt;/div&gt;',
    '&lt;div class=&quot;ext-dd-ghost-ct&quot;&gt;',
        '&lt;div id=&quot;{id}-ghost&quot; class=&quot;' + Ext.baseCSSPrefix + 'dd-drag-ghost&quot;&gt;&lt;/div&gt;',
        '&lt;div id=&quot;{id}-message&quot; class=&quot;ext-dd-msg&quot;&gt;&lt;/div&gt;',
    '&lt;/div&gt;'
],

// This is new in 4.1:
childEls: [
    'ghost',
    'message'
],

constructor: function(config) {
    if (Ext.getVersion().isLessThan('4.1')) {
        this.preComponentConstructor(config);
    }
    else {
        this.callParent(arguments);
    }
},

// Old non-Component constructor ported from 4.0.x
preComponentConstructor: function(config) {
    var me = this;

    Ext.apply(me, config);

    me.id = me.id || Ext.id();
    me.proxy = Ext.createWidget('component', {
        floating: true,
        id: me.id || Ext.id(),

        // This is the key hack here -- the 4.0.x version of StatusProxy does
        // not understand renderTpl (since it's not a true Component) and
        // will ignore it, but since we're defining it already for 4.1+ we can
        // simply reuse that definition rather than rewriting the markup here:
        html: me.renderTpl.join(''),

        cls: Ext.baseCSSPrefix + 'dd-drag-proxy ' + me.dropNotAllowed,
        shadow: !config || config.shadow !== false,
        renderTo: document.body
    });

    me.el = me.proxy.el;
    me.el.show();
    me.el.setVisibilityMode(Ext.core.Element.VISIBILITY);
    me.el.hide();

    me.ghost = Ext.get(me.el.dom.childNodes[1].childNodes[0]);
    me.message = Ext.get(me.el.dom.childNodes[1].childNodes[1]);
    me.dropStatus = me.dropNotAllowed;
}</pre><p>I guess I should also point out that this branching technically could be done inside of <code>Ext.dd.StatusProxy</code> itself (hint hint, Sencha guys). Even though it&#8217;s probably an uncommon scenario, and even though it&#8217;s not technically an API change to refactor the guts of the constructor, the poor design of the 4.0.x version essentially means that anyone who might have needed custom StatusProxy markup will be broken under 4.1 by default.</p>
<p>I guess there&#8217;s an interesting discussion to be had about Ext / JavaScript compatibility in general and where to draw those lines. Examples like this also highlight the need for better &#8220;compile-time&#8221; tooling in the JavaScript world so that the end developer could strip such compatibility code for deployment if it wasn&#8217;t needed (Sencha&#8217;s SDK tools are headed in that direction). Backwards compatibility has always been one of my personal hot buttons, but I&#8217;ll save that rant for a future post <img src='http://ext.ensible.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Wrapping Up</h2>
<p>Hopefully this provided a little insight into the extra care it takes to support components used by others across different versions of Ext, especially with the changes in 4.1. I hope you found this series helpful &#8212; I know that I spent a lot of time figuring these things out during my upgrade from 4.0 to 4.1, so if I save anyone even a little time dealing with similar issues I&#8217;ll be very happy!</p>
<p>By the way, even though I&#8217;ve been focused in these posts on the difficulties I had in upgrading, I want to close by pointing out that 4.1 is an incredible release, especially for the performance improvements in legacy browsers. I&#8217;d like to publicly congratulate <a href="https://twitter.com/#!/dongryphon">Don</a>, <a href="https://twitter.com/#!/extanimal">Nige</a> and everyone else on the team for all their hard work over the past year or so. Those guys are really tireless when it comes to putting out the best Ext releases possible!</p>
<p><strong>See also:</strong> <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-1/">Part 1</a> | <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-2/">Part 2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Preparing for Ext 4.1 (Part 2)</title>
		<link>http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-2/</link>
		<comments>http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-2/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 19:00:50 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Ext JS]]></category>
		<category><![CDATA[Ext 4.1]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=62</guid>
		<description><![CDATA[In part 1 of this series I listed all of the major blog, video and forum resources related to the Ext JS 4.0 to 4.1 upgrade. In this post I&#8217;d like to dive into some of the specific changes I &#8230; <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-1/">part 1</a> of this series I listed all of the major blog, video and forum resources related to the Ext JS 4.0 to 4.1 upgrade. In this post I&#8217;d like to dive into some of the specific changes I had to make while upgrading Extensible to 4.1, most of which are not explicitly listed anywhere as official breaking changes.  Some of my issues were due to overriding private code, but some were subtle changes in behavior or other things that cannot be considered &#8220;API changes&#8221; but affect the end result nonetheless.</p>
<h2>Beware the Auto Layout</h2>
<p>In my EventWindow class (the window used to edit calendar events), the layout simply stopped working as expected under 4.1. The form still rendered, but obviously Ext was not providing the correct layout logic as it had been previously.  It was looking something like this (note the fields overflowing the window body boundaries):</p>
<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2012/03/event-win-layout-bad.gif"><img class="aligncenter size-full wp-image-63" title="event-win-layout-bad" alt="" src="http://ext.ensible.com/blog/wp-content/uploads/2012/03/event-win-layout-bad.gif" width="613" height="160" /></a> After some fruitless debugging of resize events and layout logic, I finally realized that the window had no explicit layout set, and had been simply relying on the browser&#8217;s default DOM layout logic to size the form&#8217;s container (the window is fixed size, so this always worked as expected before). Even though it had been working previously, that was due more to luck than anything. Relying on auto layout is generally a no-no when dealing with Ext containers, and even though I know better, somehow this got missed.  This minor bug had been flying under the radar for quite some time and Ext 4.1&#8242;s revamped layout engine finally exposed it.</p><pre class="crayon-plain-tag">Ext.define('Extensible.calendar.form.EventWindow', {
    layout: 'fit',
    // etc.
});</pre><p>Luckily the fix is very simple, just beware that if you&#8217;re still relying on auto layout in any containers, 4.1 may bite you!</p>
<h2>Model.store -&gt; Model.stores[]</h2>
<p>In Ext 4.1 the previous <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.Model-property-store"><code>Model.store : Object</code></a> property is now <code>Model.stores : Array</code>. This is a simple change, and it&#8217;s documented in the existing <a href="http://www.sencha.com/forum/showthread.php?152929-API-Changes">API change notes</a>, but I wanted to call it out because it&#8217;s an explicit breaking change that in fact impacted the calendar code.  I&#8217;m quite surprised to find this change in Ext 4.1 without a backwards compatibility patch frankly, especially as it seems that it would have been pretty easy to leave the existing property defaulted to the value of <code>this.stores[0]</code>, which would always be valid for existing 4.0.x code.  It&#8217;s still beta as of this writing, so maybe someone on the core team will reexamine this before the final release&#8230;</p>
<p>Here&#8217;s an example of the calendar code that had to change. It takes a record generically and determines whether or not it needs to be added to the calendar&#8217;s event store.  I probably could have also checked the record&#8217;s <code>phantom</code> property instead, but the code worked just fine before:</p><pre class="crayon-plain-tag">onEventAdd: function(form, rec) {
    if (!rec.store) {
        this.store.add(rec);
        this.save();
    }
    this.fireEvent('eventadd', this, rec);
}</pre><p>In fact this is the worst kind of error, because this code doesn&#8217;t actually cause a runtime error under 4.1 &#8212; it simply evaluates to true on every check, and thus leads to a silent regression (in this case, duplicate record adds). Ugh!</p>
<p>The fix is to either check <code>rec.phantom</code>, or perhaps <code>rec.stores.length === 0</code>.  In my case I still have to support the end user using 4.0.x as well so checking <code>rec.phantom</code> is the simplest fix. Since there is not one single way that this property could be used, it&#8217;s up to you to evaluate it if needed and fix it as appropriate to your own code!</p>
<h2>Avoid Manual Creation of Component Elements</h2>
<p>The exact issue I had was a bit of a random one, and not likely to affect most people specifically. However, the principle behind why this code broke under 4.1 is still very important to understand, as you might have a similar issue with the same root cause.</p>
<p>It is not uncommon in older versions of Ext, especially in custom components, to manually create the component&#8217;s underlying element during render if you need to customize the markup.  This particular bit of code, as happens a lot, simply got ported forward from some older code that&#8217;s always worked fine through version 4.0.7. Suddenly under 4.1, this component simply stopped rendering altogether, and it boiled down to this code in the constructor:</p><pre class="crayon-plain-tag">if (!this.el) {
    this.el = document.createElement('div');
}</pre><p>If you&#8217;ve been keeping up with the <a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">rendering pipeline changes</a> in 4.1, you&#8217;ll be aware that component markup is now batched in memory during render, and that DOM writes are managed and performed in bulk by the rendering engine. In the past, each component was free to independently create and insert its own markup into the DOM. However, under 4.1, you should no longer do this as it will not play nicely with the new rendering lifecycle.</p>
<p>The solution in my case was to simply delete that block of code and allow Ext to do the Element creation for me as part of its normal rendering process.  This logic was simply a leftover piece of code that was not needed, but did no harm (until 4.1).  If you really do need to customize markup, the appropriate place to look now would be the new <a href="http://www.sencha.com/forum/showthread.php?152929-API-Changes"><code>beforeRender()</code></a> method, or perhaps even better, customizing your component&#8217;s <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.AbstractComponent-cfg-renderTpl"><code>renderTpl</code></a> (the preferred way to define custom markup under 4.x).</p>
<h2>Fields Are Now Tables</h2>
<p>I&#8217;m not exactly sure why this change was made now, though I assume it was mostly about squeezing every little extra bit of layout performance out of the browser. Tables allow you to line things up &#8220;for free&#8221; compared to adding overhead to calculate and resize divs to align labels, for example.  Fair enough.  However, there are a couple of things to watch out for here.  First, let&#8217;s see how the markup changed (note that the markup is abbreviated to focus mainly on the structure):</p><pre class="crayon-plain-tag">&lt;div class=&quot;x-field&quot; id=&quot;textfield-1018&quot;&gt;
    &lt;label class=&quot;x-form-item-label&quot;&gt;My Field:&lt;/label&gt;
    &lt;div class=&quot;x-form-item-body&quot;&gt;&lt;input class=&quot;x-form-field&quot; type=&quot;text&quot; name=&quot;myfield&quot; size=&quot;20&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;</pre><p></p><pre class="crayon-plain-tag">&lt;table class=&quot;x-field&quot; id=&quot;textfield-1018&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
    &lt;tbody&gt;
        &lt;tr id=&quot;textfield-1018-inputRow&quot;&gt;
            &lt;td id=&quot;textfield-1018-labelCell&quot; valign=&quot;top&quot;&gt;&lt;label class=&quot;x-form-item-label&quot;&gt;My Field:&lt;/label&gt;&lt;/td&gt;
            &lt;td class=&quot;x-form-item-body&quot; colspan=&quot;2&quot;&gt;&lt;input class=&quot;x-form-field&quot; type=&quot;text&quot; name=&quot;myfield&quot; size=&quot;20&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;</pre><p>The first thing to note is that if you have written any custom CSS rules that rely on the previous structure (e.g. <code>div.x-form-item-body</code>) you may have to adjust them accordingly.</p>
<p>A much less common issue, but the one that affected me, relates to positioning custom elements inside a form field. This is commonly done with combo boxes, for example to add a custom icon for each item. This is exactly the case for my calendar picker custom combo, which displays a simple color icon to visually differentiate each calendar in the list. To achieve this, the containing element (previously the <code>x-form-item-body</code> DIV, now a TD, as highlighted above) must be <code>position: relative</code> (which it is) so that inner elements can be absolutely positioned.</p>
<p>In testing, only on Firefox, I was getting the result on the left after upgrading to Ext 4.1:</p>
<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2012/03/ff-field-position-bug.gif"><img class="aligncenter size-full wp-image-64" title="ff-field-position-bug" alt="" src="http://ext.ensible.com/blog/wp-content/uploads/2012/03/ff-field-position-bug.gif" width="438" height="157" /></a></p>
<p>After some experimenting and Googling, I found that there&#8217;s an <a href="http://stackoverflow.com/a/5148099/108348">annoying bug</a> wherein Firefox ignores positioning on table elements. Awesome! The only fix I could get to work was to make the offending element <code>display: block</code>, which feels like solving it with a sledgehammer, but I couldn&#8217;t get anything else to work reliably. At least I restricted my fix to Firefox and only to my widget by defining my override like so, to hopefully avoid creating unexpected issues downstream:</p><pre class="crayon-plain-tag">.x-gecko .ext-calendar-picker {
    display: block;
}</pre><p>If you&#8217;re doing any kind of positioning inside of fields, this is definitely something to watch out for!</p>
<h2>Double-Check Your Overrides</h2>
<p>It&#8217;s very common to override existing Ext classes to patch issues or add functionality.  Because of that, this is really a general rule of thumb anytime you&#8217;re considering upgrading your Ext version &#8212; even typical minor versions can fix or alter something that might break or even remove the need for one of your overrides.</p>
<p>In the case of Extensible, this happened with an override to <code>Ext.data.Reader</code> required by the calendar components. Inside the <code>extractData()</code> method I have had to make the following fix for a while now, per the included comments:</p><pre class="crayon-plain-tag">// Assuming that the idProperty is intended to use the id mapping, if
// available, getId() should read from the mapped values not the raw values.
// Using the non-mapped id causes updates later to silently fail since
// the updated data is replaced by id.
//id = me.getId(node);
id = me.getId(values);</pre><p>This is a pretty important fix &#8212; as the comments state, without it updates to data simply fail silently. Under 4.1, some internals of the Reader class were refactored, and some code was added to this function, without which the class no longer worked as expected. This was not an API change at all, yet because I&#8217;ve overridden private code, I now have to be extra careful to watch out for such internal changes!</p>
<p>To mitigate this you can often use tricks like <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Function-method-createSequence">createSequence</a> or <a href="http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Function-method-createInterceptor">createInterceptor</a> to work around offending methods <a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming">AOP</a>-stlye. Unfortunately though, sometimes the only solution is to override the entire method, in which case the only fix is to update the override accordingly (as in this case).</p>
<h2>Is There More?</h2>
<p>These have been a few of the various types of fixes I had to make in Extensible for Ext 4.1, but it&#8217;s not all of them. In the <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-3/">next part</a> of this series, we&#8217;ll look at a couple of <em>really tricky</em> issues that required even more creative fixes! We&#8217;ll also discuss strategies for branching your fixes in order to support multiple versions of Ext simultaneously, a key requirement for anyone building custom components used by others.</p>
<p><strong>See also:</strong> <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-1/">Part 1</a> | <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-3/">Part 3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Preparing for Ext 4.1 (Part 1)</title>
		<link>http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-1/</link>
		<comments>http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-1/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 08:05:14 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Ext JS]]></category>
		<category><![CDATA[Ext 4.1]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=61</guid>
		<description><![CDATA[Ext JS 4.0 has been out for almost a year now, if you can believe that (the 4.0.0 final release was April 26, 2011). There have been 7 minor releases since then, but most people have been waiting a while &#8230; <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ext JS 4.0 has been out for almost a year now, if you can believe that (the 4.0.0 final release was <a href="http://www.sencha.com/blog/ext-js-4-final/">April 26, 2011</a>). There have been 7 minor releases since then, but most people have been waiting a while now for Ext 4.1, which will address a lot of the fundamental performance issues introduced in Ext 4 (primarily in older IE browsers), in addition to a few nifty new features as well. As of this writing, Ext is at <a href="http://www.sencha.com/forum/showthread.php?182658-Ext-JS-4.1-Beta-3-is-Now-Available">4.1 beta 3</a>.</p>
<p>There is a lot of important information about the impending 4.1 release, and it&#8217;s spread across blog posts, forum posts, release notes, videos, etc. This not only includes information summarizing the major changes and new features in 4.1, but also detailing the breaking API changes.  Unfortunately, though minor releases <em>should</em> always retain backwards compatibility, the dramatic nature of the changes in 4.1 means that existing code will likely be impacted at some level.</p>
<p>I thought it might be useful to provide a roundup of the existing resources I know of for 4.1, but also to highlight some of the issues I ran into specifically while upgrading Calendar Pro to support 4.1.  Some of the issues I hit were probably atypical &#8212; as a custom component developer I tend to do a lot more private overriding than the average developer &#8212; but as such, it also makes for interesting discussion about dealing with more advanced edge cases and supporting multiple Ext versions.</p>
<p>Let&#8217;s start off by simply gathering together all of the best resources about 4.1 into one place. Hopefully this will be a valuable reference for anyone planning to upgrade from 4.0.</p>
<h2>Blog Posts</h2>
<ul>
<li><a href="http://www.sencha.com/blog/ext-js-4-1-update/">Ext JS 4.1 Update</a>: A few high-level summary statements about the performance issues, but mostly a mea culpa and marketing announcement. It&#8217;s there, but you can skip it <img src='http://ext.ensible.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li><a href="http://www.sencha.com/blog/ext-js-4-1-developer-preview/">Ext JS 4.1 Performance Preview</a>: The release announcement for the initial developer preview download, but also the first technical overview of the performance issues and 4.1&#8242;s strategy for dealing with them. Also includes the first preview of the new Neptune theme. Worth a quick look, but more detailed and useful performance posts soon followed&#8230;</li>
<li><a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">What’s Coming in Ext JS 4.1</a>: The first real meaty, in-depth overview of performance and new features for 4.1. In this post, chief performance guru <a href="https://twitter.com/#!/dongryphon">Don Griffin</a> outlines the new rendering pipeline and layout strategy, and if you do any nontrivial component development, you&#8217;ll want to really understand these sections.  He also introduces some of the major new features including new grid scrolling enhancements, new XTemplate features, BorderLayout improvements and the new syntax for overriding components. <em><strong>If you only read one post, read this one!</strong></em></li>
<li><a href="http://www.sencha.com/blog/optimizing-ext-js-4-1-based-applications/">Optimizing Ext JS 4.1-based Applications</a>: Don is back with this more advanced post on strategies that you, the developer, can take to mitigate performance issues in your own code. He also unveils the new Ext JS Page Analyzer and Grid Tuner utilities for taking performance into your own hands and really getting into the nitty gritty of analyzing your own app&#8217;s real performance across different browsers. Awesome stuff.<em><strong><br />
</strong></em></li>
</ul>
<h2>Videos</h2>
<ul>
<li><a href="http://vimeo.com/37636229">Ext JS 4.1 Performance Tips and Tricks</a>: This is the recording of a screencast that Don and <a href="https://twitter.com/#!/extanimal">Animal</a> did about application optimization and reviewing the new tuning tools outlined in the last blog post above. It&#8217;s a companion piece to that post, so you might choose one or the other depending on your preferred method for consuming info.</li>
<li><a href="http://vimeo.com/33463898">SenchaCon 2011: Ext JS 4.1: Layouts, Performance, and API updates</a>: If you didn&#8217;t attend SenchaCon 2011, you may have missed this video. In it Don explains in great detail all of the major changes in 4.1. It covers similar ground to the blog posts, but I would highly recommend it still as Don does an excellent job explaining everything, and the interactive aspects of the slides really help to drive home the details about how the new rendering system works. The companion <a href="http://www.slideshare.net/senchainc/ext-js-41-layouts-performance-and-api-updates">slide show</a> is also online.</li>
</ul>
<h2>Other</h2>
<ul>
<li><a href="http://www.sencha.com/forum/forumdisplay.php?93-Ext-4.1-Beta">Ext 4.1 Forum</a>: You may not have noticed that there&#8217;s an entire forum section dedicated solely to Ext 4.1 testing, bugs and feedback. It might be worth your time to scan through some of the threads there and see if anything jumps out at you.</li>
<li><a href="http://www.sencha.com/forum/showthread.php?152929-API-Changes">4.1 API Changes</a>: This is a sticky thread in the 4.1 forum, but it might be easy to gloss over. In fact, it&#8217;s probably the <strong>single most important practical resource</strong> for every developer upgrading to 4.1, as it contains <em>most</em> of the landmines you&#8217;ll need to watch out for when upgrading.</li>
</ul>
<p>If you know of any other official sources of information about 4.1 that aren&#8217;t listed here, please add them in the comments. Hopefully this is a pretty good start!</p>
<p>In <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-2/">part 2</a> I&#8217;ll discuss the issues I dealt with in upgrading the calendar to 4.1 and my strategies for effectively supporting multiple versions of the Ext API simultaneously in the same release (fun!).</p>
<p><strong>See also:</strong> <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-2/">Part 2</a> | <a href="http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-3/">Part 3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2012/03/preparing-for-ext-4-1-part-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>We&#8217;re Hiring</title>
		<link>http://ext.ensible.com/blog/2012/02/were-hiring/</link>
		<comments>http://ext.ensible.com/blog/2012/02/were-hiring/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 21:32:54 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Extensible]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=57</guid>
		<description><![CDATA[Extensible is growing, and we&#8217;re looking for developers interested in getting in on the ground floor of something cool. We&#8217;ll have lots of opportunities for product development, project work, training, you name it. Since we are still early on in &#8230; <a href="http://ext.ensible.com/blog/2012/02/were-hiring/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Extensible is growing, and we&#8217;re looking for developers interested in getting in on the ground floor of something cool. We&#8217;ll have lots of opportunities for product development, project work, training, you name it. Since we are still early on in building the company, you&#8217;ll be able to step in and make a huge impact on our direction, culture and success.</p>
<h2>What We&#8217;re Looking For</h2>
<ul>
<li><strong>Experienced web developers with solid OO chops</strong>.<br />
We don&#8217;t have specific requirements for language experience, years of work or education &#8211; if you&#8217;re smart and have mastered at least one programming language, you should be able to pick up whatever is needed. Some things that we&#8217;ll probably work with from time to time as we go forward: JavaScript, HTML, CSS, C#, Java, PHP, Rails, Node, Git</li>
<li><strong>Some form of JavaScript framework experience</strong>.<br />
And by <em>framework</em>, we do not mean just jQuery. Have you implemented MVC or used some form of inheritance in a JS app (Ext JS, Dojo, etc.)? Let&#8217;s talk. Strong OO experience in a non-JavaScript framework could work too as long as you&#8217;re eager to learn.</li>
<li><strong>Mobile development (native and/or web)</strong>.<br />
It&#8217;s a mobile world, and if you&#8217;re not on that bandwagon yet then you&#8217;re behind the curve. It&#8217;s not a deal-breaker, but if you haven&#8217;t done mobile yet be prepared to dive in.</li>
<li><strong>Self-starters who love agile development</strong>.<br />
If you need structure and hand-holding, this is likely not the position for you. This will be a highly dynamic startup environment, and you may be asked to wear many hats over the course of a typical week. The ideal candidate will thrive on that challenge.</li>
</ul>
<h2>And We&#8217;d Be Ecstatic If&#8230;</h2>
<ul>
<li><strong>&#8230;you&#8217;re already experienced with Ext JS</strong>.<br />
The Extensible framework is based on <a href="http://www.sencha.com/products/extjs/">Ext JS</a> and we use it a lot in other projects too. Prior experience with Ext JS is a huge bonus, though anyone with OO framework experience should be able to pick it up quickly.</li>
<li><strong>&#8230;you actively contribute to open source</strong>.<br />
At Extensible we love open source (our main product is dual-source) and have plans to contribute to the open source community even more in the future. Have you worked on anything open source? Include a link to your Github account and show us what you&#8217;ve done.</li>
<li><strong>&#8230;you live in Austin</strong>.<br />
Remote might work too, but ideally you&#8217;d be at the table with us most days white boarding and banging out code.</li>
</ul>
<h2>A Little More About Us</h2>
<p>Extensible was founded by Brian Moeskau, original cofounder of Ext JS (now <a href="http://www.sencha.com">Sencha</a>, a 100+ person, VC-funded company). Our first product has been shipping successfully for over a year now and we&#8217;re aggressively looking to expand our business into new areas. We&#8217;re located in Austin, Texas and looking to have an impact on the local technology scene. Through Extensible&#8217;s products and open source initiatives you could have the opportunity to write code used by hundreds of companies around the world.</p>
<p>If this post sounds interesting to you or you know someone who might be a fit, <a href="mailto:brian@ext.ensible.com">please let us know</a>! We don&#8217;t have a formal application process &#8212; just send over your resume or LinkedIn page and let us know a little bit about yourself and we&#8217;ll go from there.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2012/02/were-hiring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extensible 1.0.2 &amp; 1.5.1 Released</title>
		<link>http://ext.ensible.com/blog/2012/02/extensible-1-0-2-1-5-1-released/</link>
		<comments>http://ext.ensible.com/blog/2012/02/extensible-1-0-2-1-5-1-released/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 07:53:33 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=53</guid>
		<description><![CDATA[I&#8217;m pleased to announce the latest maintenance release for each branch of Extensible: Extensible 1.0.2 (for Ext 3.x): A bug-fix release for the most part with a few important fixes for IE and OSX, recommended for all 1.0.x users. For additional &#8230; <a href="http://ext.ensible.com/blog/2012/02/extensible-1-0-2-1-5-1-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m pleased to announce the latest maintenance release for each branch of Extensible:</p>
<ul>
<li><strong>Extensible 1.0.2</strong> (for Ext 3.x): A bug-fix release for the most part with a few important fixes for IE and OSX, recommended for all 1.0.x users. For additional details see the <a href="https://github.com/bmoeskau/Extensible/wiki/Extensible-1.0.x-Release-Notes">1.0.2 release notes</a>.</li>
<li><strong>Extensible 1.5.1</strong> (for Ext 4.x): A bug-fix release that also adds support for the upcoming <a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">Ext 4.1 release</a>, which is a significant upgrade in the Ext 4.x line. Recommended for all 1.5.0 users, required if you plan on upgrading to Ext 4.1. For complete details see the <a href="https://github.com/bmoeskau/Extensible/wiki/Extensible-1.5.x-Release-Notes">1.5.1 release notes</a>.</li>
</ul>
<p><a href="https://github.com/bmoeskau/Extensible/downloads">Download 1.0.2 and/or 1.5.1</a></p>
<h2>New Configuration Settings</h2>
<p>One notable &#8220;feature&#8221; that was added recently in both 1.0.2 and 1.5.1 is a new file in the root of the project called <tt>Extensible-config.js</tt>. One common annoyance in the past has been how best to distribute the Extensible examples for ease of setup and use by end developers. Especially under Ext 4.0+, which introduced dynamic loading via Ext.Loader, this became quite a challenge since dynamic loading is ideal for Extensible development, but terrible performance-wise for public release. How best to maintain the needed JS and CSS includes for both Ext and Extensible, across all examples and for both development and release?</p>
<p>The answer now is <tt>Extensible-config.js</tt>, which writes the JS and CSS includes into the examples dynamically at runtime based on the configuration options specified in that file. Now with a simple config setting you can switch the deployment mode between &#8220;release&#8221; and &#8220;debug&#8221; (or &#8220;dynamic&#8221; under 1.5.1 to use Ext.Loader), or change the root paths for Ext and/or Extensible to easily facilitate testing against different versions. The examples should now work well out of the box (no more local editing of paths or .htaccess files required!) but take a look at the source comments in <tt>Extensible-config.js</tt> if you&#8217;d like to find out more.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2012/02/extensible-1-0-2-1-5-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calendar Pro Sighting</title>
		<link>http://ext.ensible.com/blog/2012/01/calendar-pro-sighting/</link>
		<comments>http://ext.ensible.com/blog/2012/01/calendar-pro-sighting/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 19:16:33 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[calendar pro]]></category>
		<category><![CDATA[playmobil]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=50</guid>
		<description><![CDATA[While shopping for gifts for my daughter before Christmas this home office play set from Playmobil caught my eye: Initially I just thought it was funny because it looked like a &#8220;Harry Potter at age 35&#8243; set where he&#8217;s long &#8230; <a href="http://ext.ensible.com/blog/2012/01/calendar-pro-sighting/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>While shopping for gifts for my daughter before Christmas this <a title="Home Office play set" href="http://store.playmobilusa.com/on/demandware.store/Sites-US-Site/en_US/Product-Show?pid=4289&amp;cgid=" target="_blank">home office play set</a> from Playmobil caught my eye:</p>
<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2012/01/playmobil-cal.jpg"><img class="aligncenter size-full wp-image-52" title="Playmobil office" src="http://ext.ensible.com/blog/wp-content/uploads/2012/01/playmobil-cal.jpg" alt="Playmobil office" width="600" height="450" /></a></p>
<p>Initially I just thought it was funny because it looked like a &#8220;Harry Potter at age 35&#8243; set where he&#8217;s long graduated from Hogwarts and is now a disaffected office drone, plugging away at his TPS reports.  But on closer inspection, I noticed something quite interesting on Harry&#8217;s computer screen:</p>
<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2012/01/playmobil-cal-zoom.jpg"><img class="aligncenter size-full wp-image-51" title="Playmobil Calendar Pro?" src="http://ext.ensible.com/blog/wp-content/uploads/2012/01/playmobil-cal-zoom.jpg" alt="Playmobil Calendar Pro?" width="525" height="569" /></a></p>
<p>Looks uncannily similar to some other software I&#8217;ve seen before&#8230;</p>
<p><a href="http://ext.ensible.com/products/calendar/"><img class="aligncenter" title="Extensible Calendar Pro" src="http://ext.ensible.com/images/home-screenshot.gif" alt="Extensible Calendar Pro" width="538" height="443" /></a></p>
<p>It makes me happy to see Extensible products being put to good use in the real world! <img src='http://ext.ensible.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Have an example of Calendar Pro being used in your own software?  <a href="http://ext.ensible.com/forum/viewforum.php?f=10" target="_blank">Please share</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2012/01/calendar-pro-sighting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy New Year</title>
		<link>http://ext.ensible.com/blog/2012/01/happy-new-year/</link>
		<comments>http://ext.ensible.com/blog/2012/01/happy-new-year/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 07:10:56 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Extensible]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=49</guid>
		<description><![CDATA[Well, OK &#8212; New Year was a couple of weeks ago. Still, I thought it might be a great time to usher in 2012 with a little status update about what&#8217;s going on in Extensible land and what the immediate &#8230; <a href="http://ext.ensible.com/blog/2012/01/happy-new-year/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Well, OK &#8212; New Year was a couple of weeks ago. Still, I thought it might be a great time to usher in 2012 with a little status update about what&#8217;s going on in Extensible land and what the immediate plans are.</p>
<h2>Extensible 1.0.2 &amp; 1.5.1</h2>
<p>For the past few weeks I&#8217;ve been fixing bugs, including a few pretty important ones, and preparing for the next maintenance releases of both the Ext 3.x and Ext 4.x branches of the calendar. Most importantly, as of today Calendar Pro is fully <strong>Ext 4.1-compatible</strong>, at least as of the most current beta version (things could still change, but I&#8217;m hopeful that any remaining issues that might come up will be minor). Although Ext 4.1 is a minor point release, it&#8217;s actually a <a href="http://www.sencha.com/blog/whats-new-in-ext-js-4-1/">huge revamp</a> of the rendering and layout systems under the hood, so some hiccups were to be expected. These have been addressed and the calendar is back in full working form.</p>
<p>I have a few additional issues to iron out and some build process improvements to make, but I expect to be able to put out the new releases within the next week or so.</p>
<h2>Extensible 1.1 &amp; 1.6 (a.k.a., Recurrence)</h2>
<p>I&#8217;ve also been working on recurrence support, off and on, for a while now. Most recently I&#8217;ve been porting (well, rewriting) the existing <a href="http://ext.ensible.com/deploy/1.0.1/examples/calendar/recurrence-widget.html">recurrence editor widget</a> to work under Ext 4, the only component from Extensible 1.0.x that had not yet been touched in the upgrade to Ext 4. That effort has been progressing nicely and I should have the new and improved widget done within the next few days.</p>
<p>I still have work to do on the event editing side to support recurrence fully, and I&#8217;ve been working on a separate blog post series that will soon lay out Extensible&#8217;s recurrence support in full detail. No ETA yet, but finishing recurrence and making it available is the highest priority feature right now.</p>
<h2>Next&#8230;?</h2>
<p>I have lots of feature ideas on the whiteboard right now, but nothing much set in stone yet for releases beyond 1.6. The current most popular request after recurrence is Outlook-style <a href="http://extensible.uservoice.com/forums/95109-general/suggestions/1450541-allow-for-multiple-calendars-to-exist-side-by-side">split day view</a> support, which is planned.  A mobile / Sencha Touch version of the calendar has been a common request lately, what do you think? What other <a href="http://extensible.uservoice.com/forums/95109-general">ideas do you have</a> for next features?</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2012/01/happy-new-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Holidays</title>
		<link>http://ext.ensible.com/blog/2011/12/happy-holidays/</link>
		<comments>http://ext.ensible.com/blog/2011/12/happy-holidays/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 01:33:04 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Extensible]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=46</guid>
		<description><![CDATA[Just a quick note that Extensible will be taking a few days off starting tomorrow, Thursday, December 22 through Monday, December 26 to spend some quality time with family and enjoy the holidays.  The forums of course are always open, &#8230; <a href="http://ext.ensible.com/blog/2011/12/happy-holidays/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2011/12/xmas-break.png"><img class="aligncenter size-full wp-image-47" title="Christmas break" src="http://ext.ensible.com/blog/wp-content/uploads/2011/12/xmas-break.png" alt="" width="722" height="201" /></a></p>
<p>Just a quick note that Extensible will be taking a few days off starting tomorrow, Thursday, December 22 through Monday, December 26 to spend some quality time with family and enjoy the holidays.  The forums of course are always open, but please be aware that there will likely be a delay in answering questions or responding to support inquiries over the next few days.</p>
<p>I hope everyone has a safe and relaxing holiday weekend, and I&#8217;ll see you next week!</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2011/12/happy-holidays/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extensible 1.5 Released</title>
		<link>http://ext.ensible.com/blog/2011/10/1-5-released/</link>
		<comments>http://ext.ensible.com/blog/2011/10/1-5-released/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 03:30:14 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=45</guid>
		<description><![CDATA[At long last, the beta is over and the final release is here. Extensible 1.5 provides full compatibility with Ext JS 4, and includes a ton of fixes since the original beta was released. Download Extensible 1.5 A few notable &#8230; <a href="http://ext.ensible.com/blog/2011/10/1-5-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>At long last, the beta is over and the final release is here. Extensible 1.5 provides full compatibility with Ext JS 4, and includes a ton of fixes since the original beta was released.</p>
<p><a href="https://github.com/bmoeskau/Extensible/downloads" target="_blank">Download Extensible 1.5</a></p>
<p>A few notable issues that were fixed in this release:</p>
<ul>
<li>A daylight savings bug in Extensible.Date.add() caused bad things to happen around the end of October.</li>
<li>The new scrollbars in OSX Lion created a layout bug in day and week views since they rely on the scroll width as a layout offset for the header area. It&#8217;s now calculated correctly rather than a hard-coded pixel offset.</li>
<li>The new Ext 4 CSS classname prefixes are now used in the Extensible CSS rules that rely on them (&#8220;.x-&#8221; instead of &#8220;.ext-&#8221;). The beta still used the old-style prefixes in some cases, which led to subtle CSS bugs (including faulty event colors and borders in IE).</li>
<li>The DateRangeField now support the multi-line layout again.</li>
</ul>
<p>There are many other fixes as well &#8211; for the complete list check out the <a href="https://github.com/bmoeskau/Extensible/wiki" target="_blank">release notes</a>. If you are still using the beta, please upgrade as soon as possible!</p>
<p>Here are the upcoming next steps we have planned:</p>
<ul>
<li><strong>Extensible 1.0.2<br />
</strong>This will be a maintenance release for the Ext 3 branch to push out the bug fixes that have been made since 1.0.1 (including the Lion scrollbar fix).</li>
<li><strong>Extensible 1.1 / 1.6</strong><br />
This will be a new feature release for both branches focused primarily on the top two features currently in the <a href="http://extensible.uservoice.com/" target="_blank">request queue</a>: <strong>recurrence support</strong> and <strong>split day view support</strong> (the ability to subdivide the day view into multiple columns based on some attribute like a user&#8217;s calendar).</li>
</ul>
<p>Now that we&#8217;re caught back up with the latest Sencha release we can again start adding new features and continuing to make Calendar Pro the best JavaScript calendar available. We have no shortage of ideas for 1.7 and beyond, but we also love to hear from our community regarding what&#8217;s most important, so please <a href="http://extensible.uservoice.com/" target="_blank">tell us</a>.</p>
<p class="widget-container">Have you been using Ext Calendar Pro successfully in your company?  Please <a href="mailto:team@ext.ensible.com">let us know</a>. We&#8217;d love to receive testimonials and screenshots from happy customers that we can post on our website.  You can also <a href="http://ext.ensible.com/store/">buy a license or support</a> to show your support and help keep Extensible adding new features and products.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2011/10/1-5-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extensible 1.0.1 + 1.5.0 beta</title>
		<link>http://ext.ensible.com/blog/2011/06/extensible-1-0-1-and-1-5-0-beta/</link>
		<comments>http://ext.ensible.com/blog/2011/06/extensible-1-0-1-and-1-5-0-beta/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 17:46:48 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=43</guid>
		<description><![CDATA[Now that Ext 4 is officially out (already at 4.0.2 as of this writing) I&#8217;ve been working for the past several weeks on updating Extensible to support it. The bad news is that since Ext 4 is nowhere close to &#8230; <a href="http://ext.ensible.com/blog/2011/06/extensible-1-0-1-and-1-5-0-beta/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Now that <a href="http://www.sencha.com/products/extjs/download/">Ext 4</a> is officially out (already at <a href="http://www.sencha.com/blog/new-ext-js-releases-for-performance-and-ie9-support-4-0-2-and-3-4/">4.0.2</a> as of this writing) I&#8217;ve been working for the past several weeks on updating Extensible to support it. The bad news is that since Ext 4 is nowhere close to backwards-compatible, Extensible must now be branched into two separate, actively-maintained code bases to support both Ext 3.x and 4.x.  The good news is that this is finally (mostly) done.</p>
<h2>Extensible 1.5 beta</h2>
<p>The Ext 4 compatible version of Extensible is 1.5.x, and this is now the master branch in <a href="https://github.com/bmoeskau/Extensible">Github</a>.  I briefly considered releasing this version as 2.0, but decided not to primarily for two reasons:</p>
<ul>
<li>No new features were added, aside from Ext 4 support</li>
<li>This release is a free upgrade for all existing Extensible 1.x licensees</li>
</ul>
<p>Extensible 2.0 will be a major new feature release, and may also be a paid upgrade when it comes out (it&#8217;s not even started at this time). Because of that I felt it appropriate to keep the entire current Extensible line, both for Ext 3 and Ext 4, at the same major version number.</p>
<p>The first beta build of 1.5.0 is now <a href="https://github.com/bmoeskau/Extensible/downloads">available</a>, or you can fork the master branch and build it yourself from source. There are a couple of known issues, so you might want to check the <a href="https://github.com/bmoeskau/Extensible/wiki">release notes</a> as well. Please provide feedback and bug reports in the <a href="http://ext.ensible.com/forum/">forums</a>.</p>
<h2>Extensible 1.0.1</h2>
<p>For existing Ext 3.x users who plan to stick with 3.x for a while, the Extensible <a href="https://github.com/bmoeskau/Extensible/tree/1.x">1.x branch</a> will also be actively maintained, and regular maintenance releases will still be made. The official 1.0.1 bug fix release is <a href="https://github.com/bmoeskau/Extensible/downloads">available</a> now (see the <a href="https://github.com/bmoeskau/Extensible/wiki">release notes</a> for what&#8217;s changed). It is a fully-compatible upgrade from 1.0.0 and is recommended for all Ext 3.x users.</p>
<h2>Future Plans</h2>
<p>Some new features will still be made in both branches (including recurrence support, which was already planned for 1.1 before Ext 4 even came out). Moving forward, most new features will start going only into the Extensible 1.5.x branch and/or 2.0 once it gets started. Extensible 1.x will be fully supported for at least as long as Ext 3.x is supported by Sencha (which will be a while yet), but just as with Ext JS itself, major new features will typically appear only in the newest versions.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2011/06/extensible-1-0-1-and-1-5-0-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Update</title>
		<link>http://ext.ensible.com/blog/2011/05/quick-update/</link>
		<comments>http://ext.ensible.com/blog/2011/05/quick-update/#comments</comments>
		<pubDate>Mon, 09 May 2011 18:30:49 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=40</guid>
		<description><![CDATA[It&#8217;s been a while since my last update and I thought a few people might be interested in what&#8217;s going on with Extensible lately.  Originally I had planned to put out a 1.1 version by now.  After Extensible 1.0 I &#8230; <a href="http://ext.ensible.com/blog/2011/05/quick-update/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s been a while since my last update and I thought a few people might be interested in what&#8217;s going on with Extensible lately.  <a href="http://ext.ensible.com/blog/2011/03/at-long-last-1-0/">Originally</a> I had planned to put out a 1.1 version by now.  After Extensible 1.0 I ended up focusing quite a lot of time writing the Ext JS <a title="Ext JS 3 to 4 Migration" href="http://www.sencha.com/blog/ext-js-3-to-4-migration/">3→4 migration pack</a> for Sencha for the past couple of months.  Last week I was in Croatia presenting several sessions at the <a href="http://www.sourcedevcon.eu/speakers.html">Sourc{ conference</a>.</p>
<p>Now that Ext 4 is out and the conference is over, I&#8217;m refocusing on Extensible and plan to get 1.1 out as soon as possible.  I&#8217;ve already started adding recurrence support and hope to have something committed for testing very soon.</p>
<p>I have also started updating the calendar for Ext 4 support, which will reside in a separate branch so that Ext 3 will still be fully supported as well.  This will not be part of the 1.1 release plan, but should also be released pretty soon thereafter.</p>
<p>Finally, I will have more exciting Extensible product news in the coming weeks, but I don&#8217;t want to spoil the surprise just yet&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2011/05/quick-update/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>At Long Last&#8230; 1.0!</title>
		<link>http://ext.ensible.com/blog/2011/03/at-long-last-1-0/</link>
		<comments>http://ext.ensible.com/blog/2011/03/at-long-last-1-0/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 07:45:34 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=35</guid>
		<description><![CDATA[Earlier this week I uploaded the official Extensible 1.0 package for download.  Hooray!  It&#8217;s been a long time coming and I&#8217;m excited to finally hit this milestone.  You can browse the release notes to see what&#8217;s changed since the last &#8230; <a href="http://ext.ensible.com/blog/2011/03/at-long-last-1-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Earlier this week I uploaded the official <strong>Extensible 1.0</strong> package for <a href="https://github.com/downloads/bmoeskau/Extensible/extensible-1.0.zip">download</a>.  Hooray!  It&#8217;s been a long time coming and I&#8217;m excited to finally hit this milestone.  You can browse the <a href="https://github.com/bmoeskau/Extensible/wiki">release notes</a> to see what&#8217;s changed since the last release.  As always you can also <a href="http://ext.ensible.com/deploy/dev/examples/">try the demos</a> or <a href="http://ext.ensible.com/deploy/dev/docs/">browse the API docs</a> online.</p>
<p>Thank you to all who took advantage of the 1.0 pre-release sale and ordered licenses. Even though the sale is now over, it&#8217;s never too late to <a href="http://ext.ensible.com/store/">order a license</a> and help support the project as we start working on new features.</p>
<h2>Road Map</h2>
<p>The next feature release will be 1.1, currently slated for early-to-mid-April. The primary focus will be on implementing <strong>recurrence</strong> and adding support for <strong>dividing the Day View</strong> into multiple sub-views, a la MS Outlook.  I&#8217;ll most likely sneak in a couple of additional minor features as well, like event tooltip support.</p>
<p>I&#8217;ll be looking at Ext 4 support very soon, and I plan to maintain separate branches for 3.x and 4.x support (for at least as long as Ext 3.x is officially supported by Sencha).  Ext 4.0 support will be provided as a free upgrade for any current Extensible 1.0 commercial license holders, regardless of how the Extensible version numbers end up working out (not sure about that yet).</p>
<p>I have a lot of other features already on the drawing board and will publish a longer-term road map soon.  I&#8217;m also using UserVoice to monitor community feedback on new feature requests and prioritizing based partially on that (as you can see by the 1.1 plans).  Do you have other features that you&#8217;d like to see in a future release?  <a href="http://extensible.uservoice.com/forums/95109-general">Let me know</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2011/03/at-long-last-1-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Extensible Release Candidate 2 Available</title>
		<link>http://ext.ensible.com/blog/2011/02/extensible-release-candidate-2-available/</link>
		<comments>http://ext.ensible.com/blog/2011/02/extensible-release-candidate-2-available/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 05:06:23 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=32</guid>
		<description><![CDATA[Extensible RC2 is ready for download.  You can also try the examples online or browse the updated docs.  Please give it a try and report any issues you find.  For complete details on what&#8217;s new check out the release notes. &#8230; <a href="http://ext.ensible.com/blog/2011/02/extensible-release-candidate-2-available/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Extensible RC2 is <a href="https://github.com/downloads/bmoeskau/Extensible/extensible-1.0-rc2.zip">ready for download</a>.  You can also try the <a href="http://ext.ensible.com/deploy/dev/examples/">examples</a> online or browse the updated <a href="http://ext.ensible.com/deploy/dev/docs/">docs</a>.  Please give it a try and <a href="http://ext.ensible.com/forum/">report</a> any issues you find.  For complete details on what&#8217;s new check out the <a href="https://github.com/bmoeskau/Extensible/wiki">release notes</a>. This will be the final pre-release version &#8212; the next version will be 1.0 final!  The only changes between now and the final release will be any last bug fixes that might come up this week.</p>
<p>The plan is for one last week of testing, and then 1.0 final should be ready next weekend.  That also means that this will be the <strong>final week of our super-duper pre-release sale</strong> on licenses, so if you&#8217;ve been on the fence, now would be a great time to head on over to <a href="/store/">the store page</a> and get your discount while it lasts!</p>
<p>The next major release on the road map will be 1.1, and the focus will be on getting recurrence support fully implemented throughout the framework.  The other major feature that folks have been requesting lately is the ability to divide the Day view so that you can show multiple calendars for the same day a la MS Outlook, so I&#8217;ll definitely be looking at that as well.  If you have other ideas for features you want, be sure to <a href="http://extensible.uservoice.com/forums/95109-general">suggest them</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2011/02/extensible-release-candidate-2-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extensible Release Candidate 1 Available!</title>
		<link>http://ext.ensible.com/blog/2011/01/extensible-release-candidate-1-available/</link>
		<comments>http://ext.ensible.com/blog/2011/01/extensible-release-candidate-1-available/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 06:15:50 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=29</guid>
		<description><![CDATA[I&#8217;m very pleased to announce the immediate availability of Extensible 1.0 RC1 for download. Now that Extensible is at RC status that means features are frozen and only bug fixes will be done between now and the final release (probably &#8230; <a href="http://ext.ensible.com/blog/2011/01/extensible-release-candidate-1-available/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m very pleased to announce the immediate availability of <a href="https://github.com/bmoeskau/Extensible/downloads">Extensible 1.0 RC1</a> for download. Now that Extensible is at RC status that means features are frozen and only bug fixes will be done between now and the final release (probably around the second week of February unless something major comes up). So far the calendar has been very stable, even since the alpha release days, and I&#8217;m excited that 1.0 final is just around the corner so that I can get back to adding new exciting features (ahem, recurrence&#8230;).</p>
<p>Speaking of new features, you might have noticed the little &#8220;feedback&#8221; link hanging around the left edge of the screen if you&#8217;ve visited the site recently. I&#8217;m evaluating the <a href="http://extensible.uservoice.com/forums/95109-general">UserVoice</a> service to accept feature requests in a structured way that will hopefully provide some kind of realistic weighting behind each request. The service gives you a handful of votes that you can allocate toward the ideas you consider to be most important, and if enough people request features and vote it should give a real sense of the community&#8217;s priorities.  Please <a href="http://extensible.uservoice.com/forums/95109-general">give it a try</a> and make your voice heard!</p>
<p>Just a reminder that the <a href="http://ext.ensible.com/store/">Extensible pre-release sale</a> is still in full force, but only for a limited time.  Once 1.0 final is ready the sale will be over, so if you are still considering purchasing a 1.0 commercial license, now would be the perfect opportunity to save up to 27% off the regular price.  If you are interested, head on over to the <a href="http://ext.ensible.com/store/">store</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2011/01/extensible-release-candidate-1-available/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Extensible Pre-Release Sale Has Begun</title>
		<link>http://ext.ensible.com/blog/2011/01/extensible-pre-release-sale-has-begun/</link>
		<comments>http://ext.ensible.com/blog/2011/01/extensible-pre-release-sale-has-begun/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 10:14:07 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=28</guid>
		<description><![CDATA[I&#8217;m very pleased to announce that the Extensible store is now open! We have commercial licenses and premium support subscriptions available immediately. In advance of the 1.0 Final release we&#8217;re having a pre-release sale on all commercial licenses. You can save &#8230; <a href="http://ext.ensible.com/blog/2011/01/extensible-pre-release-sale-has-begun/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m very pleased to announce that the <a href="http://ext.ensible.com/store/">Extensible store</a> is now open! We have commercial licenses and premium support subscriptions available immediately.</p>
<p>In advance of the 1.0 Final release we&#8217;re having a pre-release sale on all commercial licenses. You can save <strong>up to 27% off the normal license price</strong>, depending on how many you need. This discounted price is only good until 1.0 Final is released (~early February).</p>
<p>You may also notice that the overall site has had a bit of a face-lift &#8211; I hope you like the improvements. You may need to refresh your browser if any pages are cached. Please <a href="mailto:team@ext.ensible.com">let us know</a> if you notice any snags with the site, or if you have any other issues or feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2011/01/extensible-pre-release-sale-has-begun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beta 2 Released</title>
		<link>http://ext.ensible.com/blog/2010/12/beta-2-released/</link>
		<comments>http://ext.ensible.com/blog/2010/12/beta-2-released/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 19:06:12 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=25</guid>
		<description><![CDATA[Download the code, or browse the online samples and docs. You can also check out the release notes. As always, feedback and bug reports are welcome in the forums. Mostly bug fixes in this release, no major features added.  At &#8230; <a href="http://ext.ensible.com/blog/2010/12/beta-2-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="https://github.com/bmoeskau/Extensible/downloads">Download</a> the code, or browse the online <a href="http://ext.ensible.com/deploy/dev/">samples and docs</a>. You can also check out the <a href="https://github.com/bmoeskau/Extensible/wiki">release notes</a>. As always, feedback and bug reports are welcome in the <a href="/forum/">forums</a>.</p>
<p>Mostly bug fixes in this release, no major features added.  At this point 1.0 is basically feature-complete, and the plan is to put out one or two release candidates after today to fix any final bugs that come up in the next few weeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/12/beta-2-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Demos and Docs Now Online</title>
		<link>http://ext.ensible.com/blog/2010/12/demos-and-docs-now-online/</link>
		<comments>http://ext.ensible.com/blog/2010/12/demos-and-docs-now-online/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 17:59:48 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Extensible]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=24</guid>
		<description><![CDATA[As part of the beta release of Extensible this week I also wanted to make the current interactive demos and API documentation available online to make it even easier for people to see what&#8217;s currently available. If you&#8217;ve been waiting &#8230; <a href="http://ext.ensible.com/blog/2010/12/demos-and-docs-now-online/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>As part of the <a href="http://ext.ensible.com/blog/2010/12/extensible-beta-released/">beta release</a> of Extensible this week I also wanted to make the current interactive demos and API documentation available online to make it even easier for people to see what&#8217;s currently available. If you&#8217;ve been waiting for a simple way to play with the current demos or send a link to someone else to check them out, now you can do that.</p>
<ul>
<li><a title="Demos" href="http://ext.ensible.com/deploy/dev/examples/">Interactive calendar demos</a></li>
<li><a title="API docs" href="http://ext.ensible.com/deploy/dev/docs/">Online API docs</a></li>
</ul>
<p>Both the demos and docs are still works in progress, but I wanted to get them out there now so that even more people can have a look and provide feedback.  As always if you find any issues or have suggestions please <a href="http://ext.ensible.com/forum/">let us know</a>.</p>
<p>One other tiny update is that the site now officially has a <a href="http://ext.ensible.com/store/">store page</a>.  It&#8217;s pretty bare at the moment, but it will be launching in early January 2011 with pre-release discounts on all commercial license options.  Support subscriptions will also be available, so check back soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/12/demos-and-docs-now-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extensible Beta Released</title>
		<link>http://ext.ensible.com/blog/2010/12/extensible-beta-released/</link>
		<comments>http://ext.ensible.com/blog/2010/12/extensible-beta-released/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 17:33:00 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=22</guid>
		<description><![CDATA[I&#8217;m pleased to announce the release of Extensible 1.0 Beta 1, available immediately for download.  You can also pull down the code and build it yourself.  This release features a number of improvements and bug fixes that you can read &#8230; <a href="http://ext.ensible.com/blog/2010/12/extensible-beta-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m pleased to announce the release of Extensible 1.0 Beta 1, available immediately for <a title="Extensible Beta 1 download" href="https://github.com/bmoeskau/Extensible/downloads">download</a>.  You can also pull down <a href="https://github.com/bmoeskau/Extensible">the code</a> and build it yourself.  This release features a number of improvements and bug fixes that you can read all about in the <a href="https://github.com/bmoeskau/Extensible/wiki">release notes</a>.  There are a few things worth highlighting:</p>
<ul>
<li>A large amount of effort in this release was spent improving the handling of remote data loading, including handling remote errors properly. See the updated remote calendar sample which now allows you to toggle remote errors on and off for testing.</li>
<li>Localization has been fully implemented and several locale files included.</li>
<li>A few new config options have been added, including read-only calendar support and a flexible multi-day view option.</li>
<li>Lots of bug fixes</li>
</ul>
<p>Note that originally recurrence support was planned for 1.0. This has been deferred for now, but will be the main focus of the 1.1 release.</p>
<p>Please give the beta release a try and if you find any bugs or have feedback please visit the <a href="http://ext.ensible.com/forum/">Extensible forums</a>.</p>
<h2>1.0 Release Plans</h2>
<p>Currently I am planning one more beta release that will contain the final changes / feature additions for 1.0.  That release should occur within about 2 weeks.  After that will be one or two release candidates as needed, which will only contain bug fixes required to finalize the release, then the final 1.0 will follow.  I am currently targeting February 1st as the 1.0 release date.</p>
<p>I also plan to finalize and announce all the details around support and pricing after the first of the year, and will be having a pre-release sale on all commercial licensing plans in January leading up to the 1.0 final release.</p>
<p>Thanks to everyone who so far has contributed bug reports, feature requests, fixes and locale files.  I really appreciate everyone&#8217;s interest and contributions, and there will be lots of great stuff coming down the road.  1.0 is just the beginning!</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/12/extensible-beta-released/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Alpha 2 Released &#8211; What&#8217;s New</title>
		<link>http://ext.ensible.com/blog/2010/10/alpha-2-released-whats-new/</link>
		<comments>http://ext.ensible.com/blog/2010/10/alpha-2-released-whats-new/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 07:49:32 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[Extensible]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=19</guid>
		<description><![CDATA[I&#8217;ve uploaded a new release to Github, officially tagged Extensible 1.0 Alpha 2 (download).  You can peruse the release notes, but I wanted to highlight a couple of the significant changes here too. Multi-Calendar Support This ended up being a &#8230; <a href="http://ext.ensible.com/blog/2010/10/alpha-2-released-whats-new/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve uploaded a new release to Github, officially tagged Extensible 1.0 Alpha 2 (<a href="http://github.com/bmoeskau/Extensible/downloads">download</a>).  You can peruse the <a href="http://github.com/bmoeskau/Extensible/wiki">release notes</a>, but I wanted to highlight a couple of the significant changes here too.</p>
<h2>Multi-Calendar Support</h2>
<p><a href="http://ext.ensible.com/blog/wp-content/uploads/2010/10/multi-cal.png"><img class="alignright size-full wp-image-20" title="multi-calendar support" src="http://ext.ensible.com/blog/wp-content/uploads/2010/10/multi-cal.png" alt="" width="364" height="233" /></a>This ended up being a bit more complex than I thought it would be to implement, but I&#8217;m pretty pleased with the results so far.</p>
<p>The current release supports choosing calendar colors, hiding and showing each calendar and also introduces a separate <strong>CalendarRecord</strong> class with <strong>CalendarMappings</strong> (just like the corresponding event classes).  You cannot yet add or edit calendars, although that will be added in an upcoming release.  However, the new functionality already adds quite a bit to the calendar experience.</p>
<h2>Remote Example</h2>
<p>Every real calendar implementation is going to use remote data, so it&#8217;s important to demonstrate that Ext Calendar Pro supports loading remote data quite easily.  This release adds a new sample that shows just that.  In fact, no changes are required in the calendar code itself &#8212; you simply specify the appropriate remote proxy for your data store (and in this case, the REST API also since the new sample is RESTful).  The sample uses a basic MVC-style PHP implementation as the back end, which stores data in the session between page loads.  Additional platform implementations will be added in future releases, but this should get you started down the path of remote data usage.</p>
<h2>Everything Else</h2>
<p>Of course there are also a bunch of minor updates and bug fixes in this release as well.  Please check out the <a href="http://github.com/bmoeskau/Extensible/wiki">release notes</a> for details.</p>
<p>The biggest goal for the next release will be implementing the recurrence widget into the calendar, and trying to reach 1.0 API stability if possible so that we can start beta testing.  If you have any feedback or find any bugs, please head over to the <a href="/forum/">forums</a> and let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/10/alpha-2-released-whats-new/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming Events</title>
		<link>http://ext.ensible.com/blog/2010/09/upcoming-events/</link>
		<comments>http://ext.ensible.com/blog/2010/09/upcoming-events/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 05:45:22 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=17</guid>
		<description><![CDATA[SenchaCon 2010 The big event on the calendar is SenchCon 2010 (Nov.14-17) in San Francisco.  On the second day of the conference I&#8217;ll be moderating a panel discussion of some of the best and brightest component developers in the Ext &#8230; <a href="http://ext.ensible.com/blog/2010/09/upcoming-events/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h2>SenchaCon 2010</h2>
<p>The big event on the calendar is <a href="http://www.sencha.com/conference/">SenchCon 2010</a> (Nov.14-17) in San Francisco.  On the second day of the conference I&#8217;ll be moderating a panel discussion of some of the best and brightest component developers in the Ext JS community.  From the <a href="http://www.sencha.com/conference/sessions/session.php?sid=280">Sencha conference site</a>:</p>
<blockquote><p><strong>Session: Ext JS Component Makers</strong><br />
<em>Day 2, Tuesday, November 16th &#8211; 12:45pm to 1:30pm</em><br />
This is the opportunity to see what the best of the Ext JS community has developed in the format that the DEMO conference has pioneered. Each component developer will have 5 minutes to demo their component and talk about the challenges faced and solutions invented during the development process.</p></blockquote>
<p>If you&#8217;ll be attending the conference please check out the panel and also stop by and introduce yourself &#8212; I can&#8217;t wait to meet other developers in person who I&#8217;ve only known through forum discussions!</p>
<h2>Austin Meetup</h2>
<p>The other upcoming event is for anyone in or near Austin, TX.  Next Wednesday, Sept. 29th at 7:30 pm I&#8217;ll be hosting the <a href="http://www.meetup.com/ExtJS-Austin/calendar/14694587/">Austin Ext JS / Sencha Meetup</a>.  We&#8217;ll be getting together at <a href="http://techranchaustin.com/">Tech Ranch Austin</a> to discuss interesting Ext projects (I&#8217;ll be demo&#8217;ing <a href="http://ext-calendar.com/">Ext Calendar Pro</a>), although the primary focus will be on getting to know each other better and having a couple of cold ones.  If you are in the area, please stop by.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/09/upcoming-events/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We Have Forums</title>
		<link>http://ext.ensible.com/blog/2010/09/we-have-forums/</link>
		<comments>http://ext.ensible.com/blog/2010/09/we-have-forums/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 15:01:08 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Extensible]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=15</guid>
		<description><![CDATA[Just a quick note to announce that we officially have support forums now.  If you have tried out the calendar components and have any questions or found any issues so far, please do let us know.  I&#8217;d also love to &#8230; <a href="http://ext.ensible.com/blog/2010/09/we-have-forums/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Just a quick note to announce that we officially have <a href="http://ext.ensible.com/forum/">support forums</a> now.  If you have tried out the calendar components and have any questions or found any issues so far, please do let us know.  I&#8217;d also love to hear any feature requests that folks might think of.</p>
<p>If you haven&#8217;t yet, please <a href="http://github.com/bmoeskau/Extensible/downloads">download</a> the code from Github and give it a spin!</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/09/we-have-forums/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Alpha Release Available</title>
		<link>http://ext.ensible.com/blog/2010/09/first-alpha-release-available/</link>
		<comments>http://ext.ensible.com/blog/2010/09/first-alpha-release-available/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 05:13:40 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Calendar Pro]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=13</guid>
		<description><![CDATA[I&#8217;ve just posted the first official alpha build of the Extensible library (which is still pretty much just Calendar Pro for the time being).  If you&#8217;d like to try it out you can download the zip file from Github.  The &#8230; <a href="http://ext.ensible.com/blog/2010/09/first-alpha-release-available/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve just posted the first official alpha build of the Extensible library (which is still pretty much just <a href="http://ext-calendar.com">Calendar Pro</a> for the time being).  If you&#8217;d like to try it out you can <a href="http://github.com/bmoeskau/Extensible/downloads">download</a> the zip file from Github.  The build contains 4 different example pages (with more to come) as well as a current build of documentation for the calendar classes.</p>
<p>There are a few new features in this release compared to the sample in Ext JS 3.3.  For example, there are additional views (multi-day, multi-week) &#8212; the samples now include a 2-week view by default.  The events also support right-click context menus as well.  There have been numerous additions and improvements to the component API&#8217;s, including a handful of new events for the calendar views.  Most importantly, a number of bugs have been fixed and a lot of internal improvements have been made as well to help transition the components from sample quality to production quality.  While a lot of these changes are not visible on the outside, they are very important for getting Extensible 1.0 off on the right foot.</p>
<h2>So What&#8217;s the Plan?</h2>
<p>The current plan is to have at least 3 more interim releases prior to the final 1.0 release.  Subject to change, this is the current high-level plan:</p>
<ul>
<li><strong>Alpha 2</strong>: More new features and fixes, API&#8217;s may still change.  Heavy development still.</li>
<li><strong>Beta 1</strong>: More new features, although I&#8217;m planning this to be the feature freeze release.  API&#8217;s <em>may</em> change in this release, but hopefully not after.</li>
<li><strong>Beta 2</strong>: Or possibly RC, depending on how it&#8217;s looking.  API should be stable at this point and it should be primarily bug fixes.  May need an RC release after this.</li>
</ul>
<p>I&#8217;m really hoping to get each release out within 1-2 weeks of the previous one, although with a few of the features still to be added it&#8217;s hard to say for sure.  If all goes well, this puts us in decent shape for a late October release, depending on what kind of issues might come up between now and then.</p>
<p>So you may be wondering what features are still to be added for 1.0.  Here&#8217;s the current list (give or take):</p>
<ul>
<li>Full multi-calendar support with calendar management</li>
<li>Recurrence support in the calendar (there is a recurrence control sample in this alpha release, but it&#8217;s not integrated into the calendar yet)</li>
<li>Enhanced event store functionality for working with remote data</li>
<li>Customizable gadget sidebar as a component</li>
<li>Read-only events and calendar views</li>
<li>At least one server-side sample implementation</li>
</ul>
<p>And a few other odds and ends, but those are most of the major items.  And before you ask, yes, there are a <em>ton</em> of additional features already on the list for post-1.0.  You have to draw the line somewhere to get a release out the door, so hopefully this will cover enough to get people up and running for now.  In a future update I&#8217;ll discuss more about feature plans beyond 1.0.</p>
<h2>How Can I Help?</h2>
<p>I&#8217;m glad you asked!  Please report any bugs or feature requests in the <a href="http://github.com/bmoeskau/Extensible/issues">Github issues list</a> for the project.  If you&#8217;re not on Github already (why not?) and don&#8217;t want to sign up just to post an issue, you can also <a href="mailto:support@ext.ensible.com">send me an email</a>.  If you are interested in contributing in any way, feel free to fork the code and send me any changes you come up with.</p>
<p>Time to start working on alpha 2!</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/09/first-alpha-release-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Code is Available</title>
		<link>http://ext.ensible.com/blog/2010/09/code-is-available/</link>
		<comments>http://ext.ensible.com/blog/2010/09/code-is-available/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 17:16:24 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=12</guid>
		<description><![CDATA[The Extensible project (which includes Ext Calendar Pro) is hosted at Github and should be available to anyone: http://github.com/bmoeskau/Extensible I was hoping to have a beta release out by now, but that hasn&#8217;t quite happened yet.  The code should still &#8230; <a href="http://ext.ensible.com/blog/2010/09/code-is-available/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The Extensible project (which includes Ext Calendar Pro) is hosted at Github and should be available to anyone:</p>
<p><a href="http://github.com/bmoeskau/Extensible">http://github.com/bmoeskau/Extensible</a></p>
<p>I was hoping to have a beta release out by now, but that hasn&#8217;t quite happened yet.  The code should still be considered alpha quality, primarily because it&#8217;s been under heavy revision since the cut that went into Ext 3.3, and also because it is still not feature complete for what&#8217;s going to be in Extensible 1.0.  However, I figured that there&#8217;s no reason not to let people check it out and start providing feedback.</p>
<p>It&#8217;s looking like it&#8217;s going to be at least a few weeks yet before the first proper packaged release is available.  Once that&#8217;s done I&#8217;ll post again and discuss the status of specific features.  A lot of the work that&#8217;s been going into the code lately has been focused less on new features and more on fixing bugs and improving the functionality and extensibility of the components that are there.  It&#8217;s coming along nicely!</p>
<p>If you are interested in contributing to the project in any capacity please let me know.  I&#8217;m going to try out Github&#8217;s built-in issue tracking, so if you find bugs, <a href="http://github.com/bmoeskau/Extensible/issues">please post them</a>.  If you&#8217;re interested in adding docs or patching the code, feel free to fork the project and send me a note when you have something I should take a look at!</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/09/code-is-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>We Have a Newsletter</title>
		<link>http://ext.ensible.com/blog/2010/08/we-have-a-newsletter/</link>
		<comments>http://ext.ensible.com/blog/2010/08/we-have-a-newsletter/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 18:02:59 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=10</guid>
		<description><![CDATA[I&#8217;ve never tried to run an email list before, even when it would have been useful to do so. It just always seemed like something that would be difficult to do well and would require too much overhead. For Extensible &#8230; <a href="http://ext.ensible.com/blog/2010/08/we-have-a-newsletter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve never tried to run an email list before, even when it would have been useful to do so.  It just always seemed like something that would be difficult to do well and would require too much overhead.  For Extensible though I&#8217;m trying lots of new things already (<a href="http://www.facebook.com/pages/Extensible/102984609755873">Facebook</a>, <a href="http://twitter.com/ext_ensible/">Twitter</a>) so I figured, why not get an email newsletter set up?</p>
<p>Enter <a href="http://www.mailchimp.com/">MailChimp</a>.  I&#8217;d heard lots about it over the past year or so and even checked it out a while back, but this time I decided to sign up and give it a go.  The great thing is that they offer a full-featured entry level account that is free to start until you get to a minimum subscriber base where it would then make sense to upgrade.  The toolset is comprehensive, which is good and bad.  Trying to accomplish certain tasks seemed a bit more difficult than it should have been, but in a single day I went from zero to a fully-functioning email list with all the custom-styled forms and email templates I needed up and running.  And all for free!  Gotta love the web &#8212; in the age of desktop software none of this would have been possible.</p>
<p>Hey, speaking of newsletters, why not <a href="http://eepurl.com/SCRr" target="_blank">subscribe now</a> so you don&#8217;t miss out on any product announcements or other Extensible news?</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/08/we-have-a-newsletter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Back! (A personal note)</title>
		<link>http://ext.ensible.com/blog/2010/07/im-back-a-personal-note/</link>
		<comments>http://ext.ensible.com/blog/2010/07/im-back-a-personal-note/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 05:20:32 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=7</guid>
		<description><![CDATA[Or&#8230; &#8220;You were gone?&#8221; Yes, I&#8217;ve been pretty well absent from the Ext JS community lately.  For a while, actually, thanks for asking.  If you noticed my absence, then you probably already know who I am and maybe even a &#8230; <a href="http://ext.ensible.com/blog/2010/07/im-back-a-personal-note/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Or&#8230; &#8220;You were gone?&#8221;</h2>
<p>Yes, I&#8217;ve been pretty well absent from the Ext JS community lately.  For a while, actually, thanks for asking.  If you noticed my absence, then you probably already know who I am and maybe even a bit about my background.  If you did not notice (shame on you!) let me give a few details, if you&#8217;re interested.</p>
<h2>A Little Background</h2>
<p>Waaay back in the fall of 2006 I met up with Jack Slocum over the internets.  At the time he was working on his YUI-Ext components (extensions to Yahoo&#8217;s at-the-time nascent JS framework) and I was doing some contract web app development and was looking around for a framework to use (again).  I ran across YUI-Ext and thought it was just awesome stuff, especially coming from some random, lone dude out in cyberspace.  I pulled down the code, sent a few patches back to Jack which he liked and we started talking.</p>
<p>Before you know it, by March of 2007, Ext JS (both the 1.0 framework and the company behind it) was officially born.  In those days it was literally just Jack and me &#8212; it was a crazy amount of work, but fun and a very interesting time.  As you probably know (since you&#8217;re reading this) Ext JS took off and continues to do quite well as one of the premiere web app development frameworks available.  All of that sounds great, right?  Then you&#8217;re probably asking&#8230;</p>
<h2>&#8220;So Why Did You Leave?&#8221;</h2>
<p>Well, in startup companies, as in life, things can get pretty interesting.  Things change (constantly), situations change, people change&#8230; none of which is good or bad necessarily, it just is what it is.  As the company grew, it simply got to a point where I didn&#8217;t fit quite as well into what was going on as I had in the beginning.  That, combined with the fact that my wife and I were going to have a baby in early 2009 (which did not gel very well with my 16-hour work days at the time) meant that something had to change.</p>
<p>I left Ext JS in October of 2008 on amicable terms.  At the time I was pretty burned out (and the baby was due shortly) so I literally switched off my brain for about 6 months and worked on the house, outfitted the nursery, read a bunch of baby books, watched movies&#8230; basically anything that did not involve writing code.</p>
<h2>Fast Forward to July 2010</h2>
<p>My daughter is now a happy (well, mostly) and healthy 17-month-old toddler.  Wow, let me let that sink in for a sec&#8230;</p>
<p>I finally switched my brain back on sometime during last year and have slowly been ramping a few projects up.  Even back when I left Ext JS officially, I always planned to return actively to the community at some point, when the time was right for me.</p>
<p>It just so happened that I had been working on some calendar components already when I heard that the Ext team was also thinking about doing something similar. I got back in touch with the current team (now <a href="http://www.sencha.com/blog/2010/06/14/ext-js-jqtouch-raphael-sencha/">rebranded as Sencha</a>) and ended up working with them to contribute my components as a sample calendar application to the Ext JS 3.3 release (<a href="http://www.sencha.com/blog/2010/07/28/announcing-ext-js-3-3-beta-pivotgrids-calendars-and-more/">currently in beta</a> as of this writing).</p>
<p>I&#8217;m still improving and adding features to those same components and will be releasing a <a href="http://ext-calendar.com">more advanced version</a> independently in the coming months (with Sencha&#8217;s full blessing).  Contributing something back to the framework has been a great way for me to jump back into the Ext JS game with both feet.  My plan for Extensible is to continue pushing out interesting and useful components for Ext, as well as other resources like tutorials and other tools, so keep an eye out here if that sounds interesting to you.</p>
<p>All of this is a really long-winded way for me to get to my real point, which is simply&#8230; It&#8217;s great to be back!  I can&#8217;t wait to start building some cool stuff (again).</p>
<p>&#8211;Brian</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/07/im-back-a-personal-note/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Announcing Extensible + Ext Calendar Pro!</title>
		<link>http://ext.ensible.com/blog/2010/07/announcing-extensible-ext-calendar-pro/</link>
		<comments>http://ext.ensible.com/blog/2010/07/announcing-extensible-ext-calendar-pro/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 06:33:28 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://ext.ensible.com/blog/?p=5</guid>
		<description><![CDATA[Extensible is the new company founded by Brian Moeskau, original cofounder of Ext JS, to provide high-quality, custom components for the Ext JS framework.  Our first product, Ext Calendar Pro, should be available as a beta release in September 2010.  &#8230; <a href="http://ext.ensible.com/blog/2010/07/announcing-extensible-ext-calendar-pro/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Extensible is the new company founded by Brian Moeskau, original cofounder of Ext JS, to provide high-quality, custom components for the Ext JS framework.  Our first product, <a href="http://ext-calendar.com/">Ext Calendar Pro</a>, should be available as a beta release in September 2010.  Please see the Ext Calendar Pro site for complete details and to follow the progress there.</p>
<p>We look forward to providing many new and useful components to the Ext JS ecosystem, as well as other utilities, tutorials, custom themes and whatever else we think of that would be of interest to other Ext JS developers.  If you have any ideas for components that we should consider please let us know in the comments or send an email to <a href="mailto://feedback@ext.ensible.com">feedback@ext.ensible.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ext.ensible.com/blog/2010/07/announcing-extensible-ext-calendar-pro/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
