<?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>VinylFox &#187; JavaScript</title>
	<atom:link href="http://www.vinylfox.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vinylfox.com</link>
	<description>The Playground of VinylFox (Shea Frederick)</description>
	<lastBuildDate>Thu, 29 Jul 2010 16:37:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>What&#8217;s the Word &#8211; Meetup Videos and More</title>
		<link>http://www.vinylfox.com/whats-the-word-meetup-videos-and-more/</link>
		<comments>http://www.vinylfox.com/whats-the-word-meetup-videos-and-more/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 17:35:54 +0000</pubDate>
		<dc:creator>Shea Frederick</dc:creator>
				<category><![CDATA[ExtJS News]]></category>
		<category><![CDATA[General News]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[HtmlEditor]]></category>
		<category><![CDATA[JSConf]]></category>
		<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://www.vinylfox.com/?p=676</guid>
		<description><![CDATA[Every once and a while I like to post a summary of what Ive been up to lately. The past few months have been busy, so I have a ton to talk about, but I will try to summarize. DC Meetup Videos We held the first in a series of meetups that will happen in [...]]]></description>
			<content:encoded><![CDATA[<p>Every once and a while I like to post a summary of what Ive been up to lately. The past few months have been busy, so I have a ton to talk about, but I will try to summarize.</p>
<h1>DC Meetup Videos</h1>
<p>We held the first in a series of <a href="http://www.meetup.com/NoVa-Javascript-Ext-JS-Users-Group/">meetups that will happen in the DC/NoVA</a> area last week, a sprout of our <a href="http://www.meetup.com/baltimore-dc-javascript-users/" target="_blank">Baltimore area Meetup</a> for our southern friends, and I have to say that it was a huge hit. The meetups are going to be managed by Pat Sheridan from <a href="http://threepillarsoftware.com/" target="_blank">Three Pillar Global</a>, and we are hoping it will be a way to get JavaScript developers from the DC area more involved in the community. <a href="http://tdg-i.com/" target="_blank">Jay</a> was kind enough to bring video equipment and record our presentations, along with editing the videos and posting them to the intertubes.</p>
<p><a href="http://tdg-i.com/262/ext-js-meetup-1192010-meetup-videos" title="Jonathan Julian"><img style="border: 1px solid rgb(0, 0, 0); margin: 0 10px 10px 0;" src="http://www.vinylfox.com/wp-content/uploads/2010/02/2010-01-19_1941-150x150.png" alt="Jonathan Julian" title="Jonathan Julian" width="150" height="150" class="alignnone size-thumbnail wp-image-658" /></a><a href="http://tdg-i.com/262/ext-js-meetup-1192010-meetup-videos" title="Shea Frederick"><img style="border: 1px solid rgb(0, 0, 0); margin: 0 10px 10px 0;" src="http://www.vinylfox.com/wp-content/uploads/2010/02/extjsmeetup-150x150.jpg" alt="Shea Frederick" title="Shea Frederick" width="150" height="150" class="alignnone size-thumbnail wp-image-659" /></a><a href="http://tdg-i.com/262/ext-js-meetup-1192010-meetup-videos" title="Pat Sheridan"><img style="border: 1px solid rgb(0, 0, 0); margin: 0 10px 10px 0;" src="http://www.vinylfox.com/wp-content/uploads/2010/02/2010-01-19_1932-150x150.png" alt="Pat Sheridan" title="Pat Sheridan" width="150" height="150" class="alignnone size-thumbnail wp-image-660" /></a></p>
<p>There are some <a href="http://www.meetup.com/baltimore-dc-javascript-users/photos/807828/" target="_blank">photos</a> and other information about the event on its <a href="http://www.meetup.com/baltimore-dc-javascript-users/calendar/12219819/" target="_blank">meetup page</a>.</p>
<p>If you are in the <a href="http://www.meetup.com/baltimore-dc-javascript-users/">Baltimore area and into JavaScript</a> with a fury, you should visit our Meetup that happens the first Wednesday of each month at 6:30PM in the <a href="http://www.beehivebaltimore.com/">Beehive Baltimore</a>. This month&#8217;s meetup has a presentation from <a href="http://paulbarry.com/">Paul Barry</a> about <a href="http://nodejs.org/">Node.js</a> &#8211; it&#8217;s gonna be bad ass.</p>
<h1>Speed Testing</h1>
<p>My little addiction I like to call speed testing has rolled into full swing. Now that I have the tools in place to create and launch tests, along with run reporting on the results with ease, I can pretty much just sit down and spend 30 minutes or so to design and launch the test. <a class="lightbox" href="http://www.vinylfox.com/wp-content/uploads/2010/01/inchworm.jpg"><img src="http://www.vinylfox.com/wp-content/uploads/2010/01/inchworm-150x150.jpg" alt="" title="inchworm" width="150" height="150" class="alignright" style="border: 1px solid rgb(0, 0, 0); margin: 10px 0 0 10px;" /></a> I have two tests currently gathering data, one is testing the speed of rendering an image with and without a data URL, the other has to do with the speed of code wrapped in a try catch statement. Should be some interesting results, which I will be posting a summary on soon. My first test was for <a href="http://www.vinylfox.com/json-decoding-speed-comparison/">JSON decoding speed</a>, which I posted results for a couple of weeks ago.</p>
<h1>HtmlEditor Plugins</h1>
<p>The Ext JS team has expressed an interest in including my <a href="http://code.google.com/p/ext-ux-htmleditor-plugins/" target="_blank">HtmlEditor Plugins</a> as a UX in the SDK. This will mark the third development of mine that has become part of the Ext JS SDK download, first it was the <a href="http://code.google.com/p/ext-ux-gmappanel/" target="_blank">GMapPanel UX</a>, then the Grid Filter backend PHP code, now it seems that the Ext JS SDK will finally come with a more robust HtmlEditor example. A few updates have been committed recently that add the option to change the language in these plugins, along with some general code cleanup. Also starting to move my code over to <a href="http://github.com/VinylFox/ExtJS-HtmlEditor-Plugins">Github</a> as <a href="http://twitter.com/christocracy/status/8593793204">suggested</a> by <a href="http://twitter.com/jonathanjulian/status/8595481114">many</a>.</p>
<h1>Books</h1>
<p>Soon we will have <a href="http://tdg-i.com/" target="_blank">Jay Garcia&#8217;s</a> <a href="http://www.extjsinaction.com" target="_blank">Ext JS in Action</a> book released in print, and the 2nd edition of <a href="http://www.learningextjs.com" target="_blank">Learning Ext JS</a> should be released later this year, titled &#8220;Learning Ext JS 3.0&#8243;. <a href="http://blog.cutterscrossing.com/index.cfm/2010/1/1/Out-With-The-Old-In-With-The-New-2009--2010">Cutter</a>, <a href="http://colinramsay.co.uk/diary/">Colin</a> and I got together to update the book, fix some errors, and add new chapters to take advantage of new features in Ext JS 3.0. It&#8217;s gonna be an awesome resource for anyone just getting started with Ext JS.</p>
<h1>JSConf</h1>
<p>Again, <a href="http://jsconf.us/2010/" target="_blank">JSConf</a> is being held in the DC area, which makes it incredibly cheap for me to attend, but this year I decided to try my hand at submitting a talk proposal. I can&#8217;t wait to find out if I will be chosen. My submission was for an introduction to rapid application prototyping using the Ext JS library. Here is my submission:</p>
<p><textarea class="js" cols="100" name="code">{<br />
    &#8220;name&#8221;:&#8221;Shea Frederick&#8221;,<br />
    &#8220;email&#8221;:&#8221;________@________.com&#8221;,<br />
    &#8220;twitter&#8221;:&#8221;VinylFox&#8221;,<br />
    &#8220;location&#8221;:&#8221;Baltimore, MD&#8221;,<br />
    &#8220;topic_title&#8221;:&#8221;Rapid Web Application Development with Ext JS&#8221;,<br />
    &#8220;topic_description&#8221;:&#8221;Discuss general principles of the Ext JS library<br />
    and show how easy it can be to rapidly prototype a web application<br />
    using the library.&#8221;,<br />
    &#8220;claim_to_fame&#8221;:&#8221;One of the core contributors to the Ext JS library<br />
    along with other Open Source JavaScript projects. Author of<br />
    &#8216;Learning Ext JS&#8217; published in December 2008. Observed &#8216;Talk Like<br />
    a Pirate Day&#8217;. Maintain a Blog of JavaScript fun at<br />
    http://www.vinylfox.com&#8221;<br />
}</textarea></p>
<p>Did I mention that all submissions have to be in the form of valid JSON? Yeah, geeky, but good &#8211; very good. With any luck, I will <a href="http://jsconf.posterous.com/the-soon-to-be-awkward-moment">find out later this week</a> if ive been accepted.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vinylfox.com/whats-the-word-meetup-videos-and-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Forwarding Mouse Events Through Layers</title>
		<link>http://www.vinylfox.com/forwarding-mouse-events-through-layers/</link>
		<comments>http://www.vinylfox.com/forwarding-mouse-events-through-layers/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 15:05:46 +0000</pubDate>
		<dc:creator>Shea Frederick</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[ExtJS Plugins]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ExtJS Overrides]]></category>

		<guid isPermaLink="false">http://www.vinylfox.com/?p=499</guid>
		<description><![CDATA[Anyone who has worked with web apps has likely created a masking element at some point, and the great thing about a masking element is that it intercepts user interaction, letting us create a pseudo-modal user interface. The masking element enables us to mask the entire screen, bringing focus to a particular element, or just [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone who has worked with web apps has likely created a masking element at some point, and the great thing about a masking element is that it intercepts user interaction, letting us create a pseudo-modal user interface. The masking element enables us to mask the entire screen, bringing focus to a particular element, or just create a window like effect. This behavior is demonstrated in the ExtJS libraries <em>Ext.Window</em> when <em>modal </em>is set to true, among other places.</p>
<h3>Yeah, so what?</h3>
<p><img src="http://www.vinylfox.com/wp-content/uploads/2009/09/layers-masked1.png" alt="layers-masked1" title="layers-masked1" width="250" height="163" class="alignright size-full wp-image-543" />The problem comes when we want to mask a part of the screen, but also want the elements behind that mask to continue responding to user interaction. This behavior is counter to most native behavior. What we are left with, is having to forward mouse events through the masking layer to the layer below, an option that simply does not exist in the standard JavaScript/DOM API.</p>
<h3>Why do this?</h3>
<p>A plugin that I recently wrote &#8211; <a href="http://code.google.com/p/ext-ux-datadrop/" target="_blank">DataDrop </a>- used a <em>textarea </em>overlaying a grid to act as the receiver of dragged data from spreadsheet type programs. One of the limitations that I was not so happy about was the fact that this overlay could only exist in the &#8216;empty&#8217; area of the grid, not over rows of data, headers, toolbars, etc. otherwise it would cause all of those elements below to become unresponsive to user input. If our <em>textarea</em> that receives the data were positioned over the entire grid area, our <em>GridPanel</em> could not be controlled using the mouse anymore.</p>
<h3>How to fix this?</h3>
<p>This is where my friend Nige White (Animal) came in to help, it turns out that he had an idea about how to forward these mouse events using a couple of not well understood methods in the JavaScript/DOM API used for creating mouse events. Here are the steps taken:</p>
<ol>
<li>The <em>textarea </em> (my masking element) that is positioned over the grid receives <em>mouseover</em>, <em>mousemove</em>, <em>mousedown </em>, <em>mouseup </em> and other events.</li>
<li>The top masking layer is hidden for a moment, so we can figure out what element is below the mask at the event location.</li>
<li>The event is re-fired &#8211; this is where the <a href="http://www.w3.org/TR/DOM-Level-2-Events/ecma-script-binding.html" target="_blank">W3 DOM Event model</a> and the simpler <a href="http://msdn.microsoft.com/en-us/library/ms536423(VS.85).aspx" target="_blank">Microsoft equivalent</a> come into play.</li>
<li>Start the process again &#8211; ready for the next event.</li>
</ol>
<p><img src="http://www.vinylfox.com/wp-content/uploads/2009/09/layers-steps1.png" alt="layers-steps1" title="layers-steps1" width="500" height="326" class="alignright size-full wp-image-557" /></p>
<h3>What&#8217;s element to fire upon?</h3>
<p>Knowing the cursor position and event that occurred, the only obstacle now is determining what DOM element to fire the simulated event through. It turns out that finding which element is the topmost element at a certain document coordinate position is quite simple in modern browsers. The <b>document.elementFromPoint</b> method is supported in <a href="http://msdn.microsoft.com/en-us/library/ms536417(VS.85).aspx" target="_blank">IE</a>, <a href="https://developer.mozilla.org/en/DOM/document.elementFromPoint" target="_blank">Mozilla</a>, Webkit and Opera.</p>
<p>So it is possible to capture the document coordinates of a mouse event fired on the masking element, momentarily hide that masking element, and then ask the document what is under that coordinate position before showing the mask again.</p>
<p>A new event can be then fired on the found element. Obviously there are some complexities such as firing <em>mouseover </em>and <em>mouseout </em>events when the found element is different from the last time, but that is the gist of the technique. To <a href="http://screencast.com/t/4bZevAUwEuj" target="_blank">see it in action, check out the screencast</a> or play with the <a href="http://www.vinylfox.com/lib/latest/examples/grid/array-grid-datadrop.html" target="_blank">live Grid DataDrop example</a> or <a href="http://www.vinylfox.com/lib/latest/examples/core/evt-forwarding.html" target="_blank">simple DOM element example</a> yourself.</p>
<p>I have posted an <a href="http://code.google.com/p/ext-ux-datadrop/source/browse/trunk/src/Override.js"target="_blank">override of Ext.Element that Nigel created</a> on my Google Code site for all to enjoy, it is now a requirement for the ExtJS <a href="http://code.google.com/p/ext-ux-datadrop/"target="_blank">DataDrop plugin</a>. A big thanks goes out to Nige (Animal) for digging into the nuts and bolts of JavaScript to find a solution to my problem.</p>
<h3>The Next Step</h3>
<p>Having the data that is dropped into the grid automatically insert into the grids rows at the correct position is my next task for the ever-improving <a href="http://code.google.com/p/ext-ux-datadrop/"target="_blank">DataDrop plugin</a>. Should be fun :/</p>
<p>UPDATE (12-1-09): Seems that <a href="http://hacks.mozilla.org/2009/12/pointer-events-for-html-in-firefox-3-6/">Mozilla has also noticed this issue</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vinylfox.com/forwarding-mouse-events-through-layers/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Some Common ExtJS Error Messages Explained</title>
		<link>http://www.vinylfox.com/some-common-extjs-error-messages-explained/</link>
		<comments>http://www.vinylfox.com/some-common-extjs-error-messages-explained/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 13:05:18 +0000</pubDate>
		<dc:creator>Shea Frederick</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[ExtJS Tutorials]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.vinylfox.com/?p=434</guid>
		<description><![CDATA[Its Monday morning, and it truly feels like it today. My coffee is not even finished yet, and I already found myself making a dumb mistake and spending too much time troubleshooting it, so I thought I would share with you a few common errors that we might run across when writing ExtJS applications. With [...]]]></description>
			<content:encoded><![CDATA[<p>Its Monday morning, and it truly feels like it today. My coffee is not even finished yet, and I already found myself making a dumb mistake and spending too much time troubleshooting it, so I thought I would share with you a few common errors that we might run across when writing ExtJS applications. With any luck, these will stick to the inside of your cranium &#8211; and hopefully mine as well.</p>
<h2>this.config[col] is undefined</h2>
<p>The <i>autoExpandColumn</i> feature of the ColumnModel accepts an &#8216;id&#8217; as the argument, this &#8216;id&#8217; needs to match the &#8216;id&#8217; given to the Column configuration. </p>
<p><textarea class="js" cols="100" name="code">{<br />
	columns: [{<br />
		id: 'not_so_super_column_id',  // column id defined<br />
		header: 'Super Duper',<br />
		dataIndex: 'superduper'<br />
	}],<br />
	&#8230;,<br />
	autoExpandColumn: &#8216;super_duper_column_id&#8217;  // wrong column id used &#8211; fail!<br />
}</textarea></p>
<p>Another thing to keep in mind, is that while it works sometimes, the value for <em>autoExpandColumn </em>should NOT be a column index &#8211; the id of the column should always be used.</p>
<h2>types[config.xtype || defaultType] is not a constructor (b[d.xtype || e] is not a constructor)</h2>
<p>This happens when trying to instantiate (create) a component that does not exist, the most common reason is a typo or spelling error. For instance, using &#8216;gridpanel&#8217; as the xtype instead of &#8216;grid&#8217; &#8211; which is a mistake I make often myself. Sometimes we can forget a level of namespacing, like using <em>Ext.FormPanel</em> instead of the proper <em>Ext.form.FormPanel</em>.</p>
<p><textarea class="js" cols="100" name="code">{<br />
	xtype: &#8216;formpanel&#8217;  // fail<br />
},{<br />
	xtype: &#8216;form&#8217;  // win!<br />
}</textarea></p>
<p>Another one I always run into is typing &#8216;combobox&#8217; instead of the correct &#8216;combo&#8217; for the xtype &#8211; a list of xtypes can be found in the <a href="http://www.extjs.com/deploy/dev/docs/?class=Ext.Component">ExtJS documentation under Ext.Component</a>.</p>
<h2>this.addEvents is not a function</h2>
<p>This is not a <em>new </em>problem (you like that pun?) but unfortunately the error message sends us off in the wrong direction. When this message appears it sounds like its an event related problem, but what it simply means is that we have forgotten to preface a constructor with the &#8216;new&#8217; operator.</p>
<p><textarea class="js" cols="100" name="code">Ext.form.TextField({}); // fail<br />
new Ext.form.TextField({}); // win!</textarea></p>
<h2>el is null</h2>
<p>So with this one, its a little easier to figure out what went wrong just from the error message. In shorthand variable naming, a couple of letters are picked out of a longer word that phonetically make sense, and do not spell something else or sound like other commonly used words. So in this case &#8216;el&#8217; is short for <strong>EL</strong>ement. As the error message says &#8216;el is null&#8217;, which if we translate from geek speak to English it says &#8216;html  element does not exist&#8217;.</p>
<p><textarea class="js" cols="100" name="code"></p>
<div id="sweet_dude"></div>
<p>new Ext.Button({<br />
	text: &#8216;Clicky&#8217;,<br />
	renderTo: &#8216;dude_sweet&#8217; // does not match the id!<br />
});</textarea></p>
<h2>f.convert is not a function</h2>
<p>This one is not so common, but still happens every once and a while. It means that your data reader was trying to read the data you passed to your store with a particular data type that did not exist. Thats allot to take in, so lets take a look at this example.</p>
<p><textarea class="js" cols="100" name="code">var myStore = new Ext.data.ArrayStore({<br />
	fields: [{<br />
		name:'fullname',<br />
		type:'badass'<br />
	}, {<br />
		name:'first',<br />
		type:'string'<br />
	}]<br />
});</textarea></p>
<p>In this example the &#8216;fullname&#8217; column has a datatype of &#8216;badass&#8217;, which does not exist. On the flip side, the datatype for &#8216;first&#8217; of &#8216;string&#8217; does exist.</p>
<h2>Summary</h2>
<p>Now if we can just keep these in our memory, we might be able to have a productive day  -or just drink more coffee and see how that pans out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vinylfox.com/some-common-extjs-error-messages-explained/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>What&#8217;s the Word &#8211; JSMag, Themes &amp; Meetups</title>
		<link>http://www.vinylfox.com/whats-the-word-jsmag-themes-meetups/</link>
		<comments>http://www.vinylfox.com/whats-the-word-jsmag-themes-meetups/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 13:50:52 +0000</pubDate>
		<dc:creator>Shea Frederick</dc:creator>
				<category><![CDATA[General News]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[ExtJS Themes]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSMag]]></category>
		<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://www.vinylfox.com/?p=394</guid>
		<description><![CDATA[There are some fun things in the works right now in the JavaScript world, one of them is the new JSMag, which is putting out exciting JavaScript specific content to readers every month. I recently took on the role of a monthly column writer for their new &#8220;Hello World&#8221; column which focuses on things that [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.vinylfox.com/wp-content/uploads/2009/07/js5_125-125x150.jpg" alt="jsmag july" title="jsmag july" width="125" height="150" class="alignleft size-full wp-image-350" align="left" style="margin: 10px; border: solid 1px #000;"/>There are some fun things in the works right now in the JavaScript world, one of them is the new <a href="http://www.jsmag.com">JSMag</a>, which is putting out exciting JavaScript specific content to readers every month. I recently took on the role of a monthly column writer for their new &#8220;Hello World&#8221; column which focuses on things that are more generally glazed over by technical columns. With this monthly column we are targeting readers with a high interest in JavaScript that have not yet gained enough experience with the language to get the full effect of more technical pieces.</p>
<p><a href="http://jsmag.com/blog/2009/07/javascript-magazine-jsmag-july-2009-now-available/">JSMag&#8217;s blog post outlined</a> their reasoning and intentions with this new piece:</p>
<blockquote>
<p>&#8230;some of the feedback received has led us to introduce a new column this month.  A recurring piece of feedback so far has been that much of the content appeared to be more advanced than many readers felt they could deal with.  To that end, we’re introducing a new writer and column to our line up &#8211; Shea Frederick.</p>
</blockquote>
<p><cite>JSMag Editor</cite>  </p>
<p>My first piece went out in the <a href="http://www.jsmag.com/latest?refer=http://jsmag.com/blog/2009/07/javascript-magazine-jsmag-july-2009-now-available/">July issue of JSMag</a>, and other than complaints from non Steelers fans (<a href="http://twitter.com/JFSIII/status/2526039698">you know who you are</a>) I was very happy with the resulting article.</p>
<blockquote>
<p>Shea will be covering topics of interest to developers new to JavaScript, and perhaps even new to programming in general.  His first piece this month is “Choosing a JavaScript Library” which can help someone new to the JavaScript scene understand the various options and make an informed decision.</p>
</blockquote>
<p><cite>JSMag Editor</cite>  </p>
<p>Looking forward to increasing JavaScript&#8217;s stranglehold on the world!! muhahaha!!! (evil laugh)</p>
<h2>ExtJS Themes</h2>
<p>Ive been playing with ExtJS themes lately, and im having a blast creating some very fancy looking stuff. It really is amazing how quickly you can make ExtJS widgets not look like ExtJS widgets anymore. Goodbye default theme.</p>
<p>Keep an eye out here for stuff to do with creating themes for ExtJS, you will not be disappointed.</p>
<h2>JavaScript User Group</h2>
<p>The Baltimore/DC area is a hotbed of IT work. A good portion of the work here is web related, and a chunk of that of course is JavaScript related, so for the past six months I have been hosting a JavaScript meetup group in Columbia, MD (halfway between Baltimore and the District). I have throughly enjoyed meeting people in my field, and discussing various things which are most often, but not always related to JavaScript.</p>
<p>Our next <a href="http://www.meetup.com/baltimore-dc-javascript-users/calendar/10825840/">meetup on August 4th has a local JavaScript</a> guru <a href="http://www.lokeshdhakar.com/">Lokesh Dhakar</a> giving us his insights into user interaction. Please come out and join us if your in the area, we always have a great mix of local badasses and newbies show up. A few local business pitch in to make this happen every month, <a href="http://omniti.com/">OmniTI</a> provides our meeting space, and <a href="http://mominc.com">Mind Over Machines</a> keeps our bellies full of pizza &#8211; thanks goes out to both of them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vinylfox.com/whats-the-word-jsmag-themes-meetups/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
