<?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>Oliver Nassar &#187; User Experience</title>
	<atom:link href="http://www.olivernassar.com/category/user-experience/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.olivernassar.com</link>
	<description>Making the interwebs.</description>
	<lastBuildDate>Thu, 12 Nov 2009 22:17:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>grabbing an attribute in mootools: .[name] or .get or .retrieve or .getProperty?</title>
		<link>http://www.olivernassar.com/2009/11/01/grabbing-an-attribute-in-mootools-name-or-get-or-retrieve-or-getproperty/</link>
		<comments>http://www.olivernassar.com/2009/11/01/grabbing-an-attribute-in-mootools-name-or-get-or-retrieve-or-getproperty/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 22:56:06 +0000</pubDate>
		<dc:creator>onassar</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[anchor]]></category>
		<category><![CDATA[attribute]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[dom node]]></category>
		<category><![CDATA[ff]]></category>
		<category><![CDATA[href]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[property]]></category>

		<guid isPermaLink="false">http://www.olivernassar.com/?p=278</guid>
		<description><![CDATA[<a href="http://www.olivernassar.com/2009/11/01/grabbing-an-attribute-in-mootools-name-or-get-or-retrieve-or-getproperty/" rel="attachment wp-att-121"><img src="http://www.olivernassar.com/wp-content/uploads/2009/08/mootools_logo1-150x150.jpg" alt="mootools_logo" title="mootools_logo" width="150" height="150" class="alignleft size-thumbnail wp-image-121" /></a>Something I ran into just now was returning an anchor's attribute consistently across browsers. So I have an anchor with an address like '/users/delete/5/' which does what you'd think it does. But I ran into an inconsistent return response in (you guessed it) ie6. In all fairness, it might not be IE6's fault, but it speaks more to a problem with mootools. While it is a nearly perfect library/framework, this does bug me.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.olivernassar.com/wp-content/uploads/2009/08/mootools_logo1-150x150.jpg" alt="mootools_logo" title="mootools_logo" width="150" height="150" class="alignleft size-thumbnail wp-image-121" />Something I ran into just now was returning an anchor&#8217;s attribute consistently across browsers. So I have an anchor with an address like &#8216;/users/delete/5/&#8217; which does what you&#8217;d think it does. But I ran into an inconsistent return response in (you guessed it) ie6. In all fairness, it might not be IE6&#8217;s fault, but it speaks more to a problem with mootools. While it is a nearly perfect library/framework, this does bug me.</p>
<p>Mootools has 3 native methods for accessing an attribute/property for a node (which in the DOM, often overlaps). .get(&#8217;name&#8217;), .retrieve(&#8217;name&#8217;), and getProperty(&#8217;name&#8217;). While they are all meant to do things a little differently (eg. set an attribute for a node, store a data object in an existing object (which could be a DOM node) or store a property in an object (which again, could be a DOM node), they seem to overlap a lot.</p>
<p>So I have this anchor, and when I tried accessing it (grabbing the href) using the accessors I have, here at the results for FF (mac) vs. IE6 (windows):</p>
<p>.[name]<br />
FF: full path including host<br />
IE6: full path including host</p>
<p>.get<br />
FF: request path (excluding host)<br />
IE6: full path including host</p>
<p>.retrieve<br />
FF: null<br />
IE6: null</p>
<p>.getProperty<br />
FF: request path (excluding host)<br />
IE6: full path including host</p>
<p>Now it&#8217;s hard to say what is the correct expectation. I&#8217;m sure I could figure it out in the eyes of the W3C, but rather, here&#8217;s what I&#8217;ve noticed. Both browsers take whatever path is specified and render it internally with the host. I understand this since it&#8217;s what the browser would need to actually make a full request.</p>
<p>The 2nd and 4th accessors, though, are inconsistent and cause problems since their expected results different. IE6 includes the full path &#038; host each time which is most likely an issue with how it accesses it. When the browser defines the href in memory it must overwrite the local pointer which then can&#8217;t be accessed properly.</p>
<p>So what do I do about this? Nothing really. I have this documented now so that if there is a pre-dom-ready source that I need to inspect (for example, href values written but no rendered after the dom has been loaded), I should be using the .[name] accessor, and make adjustments accordingly based on what is being accessed (in this case the href which has the host prepended).</p>
<p>These differences really suck since they introduce inconsistencies in places where you wouldn&#8217;t expect them and thus break applications/scripts (like what drove me to discover this). I would hope a framework/library would help mitigate this kind of thing, but alas, they can&#8217;t do everything, and I&#8217;m just happy for what they do bring to the table.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olivernassar.com/2009/11/01/grabbing-an-attribute-in-mootools-name-or-get-or-retrieve-or-getproperty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE6 and input type changes: short answer, ie6 sucks, long answer:</title>
		<link>http://www.olivernassar.com/2009/10/10/ie6-and-input-type-changes-short-answer-ie6-sucks-long-answer/</link>
		<comments>http://www.olivernassar.com/2009/10/10/ie6-and-input-type-changes-short-answer-ie6-sucks-long-answer/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 02:15:57 +0000</pubDate>
		<dc:creator>onassar</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[type]]></category>
		<category><![CDATA[value]]></category>

		<guid isPermaLink="false">http://www.olivernassar.com/?p=260</guid>
		<description><![CDATA[<a href="http://www.olivernassar.com/2009/10/10/ie6-and-input-type-changes-short-answer-ie6-sucks-long-answer/" rel="attachment wp-att-261"><img src="http://www.olivernassar.com/wp-content/uploads/2009/10/Family_Guy_Stewie_You_Suck_Black_Shirt-150x150.jpg" alt="Family_Guy_Stewie_You_Suck_Black_Shirt" title="Family_Guy_Stewie_You_Suck_Black_Shirt" width="150" height="150" class="alignleft size-thumbnail wp-image-261" /></a><strong>The Problem</strong>
I ran into another problem the other day native to ie6 (well ie7 and ie8 too, to be fair) where by I was trying to dynamically change a text input field from type="text" to type="password". Safari, chrome and firefox had no issues. It was a simple as node.type = 'password', or since I was using mootools, node.set('type','password'). Resolved. But wait...]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.olivernassar.com/wp-content/uploads/2009/10/Family_Guy_Stewie_You_Suck_Black_Shirt-150x150.jpg" alt="Family_Guy_Stewie_You_Suck_Black_Shirt" title="Family_Guy_Stewie_You_Suck_Black_Shirt" width="150" height="150" class="alignleft size-thumbnail wp-image-261" /><strong>The Problem</strong><br />
I ran into another problem the other day native to ie6 (well ie7 and ie8 too, to be fair) where by I was trying to dynamically change a text input field from type=&#8221;text&#8221; to type=&#8221;password&#8221;. Safari, chrome and firefox had no issues. It was a simple as node.type = &#8216;password&#8217;, or since I was using mootools, node.set(&#8217;type&#8217;,'password&#8217;). Resolved. But wait&#8230;</p>
<p>Then I ran into IE6, whereby I got a nice &#8220;This command is not supported.&#8221;. It took me a while to figure this out. At first I thought the node didn&#8217;t have mootools &#8217;set&#8217; method for some reason (didn&#8217;t access it right?), but once I found out the reason, I looked for workarounds. None really. Other resolutions that attempted completely different code, but no workaround for IE6 specific to change the type. It seemed microsoft had decided that an input field&#8217;s type should not be able to change after it&#8217;d been loaded. I&#8217;ll get to that in a second</p>
<p><strong>My Resolution</strong><br />
Spit out password fields on the page for when it gets sent back to the client. When the DOM has loaded, iterate over the input[type=password] fields (I did this via the mootools selector node.getElements(&#8217;input[type=password&#8217;)), make them hidden (via add a class or adjusting it&#8217;s style property), and make a new node that has an input type with the text value. I added the same classes to it as the password node had. When a user focused on the field (the text one that was originally a password field), I destroyed it, and removed the hidden class.</p>
<p><strong>What really bothered me</strong><br />
&#8220;This is an expected behavior. One can&#8217;t change the type of an INPUT element once it is already created and became part of the DOM. The behavior is documented below in the Remarsk Section:&#8221;<br />
That was microsoft&#8217;s response in their developer forums. That was last year, and instead of addressing it as an issue and complying with a standard, they were stubborn and basically refuted the claim as a bug. I&#8217;m not sure how I feel about the standard. I understand why an input type is set after the DOM has been loaded. I can&#8217;t change a tag type from div to span after the fact (or at least I shouldn&#8217;t be able to). Ideally, in my own head that is, every input type should have a separate tag value. &lt;button /&gt;, &lt;select /&gt;, &lt;file /&gt;, &lt;text /&gt;, &lt;textarea /&gt; and &lt;password /&gt;. I think that&#8217;d be ideal, and save a lot of confusion.</p>
<p>Either way, that&#8217;s my resolution. M$ response is kind of sucky, but what can ya do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olivernassar.com/2009/10/10/ie6-and-input-type-changes-short-answer-ie6-sucks-long-answer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flexibility: Server side vs Client side</title>
		<link>http://www.olivernassar.com/2009/09/19/flexibility-server-side-vs-client-side/</link>
		<comments>http://www.olivernassar.com/2009/09/19/flexibility-server-side-vs-client-side/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 00:34:21 +0000</pubDate>
		<dc:creator>onassar</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[View]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[client side]]></category>
		<category><![CDATA[flexibility]]></category>
		<category><![CDATA[server side]]></category>

		<guid isPermaLink="false">http://www.olivernassar.com/?p=240</guid>
		<description><![CDATA[<a href="http://www.olivernassar.com/2009/09/19/flexibility-server-side-vs-client-side/" rel="attachment wp-att-241"><img src="http://www.olivernassar.com/wp-content/uploads/2009/09/flexibility-150x150.jpg" alt="flexibility" title="flexibility" width="150" height="150" class="alignleft size-thumbnail wp-image-241" /></a>I've been told by many people, veterans in their respective industries such as family friends, family members, etc., that when you're in a technical field, the best type of job security is to specialize. I imagine this would extend to a lot of different areas (entertainment, finance, management, etc.) but especially in the technical/programming arena, I find it's very true and productive.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.olivernassar.com/wp-content/uploads/2009/09/flexibility-150x150.jpg" alt="flexibility" title="flexibility" width="150" height="150" class="alignleft size-thumbnail wp-image-241" />I&#8217;ve been told by many people, veterans in their respective industries such as family friends, family members, etc., that when you&#8217;re in a technical field, the best type of job security is to specialize. I imagine this would extend to a lot of different areas (entertainment, finance, management, etc.) but especially in the technical/programming arena, I find it&#8217;s very true and productive.</p>
<p>What I mean by this is, be very very very good in a very very very specific field/discipline. Be the best out of all the people you know. If you&#8217;re a server side developer, don&#8217;t try and learn all the server side languages; rather be the best object-oriented php5 developer who knows the ins and outs of PECL and PEAR extensions. Or be the best db admin who can optimize an InnoDB mysql engine better than anyone you&#8217;ve met. That way, when anyone is looking for something specific, you&#8217;ll be the first person to come to mind.</p>
<p>I&#8217;m too obsessive to follow this though. I would hate being really good at one thing, and then just having to depend on someone else to help me out with the other. Because of that, I&#8217;m not very very very good in one area, rather I&#8217;m pretty good in a bunch of them. But this is actually still making me fall into a very specific niche; namely, if someone is looking for one guy who can configure a linux/apache box, set up and admin a db, set up a server side dev env., do designs in photoshop, turn them into html/css/js, and add in ajax/js techniques to make a more interactive application/website, I&#8217;m that guy. If I were to work in a company with other developers, I probably wouldn&#8217;t be better than anyone in any specific area. I wouldn&#8217;t be the best JS guy, or CSS guy, or DB guy, and because of that I&#8217;m probably not suited for a lot of companies, but for my current contract, they needed one guy who can wear 5 or 6 different hats.</p>
<p>So ironically, the fact that I don&#8217;t specialize in one specific area, rather 5 or 6 of them, makes me specialized. It makes me the specific person to go to when you need one person who is pretty good in a bunch of areas.</p>
<p>If you read the title, you might wonder what this has to do with it; it&#8217;s a segway into my point. On my current project, I&#8217;m having to do both client and server side dev., and it&#8217;s making me realize something. The server is way more flexible than the client.</p>
<p>&#8212;<br />
Here&#8217;s why.<br />
&#8212;</p>
<p>The server is usually a linux/unix box. It&#8217;s role in a web application/site is to fulfill client side requests, push out data, yadda yadda. It normally doesn&#8217;t do anything visual. The client, however, is intrinsically visual. It&#8217;s supposed to represent a server architecture in a cohesive, logical way. Now when doing client side dev., you have to normally worry about ie6, ie7, ie8, ff3, sf, opera and chrome (not always this, but thats the goal). At times you&#8217;ll run into things you can&#8217;t do in the others (CSS3, certain types of ajax callbacks, etc.); sometimes they&#8217;ll be things that aren&#8217;t worth the time, but other times, it just can&#8217;t be done. There is no hack or way around it, it just can&#8217;t be done. It&#8217;s frustrating to say the least, but it&#8217;s making me really value and respect the entire web paradigm and the server&#8217;s role in it all.</p>
<p>&#8212;<br />
How does this relate to my introduction?<br />
&#8212;</p>
<p>I find that there is a lot of ego involved in the web industry. A lot of butting heads in terms of how important people/disciplines are in the grand schemes of things. There are the executives/bus.dev. guys, marketing dudes/gals, client side developers, server side developers, operations/db dudes, and creative/design people. That&#8217;s generally how I break it down, and with some exceptions, everyone thinks their role is one of the most important ones. They&#8217;ll pretend and put on a face that they don&#8217;t believe it, but at their core, there is a lot of pretense about their own positions. I suppose that&#8217;s normal considering that&#8217;s their professional role.</p>
<p>I&#8217;ve always maintained (and have a post that should be coming soon) that one of the most important roles, which I&#8217;m terrible at and in no way consider myself part of, is in fact the creative/design ones. I&#8217;ll leave my reasoning here for another post. My understanding of the flexibility of client vs server side therefore comes from the fact that I don&#8217;t specialize in any one area. If I were a operations/db guy, I&#8217;d think the db was the most flexible. If I was a pure server side guy, I&#8217;d think it was the most flexible, and the same for the client side.</p>
<p>The point I tried to make with my introduction and the conclusion of the server side being the most flexible is that because of my lack of specialization (and therefore abstract specialization) in the full life cycle of a web application, I think I&#8217;m in a unique situation to make that judgment. It&#8217;s not right or infallible or anything, but I come at it from a unique perspective. My career/financial stability doesn&#8217;t hinge on any one area of the cycle. I could find a job doing client side, or server side, or db/operations, maybe even some mild graphic/creative design stuff. Even as far as more on the management and marketing stance, I think I&#8217;d be alright. And because of this, I think I&#8217;m in a convenient location to sit back, analyze where any bottle necks are in flexibility, and make a call on what makes the most sense and is most accommodating.</p>
<p>And my conclusion? The server side is way more flexible. There is never a point/time when I can&#8217;t do something. It might take more time than I&#8217;d hope, require more resources (memory, developers, etc.), but at no point do I have to create &#8216;hacks&#8217;. It&#8217;s logical and follows procedures and standards. I think this is mainly because it&#8217;s been around longer. The server side env. is really just a programming environment. It&#8217;s been around, and perfected, since the 50&#8217;s. The web client-side has been around, for the most part, for less than 15 years.</p>
<p>That being said, the client side is getting better. With Flash, Adobe Air, Google Gears, and some really cool plugins (Rhino, for one) the client side is trying real hard, and milding succeeding, in become less of a bottle neck for an application. I think with time it will succeed, but as it stands right now, the server side is where it&#8217;s at. Fewer headaches, and more logic, make it one of the most time-satisfying parts of the projects I&#8217;m doing lately.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olivernassar.com/2009/09/19/flexibility-server-side-vs-client-side/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jumping the gun: html5/css3 is not here yet!</title>
		<link>http://www.olivernassar.com/2009/09/08/jumping-the-gun-html5-css3-is-not-here-yet/</link>
		<comments>http://www.olivernassar.com/2009/09/08/jumping-the-gun-html5-css3-is-not-here-yet/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 07:28:07 +0000</pubDate>
		<dc:creator>onassar</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[web experience]]></category>

		<guid isPermaLink="false">http://www.olivernassar.com/?p=179</guid>
		<description><![CDATA[<a href="http://www.olivernassar.com/2009/09/08/jumping-the-gun-html5-css3-is-not-here-yet/" rel="attachment wp-att-232"><img src="http://www.olivernassar.com/wp-content/uploads/2009/09/Picture-1-150x150.png" alt="Picture 1" title="Picture 1" width="150" height="150" class="alignleft size-thumbnail wp-image-232" /></a>On Twitter, I follow a bunch of people in the development arena. JavaScript framework core developers, designers, mysql/php architects, etc. etc. I'd say about 50% of the people I follow are in that arena (the other 50% probably being aggregators or tech news sites/blogs).

A consistent theme I'm finding in the past few months has been css3/html5 posts. They talk about new effects, rules, possibilities, etc. etc. Now I try to be optimistic about web development; I try to practice valid w3c content, semantic markup, everywhere I can. But the age of css3/html5, at least for me, is still so far off. 25% (at the least) of internet users are still using ie6, another 40% are using ie7; that takes us to about 65% of internet users using subpar browsers (ie7 is a step up, but still very much sub-par) that don't support anything close to css3 and html5.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.olivernassar.com/wp-content/uploads/2009/09/Picture-1-150x150.png" alt="Picture 1" title="Picture 1" width="150" height="150" class="alignleft size-thumbnail wp-image-232" />On Twitter, I follow a bunch of people in the development arena. JavaScript framework core developers, designers, mysql/php architects, etc. etc. I&#8217;d say about 50% of the people I follow are in that arena (the other 50% probably being aggregators or tech news sites/blogs).</p>
<p>A consistent theme I&#8217;m finding in the past few months has been css3/html5 posts. They talk about new effects, rules, possibilities, etc. etc. Now I try to be optimistic about web development; I try to practice valid w3c content, semantic markup, everywhere I can. But the age of css3/html5, at least for me, is still so far off. 25% (at the least) of internet users are still using ie6, another 40% are using ie7; that takes us to about 65% of internet users using subpar browsers (ie7 is a step up, but still very much sub-par) that don&#8217;t support anything close to css3 and html5.</p>
<p>These browsers are so terrible that I spend about 80% of my client side development time focused on fixing issues I run into there. I write code that is semantic, valid, and based on standards, and then debug it and add in browser-specific fixes for them. Now the reason for bringing up my (and obviously most client side developer&#8217;s) hatred for it is because of this sudden (last 4-6 months) pushed towards css3, but even more, html5. Put simply, we&#8217;re jumping the gun.</p>
<p>We&#8217;re not anywhere near the period of time whereby these standards can be used properly for the vast majority of users. Yes, graceful degradation and progressive enhancement do allow us to make use of them for those vendors that have supplied standards-based browsers, but the time being, maybe only 25-35% of users will get to experience these enhancements. So why put so much effort into transforming your sites and communities to use these standards? Is it worth it?</p>
<p>HTML5 is, believe-it-or-not, a pretty large step forward. While it&#8217;s simply an extension of html 4 and more than anything, introduces some different namespaces and tags, I keep coming back to thinking whether we should bother with it right now. It won&#8217;t be until IE9 or an IE8 service pack/update that the majority of users will get any use out of it, and for large companies and communities, it represents hundreds/thousands of hours of work, changing your design/style guides, and means often times having multiple code/script bases for different browsers that represent which support html5, and which don&#8217;t.</p>
<p>Now I&#8217;m coming at this from a freelance/contract developer. I have a task, and it&#8217;s in my best interest to make it work in the top 3 browsers (ie6, ie7, ff3) as fast as possible, and as cleanly (the fewer moving parts, the better). I might use some css3, I might use some transparent png&#8217;s, but that&#8217;s my limit. Going over board with css3 and integrating html5 is not a priority of mine, and would represent extra hours which I couldn&#8217;t work into my pricing/rates. I would rather spend my time writing semantic, standards based code, and open sourcing anything and everything I could to help out others; at least until one of the top two browsers supports html5 (ff isn&#8217;t there yet, despite many claims that it&#8217;s the number 2 browser next to ie7).</p>
<p>This approach by me has it&#8217;s problems. Namely, if people don&#8217;t push technologies that aren&#8217;t yet wide spread, than the major vendors won&#8217;t feel as pressured to support them. I understand this, and in many ways, it&#8217;s up to the big guys to help push new technologies. But this brings me back to the post&#8217;s title. Are we jumping the gun? We&#8217;re years away from a top two browser from supporting either css3/html5. So should we spend all this effort, time and money developing for something that most user&#8217;s won&#8217;t even experience?</p>
<p>There are exceptions to this; if I&#8217;m designing an app/site for an intranet where I can control the browser type. Or if it&#8217;s for a specific niche (eg. graphic designers, web developers) where I can safely assume or pressure the visitor to use a new-age browser (safari, chrome, ff3). Then maybe I&#8217;ll take the time to learn the new semantics, make the site pop like it never could. I&#8217;ll spend the extra time, effort and money to create a richer experience. But these are exceptions, not the rules.</p>
<p>These are thoughts/ramblings that have been going through my head for quite some time now. They aren&#8217;t polished, they aren&#8217;t definite, but they are something that I&#8217;ve thought of, and I assume other&#8217;s in the community have as well.</p>
<p>While these are my thoughts, and I&#8217;ll stick by them for a while, I won&#8217;t stop trying to learn about the new technologies. Progressive enhancement, ajax, json, jsonp, and whatever else comes along, I&#8217;ll jump into, just like css3/html5, but just like ajax didn&#8217;t become popular until XHR became widespread in most browsers, I won&#8217;t make use of it (with certain exceptions) until major vendors (m$) decide to give me the tools to do so.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olivernassar.com/2009/09/08/jumping-the-gun-html5-css3-is-not-here-yet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Client side framework&#8217;s should be called client side libraries; here&#8217;s why:</title>
		<link>http://www.olivernassar.com/2009/08/18/client-side-frameworks-should-be-called-client-side-libraries-heres-why/</link>
		<comments>http://www.olivernassar.com/2009/08/18/client-side-frameworks-should-be-called-client-side-libraries-heres-why/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 17:09:33 +0000</pubDate>
		<dc:creator>onassar</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[View]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[semantics]]></category>

		<guid isPermaLink="false">http://www.olivernassar.com/?p=198</guid>
		<description><![CDATA[<a href="http://www.olivernassar.com/2009/08/18/client-side-frameworks-should-be-called-client-side-libraries-heres-why/" rel="attachment wp-att-202"><img src="http://www.olivernassar.com/wp-content/uploads/2009/08/library-books-150x150.jpg" alt="library-books" title="library-books" width="150" height="150" class="alignleft size-thumbnail wp-image-202" /></a>This isn't a really important post, it's just something I think need's to be expressed and accepted; it must be accepted. Mootools, YUI, jQuery, Dojo etc. are great. They help a person with very tedious javascript techniques, speed up your applications, and make the UX much richer.

But they are not frameworks. I know this probably just seems like a semantics issue, but I want to make it clear that they are not frameworks, they are libraries. From http://dictionary.reference.com/browse/framework]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.olivernassar.com/wp-content/uploads/2009/08/library-books-150x150.jpg" alt="library-books" title="library-books" width="150" height="150" class="alignleft size-thumbnail wp-image-202" />This isn&#8217;t a really important post, it&#8217;s just something I think need&#8217;s to be expressed and accepted; it must be accepted. Mootools, YUI, jQuery, Dojo etc. are great. They help a person with very tedious javascript techniques, speed up your applications, and make the UX much richer.</p>
<p>But they are not frameworks. I know this probably just seems like a semantics issue, but I want to make it clear that they are not frameworks, they are libraries. From http://dictionary.reference.com/browse/framework</p>
<p>frame⋅work  [freym-wurk]  Show IPA<br />
–noun<br />
1.	a skeletal structure designed to support or enclose something.<br />
2.	a frame or structure composed of parts fitted and joined together.<br />
3.	the construction or sale of frames.<br />
4.	work done in, on, or with a frame.</p>
<p>A framework should be referenced only when your development is surrounded or incased by some structure. On the php side of things, this makes sense; an MVC based framework since every piece of code you write it part of the execution of the framework. On the client side though, it&#8217;s not so clear cut.</p>
<p>While you can work inside of a client side library as if you were in a framework (eg. creating new, framework-specific, classes), most of the code you write is simply using the library to help it out. As an example, you attach event handlers, create and manage JSON, make ajax calls, etc. All of this you can do natively, or you can have the library help you out. But when you use one of the library&#8217;s helpers, you&#8217;re not tied to it. You&#8217;re still writing native javascript, just short-cutting through the library&#8217;s helper methods and naming conventions.</p>
<p>I&#8217;m not sure why this deserved a post, such a long post at that. I suppose as I learn more about true frameworks, I&#8217;m realizing that semantics like this really do matter. When I write in CI or Cake, I have to fall in line with their file, naming and folder conventions. I need to work inside of a controller, which is triggered by the framework. I need to define the interface in view/template/layout files, which are loaded and compiled by the framework. And I need to access the data set through their ORM, which is managed by the framework.</p>
<p>JavaScript isn&#8217;t like that.<br />
Now while the specific cases I&#8217;m talking about (YUI,dojo,jQuery,Moo) are in my eyes libraries, that&#8217;s not to say that there couldn&#8217;t be/aren&#8217;t client side frameworks. I imagine javascript/ajax driven applications (large ones like gmail or a few Ycombinator/startup&#8217;s) have client side frameworks.</p>
<p>They have these systems in place where you have to work inside of them; the work is delineated among an MVC pattern, or some sort of separation of logic. I think that&#8217;d be really cool to check out, but because of the nature of javascript, I don&#8217;t think it&#8217;s as necessary as it is on the server side. Maybe I&#8217;m just saying that because I haven&#8217;t really been exposed to one, but client side JS is more modular and sparse than server side development, and for that reason having a library to help you tap into short cuts makes tons of sense.</p>
<p>My last point though, is that while I&#8217;ll always consider these javascript extensions libraries, I can definitely understand how some people would call them frameworks due to the way they use them. If you constantly are creating new framework-specific classes that follow standard programming practices (eg. hierarchy, casting, separation of logic), I think it&#8217;d be fair to see you&#8217;re using the library AS a framework. I&#8217;m cool with that. Lets just be clear about how the extension is used by the general public.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olivernassar.com/2009/08/18/client-side-frameworks-should-be-called-client-side-libraries-heres-why/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mootools caveat: event.target is not extended by $</title>
		<link>http://www.olivernassar.com/2009/08/01/mootools-caveat-event-target-is-not-extended-by/</link>
		<comments>http://www.olivernassar.com/2009/08/01/mootools-caveat-event-target-is-not-extended-by/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 23:14:52 +0000</pubDate>
		<dc:creator>onassar</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[trigger]]></category>

		<guid isPermaLink="false">http://www.olivernassar.com/?p=115</guid>
		<description><![CDATA[<a href="http://www.olivernassar.com/2009/08/01/mootools-caveat-event-target-is-not-extended-by/"><img src="http://www.olivernassar.com/wp-content/uploads/2009/08/mootools_logo-150x150.jpg" alt="mootools_logo" title="mootools_logo" width="150" height="150" class="alignleft size-thumbnail wp-image-118" /></a>This took me wayt too long to discover:
When using event.target via mootools event handlers, I figured out, after way too much testing, that event.target is NOT extended via $, and therefore doesn't have accessors like .get('tag') and default's for the $ (dollar sign extension).]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.olivernassar.com/wp-content/uploads/2009/08/mootools_logo-150x150.jpg" alt="mootools_logo" title="mootools_logo" width="150" height="150" class="alignleft size-thumbnail wp-image-118" />This took me wayt too long to discover:<br />
When using event.target via mootools event handlers, I figured out, after way too much testing, that event.target is NOT extended via $, and therefore doesn&#8217;t have accessors like .get(&#8217;tag&#8217;) and default&#8217;s for the $ (dollar sign extension).</p>
<p>I wasn&#8217;t sure if this was note worthy of a post, but I reckon I&#8217;ll fill this up with enough keywords that it&#8217;ll hopefully show up in the SERP&#8217;s for mootools event trigger target source, etc.</p>
<p>We shall see.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olivernassar.com/2009/08/01/mootools-caveat-event-target-is-not-extended-by/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script/Asset abuse: this is getting ridiculous!</title>
		<link>http://www.olivernassar.com/2009/07/30/scriptasset-abuse-this-is-getting-ridiculous/</link>
		<comments>http://www.olivernassar.com/2009/07/30/scriptasset-abuse-this-is-getting-ridiculous/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 20:41:59 +0000</pubDate>
		<dc:creator>onassar</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[assets]]></category>
		<category><![CDATA[experience]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[speed]]></category>

		<guid isPermaLink="false">http://www.olivernassar.com/?p=100</guid>
		<description><![CDATA[<a href="http://www.olivernassar.com/2009/07/30/scriptasset-abuse-this-is-getting-ridiculous/" rel="attachment wp-att-103"><img src="http://www.olivernassar.com/wp-content/uploads/2009/07/Abuse_is_bad-150x150.jpg" alt="Abuse_is_bad" title="Abuse_is_bad" width="150" height="150" class="alignleft size-thumbnail wp-image-103" /></a>Frameworks like YUI, JQuery, Mootools, Dojo, etc., are arguably the best thing to have happened to JavaScript in 10 years. I remember when I first learned about their existence. I was coding my own animation script (functional, not OO, and definitely not efficient) that didn't do anything fancy; just scrolled up and down. I remember then hearing about dojo, and thinking I'd wasted so much time.

Then what I did, was go around to all the different frameworks. I don't even think JQuery existed in it's current incarnation at that point (December of 2005), and I looked around at as many as I could (dojo, mootools, and a few others that have since become relics). This post though, isn't about the greatness of these frameworks; rather it's about the terrible abuse.]]></description>
			<content:encoded><![CDATA[<p>Frameworks like YUI, JQuery, Mootools, Dojo, etc., are arguably the best thing to have happened to JavaScript in 10 years. I remember when I first learned about their existence. I was coding my own animation script (functional, not OO, and definitely not efficient) that didn&#8217;t do anything fancy; just scrolled up and down. I remember then hearing about dojo, and thinking I&#8217;d wasted so much time.</p>
<p>Then what I did, was go around to all the different frameworks. I don&#8217;t even think JQuery existed in it&#8217;s current incarnation at that point (December of 2005), and I looked around at as many as I could (dojo, mootools, and a few others that have since become relics). This post though, isn&#8217;t about the greatness of these frameworks; rather it&#8217;s about the terrible abuse.</p>
<p>With any new technology, there will be people who embrace it for ease of use and creating a new standard, and then there will be those who completely abuse it. The screen shot below is a perfect example of that (click it for the full size):<br />
<a href="http://www.olivernassar.com/wp-content/uploads/2009/07/Picture-2.png"><img src="http://www.olivernassar.com/wp-content/uploads/2009/07/Picture-2-150x150.png" alt="Picture 2" title="Picture 2" width="150" height="150" class="alignleft size-thumbnail wp-image-101" /></a></p>
<p>If you can&#8217;t see what I have a problem with, then you need to leave this post right now. For everyone else, this is an absolute joke. This is for a travel promotion site called StudentCity. My count of javascript assets: 20 (excluding any dynamically load ajax/jsonp requests). My count of css assets: 11.</p>
<p>These tallies were retrieved via after the DOM had been rendered, so they may not match up perfectly with the source, but I assure you they&#8217;re accurate.</p>
<p>If you visit this site, you&#8217;re not going to notice too much. A few swfs, a bit of animation, and a few non-css related hover effects. In no way, should this account for the number of requests for just js/css assets. It doesn&#8217;t make sense, and is terrible programming/development. I understand that in many projects, control is sometimes non-existent. You need to conform to someone elses demands, some other developers tendencies, or some other designers inexperience. But for the firm who developed this site, if anyone had taken a look at the source after it had been finished, a huge red flag should have gone up.</p>
<p>Concatenating files is easy; minimizing requests is easy, and a faster client side render time will actually make you money, for a relatively low cost (maybe 2 hours). This speaks to what frameworks are doing these days.</p>
<p>JS frameworks, and even php/server side ones like CakePHP and CodeIgniter (ones I&#8217;m working with now) are leading to a generation of websites and applications that were developed by people who have very little idea what they&#8217;re doing. I don&#8217;t think it&#8217;s much different than the age of Frontpage/Dreamweaver/GoLive developed sites, but it&#8217;s certainly not something that you should be paying for it you&#8217;re working with a development firm. It&#8217;s annoying as a developer to see this, and probably a do-or-die thing if I were to be working with or hiring another developer to work with me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.olivernassar.com/2009/07/30/scriptasset-abuse-this-is-getting-ridiculous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;User Interface Design Heuristics&#8221;: amazing article!</title>
		<link>http://www.olivernassar.com/2009/07/26/user-interface-design-heuristics-amazing-article/</link>
		<comments>http://www.olivernassar.com/2009/07/26/user-interface-design-heuristics-amazing-article/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 22:45:42 +0000</pubDate>
		<dc:creator>onassar</dc:creator>
				<category><![CDATA[User Experience]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[experience]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[simple]]></category>

		<guid isPermaLink="false">http://www.olivernassar.com/?p=72</guid>
		<description><![CDATA[<a href="http://www.olivernassar.com/2009/07/26/user-interface-design-heuristics-amazing-article/" rel="attachment wp-att-74"><img src="http://www.olivernassar.com/wp-content/uploads/2009/07/suggestion20box-150x150.jpg" alt="suggestion20box" title="suggestion20box" width="150" height="150" class="alignleft size-thumbnail wp-image-74" /></a>One of the best article's I've read in the past month is entitled <a href="http://www.useit.com/papers/heuristic/heuristic_list.html" title="Heuristics for User Interface Design">Heuristics for User Interface Design</a>

In short, it's a set of suggestions rather than rules, that should be kept in mind when designing a user interface or experience. I'm tending to lean away from the word interface, as an interface is only good if it's experience is effective. Gmail's experience is what affects me, it's interface is just what I look at rather than what I use.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.olivernassar.com/wp-content/uploads/2009/07/suggestion20box-150x150.jpg" alt="suggestion20box" title="suggestion20box" width="150" height="150" class="alignleft size-thumbnail wp-image-74" />One of the best article&#8217;s I&#8217;ve read in the past month is entitled <a href="http://www.useit.com/papers/heuristic/heuristic_list.html" title="Heuristics for User Interface Design">Heuristics for User Interface Design</a></p>
<p>In short, it&#8217;s a set of suggestions rather than rules, that should be kept in mind when designing a user interface or experience. I&#8217;m tending to lean away from the word interface, as an interface is only good if it&#8217;s experience is effective. Gmail&#8217;s experience is what affects me, it&#8217;s interface is just what I look at rather than what I use.</p>
<p>What&#8217;s even more impressive about this list is it was first developed in 1994. I don&#8217;t mean to sound condescending in terms of advice coming from 15 years ago, but it&#8217;s shocking to me to find interfaces such as Google&#8217;s, Twitter&#8217;s, and Basecamp&#8217;s so incredibly in line with every single heuristic recommended.</p>
<p>My personal favorites:</p>
<ol>
<li>Visibility of system status<br />
The system should always keep users informed about what is going on, through appropriate feedback within reasonable time.</li>
<li>User control and freedom<br />Users often choose system functions by mistake and will need a clearly marked &#8220;emergency exit&#8221; to leave the unwanted state without having to go through an extended dialogue. Support undo and redo.</li>
<li>Aesthetic and minimalist design<br />Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.olivernassar.com/2009/07/26/user-interface-design-heuristics-amazing-article/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
