<?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>The Digital Life of Keith Baker.&#187; web development Archives  &#8211; iKeif &#8211; tech and social media geek, mootools fan, and a ton of links</title>
	<atom:link href="http://ikeif.net/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://ikeif.net</link>
	<description>iKeif.net - Web developer, father, and brewer.</description>
	<lastBuildDate>Sat, 08 May 2010 03:07:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>My Experience with the Google Search Appliance</title>
		<link>http://ikeif.net/2010/05/07/experience-google-search-appliance/</link>
		<comments>http://ikeif.net/2010/05/07/experience-google-search-appliance/#comments</comments>
		<pubDate>Sat, 08 May 2010 03:07:43 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[caches]]></category>
		<category><![CDATA[commerce engine]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google search]]></category>
		<category><![CDATA[gsa]]></category>
		<category><![CDATA[relevancy]]></category>
		<category><![CDATA[xsl]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=486</guid>
		<description><![CDATA[
So for a couple projects in the past year I&#8217;ve utilized the Google Search Appliance (here forward called the GSA). The GSA is a powerful tool &#8211; it&#8217;s like your own slice of Google, only you can customize it, and in theory, tweak the algorithm and manipulate your results. Like a &#8220;SEO box&#8221; &#8211; but to [...]]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://ikeif.net/2010/05/07/experience-google-search-appliance/" title="Permanent link to My Experience with the Google Search Appliance"><img class="post_image alignleft remove_bottom_margin frame" src="http://ikeif.net/wp-content/uploads/2010/05/google-search-appliance2.jpg" width="480" height="320" alt="Google Search Appliance" title="My Experience with the Google Search Appliance" /></a>
</p><p>So for a couple projects in the past year I&#8217;ve utilized the Google Search Appliance (here forward called the <abbr title="Google Search Appliance">GSA</abbr>). The GSA is a powerful tool &#8211; it&#8217;s like your own slice of Google, only you can customize it, and in theory, tweak the algorithm and manipulate your results. Like a &#8220;SEO box&#8221; &#8211; but to my understanding, the algorithm is different, but in theory it&#8217;s the same.</p>
<h2>The Versions of GSA</h2>
<p>I&#8217;ve worked on a Google-mini, the Virtual GSA (version 5.0, no longer offered for download, for shame) and a 6.0 GSA. In terms of front end coding, you manipulate the XSL/XSLT code to change the default appearance. It&#8217;s cool &#8211; you can get the power of Google without the &#8220;branded&#8221; Google crap you get from the customized Google. So &#8211; your own branded, somewhat manipulatable Google box. Cool.</p>
<h2>What is Google?</h2>
<p>Of course, Google is not Bing. It is not Yahoo. It is not a commerce engine &#8211; it is a relevancy machine. The sole purpose of a Google crawl is to gather documents, have you execute a query, and for Google to say:</p>
<p><em>&#8220;I think this is what you want?&#8221;</em></p>
<p>At least, that&#8217;s <strong>*MY*</strong> experience with the GSA &#8211; they have a capability referred to as &#8220;<a href="http://code.google.com/apis/searchappliance/documentation/50/help_gsa/serve_scoring.html">Results Biasing</a>.&#8221; This allows you to &#8220;influence&#8221; the results. My issues with this, is that you can make changes, but without arduous testing, you are never sure how long it&#8217;ll take the results to show up changed.</p>
<p>You can force a recrawl, but it seems the GSA &#8220;caches&#8221; the prior results for roughly 15 minutes. That means to tweak your results means retesting every 15 minutes, and even with results biasing, you may still be out of luck. It&#8217;s a crap shoot. A coworker and I spent several hours manipulating and testing results, only to eventually make one result bump up one slot, and we were working against tightly knit test set &#8211; we basically had 500 pages that were <strong>pure keywords</strong> and some other custom attributes to be utilized through a customized &#8220;<a href="http://code.google.com/p/search-as-you-type/">Search As You Type</a>&#8221; functionality.</p>
<h2>Search As You Type</h2>
<p>Yes &#8211; this was cool. A mix of plain JavaScript and PHP that essentially created a JSON result of your Google Search query. It&#8217;s a very cool project, and it allowed for some very unique experimentation with the results of a google query. I can&#8217;t delve into it to much, but we manipulated the data to spit out the results in a different display, for a more &#8220;spread&#8221; experience and relevant results. Very cool.</p>
<h2>The Lessons Learned</h2>
<p>I think the most difficult thing about the work was digging through the documentation &#8211; it was somewhat inaccurate at times, and very often some <strong>important, pertinent information </strong>was often in a single sentence, in some random blurb. <a href="http://code.google.com/apis/searchappliance/documentation/62/xml_reference.html">Like Meta tag length limits (320 characters)</a>. Agitating, but we were able to rewrite our original meta tag code (to be better, in my opinion) to generate structural details in the PHP vs. including it in the meta data (it was a prototype stage, okay?). The only problem was the keywords were still being stuffed &#8211; way too many repeats and useless character phrases. This is a matter of education to the client, and clarifying that the GSA was not a &#8220;easy to manipulate&#8221; set of data &#8211; it was a complex beast, and that in ANY kind of manipulation should be taken with a grain of salt.</p>
<p>By no means is this article definitive, and, to be 100% honest, totally accurate. I spent many emails and phone calls with Google Support (which was a decent experience, I&#8217;d dare say surprisingly so) to come to many conclusions of our work arounds and test data issues and uncovered new information (little nuggets of wisdom) hidden in the documentation, and even uncovered a few inconsistencies in the documentation (from 2009) in terms of how the GSA was handling result diagnostics.</p>
<p>It&#8217;s a powerful tool &#8211; but it&#8217;s not EXTREMELY customizable to fit every situation. I wish the had more &#8220;virtual&#8221; instances (like the VGSA they had) of all their products. I&#8217;d love to really see the full capabilities when you don&#8217;t have to drop a ton of cash just to play with some hardware.</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2010/05/07/experience-google-search-appliance/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS Best Practices and a Return to the Basics</title>
		<link>http://ikeif.net/2009/10/26/css-practices-return-basics/</link>
		<comments>http://ikeif.net/2009/10/26/css-practices-return-basics/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 18:30:57 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[creatives]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[equalizer]]></category>
		<category><![CDATA[performance issues]]></category>
		<category><![CDATA[style sheet]]></category>
		<category><![CDATA[styling]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=466</guid>
		<description><![CDATA[This article is not about learning CSS. It&#8217;s about having a set architecture in a project when moving forward. One of the first things in beginning development is setting in place a best practice procedure when moving forward &#8211; it&#8217;s not saying &#8220;there is only one way&#8221;, it&#8217;s saying &#8220;for this project, this is how [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>This article is not about learning CSS. It&#8217;s about having a set architecture in a project when moving forward. One of the first things in beginning development is setting in place a best practice procedure when moving forward &#8211; it&#8217;s not saying &#8220;there is only one way&#8221;, it&#8217;s saying &#8220;for this project, this is how we are moving forward.&#8221;</p>
<h2>Rule: Choose a Browser Reset Style Sheet</h2>
<h3>Choose one, or don&#8217;t use one.</h3>
<p>This helps you on your cross-browser journey. If we reset all browsers to zero, it allows you to spend less time figuring out why margins are inconsistent amongst your unordered list elements (&lt;ul&gt;). This also sets you up to have a default font-family and consistent font-sizes, line-heights, etc. <strong>This is most important when cross-browser similarity is a high-concern.</strong> </p>
<h3>CSS Resets are Bad, M&#8217;Kay?</h3>
<p><a href="http://snook.ca/archives/html_and_css/no_css_reset/">Jonathan Snook stated that he &#8220;&#8230;okay if the various browsers show things slightly differently.&#8221;</a> <a href="http://meiert.com/en/blog/20080419/reset-style-sheets-are-bad/">Jens Meiert also states CSS Resets are bad </a>because they essentially add up to a defined style being overwritten repeatedly, adding to network latency due to the multiple requests for CSS. Then follows up with the comment of using <em>* { margin: 0; padding: 0; }</em> which itself is a bit of a hack and causes performance issues.</p>
<p>To be honest, the argument that CSS Resets/the * hack are a bit of a red-herring. For the majority of clients/sites I&#8217;ve worked on, this has been an incredibly minor concern. We&#8217;re talking milliseconds. Not even on the radar type performance hits. If you want to squeeze every millisecond (and I do) this is kind of an extreme (even for me) case.</p>
<p>Unfortunately, not all of us are as lucky as Snook and we work with clients/creatives that are not okay with things being a few pixels off sometimes. Personally, I&#8217;m with Snook.</p>
<h3>Should You Choose To Reset</h3>
<p>You have several to choose from:</p>
<ul>
<li><a href="http://tobymiller.com/articles/css_equalizer/index.php">Toby Miller&#8217;s Equalizer</a></li>
<li><a href="http://meyerweb.com/eric/tools/css/reset/">Eric Meyer&#8217;s Reset</a></li>
<li><a href="http://developer.yahoo.com/yui/reset/">YUI&#8217;s Reset</a></li>
</ul>
<h2>Rule: Link States</h2>
<p>This is referred to as the &#8220;LoVe HaTe&#8221; rule. <em>:link :visited :hover :active</em><br />
This relates to CSS specificity, below.</p>
<h2>Rule: CSS Specificity</h2>
<p><a href="http://meyerweb.com/eric/css/link-specificity.html" title="CSS Specificity">Eric Meyer has a great article on CSS specificity</a> in general that I find lame when sites try to duplicate his article with their own &#8220;twist.&#8221;<br />
I fully admit, I suffer from over specificity. For good measure, you can read <a href="http://code.google.com/speed/page-speed/docs/rendering.html#UseEfficientCSSSelectors" title="Google's article about CSS specifity">Google&#8217;s article about CSS specifity</a> and the increase in performance by using effective CSS selectors.</p>
<p>To reiterate certain aspects, DON&#8217;T put a class and ID on everything.</p>
<pre name="code" class="css">
div.imageHolder img#imageHolderImage /* this is BAD */
div.imageHolder img /* this is BETTER */
.imageholder img /* ding ding ding! we have a winner! */
</pre>
<p>As well, don&#8217;t code things inappropriately, i.e. use nested divs/p to generate what is essentially an unordered list.</p>
<pre name="code" class="xhtml">
<div id="unorderedList">
<div class="listItem">Test</div>
<div class="listItem">Test</div>
</div>

<!-- should be -->
<ul id="idIfNecessary">
<li class="first">Target the first item</li>
<li>General list item</li>
<li class="last">Target the last item</li>
</ul>
</pre>
<h2>Rule: Naming Convention</h2>
<p>We won&#8217;t dwell on this. <strong>BE GENERIC.</strong> It&#8217;s better to have &#8220;.active&#8221; or &#8220;.select&#8221; and NOT &#8220;.greenActiveText&#8221; &#8211; what happens when green active text becomes orange? Now you have a poorly named class.<br />
Also, pick a naming structure and STICK TO IT. camelCase? Dashes-instead? Hell_underscores_are_okay, <em>AS LONG AS YOU ARE CONSISTENT</em>. Do not change it up. This is <strong>extremely important walking on to a project.</strong> If you walk in and the prior developer is doing it different than you are used to, <strong>ADOPT THEIR STYLE</strong>, DO NOT REWRITE IT, ADD TO IT, OR MAKE IT MORE COMPLEX THAN NEED BE.</p>
<h2>Rule: Shorthand</h2>
<p><a href="http://www.dustindiaz.com/css-shorthand/" title="CSS Shorthand">Use it. Know it. Love it.</a></p>
<pre name="code" class="css">
div {
	background-image: url("to/some/image");
	background-repeat: repeat-x;
	border-width: unit;
	border-style: (solid dashed dotted double);
	border-color: color || #hex || (rgb / % || 0-255);
	color: #669900;
	margin-top: 10px;
	margin-right: 9px;
	margin-bottom: 8px;
	margin-left: 7px;
	padding-top: 10px;
	padding-right: 5px;
	padding-bottom: 10px;
	padding-left: 0px;
}
div {
	background: url(to/some/image) repeat-x;
	border:border-width border-style border-color;
	color: #690;
	margin: 10px 9px 8px 7px;
	padding: 10px 5px 10px 0;
}
</pre>
<p>Notice the &#8220;0&#8243; has no identifier. It doesn&#8217;t need one. Notice 13 lines became 5. Love that. <a href="http://www.w3.org/TR/CSS21/syndata.html#uri" title="We also dropped the quotes to prevent any possible browser errors">We also dropped the quotes to prevent any possible browser errors</a>. Get to know your CSS shorthand.</p>
<h2>Rule: Browser Targeting</h2>
<p>For the love of God, they&#8217;re called hacks for a reason. They are hacky. They shouldn&#8217;t work, but do. You could fuck another browser down the line. You could introduce errors. <strong>DO NOT USE BROWSER HACKS</strong> This is a bigger sign that *you* are a hack and a not a proper developer. These are the &#8220;once in a lifetime&#8221; things that come up.</p>
<p>Except for IE.</p>
<p>Fortunately, IE has a nice, clean targeting system. <a href="http://www.quirksmode.org/css/condcom.html" title="Conditonal comments">Conditonal comments</a>. If you target IE, use Conditional Comments.</p>
<h2>Rule: CSS Behaviors Require JavaScript</h2>
<p>If you&#8217;re writing CSS Behaviors, move it into JavaScript. Plain and simple. There is no reason to have CSS behaviors. At all.</p>
<h2>Rule: Organize Your CSS</h2>
<p>I know this one can be a bitch. The project can change. Your initial strucutre may not make sense. But try to organize it to prevent redundancy.</p>
<h3>Alphabetize Yo&#8217; Self</h3>
<p>I alphabetize my CSS because I find it easy to read, search, and peruse. I also use a code highlighter in <a href="http://www.jedit.org/" title="jEdit">jEdit</a>. Others group it by property (font styling, positioning, dimensions). I prefer my way, but that doesn&#8217;t make it right. Just when I&#8217;m leading the project.</p>
<h2>Rule: Comment, Comment, Comment!</h2>
<p>Comment the shit out of anything you are handing off. Eat the bytes. But don&#8217;t go crazy. /* this is a comment */ not /*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; (several lines of this) CODE COMMENT (repeat several lines) &#8212;&#8212;&#8212;-*/ Keep it simple. Keep it common sense. Break it up by section (however you organize your CSS).</p>
<h2>Rule: The DO NOT Do List:</h2>
<p><strong>Don&#8217;t do these.</strong></p>
<h3>Don&#8217;t Use Inline Styles. Period.</h3>
<p>Inline styles defeat the whole &#8220;separation of content and design.&#8221; Maintenance becomes a bitch, frankly. You also add to page weight, and can cause issues when a developer doesn&#8217;t realize you&#8217;ve done things inline and their properly coded external styles are not working properly.</p>
<p><em>But Keif, I do this all the time in development&#8230;</em> &#8211; that&#8217;s fine, Timmy, but if you &#8220;accidentally&#8221; leave one in to production, or check it into SVN/CVS/Git and try to act like it&#8217;s not your fault, you&#8217;ve proven the point why you shouldn&#8217;t do this.</p>
<h3>Reuse a &#8220;Standard&#8221; Set of Specific Styles</h3>
<p>I don&#8217;t mean reset. I don&#8217;t mean element specific/font styling type items. I mean don&#8217;t use classes that are specific. #width100 .marginLeft25. This is representative of bad coding in general.</p>
<p>Now, this is a brief overview of many &#8220;best practices&#8221; I try to run with and improve upon. <a href="http://lmgtfy.com/?q=CSS+Best+Practices" title="Google CSS Best Practices">Google CSS Best Practices</a> and you&#8217;ll find a slew of additional resources. Not all of them will agree with me &#8211; but that&#8217;s not the point. The point is understanding them, and recognizing that <strong>someone else&#8217;s preference may override your own, and my not be technically wrong</strong>. If you fail to recognize this, you need to reconsider your role and what you&#8217;re doing &#8211; you need to be both a team player that can adapt and evolve, and an innovator should you be charged with leading the effort.</p>
<p>What do you have? Send me your best (or worst you&#8217;ve seen!)</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2009/10/26/css-practices-return-basics/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>IE6, VML, AlphaImageLoader and You (and Your E-Commerce Baby)</title>
		<link>http://ikeif.net/2009/10/23/ie6-vml-alphaimageloader-ecommerce-baby/</link>
		<comments>http://ikeif.net/2009/10/23/ie6-vml-alphaimageloader-ecommerce-baby/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 06:30:16 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[alphaimageloader]]></category>
		<category><![CDATA[browser requirements]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[internet browsers]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[web accessibility]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=463</guid>
		<description><![CDATA[A constant debate is always &#8220;why support IE6? It&#8217;s expensive, it&#8217;s annoying.&#8221;
Now, I&#8217;m not disagreeing with that. I don&#8217;t like IE6. It&#8217;s old. It&#8217;s broken. I&#8217;d prefer it went away. Unfortunately, IE6 represents over 30% of all IE traffic (which represents roughly 64% of all internet browsers).
It&#8217;s not representative of my site.
If you pay attention [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>A constant debate is always &#8220;why support IE6? It&#8217;s expensive, it&#8217;s annoying.&#8221;</p>
<p>Now, I&#8217;m not disagreeing with that. I don&#8217;t like IE6. It&#8217;s old. It&#8217;s broken. I&#8217;d prefer it went away. Unfortunately, IE6 represents over 30% of all IE traffic (which represents roughly 64% of <a href="http://en.wikipedia.org/wiki/Usage_share_of_web_browsers">all internet browsers</a>).</p>
<h2>It&#8217;s not representative of my site.</h2>
<p>If you pay attention to your browser metrics, you can see that IE6 is not representative of your site. At all. You can see this as a green light to ignore IE6 (particularly if it&#8217;s an <em>intranet </em>or <em>members-only</em> site, as you can dictate browser requirements as a &#8220;bare-minimum&#8221;). If you&#8217;re a blog, I&#8217;m all for ignoring IE6. I encourage more sites to do it.</p>
<p>Now there is one slight flaw with that argument. What if your site gets dugg? Slashdotted? Attached to a virus and spread? Date Is ay it &#8211; maybe an article you write goes viral?</p>
<h2>Some Microsoft This Way Comes</h2>
<p>Outside of a sudden surge in popularity, the other *very realistic* look is e-commerce sites. I don&#8217;t care who you are, a dollar is a dollar, and as such your e-commerce site better accommodate every visitor. No flash reliance, no JavaScript reliance. Period. I don&#8217;t care about it looking the same, but I better be able to make a purchase via <a href="http://lynx.isc.org/">Lynx</a>. More importantly, any handicap should be accounted for (blind is the most often thought of). This is what we call <a href="http://www.w3.org/WAI/">Web Accessibility</a>. All angles should be covered, within reason. And IE6, regardless of your metrics, is within reason.</p>
<h2>AlphaImageLoader &#8211; Ye Olde Standard</h2>
<p>I think anyone who is &#8220;in the biz&#8221; knows about AlphaImageLoader. We&#8217;ve all done the CSS replacement. I helped adjust and edit a <a href="http://mootools.net/">MooTools Class</a> that utilized it to account for all sorts of PNG situations. It was our &#8220;standard&#8221; because it was able to account for IE6 with a minimal amount of effort. Except&#8230;<br />
AlphaImageLoader does not support background-repeat, or background-position. It requires set heights and widths. It requires one-off styling for images that are cropped. Plain and simple, it still sucked.</p>
<h2>VML &#8211; The New Contender</h2>
<p>I stumbled on a VML solution after researching a site to see how they were handling PNGs. It turns out they were utilizing <a href="http://www.dillerdesign.com/experiment/DD_belatedPNG/">DD_belatedPNG</a>. I dug into VML vs. AlphaImageLoader and came across this article explaining the same thing &#8211; <a href="http://cfis.savagexi.com/2008/06/22/a-new-take-on-transparent-pngs-in-ie6-performance-and-vml">AlphaImageLoader or VML</a>.</p>
<p>The obvious is pointed out: AlphaImageLoader eats memory. VML adds bad markup to a page. IE6 does *not* cache the image (according to the article, at least).</p>
<p>So, we&#8217;re stuck with a memory hog or a lot of image requests against a server, which can add to a lot of bandwidth costs if your traffic spikes (it happens).</p>
<h2>Will The Real Slim Code Please Stand Up?</h2>
<p>After reviewing <a href="http://www.dillerdesign.com/experiment/DD_belatedPNG/">DD_belatedPNG</a> a second time, he claims to &#8220;mostly&#8221; have fixed the caching issue. To be honest, with as much grief I&#8217;ve had from AlphaImageLoader and changes in creative layouts that require PNG transparency, it seems like a real replacement for AlphaImageLoader, loaded using JavaScript and conditional comments so <strong>ONLY</strong> IE6 takes the hit.</p>
<p><strong>The downfalls? </strong>No opacity on the VML. I haven&#8217;t looked into creating a container to wrap the VML and fading that, but call me crazy, it may not work. This means we may have to keep AlphaImageLoader around for a little while longer. I&#8217;m not sold that either solution will replace the other, but they both are going to be invaluable until IE6 goes the way of the dinosaur.</p>
<h2>Performance Concerns? Not with VML.</h2>
<p>Thank God someone else ran the numbers. <a href="http://ap-project.org/English/Article/View/83/">Tests have been ran</a>, and also <a href="http://yuiblog.com/blog/2008/12/08/imageopt-5/">Yahoo! provided some additional numbers</a> to help showcase that VML is not the memory hog AlphaImageLoader is. Bonus!</p>
<p><a href="http://www.artzstudio.com/2008/07/png-alpha-transparency-no-clear-winner/">There is the argument that a PNG 8-bit image is a better solution.</a> No CSS hackery, no JavaScript intervention. However, it requires whomever the developer is, and also whomever the designer is cutting up your graphics to be familiar with proper image optimization techniques to insure an efficient, optimized experience.</p>
<h3>The REAL Solution<br />
The priority of the solutions seems evident. PNG 8-bits for most cases. VML through most others. AlphaImageLoader only as absolutely necessary. I do believe that a JavaScript solution is the best solution for IE6 AFTER 8-bit PNG images (ran through a PNG optimizer (like <a href="http://pmt.sourceforge.net/pngcrush/">PNGCrush</a>).</p>
<p>Unfortunately, such optimal solutions require trained developers and trained designers. Who has time for that? <strong>You should make time to insure success.</strong></p>
<p>Enjoy.</h3>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2009/10/23/ie6-vml-alphaimageloader-ecommerce-baby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dojo Basics</title>
		<link>http://ikeif.net/2009/06/04/dojo-basics/</link>
		<comments>http://ikeif.net/2009/06/04/dojo-basics/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 23:14:00 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=428</guid>
		<description><![CDATA[When you start developing in any JavaScript framework, you&#8217;re stuck wondering where to begin. Everyone&#8217;s got a tutorial, and an opinion, but when you&#8217;ve got &#8220;an idea&#8221; and just need to delve into the code to make it happen (say&#8230; porting functions? Figuring out the basics?) then sometimes wandering through the API isn&#8217;t the best [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>When you start developing in any JavaScript framework, you&#8217;re stuck wondering where to begin. Everyone&#8217;s got a tutorial, and an opinion, but when you&#8217;ve got &#8220;an idea&#8221; and just need to delve into the code to make it happen (say&#8230; porting functions? Figuring out the basics?) then sometimes wandering through the API isn&#8217;t the best thing you could do.</p>
<h2>Suggested Dojo Reading</h2>
<p><a href="http://sitepen.com/labs/guides/?guide=DojoQuickStart">Sitepen has provided a nice primer on the basic functionality</a> most people start off with in their library investigations, but where to go from here?</p>
<p><a href="http://docs.dojocampus.org/dojo/index">Is like a more detailed view into the Dojo API. I&#8217;d start here if I wanted to peruse the API in a more logical way then in their API docs.</p>
<p>I suggest reading </a><a href="http://docs.dojocampus.org/quickstart/dojo-basics">the Dojo Basics</a> from <a href="http://dojocampus.org">Dojo Campus</a> to get in deep with querying elements and <a href="http://docs.dojocampus.org/quickstart/events">Dojo Quickstart Events</a> to figure out attaching events.</p>
<h2>Understanding Dojo Toolkit</h2>
<p>The more I use Dojo, the more I see correlations with Java &#8211; and that&#8217;s not a good thing. In Java, you have JavaDocs telling you about the thousands of Java functions, parameters, returns you can have. VERY powerful. VERY difficult to learn. Most of the JavaScript frameworks took a different approach &#8211; they made what they did powerful, but kept it simple. Easy to read, easy to peruse &#8211; like the <a href="http://php.net">PHP docs</a> (in my opinion). the function names and organization make total sense.</p>
<p>In Dojo, it doesn&#8217;t feel as quite intuitive &#8211; for me &#8211; and that&#8217;s it&#8217;s biggest downfall. It has a high barrier of entry, and a large, robust, sophisticated toolkit that you aren&#8217;t really expected to know every inch of (like Java), but understand the basics and have an API to refer to when you want to do the more powerful functionality.</p>
<p>Unfortunately, Dojo still feels like it&#8217;s in the infancy of this aspect, as navigating to the more complex aspects is a pain. Should my Dojo work increase in the near future, I may invest in a book to try and become more acquainted with the more difficult aspects.</p>
<h2>Accessibility in the Framework</h2>
<p>I&#8217;m seeing inklings in their code with reference to <a href="http://www.w3.org/WAI/">WAI</a>, but I haven&#8217;t even *attempted* to fool with that in any accessibility sense. As my current projects haven&#8217;t adequately been in need of WAI guidelines, I&#8217;d love to see a more thorough analysis.</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2009/06/04/dojo-basics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MooTools Development in Dojo Land</title>
		<link>http://ikeif.net/2009/06/03/mootools-development-dojo/</link>
		<comments>http://ikeif.net/2009/06/03/mootools-development-dojo/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 23:09:20 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[professionals]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=421</guid>
		<description><![CDATA[I am a MooTools JavaScript developer. I love the framework, and in writing MooTools code, I&#8217;ve become a better Object-Oriented-Programmer, and a better JavaScript developer. If you follow technology, you know there&#8217;s multiple JavaScript frameworks &#8211; jQuery being the most popular (IMO), with Dojo Toolkit being the most used in enterprise applications.
After having used JavaScript [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I am a <a href="http://mootools.net">MooTools JavaScript</a> developer. I love the framework, and in writing MooTools code, I&#8217;ve become a better Object-Oriented-Programmer, and a better JavaScript developer. If you follow technology, you know there&#8217;s multiple JavaScript frameworks &#8211; <a href="http://jquery.com/">jQuery</a> being the most popular (IMO), with <a href="http://www.dojotoolkit.org/">Dojo Toolkit</a> being the most used in enterprise applications.</p>
<p>After having used JavaScript libraries (originally <a href="http://www.prototypejs.org/">prototype</a>/<a href="http://script.aculo.us/">scriptaculous</a>, some Moo.FX, then jQuery, then MooTools, and currently a project using  Dojo) you come to expect a certain amount of consistency in general concepts, and in that expectation, the libraries have delivered.</p>
<h2>$, $$, dojo.query, dojo.byId, document.getElementById &#8211; give me my element nodes!</h2>
<p>So, basic JavaScript, people have developed a few different ways to get the elements they want, including custom functions &#8211; like <a href="http://robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/">Robert Nyman&#8217;s getElementsByClassname</a> &#8211; which take advantage of local browser support, but you&#8217;re still forced to account for those without it. <em>*cough*IE*cough*</em></p>
<p><strong>MooTools uses the $ or $$:</strong><br />
[code lang="javascript"]<br />
var idEx = $('someId'); //get element by ID<br />
var arrayEx1 = $(document.body).getElement('someElement'); // return first matching 'someElement<br />
 inside of 'someContainer', or document.body in this example<br />
var arrayEx1 = $(document.body).getElements('someElement'); // return array of 'someElement' (or class name, if you have the right components downloaded) that are contained inside of 'some container', or in our example, document.body.<br />
var arrayEx2 = $$('someElement'); // return array of all found 'someElement'<br />
[/code]</p>
<p>Pretty powerful stuff, for so basic an idea.</p>
<p><strong>jQuery is kind of similar:</strong><br />
[code lang="javascript"]<br />
var someArray = $('someElement'); // return an array of those elements/that ID/etc.<br />
[/code]<br />
Very powerful for a single selector &#8211; but it has the added bonus that they&#8217;ve allowed it to be overwritten, so you can use jQuery with another library (say, MooTools) that also uses the $ selector. It took me a little bit to get used to the return of an array outside of a single element.</p>
<p><strong>Dojo does things a little differently</strong><br />
[code lang="javascript"]<br />
var someArray = dojo.query('someElement'); // return an array of elements<br />
[/code]</p>
<p>The get(&#8217;selector&#8217;).get(&#8217;selector&#8217;) (like mootools $(some).getElements(&#8217;someElse&#8217;)) can be pulled off in dojo/jQuery, but perhaps not as intuitive, in my opinion (again, I&#8217;m biased as a long-time MooTools fan/developer).</p>
<h2>Which is better?</h2>
<p><strong>I can&#8217;t say which JavaScript library is better.</strong> Perhaps more-so, I don&#8217;t <em>want</em> to. It&#8217;s moot. You pick the library you&#8217;re most comfortable with, and most importantly, for your Clients &#8211; you pick the one that they&#8217;re development team can run with for the long-term.</p>
<h2>How to choose a JavaScript Library &#8211; the condensed version</h2>
<p>I&#8217;m a life-long student, and a professional developer &#8211; I&#8217;ve coded many languages, and I&#8217;m learning others, so it&#8217;s easy to see certain correlations that have started popping up.</p>
<p><strong>MooTools&#8230;</strong> is definitely for the JavaScript Developer, and if you&#8217;re Object-Oriented as well, it&#8217;s even better.</p>
<p><strong>jQuery&#8230;</strong> is for the designers out there who know some xhtml and want to get some JavaScript without dealing with the headaches it can bring. It&#8217;s go ta low barrier of entry, but I&#8217;ve thought of this Thomas Jefferson quote:</p>
<blockquote><p>That which is Popular is not always Right, what is Right is not always popular</p></blockquote>
<p>Don&#8217;t read <strong>too much</strong> into that. I just infer that people that say it&#8217;s &#8220;the way&#8221; have some additional education to do in general.</p>
<p><strong>Dojo&#8230;</strong> is for the Java Developer crowd. As I&#8217;m delving more into Java, I see the <strong>strong</strong> similarities, and see why it&#8217;s involved in a lot of  Java-based enterprise solutions &#8211; you could jump back and forth between Dojo and Java and feel pretty comfortable.</p>
<h2>Coding Syntax, Preference, What&#8217;s Left? <em>DOCUMENTATION!</em></h2>
<p>This is the area most things suffer in &#8211; either too much or too little documentation. I&#8217;ve grown fond of <a href="mootools.net/docs">MooTools docs</a> structure. It&#8217;s easy to find what I need with it&#8217;s break down of how the functions are applied &#8211; string, array, elements&#8230; Easy!</p>
<p><a href="docs.jquery.com/">jQuery docs</a> are along the same lines, but I have difficultly in navigating them. <strong>I blame myself</strong> because of my long-term familiarity with MooTools, it&#8217;s become second nature, so jQuery is still slightly foreign.</p>
<p><a href="http://www.dojotoolkit.org/api">Dojo docs</a>, in my opinion, are the WORST of the docs. They&#8217;re broken down into their three main components (dojo, dijit, dojox), but beyond that it&#8217;s a guessing game to get to the API reference you want/need. I was finding myself hitting the wrong sections because the search led me there, but it was not representing what I was searching for.</p>
<p>I really feel their <a href="http://dojocampus.org/">Dojo Campus</a> is a much better doc representation than their dojo book, or their API docs. Their book is incomplete, and if you search and find references to the book, you&#8217;ll find items incomplete, moved, referencing different version of the book, to the point you&#8217;re better off not even reading it. Along with the occasional example randomly not loading, then working, then not. It was a nightmare!</p>
<p>The problem &#8211; perhaps the only problem &#8211; with Dojo Campus, is the search functionality. It defaults to &#8220;title search&#8221; which failed for me 99% of the time (because I needed something in the content, and was searching for the wrong titles). Even worse, the search isn&#8217;t even featured on the home page! I had to go four clicks in until I stumbled upon it for this post. (<strong>It&#8217;s accessible in two:</strong> Click on Tutorials and <a href="http://dojocampus.org/content/category/tutorials/beginners-tutorials/">one of the options</a>)</p>
<p>To my understanding, the Dojo Campus is going to become the &#8220;new&#8221; face of Dojo. And with their continued improvements in coding it&#8217;s becoming a stronger contender, and more importantly, more user friendly.</p>
<h2>Examples from the frameworks</h2>
<p>Every framework suffers from this. Outdated examples, drastic version differences that break code, or multiple version examples. MooTools and jQuery, for the most part, are pretty solid. Dojo, I hate to pick on you, but this is where you hurt the most. I googled &#8211; a lot &#8211; and the demos &#8211; official, sitepoint, others &#8211; are all over the place. Version 0.4, 0.9, 1.2.3, 1.3&#8230; and what&#8217;s worse, no one indicates what version the demo is in, so when I started looking at Sortable Tables, I find out it was made obsolete in another version. Links to non-existent pages in the dojo book&#8230; a mess!</p>
<p>In my own projects, it lead me to re-write a lot of items that existed in Dojo, but for a beginner with their library I ran into way too many issues to make it feasible to spend any more time playing with the code.</p>
<h2>Overall, my impressions have not changed</h2>
<p>MooTools is my favorite, jQuery is a recommended secondary, and Dojo is reserved as a &#8220;use it if you have to.&#8221; They pretty much throw the W3C to the wind with their coding structures &#8211; those dijits generate a mess of divs and classes as a default, to the point that I see the benefit in their examples, but in most of my scenarios, it was overkill (and my fellow devs would kill me if I ever coded something in that spaghetti menner).</p>
<p> It really showcases a difference between people that code for the front-end, and those that work with the front-end but primary experience is the back-end. the code makes sense to the extent in relation to Java code &#8211; but in comparing it to the majority of front-end applications, it&#8217;s a nightmare.</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2009/06/03/mootools-development-dojo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Posting to Twitter Using PHP and cURL</title>
		<link>http://ikeif.net/2009/05/27/posting-twitter-php-curl/</link>
		<comments>http://ikeif.net/2009/05/27/posting-twitter-php-curl/#comments</comments>
		<pubDate>Thu, 28 May 2009 03:48:10 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tagging]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=415</guid>
		<description><![CDATA[This is just the basic code you&#8217;ll find EVERYWHERE on the net. In an effort to be more like Scoble I want to start posting in regards to stuff I&#8217;m using/finding/reading to make future efforts in reuse easier &#8211; delicious only goes so far, in regards to remembering &#8220;what did I tag that with?&#8221;
The PHP [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>This is just the basic code you&#8217;ll find EVERYWHERE on the net. In an effort to be more like <a href="http://scobleizer.com/">Scoble</a> I want to start posting in regards to stuff I&#8217;m using/finding/reading to make future efforts in reuse easier &#8211; delicious only goes so far, in regards to remembering &#8220;what did I tag that with?&#8221;</p>
<h2>The PHP Function to Update Your Twitter Status</h2>
<p>[code lang="php"]<br />
&lt;?php<br />
/**<br />
 * A simple function using Curl to post (GET) to Twitter<br />
 * Kosso : March 14 2007<br />
 *<br />
 * Feel free to do what you like with this.<br />
 * It's pretty easy. But I thought I'd just put it out there.<br />
 * Curl is your friend.<br />
 *<br />
 * usage :  postToTwitter(&quot;myusername&quot;,&quot;mypassword&quot;,&quot;hello twitterati! I'm posting this from a PHP script! woo!&quot;);<br />
 */<br />
function postToTwitter($username,$password,$message)<br />
{<br />
	// GET the API url via web authentication<br />
	// add 'status' param to send a message to Twitter</p>
<p>	$host = &quot;http://twitter.com/statuses/update.xml?status=&quot;.urlencode(stripslashes(urldecode($message)));</p>
<p>	$ch = curl_init();<br />
	curl_setopt($ch, CURLOPT_URL, $host);<br />
	curl_setopt($ch, CURLOPT_VERBOSE, 1);<br />
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
	curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));</p>
<p>	curl_setopt($ch, CURLOPT_USERPWD, &quot;$username:$password&quot;);<br />
	curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);<br />
	curl_setopt($ch, CURLOPT_POST, 1);</p>
<p>	// Go for it!!!<br />
	$result = curl_exec($ch);<br />
	// Look at the returned header<br />
	$resultArray = curl_getinfo($ch);</p>
<p>	// close curl<br />
	curl_close($ch);</p>
<p>	//echo &quot;http code: &quot;.$resultArray['http_code'].&quot;&lt;br /&gt;&quot;;</p>
<p>	if($resultArray['http_code'] == &quot;200&quot;)<br />
	{<br />
		echo &quot;&lt;br /&gt;OK! posted to http://twitter.com/&quot;.$username.&quot;/&lt;br /&gt;&quot;;<br />
	} else<br />
	{<br />
		echo &quot;eek! yegads! error posting to Twitter&quot;;<br />
	}</p>
<p>	// debug the result<br />
	// echo &quot;&lt;pre&gt;&quot;;<br />
	// print_r($resultArray);<br />
	// echo &quot;&lt;/pre&gt;&lt;hr&gt;&quot;;<br />
	// $sResult = htmlentities($result);<br />
	// $sResult = str_replace(&quot;&amp;gt;&amp;lt;&quot;,&quot;&amp;gt;&lt;br /&gt;&amp;lt;&quot;,$sResult);<br />
	// echo &quot;&lt;pre&gt;&quot;;<br />
	// print $sResult;<br />
	// echo &quot;&lt;/pre&gt;&quot;;<br />
}?&gt;<br />
[/code]</p>
<p><a href="http://kosso.wordpress.com/2007/03/14/twitter-posting-with-php-and-curl/">I credit Kosso with the PHP function</a> &#8211; it&#8217;s basically a slightly more blown out version of the code flaoting around.</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2009/05/27/posting-twitter-php-curl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Stop Caching Old Files &#8211; A PHP Function</title>
		<link>http://ikeif.net/2009/03/27/stop-caching-files-php-function/</link>
		<comments>http://ikeif.net/2009/03/27/stop-caching-files-php-function/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 09:52:31 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=404</guid>
		<description><![CDATA[It&#8217;s weird that I swear David Walsh follows me around &#8211; everytime I have a conversation with someone about something, he writes an article about it &#8211; like preventing your css and javascript from being cached.
I had come to the same conclusion (from by conversation with Toby) that random querystrings being appended didn&#8217;t make much [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>It&#8217;s weird that I swear David Walsh follows me around &#8211; everytime I have a conversation with someone about something, he writes an article about it &#8211; like <a href="http://davidwalsh.name/prevent-cache">preventing your css and javascript from being cached</a>.</p>
<p>I had come to the same conclusion (from by conversation with <a href="http://www.tobymiller.com">Toby</a>) that random querystrings being appended didn&#8217;t make much sense &#8211; that prevents caching, but why stop caching &#8211; unless the file gets updated?</p>
<p>I wrote a little php function that works with <a href="http://us.php.net/function.filemtime">filemtime</a>, albeit it requires the absolute path of the file.</p>
<p>[code lang="php"]</p>
<p>function autoVer($url){<br />
$path = pathinfo($url);<br />
$ver = '.'.filemtime($_SERVER['DOCUMENT_ROOT'].$url);<br />
echo $path['dirname'].'/'.$path['basename'].'?'.$ver;<br />
}</p>
<p>[/code]</p>
<p>What this means, is when we call our files like so:</p>
<p>[code lang="php"]</p>
<link rel="stylesheet" type="text/css" href="<?php autoVer('/mootools/css/reset.css') ?>" /><br />
[/code]</p>
<p>It renders like so:</p>
<p>[code lang="php"]</p>
<link rel="stylesheet" type="text/css" href="/mootools/css/reset.css?1224038981" />
<p>[/code]</p>
<p>So only when your file gets updated, does the query update, forcing the cache invalid!</p>
<p>It&#8217;s a simple function &#8211; and by no means perfect. Would you refactor it, or do you have a better way?</link>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2009/03/27/stop-caching-files-php-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My take on Skittles.com</title>
		<link>http://ikeif.net/2009/03/09/skittlescom/</link>
		<comments>http://ikeif.net/2009/03/09/skittlescom/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 08:48:30 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[digital life]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[social web]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[skittles]]></category>
		<category><![CDATA[transitions]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=401</guid>
		<description><![CDATA[Shawn Morton may have beat me to the punch &#8211; both in writing about it &#8211; and a quick iframe demo of the Skittles idea.
The general point (in terms of Web Development) is that this is an insanely simple thing to accomplish &#8211; 15 minutes and Shawn had a working iframe demo.
I wanted to grab [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Shawn Morton may have beat me to the punch &#8211; <a href="http://www.smorty71.com/2009/03/my-take-on-skittlescom.html">both in writing about it</a> &#8211; and a <a href="http://www.smorty71.com/skittles/">quick iframe demo</a> of the <a href="http://www.skittles.com">Skittles idea</a>.</p>
<p>The general point (in terms of Web Development) is that this is an insanely simple thing to accomplish &#8211; 15 minutes and Shawn had a working iframe demo.</p>
<p>I wanted to grab some of the effects and colors of the original, just to see if I could do it and &#8220;make it fancy&#8221; &#8211; I mean, there&#8217;s still a half-dozen effects that can be applied to it &#8211; fades, transitions, all those whizz-bang-pow stuff people love, but I had to pull myself back a <strong>test</strong> was important.</p>
<h2>Skittles.com Initial Test</h2>
<p>I decided to focus on Firefox 3 so I could use rounded corners in CSS (there&#8217;s a JS library for everyone else, sans Webkit, but hell, remember, <em>this is a test</em>. No one&#8217;s paying, so I&#8217;m not worried about IE.</p>
<p>It took me a couple hours, but here&#8217;s <a href="http://bestpract.us/mootools/skittles/">skittles.com, reproduced without flash</a>.</p>
<p>I&#8217;m too tired to write more, so &#8211; here ya go.</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2009/03/09/skittlescom/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>You Flashed My Google &#8211; Google Flash Indexing</title>
		<link>http://ikeif.net/2009/02/12/flashed-google/</link>
		<comments>http://ikeif.net/2009/02/12/flashed-google/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 07:31:47 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[sem]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[flash content]]></category>
		<category><![CDATA[flash developer]]></category>
		<category><![CDATA[flash files]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[search terms]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=388</guid>
		<description><![CDATA[So Mark Scholl pulled up this nugget of a gem from an October post from Brian Ussery announcing their intent to start indexing flash.
I recall reading this in October, and quite a few people were excited about this &#8211; it means the old argument that &#8220;Flash isn&#8217;t SEO friendly&#8221; would boil down to &#8220;if you&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p></p><div id="attachment_390" class="wp-caption alignleft" style="width: 300px">
	<a rel="attachment wp-att-390" href="http://ikeif.net/2009/02/12/flashed-google/googled-my-flash1/"><img class="size-medium wp-image-390" title="Google My Flash" src="http://ikeif.net/wp-content/uploads/2009/02/googled-my-flash1-300x190.png" alt="You Flashed My Google" width="300" height="190" /></a>
	<p class="wp-caption-text">You Flashed My Google</p>
</div>
<p>So <a href="http://twitter.com/markscholl">Mark Scholl </a>pulled up this nugget of a gem from an <a href="http://www.beussery.com/blog/index.php/2008/10/google-flash-seo/">October post from Brian Ussery announcing their intent to start indexing flash</a>.</p>
<p>I recall reading this in October, and quite a few people were excited about this &#8211; it means the old argument that &#8220;Flash isn&#8217;t SEO friendly&#8221; would boil down to &#8220;if you&#8217;re a good Flash developer, your stuff will get indexed because you wrote it properly.&#8221;</p>
<p>What&#8217;s interesting, is the article dives into the fact that the SWF/Flash files will carry their own rage rank &#8211; and as such, if you reuse the same SWF on more than one page, keyword thinning can occur (you&#8217;re using duplicate content).</p>
<p>So &#8211; it&#8217;s been a few months, I was curious just *what* was being pulled in by google in terms of flash content, and what was being shown. I used a simple google query that it seems most people have forgotten about.</p>
<h2>Custom Google Search &#8211; FileType</h2>
<div id="attachment_391" class="wp-caption alignleft" style="width: 300px">
	<a rel="attachment wp-att-391" href="http://ikeif.net/2009/02/12/flashed-google/search-for-flash/"><img class="size-medium wp-image-391" title="filetype:swf site:ikeif.net" src="http://ikeif.net/wp-content/uploads/2009/02/search-for-flash-300x33.png" alt="search: filetype:swf site:ikeif.net" width="300" height="33" /></a>
	<p class="wp-caption-text">search: filetype:swf site:ikeif.net</p>
</div>
<p>It&#8217;s that easy. Run this with some search terms and see if your site&#8217;s flash is being indexed like you hoped it would.</p>
<p>Of course, I felt like playing around and seeing what&#8217;s happening in the wide world of flash&#8230;</p>
<h2>How&#8217;s my Flash being indexed?</h2>
<p>I ran a couple searches against some sites to see how they were being indexed:</p>
<p><a href="http://www.google.com/search?q=filetype%3Aswf+site%3Anationwide.com&amp;sourceid=navclient-ff&amp;ie=UTF-8&amp;rlz=1B3GGGL_enUS267US267">Query: filetype:swf site:nationwide.com</a> &#8211; What&#8217;s interesting is their flash is being indexed (I&#8217;m assuming) properly. The descriptions make sense, until you hit number 8 that says &#8220;PLAY AGAIN. PLAY AGAIN. 0%&#8221;</p>
<p><a href="http://www.google.com/search?q=filetype%3Aswf+loading&amp;sourceid=navclient-ff&amp;ie=UTF-8&amp;rlz=1B3GGGL_enUS267US267&amp;aq=t">Query: filetype:swf loading</a> &#8211; I did this out of curiousity &#8211; much like <a href="http://www.w3.org/QA/Tips/noClickHere">how it&#8217;s been stated </a>that <a href="http://www.456bereastreet.com/archive/200611/click_here_and_other_meaningless_link_phrases/">&#8220;click here&#8221; is the worst possible wording for a link</a> &#8211; over three million results for swf&#8217;s that say &#8220;loading!&#8221; Semi-interesting: The number one link is a <a href="http://www.pibmug.com/files/map_test.swf">flash USA Map Test</a>.</p>
<p><a href="http://www.google.com/search?q=filetype%3Aswf+site%3Aremhq.com&amp;sourceid=navclient-ff&amp;ie=UTF-8&amp;rlz=1B3GGGL_enUS267US267">Query: filetype:swf site:remhq.com</a> and <a href="http://www.google.com/search?q=filetype%3Aswf+site%3Akanyeuniversecity.com&amp;sourceid=navclient-ff&amp;ie=UTF-8&amp;rlz=1B3GGGL_enUS267US267&amp;aq=t">filetype:swf site:kanyeuniversecity.com</a> &#8211; I figured I would<strong> have</strong> to do a couple band sites, as <a href="http://www.43folders.com/2004/12/06/five-mistakes-band-label-sites-make">bands and labels were usually the number one commiters of flash atrocities</a>. These two were high ranking when I searched for &#8220;band sites flash&#8221; (simple, yet effective). <strong>Kanye? </strong><em>Three links</em>. <strong>REM? </strong>Four pages, all with some pretty good descriptions.</p>
<p><a href="http://www.google.com/search?hl=en&amp;rlz=1B3GGGL_enUS267US267&amp;q=filetype%3Aswf+site%3Aroushhonda.com&amp;btnG=Search">Query: filetype:swf site:roushhonda.com</a> &#8211; As I recently moaned about the fact that so many car sites rely too heavilly on flash (mainly because <a href="http://twitter.com/ikeif/statuses/1111130014">I couldn&#8217;t hit their sites on my iPhone</a>). All those listings in flash, none of it being indexed. I settled on Rousch from a search for &#8220;<a href="http://www.google.com/search?q=used+cars+columbus&amp;sourceid=navclient-ff&amp;ie=UTF-8&amp;rlz=1B3GGGL_enUS267US267">used cars columbus</a>&#8220;.</p>
<h2>We&#8217;ve come a long way, baby.</h2>
<p>So &#8211; we see some areas of needed improvement. SEO for Flash is something that I feel needs to be addressed more often (by designers and developers!) and it&#8217;s something our SEO people need to keep in mind and discuss (<em>I&#8217;m looking at you, <a href="http://twitter.com/markscholl">Mark Scholl </a>and <a href="http://twitter.com/jenniferlaycock">Jennifer Laycock</a>!</em>). As this is slowly moving from the &#8220;<em>I wish flash was indexed</em>&#8221; to &#8220;<em>Oh shit, it&#8217;s indexed, but not how I want it</em>!&#8221; the discussions need to ramp up and we need to start thinking about it.</p>
<p><strong>Find anything interesting in your own google queries? Let us know!</strong></p>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2009/02/12/flashed-google/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Unobtrusive &#8220;Print this window&#8221; using MooTools and jQuery!</title>
		<link>http://ikeif.net/2009/02/03/unobtrusive-print-window-mootools-jquery/</link>
		<comments>http://ikeif.net/2009/02/03/unobtrusive-print-window-mootools-jquery/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 07:18:19 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[jquery]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=385</guid>
		<description><![CDATA[Edit: As Oskar points out, the MooTools can be more concise, so I&#8217;ve updated the code!Thanks Oskar!
So I&#8217;m a fan of unobtrusive javascript &#8211; that means I like avoiding &#8220;onclick&#8221;, &#8220;onblur&#8221;, &#8220;onfocus&#8221; etc. etc. I don&#8217;t like doing &#8220;href=&#8217;javascript:dostuff();return false;&#8217;&#8221;. It makes me cringe &#8211; in this day and age, everyone has their favorite javascript [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><em class="edit"><strong>Edit:</strong> As <a href="http://ikeif.net/2009/02/03/unobtrusive-print-window-mootools-jquery/comment-page-1/#comment-284">Oskar points out</a>, the MooTools can be more concise, so I&#8217;ve updated the code!<a href="blog.olicio.us/">Thanks Oskar</a>!</em></p>
<p>So I&#8217;m a fan of unobtrusive javascript &#8211; that means I like avoiding &#8220;onclick&#8221;, &#8220;onblur&#8221;, &#8220;onfocus&#8221; etc. etc. I don&#8217;t like doing &#8220;href=&#8217;javascript:dostuff();return false;&#8217;&#8221;. It makes me cringe &#8211; in this day and age, everyone has their favorite javascript library, and they make event delegation <strong>damned easy</strong> to the point that I have to ask &#8211; if you load a javascript library on your site, why not use it?</p>
<h2>Print this window!</h2>
<p>Generally, those &#8220;print this window&#8221; links tend to be something along the line of:<br />
<textarea name="code" class="javascript" cols="60" rows="10"><br />
<a href="#" onclick="window.print();return false;">Print this window</a><br />
</textarea></p>
<p>or even:<br />
<textarea name="code" class="javascript" cols="60" rows="10"><br />
// ewwww javascript in an href?<br />
<a href="javascript:window.print();return false;">Print this window</a><br />
</textarea></p>
<p>Why do it this way? Why create a link that may not work?</p>
<h2>The MooTools way:</h2>
<p>MooTools is my rifle &#8211; I tend to focus on it first and foremost when it comes to thinking about UI.</p>
<p>Let&#8217;s take a &#8220;Print this Window&#8221; link and add a CLASS.</p>
<p><textarea name="code" class="html" cols="60" rows="10"><br />
<a href="#" class="print-window">Print this Window</a><br />
</textarea></p>
<h3>Why CLASS over ID?</h3>
<p>This is a valid question &#8211; some people like having things spelled out down to the letter, and they like their specificity. MY concern here is (recently) a client had a &#8220;print&#8221; link at the top and bottom of an overlay &#8211; IDs become invalid! So I prefer to keep that in mind at all times and code accordingly to the &#8220;what-if&#8221; scenario:</p>
<p><textarea name="code" class="javascript" cols="60" rows="10"><br />
$$(&#8216;.print-window&#8217;).addEvent(&#8216;click&#8217;,function(e){<br />
	new Event(e).stop(); // if you code your print link as a link, this basically does the same as &#8220;return false;&#8221;<br />
	window.print();<br />
});<br />
</textarea></p>
<p><strong>ZOMG! So easy!</strong> And it&#8217;ll hit EVERY class with &#8220;.print-window&#8221;! This method will hit ALL elements, so you may want to tighten it up a little bit:</p>
<p><textarea name="code" class="javascript" cols="60" rows="10"><br />
$(&#8216;container&#8217;).getElements(&#8216;.print-window&#8217;).each(function(el){<br />
	el.addEvent(&#8216;click&#8217;,function(e){<br />
		new Event(e).stop(); // if you code your print link as a link, this basically does the same as &#8220;return false;&#8221;<br />
		window.print();<br />
	});<br />
});<br />
</textarea></p>
<p>Now, why not search for &#8220;a.window-print&#8221;? Why use an &#8220;anchor&#8221; if it&#8217;s not going to be used?</p>
<p>To be honest &#8211; you don&#8217;t have to use an anchor. The <strong>class name</strong> is what&#8217;s important &#8211; you can make it a &lt;span&gt; if you don&#8217;t like using &lt;a&gt; or simply attach it to an image.</p>
<h2>jQuery &#8220;Print this Window&#8221;</h2>
<p><textarea name="code" class="javascript" cols="60" rows="10"><br />
$(&#8216;.print-window&#8217;)<br />
	.click(function(){<br />
		window.print();<br />
	});<br />
</textarea></p>
<p><strong>Simply delicious!</strong> You may need to double check me on that &#8211; jQuery is my backup, the dillinger to my glock.</p>
<h2>What if javascript is not enabled?</h2>
<p>Gasp! The horror!</p>
<p>No doubt this is something that may need to be accounted for &#8211; and I&#8217;m all about accounting for it all. This also brings up the question &#8211; do we care if search engines see it? <a href="http://www.google.com/trends?q=print+this+window%2C+print+window&amp;ctab=0&amp;geo=all&amp;date=all&amp;sort=1">Are google searches for &#8220;print window&#8221; a maker or breaker</a>? Really, for our purposes, they&#8217;re a &#8220;nice to have&#8221; function that adds no real added value to our page, and if you don&#8217;t care if a search engine sees it, there&#8217;s more than one way to jam this tune out.</p>
<p>For this, I like to use javascript to inject the elements in the page &#8211; javascript is needed to USE the link, so why not use it to make it available?</p>
<p>For this, it could be as simple as using CSS to HIDE the links, and javascript to SHOW the element, or you could go a step further and generate the images via javascript to begin with!</p>
<p>It&#8217;s kind of a pandora&#8217;s box &#8211; use with care!</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2009/02/03/unobtrusive-print-window-mootools-jquery/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Ma.gnolia&#8217;s loss &#8211; Delicious&#8217; gain? Backing up your Delicious&#8230;</title>
		<link>http://ikeif.net/2009/02/01/magnolias-loss-delicious-gain-backing-up-delicious/</link>
		<comments>http://ikeif.net/2009/02/01/magnolias-loss-delicious-gain-backing-up-delicious/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 03:23:48 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[fears]]></category>
		<category><![CDATA[import]]></category>
		<category><![CDATA[ma.gnolia]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=381</guid>
		<description><![CDATA[If you haven&#8217;t heard &#8211; Ma.gnolia &#8211; the online bookmarking service experiences that horrible event everyone fears &#8211; database corruption, and total loss of data. Not just the &#8220;primary&#8221; database &#8211; they lost their backups as well! Needless to say, that sucks. At the very least, their home page now has an apology explaining that [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>If you haven&#8217;t heard &#8211; <a href="http://ma.gnolia.com/">Ma.gnolia</a> &#8211; the online bookmarking service experiences that horrible event everyone fears &#8211; database corruption, and total loss of data. Not just the &#8220;primary&#8221; database &#8211; <a href="http://blog.wired.com/business/2009/01/magnolia-suffer.html">they lost their backups as well</a>! Needless to say, that <strong>sucks</strong>. At the very least, their home page now has an apology explaining that it&#8217;ll take days to get things sorted out. <strong>I wish them and their crew the best of luck.</strong> Those situations always suck, are never fun, and no doubt is causing a lot of lost sleep.</p>
<p>I&#8217;m not a Ma.gnolia user. I don&#8217;t know why I never joined &#8211; <a href="http://delicious.com/god.dreams">I was always a del.icio.us user</a> and never felt the need to change to another service &#8211; I just needed something that let me access my bookmarks wherever, and I used it even moreso when <a href="https://addons.mozilla.org/en-US/firefox/addon/3615">the firefox plugin came out</a>. I tag, I comment, I move on. I used to publish a collection of my recent links, but they were out numbering my posts.</p>
<p>Needless to say, Ma.gnolia&#8217;s issues made we wonder about the safety of my own bookmarks &#8211; I don&#8217;t back them up. Now sounds like a great time to find out!</p>
<h2>Delicious Backups</h2>
<p>The easiest, most obvious method is going to &#8220;Settings -&gt; Export&#8221; &#8211; you can include your tags and comments, should you want, and it&#8217;ll spit out one humongous HTML file.</p>
<p>After a little googling, I found out from <a href="http://lists.econsultant.com/top-10-ways-delicious-backup.html">eConsultant</a> that you can use this file a few sites:</p>
<ul>
<li><a href="http://blogmarks.net/tools/?t=importexport">Blogmarks.net</a></li>
<li><a href="http://feedmelinks.com/import/">Feed Me Links</a></li>
<li><a href="http://www.furl.net/">Furl.NET</a></li>
<li><a href="http://ma.gnolia.com/">Ma.gnolia</a></li>
<li><a href="http://www.simpy.com/">Simpy</a></li>
<li><a href="http://myweb2.search.yahoo.com/myweb/tools">Yahoo! My Web 2.0</a></li>
</ul>
<p>It&#8217;s possible to <a href="http://delicious.com/help/api">output your bookmarks in XML using their API</a> &#8211; but they ask that you use it sparingly.</p>
<p>Now, the additional &#8220;very cool thing&#8221; &#8211; <a href="http://delicious.com/help/thirdpartytools">they have a collection of third party plug-ins you can use</a> &#8211; we&#8217;re talking plugin importers, API calls to PHP, Java, Ruby, Python, Perl, Lisp, C# and MySQLicious &#8211; that last one I&#8217;m interested in, possibly as making it a permanent addition to my main server!</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2009/02/01/magnolias-loss-delicious-gain-backing-up-delicious/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mootools Enhanced Elements &#8211; How Web Developers Should CodeContent</title>
		<link>http://ikeif.net/2008/12/16/mootools-enhanced-elements-web-developers-codecontent/</link>
		<comments>http://ikeif.net/2008/12/16/mootools-enhanced-elements-web-developers-codecontent/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 17:00:04 +0000</pubDate>
		<dc:creator>keif</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[tagging]]></category>
		<category><![CDATA[visualization]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://ikeif.net/?p=367</guid>
		<description><![CDATA[Toby Miller has released his Mootools Enhanced Element Script to the masses on MooForum - and it&#8217;s a sweet idea that falls inline with how web developers often describe as &#8220;how they always code.&#8221;
How should Web Developers code?
Everyone has the basic understanding of how they should be coding &#8211; semantic, clean code. They should be coding with the idea [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.tobymiller.com">Toby Miller</a> has released his <em><a href="http://www.tobymiller.com/articles/mootools_enhanced_elements/index.php">Mootools Enhanced Element Script</a><span style="font-style: normal;"> to <a href="http://www.mooforum.net/scripts12/enhancedelement-t911.html">the masses on MooForum</a> - and it&#8217;s a sweet idea that falls inline with how web developers often describe as &#8220;how they always code.&#8221;</span></em></p>
<h2><em><span style="font-style: normal;">How should Web Developers code?</span></em></h2>
<p><em><span style="font-style: normal;">Everyone has the basic understanding of how they </span>should</em> be coding &#8211; semantic, clean code. They should be coding with the idea that screen readers should be able to easily navigate the site (you know <a href="http://www.out-law.com/page-7285">Target tried to fight accessibility in court</a>?)</p>
<p>You should be starting with your content in mind &#8211; and often it&#8217;s always gone &#8211; Header, Body, Footer. But why?</p>
<p>Generally, we always assume people want the navigation (in the header) at the top. We then include accessibility links to allow them to be skipped. <a href="http://www.vordweb.co.uk/standards/download_lynx.htm">Download lynx and test for yourself</a> - and then hit up some e-commerce sites and see how many use it (I know that <a href="http://www.nationwide.com">Nationwide.com</a> does, outside of e-commerce). Of course, this leads to the question &#8211; why include a link that is necessary when we can manipulate the appearance for visual browsers?</p>
<h2>Content is King &#8211; so treat it as such!</h2>
<p>Why do we lead with our navigation when it&#8217;s the content that matters? Content &#8211; Navigation &#8211; Footer &#8211; why isn&#8217;t this how a page is coded? It&#8217;s something I&#8217;m struggling to wrap my head around and start pushing forward with in my own code &#8211; to be accessible, and also to show it <strong>*can*</strong> be done. Code should be clean and simple! And I hope to see a <a href="http://lawsofsimplicity.com/">return to simple websites in the future</a>&#8230;</p>
<p>After you&#8217;ve got your clean, validated code &#8211; now you manipulate it with CSS &#8211; you take your skeleton and give it its skin and a coat of paint. Javascript enhances the experiment, and flash is the last piece (further enhancement, a plug-in experience). It&#8217;d be nice if the <a href="http://www.paciellogroup.com/blog/?p=61">accessibility flash detection was reliable</a>&#8230;</p>
<h2>But on to Mootools Enhanced Elements!</h2>
<p>This goes beyond the simplistic &#8220;is javascript available? Then add this ID/class to the body tag.&#8221; It goes beyond saying &#8220;if less than IE7, load this style sheet and javascript.&#8221; If you understand these ideas, you&#8217;ve got the <strong>basics</strong> of what Enchanced Element is about.</p>
<p>Yes &#8211; this is taking it up a notch. Adding classes, properties, custom elements and styles! <a href="http://www.tobymiller.com/articles/mootools_enhanced_elements/index.php">I suggest reading the article</a> and <a href="http://www.mooforum.net/scripts12/enhancedelement-t911.html">checking out the posts about it</a> and looking at <a href="http://www.tobymiller.com">the site built with it</a>!</p>
<hr/>Copyright &copy; 2010 <strong><a href="http://ikeif.net">The Digital Life of Keith Baker.</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact legal@ikeif.net so we can take legal action immediately.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://ikeif.net/2008/12/16/mootools-enhanced-elements-web-developers-codecontent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
