<?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>MatSays : ramblings of a grumpy developer-designer-teacher &#187; IMD223 Advanced Scripting</title>
	<atom:link href="http://www.matsays.com/category/ailv/imd223/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.matsays.com</link>
	<description>ramblings of a grumpy developer - designer - teacher &#124; my art institute of las vegas web design blog</description>
	<lastBuildDate>Wed, 23 Jun 2010 15:56:16 +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>Fast CMS Deployment with jQuery and Web Services</title>
		<link>http://www.matsays.com/misc/tricks/fast-cms-deployment-with-jquery-and-web-services/</link>
		<comments>http://www.matsays.com/misc/tricks/fast-cms-deployment-with-jquery-and-web-services/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 06:03:58 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD322 Dynamic Design]]></category>
		<category><![CDATA[IMD325 UCD I]]></category>
		<category><![CDATA[IMD335 UCD II]]></category>
		<category><![CDATA[IMD345 UCD III]]></category>
		<category><![CDATA[IMD375 Databases]]></category>
		<category><![CDATA[IMD402 Server Side Scripting]]></category>
		<category><![CDATA[IMD414 Dynamic Design]]></category>
		<category><![CDATA[INF400 Web Security]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[dam]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.matsays.com/?p=1178</guid>
		<description><![CDATA[This week we&#8217;ve been working on a quick digital asset manager for the upcoming Wimbledon.  Last year, Delta Tre produced a massive, well designed system to handle the metadata and media transfer between the UK and the partners in the US.  They had months to build it.  This year we had 2 [...]]]></description>
			<content:encoded><![CDATA[<p>This week we&#8217;ve been working on a quick digital asset manager for the upcoming Wimbledon.  Last year, Delta Tre produced a massive, well designed system to handle the metadata and media transfer between the UK and the partners in the US.  They had months to build it.  This year we had 2 weeks.  Granted we had some experience with the system from last year and that we&#8217;ve been toying with our own Director and VWAP systems, but we decided that in the interest of time (10 business days) and resources (2 developers) that we&#8217;d take a different approach.</p>
<p>Rather than take a traditional page-design approach, we architected the database and interaction to be slim and exchangeable.  First, the database was managed by use of two .NET-based Web Services written in C# that ingested via POST marking transaction success with 32-character IDs, output via XML and with multi-purpose edit functions using switches and variable inputs.  Next, the authentication was built on a combination Basic and session-based approach using ASP &#8211; quick and efficient and easy to modularize should the system need to be moved to another platform.  Finally, the front-end was built on a single HTML page with jQuery and jQuery UI to support the large number of Ajax exchanges and interactive features.</p>
<p>The result is a clean, easy to use, transportable DAM-CMS capable of complex transactions (multi-tiered, synchronous updates), hooks to a Silverlight-based rough cut editor from Southworks, and most of all, easy and quick to modify without affecting the production environment.  By deploying a single jQuery-based controller separate from the parser and presentation components, new objects could be introduced to the interface based on a modifiable, dynamic XML document at login (or pushed in real-time, even after the user had logged in).</p>
<p><img class="aligncenter size-large wp-image-1179" title="Screen capture of development interface" src="http://www.matsays.com/wp-content/uploads/2010/06/Picture-2-600x341.png" alt="" width="600" height="341" /></p>
<p>Some of the things we learned seem pretty silly but in fact were critical to the project completing in such a short amount of time.</p>
<p>First, segregate all the processes &#8211; by constructing the database, the web services, and the interface separate from each other, different developers could rapidly deploy all of it and mesh together quickly at stop-points each day.  Chandler and I (with a big assist from Srini and Mio) were able to work independently and merge as he completed parts of the web service, or make changes as parts of the interface came together.  Likewise, during testing, changes to the interface and sequence could be done in real-time and re-tested within minutes instead of having to go back to the drawing board.  This was eased by the fact that issues could be easily attributable and divisible to interface or back-end, and handled separately.</p>
<p><img class="alignright size-full wp-image-1180" title="Modal window in RCE-CMS" src="http://www.matsays.com/wp-content/uploads/2010/06/Picture-3-e1276495120982.png" alt="" width="350" height="180" align="right"/>Second, it&#8217;s the little things that make a difference.  Providing small visual cues &#8211; update notifications at the top of the page that disappear, Ajax loader starburts, highlighted labels and input boxes &#8211; all give the user information, information that helps them get through difficult or tedious and complex processes (for example, in creating a VOD asset, a user had options that might require upwards of 50 different pieces of information &#8211; eliminating unnecessary components on the screen made it easier to get through).</p>
<p>Finally, architect it but be flexible.  Changes happen, and while developers and project managers all try to keep scope creep from happening, we all know that in the real world, so does feature change.  It is unrealistic to assume that projects will get started 6 months before the deadline.  It is also unrealistic to assume that, in such a project with a short deadline, that you&#8217;ll remember to include everything.  Likewise, it&#8217;s also unrealistic to assume that during the process you&#8217;ll realize that the planned interface will work &#8211; prototyping is great but it takes time and testing that you may not always have.  Being able to be flexible by following a basic interface design, using modular builders (in jQuery UI or other framework) and XML-based instruction sets, and providing error catching systems in both the front-end as well as the web services makes the project continue to move, even when not all the parts are correct.</p>
<p><a href="http://www.matsays.com/wp-content/uploads/2010/06/Picture-4.png"><img class="aligncenter size-large wp-image-1181" title="Silverlight Rough Cut Editor interface by Ezeqiual Jadib at Southworks" src="http://www.matsays.com/wp-content/uploads/2010/06/Picture-4-600x359.png" alt="" width="600" height="359" /></a></p>
<p>In the end, we had a lot of hiccups and it didn&#8217;t go as smoothly as we&#8217;d hoped but it did get done and delivered on-time.  The client goes to training in 9 hours and there will likely be another round of changes, but that we were able to post a full-featured DAM CMS in such a short amount of time gives us new methods and targets for the future.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Ftricks%2Ffast-cms-deployment-with-jquery-and-web-services%2F', 'Fast+CMS+Deployment+with+jQuery+and+Web+Services')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusred.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/tricks/fast-cms-deployment-with-jquery-and-web-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eloquent Javascript</title>
		<link>http://www.matsays.com/misc/eloquent-javascript/</link>
		<comments>http://www.matsays.com/misc/eloquent-javascript/#comments</comments>
		<pubDate>Thu, 06 May 2010 05:33:47 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD213 Int. Scripting]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[INF340 Web Design Concepts]]></category>
		<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.matsays.com/?p=1126</guid>
		<description><![CDATA[Being a teacher is both wonderful and exhausting.  I love being around students &#8211; it is truly fun to watch them find their way through this maze we call Web design and their own enthusiasm keeps me on my toes.  But at the same time it is exhausting, particularly when after repeated attempts [...]]]></description>
			<content:encoded><![CDATA[<p>Being a teacher is both wonderful and exhausting.  I love being around students &#8211; it is truly fun to watch them find their way through this maze we call Web design and their own enthusiasm keeps me on my toes.  But at the same time it is exhausting, particularly when after repeated attempts to explain something from every angle I can think of, the idea still doesn&#8217;t sink in.</p>
<p>I have always told my students that the best way to get backup help is to go to the bookstore, site down, and read 10 pages out of each book on the topic, and find the one that &#8220;speaks&#8221; to them.  A teacher&#8217;s recommended text, the school&#8217;s required textbook, it&#8217;s rare that student find them legible or helpful (I think my logic teacher went out of her way to find the most confusing book on Earth).  Find the book that they understand and start working.  Work every day.  Work at least 15 minutes or 30 minutes every single day, doing the exercises over and over, changing little things, until the whole concept is solved.</p>
<p>But not every great book can be found at the store.  Of course there are the online standard &#8211; w3schools.com for example &#8211; and the plethora of smaller resources.  But it is always a treat to find an online resource that has both extensive resources and is also an easy, if not opinionated, read.</p>
<p>Such is &#8220;<a href="http://eloquentjavascript.net/">Eloquent Javascript</a>,&#8221; authored by Marijin Haverbeke.  I remember coming across it a few years ago but a posting on DownloadSquad reminded me of it.  It is available in its entire text online (in HTML) as well as via downloadable PDF.  As with most good resources, I recommend grabbing the PDF (and if you&#8217;re ambitious, a local copy of the HTML) before the perishability of Web documents steals it away.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Feloquent-javascript%2F', 'Eloquent+Javascript')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusred.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/eloquent-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The UX of CMS</title>
		<link>http://www.matsays.com/misc/the-ux-of-cms-wimbledonlive-cms/</link>
		<comments>http://www.matsays.com/misc/the-ux-of-cms-wimbledonlive-cms/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 07:32:52 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD322 Dynamic Design]]></category>
		<category><![CDATA[IMD325 UCD I]]></category>
		<category><![CDATA[IMD335 UCD II]]></category>
		<category><![CDATA[IMD345 UCD III]]></category>
		<category><![CDATA[IMD402 Server Side Scripting]]></category>
		<category><![CDATA[IMD414 Dynamic Design]]></category>
		<category><![CDATA[INF340 Web Design Concepts]]></category>
		<category><![CDATA[Soapbox]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[hci]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://www.matsays.com/?p=626</guid>
		<description><![CDATA[Part of the reason I love WordPress as much as I do is simply that the total user experience of using the admin tools just makes it that much better than most CMS packages.  While I still think there are a lot of areas that can use improvement, I have rarely ever used a [...]]]></description>
			<content:encoded><![CDATA[<p>Part of the reason I love WordPress as much as I do is simply that the total user experience of using the admin tools just makes it that much better than most CMS packages.  While I still think there are a lot of areas that can use improvement, I have rarely ever used a CMS that made it quite as easy to manage and publish content.</p>
<p>While is why I am extremely proud of the evolution of the CMS that I designed and built for the Wimbledon Live player (see <a href="http://www.matsays.com/misc/wimbledon-live-smooth-stream-silverlight/">this post</a>).  </p>
<p><img src="/images/wcms1.png" border="0" alt="Screen shot of Wimbledon Live CMS"/></p>
<p><span id="more-626"></span>To understand the complexity behind designing the UX it&#8217;s important to understand the nature of the data and the critical effect of the workflow.  First, video was being supplied from six sources, some to us using Saviant direct to our servers, some we pulled via FTP, and then of course the live streams (some HD and some SD).  Then there were multiple parties&#8230;NBC (as the news reporter) needed editorial control over metadata, while iStream&#8217;s Managed Webcasting team needed to control the timeline over when items went to publication.  My team, RnCS (Research &#038; Creative Services) needed to insure that everything was tested before going live so we needed to throw the whole thing through a staging server before hitting a production server that then fed a cluster of edge servers on Akamai&#8217;s network.</p>
<p><img src="/images/wcms2.png" border="0" alt="Screen shot of Wimbledon Live CMS"/></p>
<p>So we structured it in several parts.  First we put automated bots to determine when new assets had been dropped, specifically seeking out XML files that held the initial metadata, and dropped that into the CMS DB.  Once there, the appropriate parties were notified by email (or in my case as PM, by SMS) &#8211; to update metadata, insert images, begin video transcoding, etc.  Through the entire process, we designed screens to make it as easy as possible to follow the flow of assets, provide enough ability to each staff person so that overlaps in duties existed but that checkpoints assured data integrity throughout.</p>
<p><img src="/images/wcms3.png" border="0" alt="Screen shot of Wimbledon Live CMS"/></p>
<p>The grid above, for example shows the visual layout of the thumbnails that would appear in the cover-flow style playlist inside the player.  Deep linking was provided so editorial users could create pointers on the MSNBC/NBCSports sites.  Drag and drop allowed us to reorder objects to maximize the visibility of prominent players.</p>
<p><img src="/images/wcms4.png" border="0" alt="Screen shot of Wimbledon Live CMS"/></p>
<p>Each level of user had various modal windows to insert data.  Even imagery was uploaded first to the staging, processed for size and then sent to production.</p>
<p><img src="/images/wcms5.png" border="0" alt="Screen shot of Wimbledon Live CMS"/></p>
<p>Because of the nature of edge servers, we also had to purge the cache after any update, so we provided a three-section grouping that allowed us to send the feed XMLs to production and clear the cache in one shot.  And to make THAT process even easier, we built it so that it was accessibly by mobile phone so even if I was in transit, I could still update the CMS in a timely fashion.</p>
<p><img src="/images/wcms6.png" border="0" alt="Screen shot of Wimbledon Live CMS"/></p>
<p>Finally, the live streams had the ability to be toggled on and off so that the matrix of available feeds, particularly the Smooth HD stream, was optimized and prioritized.  To be sure, there was still much room for improvement but given that the whole CMS was built in 6 days and now, five days into Wimbledon, has eased us into a steady, smooth workflow, speaks volumes for making it easy to use, intuitive (for example, the color designations on the player match the ones in the CMS, big text and extensive micro-transaction Ajax created an interactive environment), and overall a good experience.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Fthe-ux-of-cms-wimbledonlive-cms%2F', 'The+UX+of+CMS')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusred.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/the-ux-of-cms-wimbledonlive-cms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FireScope &#8211; FireBug Add-On</title>
		<link>http://www.matsays.com/misc/tricks/firescope-firebug-add-on/</link>
		<comments>http://www.matsays.com/misc/tricks/firescope-firebug-add-on/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 17:26:10 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[IMD213 Int. Scripting]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD322 Dynamic Design]]></category>
		<category><![CDATA[IMD414 Dynamic Design]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[firebug webdevelopment css]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/?p=524</guid>
		<description><![CDATA[FireBug, as most web developer-designers know, is probably one of the single best inventions to come out in the last couple of years to help debug those crazy layout and code problems.  Well, if that weren&#8217;t enough, here&#8217;s an add-on to the add-on &#8211; SitePoint introduces FireScope.  This tool extends FireBug with reference material for [...]]]></description>
			<content:encoded><![CDATA[<p><a title="FireScope from SitePoint" href="http://tools.sitepoint.com/firescope/"><img style="float:left;margin-right:5px; margin-bottom:5px;" src="/wp-content/uploads/2009/01/firescope-logo.jpg" border="0" alt="FireScope" /></a>FireBug, as most web developer-designers know, is probably one of the single best inventions to come out in the last couple of years to help debug those crazy layout and code problems.  Well, if that weren&#8217;t enough, here&#8217;s an add-on to the add-on &#8211; SitePoint introduces <a title="FireScope from SitePoint" href="http://tools.sitepoint.com/firescope/">FireScope</a>.  This tool extends FireBug with reference material for HTML &amp; CSS.</p>
<div><a href="/wp-content/uploads/2009/01/firescopeconsole.png"><img style="float:left;margin-right:5px; margin-bottom:5px;" src="/wp-content/uploads/2009/01/firescopecutaway.png" border="0" alt="FireScope" /></a></div>
<div style="clear:both;"></div>
<p>Once installed, it adds an additional panel to the FireBug console labelled &#8220;Reference&#8221;.  Check out the screen shot to see the changes and be sure to get all the details on <a title="FireScope from SitePoint" href="http://tools.sitepoint.com/firescope/">SitePoint&#8217;s web site</a>.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Ftricks%2Ffirescope-firebug-add-on%2F', 'FireScope+%26%238211%3B+FireBug+Add-On')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusred.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/tricks/firescope-firebug-add-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good Stuff at SitePoint</title>
		<link>http://www.matsays.com/misc/resources/good-stuff-at-sitepoint/</link>
		<comments>http://www.matsays.com/misc/resources/good-stuff-at-sitepoint/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 04:55:50 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD345 UCD III]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/resources/good-stuff-at-sitepoint/</guid>
		<description><![CDATA[SitePoint has always been a great resource for all facets of web design &#8230; excellent book series, poignant articles and the like.&#160; Here&#8217;s a few excerpts that caught my eye today &#8230;
Forum Post: design or develop first?
Q: &#34;just wondering if I should go about designing my site first before implementing any back end capabilities. i [...]]]></description>
			<content:encoded><![CDATA[<p><a title="SitePoint" href="http://www.sitepoint.com">SitePoint</a> has always been a great resource for all facets of web design &#8230; excellent book series, poignant articles and the like.&#160; Here&#8217;s a few excerpts that caught my eye today &#8230;</p>
<p><strong>Forum Post: <a href="http://www.sitepoint.com/forums/showthread.php?t=557773">design or develop first?</a></strong></p>
<blockquote><p>Q: &quot;just wondering if I should go about designing my site first before implementing any back end capabilities. i like to keep things organized and plan ahead. It would seem to make sense to create the static site first but i am somewhat unsure if I were to design first and end up redesigning to fit everything I plan on adding later, in terms of dynamic content.&quot;</p>
<p>R: &quot;The approach you take probably depends on whether you are more of a designer or more a developer. A developer would tend to do the back end first without worrying too much about exactly how the page will look until after they know that it all functions properly. A designer would probably get the page looking exactly how they want and then worry about how to get it to function correctly. If you have separate people performing each of these tasks then all that needs to be done first is to define the interface between the two so that the two almost separate parts can be done separately in the knowledge that they will fit together once both are done.&quot;</p>
</blockquote>
<p><strong>Article: <a href="http://www.sitepoint.com/article/html-or-xhtml-does-it-matter">HTML or XHTML: Does It Really Matter?</a></strong> (excerpted, July 9, 2008 by James Edwards)</p>
<blockquote><p>HTML was originally conceived as a <strong>semantic</strong> language, in which elements should describe only the <em>meaning</em> of their content, not the presentation. However, this good intention didn&#8217;t hold up very long. </p>
<p>In 1997, the HTML 4.0 specification was published, and although it continued to include presentational markup that had been instigated directly by vendors, it also began a push to clean up HTML, calling some markup &#8220;deprecated&#8221; and suggesting that it not be used.</p>
<p>XHTML 1.0 came along in 2000 as formalization of HTML 4 into <a href="http://www.sitepoint.com/glossary.php?q=X#term_3">XML</a>. XML itself had been standardized in 1998 as a general specification for defining markup languages, and was a stricter and simpler offshoot of SGML, the Standard Generalized Markup Language from which HTML itself was originally derived.</p>
<p>XHTML <em>is</em> still worth using, because it&#8217;s a transitional standard that moves us towards a pure-XML Web. XML is inherently better than SGML, because it&#8217;s simpler and stricter, and much easier to parse (once you&#8217;ve understood its rules). I don&#8217;t know from where we&#8217;ve adopted the idea that we should be forgiving of markup errors, but I don&#8217;t share that view.</p>
</blockquote>
<p>And some other choice reads:</p>
<ul>
<li><a href="http://www.sitepoint.com/blogs/2008/07/30/custom-web-fonts-pick-your-poison">Custom Web Fonts: Pick Your Poison</a> by Kevin Yank</li>
<li><a href="http://www.sitepoint.com/article/fancy-form-design-css">Fancy Form Design Using CSS</a> by Cameron Adams</li>
<li><a href="http://www.sitepoint.com/article/ten-tips-greener-web-designer">10 Tips for Being a Greener Web Designer</a> by Matthew Magain</li>
</ul>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Fresources%2Fgood-stuff-at-sitepoint%2F', 'Good+Stuff+at+SitePoint')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusred.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/resources/good-stuff-at-sitepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Whadya Know and Wheredya Fit?</title>
		<link>http://www.matsays.com/misc/resources/whadya-know-and-wheredya-fit/</link>
		<comments>http://www.matsays.com/misc/resources/whadya-know-and-wheredya-fit/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 06:56:11 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD402 Server Side Scripting]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/?p=445</guid>
		<description><![CDATA[Ever wondered how your skillset stacks up in the scope of all programming languages?  I&#8217;ve presented this before in PHP class just to illustrate the popularity (as a result of the usability and easy learning curve) of the language but as my own work has drifted into several others, it&#8217;s always interested me where my [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mobimeet.com/wp-content/uploads/2008/07/tpci_trends.png"></a>Ever wondered how your skillset stacks up in the scope of all programming languages?  I&#8217;ve presented this before in PHP class just to illustrate the popularity (as a result of the usability and easy learning curve) of the language but as my own work has drifted into several others, it&#8217;s always interested me where my skills stand.  In any case, TIOBE is a Dutch company specializing in assessing and tracking the quality of software.  They produce the <a title="TIOBE Index" href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">TIOBE Index</a> a monthly updated list of how languages stack up to each other.  Below is shown the current trend graph and the top 10 languages as of July 2008.</p>
<p style="text-align: center;"><a title="TIOBE Index" href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"><img class="alignnone size-full wp-image-446 aligncenter" title="tpci_trends" src="http://www.mobimeet.com/wp-content/uploads/2008/07/tpci_trends.png" alt="" width="500" height="375" border="0" /></a><br/><small><br />
TIOBE Index, July 2008 by TIOBE bv</small></p>
<table id="Table2" class="TpciTable" align="center" style="border: solid 1px #777;">
<tbody>
<tr>
<th colspan="2" align="center" valign="bottom">Position</th>
<th rowspan="2" align="center" valign="bottom">Delta</th>
<th rowspan="2" align="center" valign="bottom">Language</th>
<th rowspan="2" align="center" valign="bottom">Ratings<br />
Jul 2008</th>
<th rowspan="2" align="center" valign="bottom">Delta<br />
Jul 2007</th>
<th rowspan="2" align="center" valign="bottom">Status</th>
</tr>
<tr>
<th align="center" valign="bottom">Jul 2008</th>
<th align="center" valign="bottom">Jul 2007</th>
</tr>
<tr height="25">
<td align="center">1</td>
<td align="center">1</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/Java.html">Java</a></td>
<td align="center">21.345%</td>
<td align="center">+0.33%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">2</td>
<td align="center">2</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/C.html">C</a></td>
<td align="center">15.945%</td>
<td align="center">-0.42%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">3</td>
<td align="center">3</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/C__.html">C++</a></td>
<td align="center">10.693%</td>
<td align="center">+0.19%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">4</td>
<td align="center">4</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/(Visual)_Basic.html">(Visual) Basic</a></td>
<td align="center">10.447%</td>
<td align="center">+0.72%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">5</td>
<td align="center">5</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/PHP.html">PHP</a></td>
<td align="center">9.525%</td>
<td align="center">+0.87%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">6</td>
<td align="center">6</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/Perl.html">Perl</a></td>
<td align="center">5.131%</td>
<td align="center">-0.20%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">7</td>
<td align="center">8</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Up.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/Python.html">Python</a></td>
<td align="center">4.973%</td>
<td align="center">+1.95%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">8</td>
<td align="center">7</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Down.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/C_.html">C#</a></td>
<td align="center">4.000%</td>
<td align="center">+0.29%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">9</td>
<td align="center">9</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/JavaScript.html">JavaScript</a></td>
<td align="center">2.757%</td>
<td align="center">+0.24%</td>
<td align="left">  A</td>
</tr>
<tr height="25">
<td align="center">10</td>
<td align="center">10</td>
<td align="center"><img src="http://www.tiobe.com/tiobe_index/images/Same.gif" border="0" alt="" /></td>
<td><a href="http://www.tiobe.com/content/paperinfo/tpci/Ruby.html">Ruby</a></td>
<td align="center">2.735%</td>
<td align="center">+0.64%</td>
<td align="left">  A</td>
</tr>
</tbody>
</table>
<p>(For my students) In case you&#8217;re wondering why HTML is not included in this list, the definition used by the index is:</p>
<blockquote><p>A language is considered a programming language if it is Turing complete. As a consequence, HTML and XML are not considered programming languages. This also holds for data query language SQL. SQL is not a programming language because it is, for instance, impossible to write an infinite loop in it. On the other hand, SQL extensions PL/SQL and Transact-SQL are programming languages. ASP and ASP.NET are also not programming languages because they make use of other languages such as JavaScript and VBScript or .NET compatible languages. The same is true for frameworks such as Ruby on Rails, ColdFusion, Cocoa, and technologies such as AJAX. Finally, we have also excluded assembly languages, although Turing complete, because they have a very different nature.</p></blockquote>
<p>And finally, for those of you in my weekend classes&#8230;yes, it&#8217;s 2 hours after class and yes, I am still up.  Good night.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Fresources%2Fwhadya-know-and-wheredya-fit%2F', 'Whadya+Know+and+Wheredya+Fit%3F')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/resources/whadya-know-and-wheredya-fit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sexy Stylesheets</title>
		<link>http://www.matsays.com/misc/tricks/sexy-stylesheets/</link>
		<comments>http://www.matsays.com/misc/tricks/sexy-stylesheets/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 08:05:07 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[stylesheets]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/?p=412</guid>
		<description><![CDATA[ Oh yes, oh yes!  OK, a little much but this was a great article by CSS guru (yes, guru&#8230;if you don&#8217;t believe me, this beyotch young lady is one of the brains behind The Art &#38; Science of CSS, a fantastic anthology of styling examples).  Go here for the original article&#8230;(by Jina Bolton)
&#8220;Lately, I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FArt-Science-CSS-Jonathan-Snook%2Fdp%2F0975841971%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1214120635%26sr%3D8-1&amp;tag=mobimeet-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"><img style="margin-left:10px;margin-bottom:5px;border:solid 1px #777;" src="http://www.mobimeet.com/wp-content/uploads/2008/06/41c84glfctl_sl500_ss75_.jpg" alt="" align="right" /></a> Oh yes, oh yes!  OK, a little much but this was a great article by CSS guru (yes, guru&#8230;if you don&#8217;t believe me, this <span style="text-decoration: line-through;">beyotch</span> young lady is one of the brains behind <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FArt-Science-CSS-Jonathan-Snook%2Fdp%2F0975841971%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1214120635%26sr%3D8-1&amp;tag=mobimeet-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">The Art &amp; Science of CSS</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=mobimeet-20&amp;l=ur2&amp;o=1" border="0" alt="" width="1" height="1" />, a fantastic anthology of styling examples).  <a title="Creating Sexy Stylesheets" href="http://thinkvitamin.com/features/design/creating-sexy-stylesheets">Go here for the original article</a>&#8230;(by Jina Bolton)</p>
<p>&#8220;Lately, I have taken interest in discussing methods of creating sexy stylesheets. While CSS can be used to create sexy websites, writing CSS can actually be an artform by itself. The way in which CSS is created, structured, and maintained can be a thing of beauty.</p>
<p>So how does one create sexy stylesheets? What characteristics would your stylesheets have?<span id="more-412"></span></p>
<p>A few months ago, I had the opportunity to present on this very topic at <a href="http://webvisionsevent.com/">Web Visions</a> 2007 conference in Portland, Oregon. In preparing my presentation, I surveyed twelve people who work in web design and development. The results of this survey, combined with my own work experiences helped me to compile a list of essentials to remember when creating stylesheets.&#8221;</p>
<h3>01. Keep CSS out of the markup.</h3>
<p>Linking and/or importing stylesheets would seem to be a no-brainer to the intermediate or advanced CSS developer, but I want to stress why this is so important. I’ve seen many sites start out with clean, well-organized CSS files but then get littered as time goes by, with embedded or even inline styles (due to fast updates needed on short deadlines, or possibly sometimes even pure laziness).</p>
<p>Imagine that you are working on an extremely large-scale website with hundreds of ways content can appear. You have fast deadlines, so you opt for making “quick fixes” or updates by using embedded or inline CSS. Years go by, and this habit continues… Until one day you’re told the site is being completely redesigned (but all the content is to remain the same), and you only have a week to build it (including testing).</p>
<p>Normally, this would have been a fairly simple task of updating the stylesheet(s). Except you have years worth of “quick fixes” scattered throughout the site — and no way to remember where they all are. So now you have to either a) find a way to clean everything up and get everything styled for the redesign in one week (Good luck!), or b) find a new job.</p>
<p>Don’t make your job harder than it really has to be. Linking and/or importing your stylesheets is not optional. Create it clean, keep it clean, and you’ll be much happier.</p>
<p>NOTE: Be careful of adding too many linked and/or imported stylesheets in your markup. If you’re tempted to create a new stylesheet every time you make an update or add new content, you’re not doing yourself any favors. Excessive linking and/or importing can make bug-fixing difficult, and make your styles harder to maintain. It is understandable to want separate stylesheets for different sections or components for larger websites (I’ll go more into that later). Just be careful that you don’t go overboard.</p>
<p>It is worth mentioning that linking too many stylesheets requires additional HTTP requests, which can add up, and <a href="http://developer.yahoo.com/performance/rules.html#num_http">potentially hinder performance</a>. Also, <a href="http://www.juniper.net/security/auto/vulnerabilities/vuln3394.html">Microsoft Internet Explorer 6 has a limit</a> of 32 linked stylesheets.</p>
<h3>02. Semantics is not just a buzz word.</h3>
<p>You know I have to bring it up; semantics are your best friend. Beyond choosing the most appropriate, meaningful elements to describe your content, make sure also that you’re choosing <a href="http://www.stuffandnonsense.co.uk/archives/whats_in_a_name_pt2.html">semantic class and ID attribute values</a>. Besides being the “right thing to do,” it really does make your life easier (and it makes the lives of your fellow team members easier too– if you working as part of a team). Take a look at the following rule:</p>
<pre><code>.l13k { color: #369; }</code></pre>
<p>If you were new to the job, and you saw that in the CSS file, are you going to know right away what that class is for? Most likely not. This class name could be an abbreviation for something, but there’s no real way you can tell right off the bat. Alternatively, maybe you put it there, so you know what it means, right? Today. But will you know what it means three years from now?</p>
<p>Now, let’s take a look at this rule:</p>
<pre><code>.left-blue { color: #369; }</code></pre>
<p>You might immediately know what purpose this class selector serves as you know exactly where the left-side blue module appears. So it would appear that this works. Until along comes that redesign you have to build in a week, as I mentioned earlier. In the redesign, this module is now to be positioned on the right, and colored red. The class attribute values no longer makes any sense, so now you have to either change all your attribute values, or leave it as it is (which could lead to mass confusion).</p>
<p>It is always best to refrain from using colors (either the color name or its hex value) or width/height dimensions in your class attribute values. You should also avoid any attribute values that are presentational (such as “box”).Presentational attributes defeat the purpose of separating presentation from content.</p>
<p>Finally, let’s look at this more appropriately named rule:</p>
<pre><code>.product-description { color: #369; }</code></pre>
<p>Here you can see that the rule styles product descriptions, no matter how many times your design changes. Clarity is a beautiful, beautiful thing.</p>
<h3>03. Take advantage of commenting.</h3>
<p>Commenting your CSS files can be a great deal of help to you and others during development if you use comments in creative and meaningful ways. At the most basic level comments provide little reminders why a certain rule is used. But you can use comments to really help improve organization and efficiency.</p>
<p><strong>Reminders and notes</strong></p>
<p>The common approach for commenting, leaving reminders and notes for yourself and other developers can help avoid confusion later. Keep these brief and simple. For example:</p>
<pre><code>
/* Turn off borders for linked images */
img { border: 0; }
</code></pre>
<p><strong>Time stamp and signature</strong></p>
<p>Some designers and developers also note the date and time that the CSS file was last updated, along with their name or initials. This information can provide a quick indicator of who to contact, as well as how up-to-date the file is.</p>
<pre><code>
/* Sushimonster Typography Styles
   Updated: Thu 10.18.07 @ 5:15 p.m.
   Author:     Jina Bolton
   ----------------------------------------------------*/
</code></pre>
<p>Depending on the project, this can be a good idea, particularly if you are working on a team. Keep in mind that some organizations require leaving this type of information out (some companies prefer to keep names and dates out of files), so it is best to find out if there is a mandate on this sort of thing.</p>
<p><strong>Organization</strong></p>
<p>It’s a good idea to use comments to indicate the different sections within a CSS file. For example, if all header styles are grouped together, you can use a comment to section these styles off from the next section’s styles:</p>
<pre><code>
/* HEADER
   ----------------------------------------------------*/
</code></pre>
<p>I’ll go more into this a little later, when discussing “Separating style types.”</p>
<p><strong>Comment flagging</strong></p>
<p>If you have your CSS file organized into sections as I described above, comment flagging can also be useful to make it easier using FIND to skip down or up to the parts of the file you want to see. You can use a character (such as an equal sign [=]), along with a keyword (typically the name of the section, such as “HEADER”) to provide “anchors” in your CSS file:</p>
<pre><code>
/* =HEADER
   ----------------------------------------------------*/
</code></pre>
<p>This is particularly useful in long and complex stylesheets. <a href="http://www.stopdesign.com/log/2005/05/03/css-tip-flags.html">You can read more about this at Stop Design</a>.</p>
<p><strong>Reference</strong></p>
<p>A less common, but nonetheless useful approach is to use comments as reference guide. One example of this might be to include a color guide as you can see in <a href="http://orderedlist.com/">Steve Smith’s</a> CSS file:</p>
<pre><code>
/* COLORS
   Body Background:       #2F2C22
   Main Text:             #B3A576
   Links:                 #9C6D25
   Dark Brown Border:     #222019
   Green Headline:        #958944
*/
</code></pre>
<p>You should place this guide at the top of your CSS file to help you remember what color values you use throughout your site. Another example is of an index-like approach. Here you can define different sections so that you can jump down to them (perhaps by using comment flagging). Here’s one example:</p>
<pre><code>
/* GENERIC
   HEADER
   SIDEBAR
   FORMS
   TABLES
   FOOTER
*/

/* =GENERIC
   ----------------------------------------------------*/
</code></pre>
<h3>04. Know when to use conditional comments or hacks.</h3>
<p>There are many articles regarding the <a href="http://tantek.com/log/2005/11.html">problem with hacks</a>, and why <a href="http://www.456bereastreet.com/archive/200510/stop_using_css_hacks_now/">Conditional Comments are a better way</a> to handle Internet Explorer issues. Then there are <a href="http://meiert.com/en/blog/20070201/why-conditional-comments-are-bad-repeat-bad/">articles that say otherwise</a>. While I agree that Conditional Comments can be a much better solution than littering your CSS file with hacks, only recently have I come to realize there are instances where they are actually not the most appropriate solution.</p>
<p>Imagine that you want to set a minimum height for an element. The IE6 developers did not implement min-height, so you know that you can use height, which will be treated the same way. Does it make sense to create a whole new stylesheet, and inject it by way of Conditional Comments in your markup, when all you need is this one rule? Would it make better sense to keep the min-height and height rules together, and opt for a small “hack” within the same CSS file? In this case, I would consider it less efficient to use Conditional Comments.</p>
<p>Another thing to consider: if you have multiple places that your styles are located, using multiple CSS files and Conditional Comments can make your debugging process more difficult. Also, if you need to alter something (perhaps the min-height value in the above-mentioned scenario), you have to open more than one file to make this change. In many cases, this may not be such a big deal for you, but imagine if you have something defined in your main CSS file, and then redefined in 3 different IE stylesheets. That could turn out to be a hassle later down the road, especially if another developer making the edit doesn’t realize that these overrides exist.</p>
<p>If you do use Conditional Comments, I recommend leaving a comment in your main stylesheet letting you or a fellow developer know that an IE-specific rule exists. That way when you have to edit a height or something of that nature, you know that you have more than one file to open.</p>
<p>As always, if you do use hack, remember that browser updates can change what works later down the road, and the hack you use now may not work later versions.</p>
<h3>05. Organizing selectors and declarations</h3>
<p>Always, always keep your CSS clean and organized. I prefer organizing my selectors by style groups:</p>
<ul>
<li>reset styles</li>
<li>typography styles</li>
<li>layout styles (header, content, footer, etc.)</li>
<li>module or widget styles</li>
<li>etc.</li>
</ul>
<p>Then, within each of those groups, I organize selectors by DOM hierarchy (working down the page, from the outside in):</p>
<ul>
<li>any parent styles (containing elements, working outside-in)</li>
<li>block-level element styles (paragraphs, lists, etc.)</li>
<li>inline element styles (links, abbreviations, etc.)</li>
<li>etc.</li>
</ul>
<p>Then within those, I work by element types:</p>
<ul>
<li>paragraphs</li>
<li>blockquotes</li>
<li>addresses</li>
<li>lists</li>
<li>forms</li>
<li>tables</li>
<li>etc.</li>
</ul>
<p>Finally, I prefer to organize my CSS declarations by style type:</p>
<ul>
<li>positioning (with coordinates) styles</li>
<li>float/clear styles</li>
<li>display/visibility styles</li>
<li>spacing (margin, padding, border) styles</li>
<li>dimensions (width, height) styles</li>
<li>typography-related (line-height, color, etc.) styles</li>
<li>miscellaneous (list-style, cursors, etc.) styles</li>
</ul>
<p>Some people like to organize declarations alphabetically. It doesn’t make sense to me, but it might make perfect sense to you. Whichever method you choose, stick with it, and be consistent.</p>
<h3>06. Creating a framework</h3>
<p>When it comes to developing CSS, If you find yourself doing the same things repeatedly, it is a good idea to consider <a href="http://www.alistapart.com/articles/frameworksfordesigners">creating a library or framework</a>. A framework can be made up of a group of stylesheets that act as a foundation for your site, and help speed up your development time. Typical stylesheets you may find in your framework might include:</p>
<ul>
<li>screen.css &#8211; A screen CSS file can either have all your styles you want to be used for on screen, and/or can import additional styles, such as the following:
<ul>
<li>reset.css &#8211; A reset CSS file can be used to “reset” all the default browser styling, which can help make it easier to achieve cross-browser compatibility.</li>
<li>typography.css &#8211; A typography CSS file can define your typefaces, sizes, leading, kerning, and possibly even color.</li>
<li>grid.css &#8211; A grid CSS file can have your layout structure (and act as the wireframe of your site, by defining the basic header, footer, and column set up).</li>
</ul>
</li>
<li>print.css &#8211; A print CSS file would include your styles you want to be used when the page is printed.</li>
</ul>
<p>One example of a framework is the <a href="http://code.google.com/p/blueprintcss/">Blueprint framework</a> put together by <a href="http://bjorkoy.com/">Olav Bjørkøy</a> (which based itself off of work developed by authors including <a href="http://jeffcroft.com/">Jeff Croft</a> and <a href="http://meyerweb.com/">Eric Meyer</a>). Another popular framework can be found at the <a href="http://developer.yahoo.com/yui/">Yahoo! User Interface Library</a>. Many developers do feel that these pre-built frameworks contain markup and CSS that are a bit “bloated” and also that they contain presentational class attribute names.</p>
<p>NOTE: As I was writing this article in its draft stages, Jeff Croft released the post <a href="http://www2.jeffcroft.com/blog/2007/nov/17/whats-not-love-about-css-frameworks/">What’s not to love about CSS frameworks?</a>, in which <a href="http://www2.jeffcroft.com/blog/2007/nov/17/whats-not-love-about-css-frameworks/#c24117">he mentions in the comments</a> he was told that people think I am strongly against frameworks. I’m not sure where this came from, but as <a href="http://www2.jeffcroft.com/blog/2007/nov/17/whats-not-love-about-css-frameworks/#c24064">I stated in my response</a>, I am not against CSS frameworks, and am very much for them.</p>
<p>For the best results, I recommend that you create your own framework that works best for you or your organization.</p>
<h3>07. Balance readability and optimization.</h3>
<p>Styles in formatting vary from developer to developer. Some developers use formatting styles that offer great readability, and then optimize the files (removing comments, spaces, tabs, carriage returns, etc.) before pushing the file live. This is a great technique and one I would recommend (done carefully). However, if you are somehow in a situation where you can’t really go through those steps, try to find a style that balances readability and optimization. <a href="http://orderedlist.com/articles/single-line-css">Steve Smith has a great suggestion</a> that offers a little bit of both.</p>
<p>Also, consider using hyphens instead of underscores. <a href="http://microformats.org/">Microformats</a> use hyphens as a standard separator, and certain older browsers have a hard time with them. You can read more about this at <a href="http://developer.mozilla.org/en/docs/Underscores_in_class_and_ID_Names">Underscores in class and ID Names</a>.</p>
<h3>08. Master your text editor.</h3>
<p>Just as an artist has proper tools they know well, it’s important for a designer/developer to know the tools they use well. For CSS, that would be the editor you are using.</p>
<p>There are many text editors to choose from: TextMate, Coda, BB Edit, TextPad, DreamWeaver, etc. I’m not here to tell you which one to pick; they all have their pros and cons, and the right editor for you is up for you to decide. However, once you have decided on a text editor, make sure you learn everything you can about it. Find out what the shortcuts are, and learn all the tips and tricks you can.</p>
<p>Mastering your text editor is the best way to speed up your development time, and help you be more much more efficient when creating sexy stylesheets.</p>
<h3>09. Use version control.</h3>
<p>Smoother maintainability is also an important part of creating sexy stylesheets. This is where <a href="http://en.wikipedia.org/wiki/Revision_control">version control</a> can be your best friend. It’s not only helpful for teams, but it can be a lifesaver even for the sole designer/developer.</p>
<p>Some applications have built-in mechanisms for source control. DreamWeaver uses a check-in/check-out system (that can help make sure that a developer doesn’t edit a file that is already currently being edited), as well as synching capabilities (which lets you sync and merge your local files with your remote files, or vice versa). This can be very handy, but are somewhat limited.</p>
<p>Subversion (SVN) or Concurrent Versions System (CVS) are great tools to use for more robust management, with additional options, like being able to revert, view changes (which is extremely helpful for teams — you can track who added/edited/removed code and when they did it), and resolving conflicts. There’s a <a href="http://snook.ca/archives/servers/hosted_subversion/">great article by Jonathan Snook, called “Hosted Subversion”</a> you can read for more information on how to set this up quickly and easily.</p>
<h3>10. Create and maintain a style guide.</h3>
<p>While in some cases, a style guide is an author’s guide with grammar rules and writing standards, it can also be used to outline standards for design, development, and content. A style guide is a great way to have a reference manual that can clarify rules on typography, grid, color, image sizes, etc.</p>
<p>When creating a style guide, it is a great idea to provide reference for the markup and CSS. This reference can be used as a handbook for the development team and future developers. It can include defined layouts, in which you can list the different layouts that can be used, and provide the associated markup and styles.</p>
<p>Finally, you can also leave steps for quality assurance for developers, (such as checking validation and accessibility) to ensure the highest quality.</p>
<h3>Conclusion</h3>
<p>Being an expert in CSS is so much more than having advanced CSS skills (i.e.: fully understanding the cascade, the box model, and how browsers work). I encourage you to think about ways you can constantly and consistently improve maintainability and efficiency. Think beyond what is designed in the comp, even if that is all that you have been provided. Make the CSS intelligent and plan for the future. Overall elegance in workflow is essential to master.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Ftricks%2Fsexy-stylesheets%2F', 'Sexy+Stylesheets')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/tricks/sexy-stylesheets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Steps To Top 10 Rankings In Google</title>
		<link>http://www.matsays.com/misc/10-steps-to-top-10-rankings-in-google/</link>
		<comments>http://www.matsays.com/misc/10-steps-to-top-10-rankings-in-google/#comments</comments>
		<pubDate>Fri, 13 Jul 2007 17:00:55 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD325 UCD I]]></category>
		<category><![CDATA[IMD335 UCD II]]></category>
		<category><![CDATA[IMD412 Sr. Project Defense]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Toolbox]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/10-steps-to-top-10-rankings-in-google</guid>
		<description><![CDATA[By Titus Hoskins (c) 2007
Original Article at SiteProNews
Most webmasters go totally &#8220;gaga&#8221; for top 10 rankings in Google. And for good reason, Google is the most dominant search engine on the net and will deliver the largest amount of traffíc.
More importantly, those same webmasters will also inform you, getting top 10 rankings in Google often [...]]]></description>
			<content:encoded><![CDATA[<p>By Titus Hoskins (c) 2007<br />
<a href="http://www.sitepronews.com/archives/2007/jul/13prt.html" title="10 Steps To Top 10 Rankings In Google">Original Article at SiteProNews</a></p>
<p>Most webmasters go totally &#8220;gaga&#8221; for top 10 rankings in Google. And for good reason, Google is the most dominant search engine on the net and will deliver the largest amount of traffíc.</p>
<p>More importantly, those same webmasters will also inform you, getting top 10 rankings in Google often means your site will prove profitable. Mainly because obtaining targeted traffíc is usually your first obstacle in creating a viable online business. In other words, if you get top ten listings in Google for good searchable keywords, it is almost impossible not to earn money.<span id="more-129"></span></p>
<p><strong><u>How To Proceed?</u></strong></p>
<p>First, you must know the rudimentary basics of how keywords work. Keywords and keyword phrases are the exact words someone types into a search engine to find what they&#8217;re looking for online. If you have a site on &#8220;dog training&#8221; then your goal is to get a top 10 ranking for the keywords &#8220;dog training&#8221;.</p>
<p>Now if no one searches for &#8220;dog training&#8221; it would be a useless keyword, you would get no traffíc no matter how perfectly your site is optimized for that keyword.</p>
<p><strong><u>How Do You Know If A Keyword Is Good?</u></strong></p>
<p>To find out, you have to do some keyword research on your particular keywords. Many professional online marketers use keyword research software like Brad Callen&#8217;s Keyword Elite. However, you can also use the keyword suggestion tools supplied by Google Adwords or Overture. Try here: <a href="http://www.digitalpoint.com/tools/suggestion/">http://www.digitalpoint.com/tools/suggestion/</a></p>
<p>Now if you chëck &#8220;dog training&#8221;, you will find it receives around 4,469 searches each day. That&#8217;s a lot of traffíc but you must realize that it may be too good, or rather too competitive for your purposes, especially if you have a new site.</p>
<p><strong><u>Biggest Mistake When Choosing Keywords</u></strong></p>
<p>The most common mistake most novice webmasters make is targeting keywords which are too competitive. You simply will not be able to compete or place for extremely competitive keywords. Well established sites and businesses with very deep pockets have the resources to completely dominate those keywords.</p>
<p>While it is not entirely futile nor a waste of time to concentrate your efforts on highly competitive keywords, you will have better success if you target low to medium competitive keywords.</p>
<p><strong><u>Long Tail Keyword Marketing</u></strong></p>
<p>Besides online marketers have discovered that longer keyword phrases are usually the most lucrative. These phrases deliver traffíc which is better targeted and more likely to convert into a sale. &#8220;Dog hunting training&#8221; which gets around 100 searches a day will be more targeted than the general term &#8220;dog training&#8221; and if you have a site devoted to training hunting dogs then this keyword phrase may convert better for you.</p>
<p>Always keep this &#8220;Long Tail&#8221; keyword strategy in the back of your mind as you implement the following steps to achieve your own Top 10 Rankings in Google.</p>
<p><strong>1. Make A Master Keyword Líst<br />
</strong>Your first step is to make a master líst of the keywords you wish to target. Obviously these should be closely related to the theme of your site. Chëck the keyword competition by seeing how many sites are listed in Google for that keyword. Webmasters should also chëck the Google PageRank of the sites that hold the top 10 positions. If all those sites are PR6 and above it may be hard to get ranked high for your keywords.</p>
<p><strong>2. Choose Related Keywords<br />
</strong>Once you have your master líst of keywords, find long tail related keywords to target. Again, chëck out the competition and daily searches made for each chosen keyword.</p>
<p><strong>3. Use Quality Content For Your Keywords<br />
</strong>Creating quality content should always be your main goal. Write for actual visitors who will see and read your content. First and foremost you must have good useful content that your visitors will use themselves and recommend to their friends or colleagues. Tie this quality content in with your chosen keywords. Use one keyword phrase per page.</p>
<p><strong>4. Keyword In Domain Name, Title and URLs<br />
</strong>Having your keyword in your domain name will score big points from search engines. Plus, each page of content should contain your keywords in the title &amp; meta tags for that page. Most experts also suggest you have your keyword in the URL and use hyphens to separate your keywords. Although the author has gotten good results by using an underscore and htm in URLs.<br />
Example: <a href="http://www.yoursite.com/your_keyword.htm">www.yoursite.com/your_keyword.htm</a></p>
<p><strong>5. Do On Page Optimization<br />
</strong>Keyword ratio is a much discussed topic by SEO experts and many suggest you should have your keyword in the H1 or headline title of your page. Sprinkle your keyword and variations of it throughout your page. Don&#8217;t over do it but make sure the robot/spiders will clearly discover what your page is about. Many webmasters make sure they include their main keyword in the first and last 25 words on their pages.</p>
<p><strong>6. Use Traffíc Modules<br />
</strong>One technique that works extremely well in Google is clustering a closely related topic or subject into a distinct separate section on your site. For example, if you have a marketing site, you could create a whole section on article marketing where you would have 50 to 100 keyworded pages all relating to your subject. Writing articles, formatting articles, submitting articles, article software&#8230; place a keyword linked menu on each page to connect all your pages together.</p>
<p>Keep in mind, your main objective is to supply quality information to your visitors. One reason Google may favor this type of structure is because they want quality content returned in their SERPs.</p>
<p><strong>7. Try Article Marketing<br />
</strong><span style="float:right;width:200px;border:solid 1px #999;background-color:#EEF;margin-left:10px;margin-bottom:10px;padding:8px;"><em><strong>Side Note</strong></em>: iStreamPlanet uses this tactic widely &#8211; the last article I posted (my shameless promotion) was a reprint of a press release that was released July 10th (2007).  As of July 13th, the search term &#8220;istreamplanet silverlight&#8221; in Google yields 173 returns which pushed several pages past the PR6 mark into the elusive PR7 realm.</span>Article marketing is writing short informative articles on keyword topics related to your sites. You then submit these helpful keyworded articles to ezine directories on the web. When your articles are picked up by related sites, you receive quality One-Way links. The higher the quality of your article, the more links you will receive.</p>
<p>Another ranking tactic to use: If you&#8217;re just starting out your site will probably have a low PR rank and you will find it hard to rank for even modest keywords. That&#8217;s why it&#8217;s useful to take advantage of the higher PageRank of the major ezine directories. Your keyworded articles on these high PR sites will get picked up by Google and displayed in the top 10 rankings. Now the displayed URL will be the article directory site but the links in the resource box will be pointing back to your site. Over time this article marketing technique will raise your own site&#8217;s rankings for those keywords. Simple but effective.</p>
<p><strong>8. Anchor Text And One Way Links<br />
</strong>Off page optimization is important in obtaining high rankings in Google. Getting quality One-Way links is very important. Anchor Text simply refers to &#8220;the underlined clicked on words&#8221; in your links. Most webmasters include their keywords in their anchor text as this tells the search engines exactly what the links are about.</p>
<p><strong>9. Tags, Blogging And Web 2.0<br />
</strong>Take advantage of Web 2.0 by using blogs, RSS feeds and the social bookmarking sites like Reddit and Digg. Try AddThis.com for a simple social bookmarking system. At the very least your site should have a blog and RSS feed attached to it as this is an effective way of boosting your keyword rankings.</p>
<p>Tags have become very important for getting higher rankings. Keep in mind, in free blogging software such as WordPress, categories will automatically be seen as tags. Blogger, which is owned by Google, now has a form where you put your keywords (tags) for each post you make.</p>
<p><strong>10. PPC vs Organic Search<br />
</strong>Of course, one of the fastest ways to get your links displayed on Google is to pay for them by using Google Adwords. Your ad and links will sit side by side with the organic link results. In Pay Per Clíck advertising you bid or pay so much per clíck for your keywords and you only pay when someone clicks your links. But smart marketers also know since you&#8217;re getting millíons of impressions advertising your products, acquiring name recognition and branding through PPC advertising can be a major side-benefit.</p>
<p>However, most webmasters would say that organic links (SERPS) will return better traffíc than paid links or advertising. In most cases, this may be true because Google&#8217;s organic rankings are becoming more respected and more trusted by users. They simply carry more weíght with surfers.</p>
<p>This makes it even more beneficial to obtain top 10 rankings for your keywords in Google. Depending on the competitiveness of your chosen keywords reaching the first page listing or even the favored number one spot is well within any webmaster&#8217;s reach. Just go for it. The rewards are well worth your efforts.</p>
<p><small><strong><u>About The Author<br />
</u></strong>The author is a full-time online marketer who contributes his high rankings in Google as the major source of his online income. For the latest web marketing tools try: <a href="http://www.MarketingToolGuide.com" title="MarketingToolGuide">MarketingToolGuide.com</a>. For the latest Internet Marketing Strategies go to: <a href="http://www.BizwareMagic.com" title="BizwareMagic">BizwareMagic.com</a> . Titus Hoskins. [This article may be freely distributed if this resource box stays attached.]</small></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2F10-steps-to-top-10-rankings-in-google%2F', '10+Steps+To+Top+10+Rankings+In+Google')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/10-steps-to-top-10-rankings-in-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sorting XML-based Multi-Dimensional Data in ActionScript</title>
		<link>http://www.matsays.com/misc/tricks/sorting-multi-dimensional-data-in-actionscript/</link>
		<comments>http://www.matsays.com/misc/tricks/sorting-multi-dimensional-data-in-actionscript/#comments</comments>
		<pubDate>Fri, 01 Jun 2007 16:30:46 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD402 Server Side Scripting]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/tricks/sorting-multi-dimensional-data-in-actionscript</guid>
		<description><![CDATA[A question came up today about sorting matrices of data in ActionScript.  The resolution was rather simple but I&#8217;ve heard through the grapevine that [students] might have some utility for this, so here it is.  And since we&#8217;re at it, let&#8217;s also add in the idea that the data is being fed from an external [...]]]></description>
			<content:encoded><![CDATA[<p>A question came up today about sorting matrices of data in ActionScript.  The resolution was rather simple but I&#8217;ve heard through the grapevine that [students] might have some utility for this, so here it is.  And since we&#8217;re at it, let&#8217;s also add in the idea that the data is being fed from an external XML document.</p>
<p>Here&#8217;s the scenario that we faced.  iStreamPlanet produces a software application that is run during live poker tournaments which places an overlay on top of the encoded video similar to poker tournaments you might see on TV.  The actual system uses an interface built in C++ that writes an XML file as it is updated, which in turn is read by a Flash component layer and then drawn into the video card (the result is something that looks like the image below).</p>
<p style="text-align: center"><img src="http://www.mobimeet.com/wp-content/uploads/2007/06/wsopcaesers.jpg" alt="WSOP Tournament at Caesar’s Palace broadcast live by iStreamPlanet" /></p>
<p><span id="more-101"></span>For those of you who have been through any of the scripting classes, by now you should recognize that this needs a multi-dimensional array to work best.  Don&#8217;t be scared off by multi-dimensional arrays &#8211; think of them as just Excel spreadsheets.  So if you have a spreadsheet that looks something like this:</p>
<table>
<tr bgColor="#cccccc">
<td style="text-align: center; border: #777 1px solid">&nbsp;</td>
<td style="text-align: center; border: #777 1px solid"><strong>A</strong></td>
<td style="text-align: center; border: #777 1px solid"><strong>B</strong></td>
<td style="text-align: center; border: #777 1px solid"><strong>C</strong></td>
<td style="text-align: center; border: #777 1px solid"><strong>D</strong></td>
</tr>
<tr>
<td style="background-color: #ccc; text-align: center; border: #777 1px solid"><strong>1</strong></td>
<td style="text-align: center; border: #777 1px solid">Hat</td>
<td style="text-align: center; border: #777 1px solid">Cat</td>
<td style="text-align: center; border: #777 1px solid">Rat</td>
<td style="text-align: center; border: #777 1px solid">Sat</td>
</tr>
<tr>
<td style="background-color: #ccc; text-align: center; border: #777 1px solid"><strong>2</strong></td>
<td style="text-align: center; border: #777 1px solid">Bar</td>
<td style="text-align: center; border: #777 1px solid">Car</td>
<td style="text-align: center; border: #777 1px solid">War</td>
<td style="text-align: center; border: #777 1px solid">Par</td>
</tr>
</table>
<p>Then the your array would have been written as:</p>
<table>
<tr bgColor="#cccccc">
<td style="border: #777 1px solid; padding: 10px"><tt>var myArray = new Array();<br />
myArray[0][0] = "Hat";<br />
myArray[0][1] = "Cat";<br />
myArray[0][2] = "Rat";<br />
myArray[0][3] = "Sat";<br />
myArray[1][0] = "Bar";<br />
myArray[1][1] = "Car";<br />
myArray[1][2] = "War";<br />
myArray[1][3] = "Par";</tt></td>
</tr>
</table>
<p>Download the materials here: <a href="http://www.mobimeet.com/wp-content/uploads/2007/06/mdarraysortfromxml.zip" title="Multi-Dimensional Array Sorting from XML Data in ActionScript (ZIP)">Multi-Dimensional Array Sorting from XML Data in ActionScript (ZIP)</a></p>
<p>In the course of adding components to the application, we needed to output the current chip counts of each player and present them in order of most to least chips.  Of course, our XML ordering was based on the C# output which was not sorted and also contained string data where we needed to sort numerically.</p>
<table>
<tr bgColor="#cccccc">
<td style="border: #777 1px solid; padding: 10px"><tt>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br />
&lt;PlayersData&gt;<br />
  &lt;Title&gt;President Poker&lt;/Title&gt;<br />
  &lt;GameOver&gt;FALSE&lt;/GameOver&gt;<br />
  &lt;DisplayMode&gt;0&lt;/DisplayMode&gt;<br />
  &lt;PlayersChipCount&gt;<br />
    &lt;Player ID="1" Name="George Bush"&gt;$454&lt;/Player&gt;<br />
    &lt;Player ID="2" Name="George Washington"&gt;$545,445&lt;/Player&gt;<br />
    &lt;Player ID="3" Name="Ronald Reagan"&gt;$454,545&lt;/Player&gt;<br />
    &lt;Player ID="4" Name="Bill Clinton"&gt;$54,545&lt;/Player&gt;<br />
    &lt;Player ID="5" Name="John F. Kennedy"&gt;$787&lt;/Player&gt;<br />
    &lt;Player ID="6" Name="Richard Nixon"&gt;$4,554&lt;/Player&gt;<br />
    &lt;Player ID="7" Name="Theodore Roosevelt"&gt;$15,616&lt;/Player&gt;<br />
    &lt;Player ID="8" Name="Abraham Lincoln"&gt;$564,564&lt;/Player&gt;<br />
    &lt;Player ID="9" Name="James Madison"&gt;$5,451&lt;/Player&gt;<br />
  &lt;/PlayersChipCount&gt;<br />
  &lt;!-- data removed here --&gt;</tt><tt><br />
&lt;PlayersData&gt;</tt></td>
</tr>
</table>
<p>First, we read the XML.  To do this you&#8217;ll need to open a socket:</p>
<table>
<tr bgColor="#eeeeff">
<td style="border: #777 1px solid; padding: 10px"><tt>xmlData = new XML();<br />
xmlData.ignoreWhite = true;<br />
xmlData.load("Data.xml");</tt></td>
</tr>
</table>
<p>Next, we created a function that broke up the data and put it into the array.</p>
<table>
<tr bgColor="#eeeeff">
<td style="border: #777 1px solid; padding: 10px"><tt>xmlData.onLoad = readCart;<br />
</tt><tt><br />
function readCart(success){<br />
  if (!success){<br />
    trace("Error: CANNOT LOAD XML DATA");<br />
    break;<br />
  }else{<br />
    trace("XML read successfully");<br />
    for (i = 0; i &lt; this.childNodes.length; i++){<br />
      if (this.childNodes[i].nodeValue == null &amp;&amp; this.childNodes[i].nodeName == "PlayersData"){<br />
        topLevel = this.childNodes[i];<br />
      }<br />
    }<br />
  }//function continues below</tt></td>
</tr>
</table>
<p>At this point we need to consider how to sort the data.  Remember that our original spec required that the output be sorted in descending chip count order.  But notice that the XML data that has symbols in it.  If you know a bit about programming, you&#8217;ll know that sorting is done based on the operating system preference.  In this case using a normal sort() function, Player 7 (Roosevelt) with $15,616 chips would be first&#8230;</p>
<table align="center" width="90%">
<tr bgColor="#cccccc">
<td colSpan="2" style="text-align: center; border: #777 1px solid"><strong>Unparsed Sort</strong></td>
<td colSpan="2" style="text-align: center; border: #777 1px solid"><strong>Correct Sort</strong></td>
</tr>
<tr>
<td style="text-align: center; border: #777 1px solid">Roosevelt</td>
<td style="text-align: center; border: #777 1px solid">$15,616</td>
<td style="text-align: center; border: #777 1px solid">Lincoln</td>
<td style="text-align: center; border: #777 1px solid">$564,564</td>
</tr>
<tr>
<td style="text-align: center; border: #777 1px solid">Bush</td>
<td style="text-align: center; border: #777 1px solid">$454</td>
<td style="text-align: center; border: #777 1px solid">Washington</td>
<td style="text-align: center; border: #777 1px solid">$545,445</td>
</tr>
<tr>
<td style="text-align: center; border: #777 1px solid">Reagan</td>
<td style="text-align: center; border: #777 1px solid">$454,545</td>
<td style="text-align: center; border: #777 1px solid">Reagan</td>
<td style="text-align: center; border: #777 1px solid">$454,545</td>
</tr>
<tr>
<td style="text-align: center; border: #777 1px solid">Nixon</td>
<td style="text-align: center; border: #777 1px solid">$4,554</td>
<td style="text-align: center; border: #777 1px solid">Clinton</td>
<td style="text-align: center; border: #777 1px solid">$54,545</td>
</tr>
<tr>
<td style="text-align: center; border: #777 1px solid">Madison</td>
<td style="text-align: center; border: #777 1px solid">$5,451</td>
<td style="text-align: center; border: #777 1px solid">Roosevelt</td>
<td style="text-align: center; border: #777 1px solid">$15,616</td>
</tr>
<tr>
<td style="text-align: center; border: #777 1px solid">Washington</td>
<td style="text-align: center; border: #777 1px solid">$545,445</td>
<td style="text-align: center; border: #777 1px solid">Madison</td>
<td style="text-align: center; border: #777 1px solid">$5,451</td>
</tr>
<tr>
<td style="text-align: center; border: #777 1px solid">Clinton</td>
<td style="text-align: center; border: #777 1px solid">$54,545</td>
<td style="text-align: center; border: #777 1px solid">Nixon</td>
<td style="text-align: center; border: #777 1px solid">$4,554</td>
</tr>
<tr>
<td style="text-align: center; border: #777 1px solid">Lincoln</td>
<td style="text-align: center; border: #777 1px solid">$564,564</td>
<td style="text-align: center; border: #777 1px solid">Kennedy</td>
<td style="text-align: center; border: #777 1px solid">$787</td>
</tr>
<tr>
<td style="text-align: center; border: #777 1px solid">Kennedy</td>
<td style="text-align: center; border: #777 1px solid">$787</td>
<td style="text-align: center; border: #777 1px solid">Bush</td>
<td style="text-align: center; border: #777 1px solid">$454</td>
</tr>
</table>
<p>While ActionScript does have conversion capabilities, the problem in this scenario is that the symbols will not allow conversion to a numeric.  So let&#8217;s create a function that will &#8220;convert&#8221; the formatted field into a number.</p>
<table>
<tr bgColor="#eeffee">
<td style="border: #777 1px solid; padding: 10px"><tt>function replace(origStr,searchStr) {<br />
  var tempStr = "";<br />
  var startIndex = 0;<br />
  for (c = 0;c &lt; origStr.length;c++) {<br />
    thischar = origStr.substr(c,1);<br />
    if ( thischar != searchStr ) {<br />
      tempStr += thischar;<br />
    }<br />
  }<br />
  return tempStr;<br />
}</tt></td>
</tr>
</table>
<p>Using the conversion function (and note, you can use this function &#8211; albeit very simplistic &#8211; to do pretty much any type of string replacement), now we can finish off the original function.</p>
<table>
<tr bgColor="#eeeeff">
<td style="border: #777 1px solid; padding: 10px"><tt>  //create empty array container<br />
  var dat:Array = Array();  //loop through array data<br />
  for (i = 0; i &lt;= 4; i++){<br />
    //create empty array for internal data<br />
    var dat2:Array = Array();<br />
    //extract node data<br />
    var playID   = topLevel.childNodes[3].childNodes[i].attributes.ID;<br />
    var playName  = topLevel.childNodes[3].childNodes[i].attributes.Name;<br />
    var playChip  = topLevel.childNodes[3].childNodes[i].childNodes[0];<br />
</tt><tt><br />
    //set data into internal array<br />
    //not sequence of functions (inside out):<br />
    // 1. set playChip to a string - node data is being held as an object<br />
    // 2. replace $ with a blank (see function)<br />
    // 3. replace , with a blank (see function)<br />
    // 4. set value as a numeric<br />
    dat2[0]   = Number(replace(replace(playChip.toString(),"$"),","));<br />
    dat2[1]   = playID;<br />
    dat2[2]   = playName;<br />
    dat2[3]   = playChip;<br />
</tt><tt><br />
    //set internal array into external array<br />
    //this creates a multi-dimensional array<br />
    dat[i] = dat2;<br />
  }</tt><tt>  //sort on index 0 with Numeric descending<br />
  dat.sortOn([0],2|16);//trace output<br />
  for (i = 0; i &lt;= 4; i++) {<br />
    trace(i+". "+dat[i][3]+" "+dat[i][2]+" at "+dat[i][4]+" each");<br />
  }<br />
}</tt></td>
</tr>
</table>
<p>Now test the movie (Ctrl+Enter) and check out the chip counts.</p>
<p>Incidentally, if you&#8217;re a poker buff, check out how this actually looks on screen by watching the World Series of Poker at <a href="http://www.worldseriesofpoker.com/">http://www.worldseriesofpoker.com/</a></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Ftricks%2Fsorting-multi-dimensional-data-in-actionscript%2F', 'Sorting+XML-based+Multi-Dimensional+Data+in+ActionScript')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/tricks/sorting-multi-dimensional-data-in-actionscript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Reads and other stuff</title>
		<link>http://www.matsays.com/misc/resources/quick-reads/</link>
		<comments>http://www.matsays.com/misc/resources/quick-reads/#comments</comments>
		<pubDate>Wed, 16 May 2007 16:41:59 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD325 UCD I]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/resources/quick-reads</guid>
		<description><![CDATA[Here&#8217;s some interesting articles, reads, sites and stuff for the week &#8230;
Web 2.0 &#8216;neglecting good design&#8217;  
Hype about Web 2.0 is making web firms neglect the basics of good design, web usability guru Jakob Nielsen has said.  Read&#8230;
Web 2.0 Tutorials Roundup
&#8230;over 65 tutorials, references and related resources, which are supposed to help you to create graphics [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s some interesting articles, reads, sites and stuff for the week &#8230;</p>
<p><a target="_blank" href="http://news.bbc.co.uk/2/hi/technology/6653119.stm" title="Web 2.0 'neglecting good design' "><strong>Web 2.0 &#8216;neglecting good design&#8217;  </strong></a><br />
Hype about Web 2.0 is making web firms neglect the basics of good design, web usability guru Jakob Nielsen has said.  <a target="_blank" href="http://news.bbc.co.uk/2/hi/technology/6653119.stm" title="Web 2.0 'neglecting good design' ">Read&#8230;</a></p>
<p><a target="_blank" href="http://www.smashingmagazine.com/2007/03/10/web-20-tutorials-round-up/" title="Web 2.0 Tutorials Roundup"><strong>Web 2.0 Tutorials Roundup</strong></a><br />
&#8230;over 65 tutorials, references and related resources, which are supposed to help you to create graphics in Web 2.0-Look.  <a target="_blank" href="http://www.smashingmagazine.com/2007/03/10/web-20-tutorials-round-up/" title="Web 2.0 Tutorials Roundup">Read&#8230;</a></p>
<p><a target="_blank" href="http://www.sxc.hu/" title="Stock.xchng"><strong>Royalty-Free Stock Images</strong></a><br />
Need I say more?  <a target="_blank" href="http://www.sxc.hu/" title="Stock.xchng">Add this to your favorites&#8230;</a></p>
<p><a target="_blank" href="http://www.downloadsquad.com/2007/05/12/some-theory-behind-mac-os-xs-menubar/" title="Some theory behind Mac OS X's menubar"><strong>Some theory behind Mac OS X&#8217;s menubar</strong></a><br />
Interesting theory on Mac&#8217;s UI that has implications on web design even though we don&#8217;t really think about it much.  Follow the links to the stuff about Fitts&#8217; Law as well.  <a target="_blank" href="http://www.downloadsquad.com/2007/05/12/some-theory-behind-mac-os-xs-menubar/" title="Some theory behind Mac OS X's menubar">Read&#8230;</a></p>
<p><a target="_blank" href="http://www.sitepoint.com/newsletter/viewissue.php?id=3&amp;issue=164#7" title="HTML 5 Issues on the Table"><strong>HTML 5 Issues on the Table</strong></a><br />
Arguments about HTML 5 specifications about &#8230; yes, I said HTML 5.  Why they&#8217;re bothering is beyond me but I guess there is a place for everything.  As indicated by Chris Wilson of Microsoft (in more than a few words), look for what amounts to more bloat in MSIE (and probably every browser) as a result.  <a target="_blank" href="http://www.sitepoint.com/newsletter/viewissue.php?id=3&amp;issue=164#7" title="HTML 5 Issues on the Table">Read&#8230;</a></p>
<p><strong>Recommended Book<br />
</strong>If you plan to buy any book on Web Design, keep an eye out for this one &#8230; <a href="http://www.sitepoint.com/books/design1/" title="Principles of Beautiful Web Design by Jason Beaird">Principles of Beautiful Web Design by Jason Beaird </a>&#8230; fantastic book that covers Garrett&#8217;s Skeleton and Surface planes in much more detail.</p>
<p><strong>For  those of you with WordPress site(s) &#8230;<br />
</strong>WordPress 2.2 has been released and I am in the process of upgrading Mobimeet to it.  WordPress and Automaticc indicate that there are some significant changes (for the better presumably) so you may want to look into it.  Of course, don&#8217;t fix what ain&#8217;t broke but there may be some nice tools in the new code&#8230;<br />
<a href="http://wordpress.org/download/" title="WordPress current download">WordPress 2.2 Upgrade<br />
WordPress 2.2: Three Things Developers Will Like</a><br />
<a href="http://technosailor.com/10-things-you-should-know-about-wordpress-22/" title="10 Things You Should Know About WordPress 2.2">10 Things You Should Know About WordPress 2.2</a></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Fresources%2Fquick-reads%2F', 'Quick+Reads+and+other+stuff')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/resources/quick-reads/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Slight Change of Direction</title>
		<link>http://www.matsays.com/ailv/imd223/slight-change-of-direction/</link>
		<comments>http://www.matsays.com/ailv/imd223/slight-change-of-direction/#comments</comments>
		<pubDate>Thu, 10 May 2007 19:19:00 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[IMD223 Advanced Scripting]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/imd223/slight-change-of-direction</guid>
		<description><![CDATA[With the class size dwindling (kudos to those of you who are sticking it out) we&#8217;re going to take a little change of direction.  Originally I had a path planned out in the syllabus but from here until the end of the quarter, we&#8217;re going to try something different:  each class day (and there are [...]]]></description>
			<content:encoded><![CDATA[<p>With the class size dwindling (kudos to those of you who are sticking it out) we&#8217;re going to take a little change of direction.  Originally I had a path planned out in the syllabus but from here until the end of the quarter, we&#8217;re going to try something different:  each class day (and there are 5 left), we&#8217;re going to introduce a basic topic and we collectively will make up a project to do as a group lab and walk through building it.</p>
<p>The parameters of the topics will be pretty broad so if there&#8217;s something that you&#8217;ve wanted to learn how to do, we&#8217;ll tackle it.  I want to hit up AJAX for at least Week&#8217;s 9, 10 and 11 so keep that in mind, though we can start earlier if you want to.  There will still be homework assignments.  Expected topics:</p>
<ul>
<li>Week 6: Dynamic Javascript and CSS interaction</li>
<li>Week 7: Dynamic Javascript and CSS interaction</li>
<li>Week 9: Introdiction to AJAX</li>
<li>Week 10: Final Exam &amp; AJAX with basic PHP </li>
<li>Week 11: AJAX and APIs</li>
</ul>
<p>We will still have a final and now it will cover any ideas, thoughts, functions and concepts that we do in the class so missing a class will be detrimental to your academic health!  Hopefully from this we&#8217;ll get some serious practical work in place and dispense with the abstract.  Thoughts/comments?</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Failv%2Fimd223%2Fslight-change-of-direction%2F', 'Slight+Change+of+Direction')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/ailv/imd223/slight-change-of-direction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog Usability</title>
		<link>http://www.matsays.com/soapbox/blog-usability/</link>
		<comments>http://www.matsays.com/soapbox/blog-usability/#comments</comments>
		<pubDate>Sat, 28 Apr 2007 15:00:58 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD325 UCD I]]></category>
		<category><![CDATA[Soapbox]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/soapbox/blog-usability</guid>
		<description><![CDATA[Here&#8217;s a good, succinct article by guru Jakob Nielsen on making blogs more usable.  Nielsen offers a quick test of your own blog&#8217;s usability (in other words, avoid these):

No Author Biographies 
No Author Photo 
Nondescript Posting Titles 
Links Don&#8217;t Say Where They Go 
Classic Hits are Buried 
The Calendar is the Only Navigation 
Irregular Publishing Frequency 
Mixing Topics 
Forgetting That You Write for Your [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a good, succinct article by guru Jakob Nielsen on making blogs more usable.  Nielsen offers a quick test of your own blog&#8217;s usability (in other words, avoid these):</p>
<ol>
<li>No Author Biographies </li>
<li>No Author Photo </li>
<li>Nondescript Posting Titles </li>
<li>Links Don&#8217;t Say Where They Go </li>
<li>Classic Hits are Buried </li>
<li>The Calendar is the Only Navigation </li>
<li>Irregular Publishing Frequency </li>
<li>Mixing Topics </li>
<li>Forgetting That You Write for Your Future Boss </li>
<li>Having a Domain Name Owned by a Weblog Service</li>
</ol>
<p><a target="_blank" href="http://www.useit.com/alertbox/weblogs.html" title="Jakob Nielsen on Blog Usability">Read the complete article here.</a></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fsoapbox%2Fblog-usability%2F', 'Blog+Usability')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/soapbox/blog-usability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top Ten Mistakes in Web Design</title>
		<link>http://www.matsays.com/soapbox/top-ten-mistakes-in-web-design/</link>
		<comments>http://www.matsays.com/soapbox/top-ten-mistakes-in-web-design/#comments</comments>
		<pubDate>Sat, 14 Apr 2007 15:00:40 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD213 Int. Scripting]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD325 UCD I]]></category>
		<category><![CDATA[Soapbox]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/top-ten-mistakes-in-web-design</guid>
		<description><![CDATA[Jakob Nielsen&#8217;s &#8220;Top Ten Mistakes in Web Design&#8221; list is an annually compiled list of the worst in current web design executions (his opinion of course).  Here&#8217;s the list for 2007.  Check it out &#8211; it also has links to all of his previous lists.
For 2007, the compilation includes:

Bad Search 
PDF Files for Online Reading 
Not Changing [...]]]></description>
			<content:encoded><![CDATA[<p>Jakob Nielsen&#8217;s &#8220;Top Ten Mistakes in Web Design&#8221; list is an annually compiled list of the worst in current web design executions (his opinion of course).  <a href="http://www.useit.com/alertbox/9605.html">Here&#8217;s the list for 2007</a>.  Check it out &#8211; it also has links to all of his previous lists.<span id="more-85"></span></p>
<p>For 2007, the compilation includes:</p>
<ol>
<li>Bad Search </li>
<li>PDF Files for Online Reading </li>
<li>Not Changing the Color of Visited Links </li>
<li>Non-Scannable Text </li>
<li>Fixed Font Size </li>
<li>Page Titles With Low Search Engine Visibility </li>
<li>Anything That Looks Like an Advertisement </li>
<li>Violating Design Conventions </li>
<li>Opening New Browser Windows </li>
<li>Not Answering Users&#8217; Questions</li>
</ol>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fsoapbox%2Ftop-ten-mistakes-in-web-design%2F', 'Top+Ten+Mistakes+in+Web+Design')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/soapbox/top-ten-mistakes-in-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2 much 2.0?</title>
		<link>http://www.matsays.com/misc/2-much-20/</link>
		<comments>http://www.matsays.com/misc/2-much-20/#comments</comments>
		<pubDate>Tue, 03 Apr 2007 18:41:45 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD325 UCD I]]></category>
		<category><![CDATA[Soapbox]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Toolbox]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/2-much-20</guid>
		<description><![CDATA[An argument for too much 2.0? Despite my urgings to dig into Digg and technorati and all the like, it has it&#8217;s points.

Supermarket 2.0 at Glumbert

addthis_pub = 'mobimeet';

]]></description>
			<content:encoded><![CDATA[<p>An argument for too much 2.0? Despite my urgings to dig into <a target="_blank" href="http://www.digg.com" title="Digg">Digg</a> and <a target="_blank" href="http://www.technorati.com" title="Technorati">technorati</a> and all the like, it has it&#8217;s points.</p>
<p align="center"><object width="448" height="336"><param name="movie" value="http://www.glumbert.com/embed/supermarket" /><param name="wmode" value="transparent" /><embed src="http://www.glumbert.com/embed/supermarket" type="application/x-shockwave-flash" wmode="transparent" width="448" height="336"></embed></object><br />
<a target="_blank" href="http://www.glumbert.com/media/supermarket" title="Supermarket 2.0 at Glumbert">Supermarket 2.0 at Glumbert</a></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2F2-much-20%2F', '2+much+2.0%3F')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/2-much-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fantastic article on being a software developer</title>
		<link>http://www.matsays.com/soapbox/fantastic-article-on-being-a-software-developer/</link>
		<comments>http://www.matsays.com/soapbox/fantastic-article-on-being-a-software-developer/#comments</comments>
		<pubDate>Sat, 24 Mar 2007 17:59:01 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD325 UCD I]]></category>
		<category><![CDATA[IMD402 Server Side Scripting]]></category>
		<category><![CDATA[Soapbox]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/soapbox/fantastic-article-on-being-a-software-developer</guid>
		<description><![CDATA[Here&#8217;s a fantastic article &#8211; &#8220;Top ten things ten years of professional software development has taught me&#8220;.  Read it.  And you should also check out his inspiration &#8230; &#8220;Michael McDonough’s Top Ten Things They Never Taught Me in Design School&#8220;.  Great stuff &#8230;

addthis_pub = 'mobimeet';

]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a fantastic article &#8211; &#8220;<a rel="bookmark" target="_blank" href="http://www.taylor.se/blog/2007/03/22/top-ten-things-ten-years-of-professional-software-development-has-taught-me/" title="Top ten things ten years of professional software development has taught me"><font color="#666666">Top ten things ten years of professional software development has taught me</font></a>&#8220;.  Read it.  And you should also check out his inspiration &#8230; &#8220;<a target="_blank" href="http://www.designobserver.com/archives/000121.html" title="Michael McDonough’s Top Ten Things They Never Taught Me in Design School">Michael McDonough’s Top Ten Things They Never Taught Me in Design School</a>&#8220;.  Great stuff &#8230;</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fsoapbox%2Ffantastic-article-on-being-a-software-developer%2F', 'Fantastic+article+on+being+a+software+developer')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/soapbox/fantastic-article-on-being-a-software-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Badges &#8230; Pros and Cons</title>
		<link>http://www.matsays.com/misc/tricks/badges-pros-and-cons/</link>
		<comments>http://www.matsays.com/misc/tricks/badges-pros-and-cons/#comments</comments>
		<pubDate>Tue, 20 Mar 2007 16:44:56 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD325 UCD I]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/misc/badges-pros-and-cons</guid>
		<description><![CDATA[There&#8217;s been a lot of debate as of late concerning the use of &#8220;badges&#8221; on blogs and other sites.  Part of the whole scheme of building a good blog is the social networking aspect &#8211; making yourself visible and frequently trafficked and read by as many users as possible.  However, one of the methods of [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been a lot of debate as of late concerning the use of &#8220;badges&#8221; on blogs and other sites.  Part of the whole scheme of building a good blog is the social networking aspect &#8211; making yourself visible and frequently trafficked and read by as many users as possible.  However, one of the methods of doing this &#8211; the inclusion of badges in the sidebar or under each article &#8211; leaves a bit to be desired for two reasons. </p>
<p><span id="more-75"></span>First and foremost, the fact is that they are a hack &#8211; they are ostensibly Javascript code that provides a certain amount of information about a site to the public at large as well as search engines.  From the perspective of the way things are going on the web &#8211; decentralization of content provisioning (with blogs and YouTube and MySpace, the world is full of information being generated by the public), and the Web 2.0 move towards open API&#8217;s, badges are much like the problem of hot-linking we used to contend with in the old days.  Plus, since the search engines use this information, isn&#8217;t it moving us away from actual &#8220;linking&#8221; and just letting someone else control the traffic flow?  Second &#8211; add too many and you build serious congestion in your space as well as leave enormous footprints all over the place.  Both of these don&#8217;t even address some of the issues in <a href="http://jeremy.zawodny.com/blog/archives/008547.html" title="Javascript Badges and Widgets Considered Harmful by Jeremy Zawodny">this very well written article (<em>Javascript Badges and Widgets Considered Harmful</em> by Jeremy Zawodny)</a> such as skinning, security and incompatibility.</p>
<p>I use badges mostly because at the moment I am using it as a testbed.  Otherwise I would probably avoid them and go back to the days of manual linking.  However, including a couple somewhere in your blog is probably a good idea if you&#8217;re trying to build visibility.  Now for the links:</p>
<ul>
<li><a href="http://jeremy.zawodny.com/blog/archives/008547.html" title="Javascript Badges and Widgets Considered Harmful">Javascript Badges and Widgets Considered Harmful</a></li>
<li><a href="http://www.badged.net/" title="Badged.net">Badged.net</a></li>
<li><a href="http://www.digg.com" title="Digg">Digg.com</a></li>
<li><a href="http://www.sphere.com" title="Sphere.com">Sphere.com</a> (see my <a href="http://www.mobimeet.com/soapbox/goddbye-practical-web-app-mag" title="Bittersweet goodbye...">last post about Matt Mullenweg</a>)</li>
<li><a href="http://www.technorati.com" title="Technorati">Technorati</a></li>
<li><a href="http://del.icio.us" title="Delicious! Yum!">del.icio.us</a></li>
</ul>
<p>Have fun figuring it all out!</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Ftricks%2Fbadges-pros-and-cons%2F', 'Badges+%26%238230%3B+Pros+and+Cons')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/tricks/badges-pros-and-cons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bittersweet goodbye&#8230;</title>
		<link>http://www.matsays.com/soapbox/goddbye-practical-web-app-mag/</link>
		<comments>http://www.matsays.com/soapbox/goddbye-practical-web-app-mag/#comments</comments>
		<pubDate>Sun, 18 Mar 2007 17:16:02 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[IMD325 UCD I]]></category>
		<category><![CDATA[Internet News]]></category>
		<category><![CDATA[Soapbox]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/soapbox/goddbye-practical-web-app-mag</guid>
		<description><![CDATA[This week I was dismayed to learn that my favorite &#8220;technical journal&#8221;, Practical Web Applications is no longer going to be published.  After 160 issues &#8211; 13+ years &#8211; of excellent, down-to-earth practical information on web design, CSS, Flash and PHP advice, the British magazine is being wrapped into another magazine &#8211; .net &#8211; and [...]]]></description>
			<content:encoded><![CDATA[<p>This week I was dismayed to learn that my favorite &#8220;technical journal&#8221;, <em><strong>Practical Web Applications</strong></em> is no longer going to be published.  After 160 issues &#8211; 13+ years &#8211; of excellent, down-to-earth practical information on web design, CSS, Flash and PHP advice, the British magazine is being wrapped into another magazine &#8211; <em><strong>.net</strong></em> &#8211; and purportedly will move towards server-side scripting (obviously focusing on .NET and Microsnot applications).</p>
<p>The bittersweet comes in the fact that <strong>now I won&#8217;t have to spend $15 a month</strong> for a paper-wasting glossy publication.  But even the indulgent side of me admits that there was something really nice about picking up the rag every month, complete with it&#8217;s 700MB CD of free utlities.</p>
<p><span id="more-74"></span>In any case, it will be interesting to see if the new envisionment of the magazine stays true to form &#8211; the mag has an huge following in the UK.  On a side note, what&#8217;s really interesting is that they kept the staff and the fact that they are pushing towards .NET while the staff is largely pro-Mac and anti-MSIE should produce some paradoxical articles.</p>
<p>And another side note &#8211; if you do happen to glance through this last issue &#8211; there&#8217;s a fantastic article on one of my heroes of recent, <strong>Matt Mullenweg</strong>.  Matt is currently the founder of Automaticc, which is the company that designs the architecture and consults for sphere.com.  He started as a writer for CNET and is the <strong>creator of (amongst other things) WordPress</strong>, bbpress, and Askimet (anti-spam tools for blogs).  Oh yea, and he&#8217;s only 23.  And he doesn&#8217;t write code.  Pretty phenomenal that a non-technical individual can produce some of the worlds most downloaded and used &#8220;software&#8221; (I&#8217;m talking about WordPress).  Do I hear &#8220;usability engineering&#8221; somewhere in there?</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fsoapbox%2Fgoddbye-practical-web-app-mag%2F', 'Bittersweet+goodbye%26%238230%3B')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/soapbox/goddbye-practical-web-app-mag/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rounded Corners (Method 2)</title>
		<link>http://www.matsays.com/misc/tricks/rounded-corners-method-2/</link>
		<comments>http://www.matsays.com/misc/tricks/rounded-corners-method-2/#comments</comments>
		<pubDate>Fri, 16 Mar 2007 20:12:33 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/tricks/rounded-corners-method-2</guid>
		<description><![CDATA[OK, so if you&#8217;ve tried my previous version of the rounded corner box, you&#8217;ll note that it has a few limitations:

the width of the box is limited to the size of the right-side images,
there are occasional hiccups in the code that cause the lower left image to not reach the bottom corner, and
it still requires [...]]]></description>
			<content:encoded><![CDATA[<p>OK, so if you&#8217;ve tried my previous version of the rounded corner box, you&#8217;ll note that it has a few limitations:</p>
<ul>
<li>the width of the box is limited to the size of the right-side images,</li>
<li>there are occasional hiccups in the code that cause the lower left image to not reach the bottom corner, and</li>
<li>it still requires manual imagery</li>
</ul>
<p>So here&#8217;s another way you can consider tackling it.  OK, so we&#8217;re borrowing a piece of (LGPL) code from another developer but I have successfully implemented this approach in several places, including <a target="_blank" href="http://www.filmhook.com" title="Film Hook">this site</a>.</p>
<p><span id="more-72"></span>Visit <a target="_blank" href="http://www.curvycorners.net" title="Curvy Corners DHTML">curvycorners.net</a> to download the components you&#8217;ll need.  After that it&#8217;s pretty simple.  The code itself is <a target="_blank" href="http://www.w3schools.com/dhtml/default.asp" title="Learn DHTML at W3Schools - or just go to AILV!">DHTML</a> so it combines a nice piece of Javascript with your <a target="_blank" href="http://www.w3schools.com/xhtml/default.asp" title="Learn XHTML at W3Schools!">XHTML</a>-based code.  Essentially it vectors the borders of your DIVs and rounds them out mathematically.</p>
<p>To begin, first add the script to your code:</p>
<table align="center" style="width: 90%; background-color: #eeeeff; border: #777777 1px solid">
<tr>
<td style="font-size: 0.75em; font-family: courier; padding: 10px">
&lt;script type=&#8221;text/JavaScript&#8221; src=&#8221;rounded_corners.js&#8221;&gt;&lt;/script&gt;</td>
</tr>
</table>
<p>Next, create the DIV container that you want to add the rounded corners to:</p>
<table align="center" style="width: 90%; background-color: #eeeeff; border: #777777 1px solid">
<tr>
<td style="font-size: 0.75em; font-family: courier; padding: 10px">
&lt;div id=&#8221;roundedDiv&#8221;&gt;&lt;/div&gt;</td>
</tr>
</table>
<p>Finally, in the &lt;HEAD&gt; portion of your HTML, add the following:</p>
<table align="center" style="width: 90%; background-color: #eeeeff; border: #777777 1px solid">
<tr>
<td style="font-size: 0.75em; font-family: courier; padding: 10px">
&lt;script type=&#8221;text/JavaScript&#8221;&gt;<br />
  window.onload = function()<br />
  {<br />
    settings = {<br />
      tl: { radius: 10 },<br />
      tr: { radius: 10 },<br />
      bl: { radius: 10 },<br />
      br: { radius: 10 },<br />
      antiAlias: true,<br />
      autoPad: false<br />
    }<br />
    var divObj = document.getElementById(&#8220;roundedDiv&#8221;);<br />
    var cornersObj = new curvyCorners(settings, divObj);<br />
    cornersObj.applyCornersToAll();<br />
  }<br />
&lt;/script&gt;</td>
</tr>
</table>
<p>What I really like about this nifty code snippet is that it is extremely flexible:</p>
<ul>
<li>turn the rounding on or off on a per-corner basis</li>
<li>each corner can have its own radius</li>
<li>anti-aliasing can be turned on or off</li>
<li>you can round corners on multiple DIVs by ID or class</li>
</ul>
<p>Download it, set it up and mess around with it.  One side note &#8211; there was a question at one point on how to implement a shadow for the box once you&#8217;d rounded it off.  THINK!  There&#8217;s two easy ways to do this &#8211; you can either script a second div that falls behind it offset by a few pixels, or you can use a shadow filter in your CSS.  Students in the upcoming IMD223 (Advanced Scripting) &#8211; we&#8217;ll be learning how to do this!</p>
<p>By the way, like most <a target="_blank" href="http://www.gnu.org/copyleft/gpl.html" title="What is GPL?">GPL</a> and <a target="_blank" href="http://www.gnu.org/licenses/lgpl.html" title="What is LGPL?">LGPL</a> scripts, if you end up implementing it, do the right thing and donate to the cause &#8211; this type of social morality is what keeps good code out on the Internet and available for developers like us to use.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Ftricks%2Frounded-corners-method-2%2F', 'Rounded+Corners+%28Method+2%29')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/tricks/rounded-corners-method-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Certified Internet Web Professionals</title>
		<link>http://www.matsays.com/soapbox/certified-internet-web-professionals/</link>
		<comments>http://www.matsays.com/soapbox/certified-internet-web-professionals/#comments</comments>
		<pubDate>Thu, 15 Mar 2007 19:35:20 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[Good Resources]]></category>
		<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[Soapbox]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/soapbox/certified-internet-web-professionals</guid>
		<description><![CDATA[So you all want to be web developers?  Ever wonder what a good benchmark to your skills was?
A good target to set your sights on is to get yourself certified by some authority.  There are tons of certifications we all know about &#8211; MCSE, MCSD, ZCE &#8211; but most of them require a lot more [...]]]></description>
			<content:encoded><![CDATA[<p>So you all want to be web developers?  Ever wonder what a good benchmark to your skills was?</p>
<p>A good target to set your sights on is to get yourself certified by some authority.  There are tons of certifications we all know about &#8211; MCSE, MCSD, ZCE &#8211; but most of them require a lot more skill than just web development and design.  Enter <a target="_blank" href="http://www.ciwcertified.com/default.asp" title="CIW - Certified Internet Web Professional Official Site">CIW</a>.  CIW (Certified Internet Web Professional) is a series of job-role-focused programs that allow you to hone in on your specific skill set. </p>
<p><span id="more-69"></span>The role areas include:</p>
<ul>
<li>Foundational (basic web design and development)</li>
<li>Site Designer</li>
<li>E-Commerce Designer</li>
<li>Server Administrator</li>
<li>Internetworking Professional</li>
<li>Security Professional</li>
<li>Web Languages</li>
<li>Application Developer</li>
<li>Java Programming</li>
<li>Database/Enterprise Specialist</li>
</ul>
<p>Each program is a building block to the four Master level programs:</p>
<ul>
<li>Master CIW Designer</li>
<li>Master CIW Administrator</li>
<li>Master CIW Web Site Manager</li>
<li>Master CIW Enterprise Developer </li>
</ul>
<p>To start, you must complete the foundations portion &#8211; this will make you a CIW Associate, the base level for the course. </p>
<p>There are shareware programs from <a target="_blank" href="http://www.ucertify.com" title="uCertify Training Tools">uCertify</a> that can tell you the kinds of questions on the exams and the official CIW site has in-depth information about the types of things you need to know.  I won&#8217;t kid you, the exams are <u>tough</u>, but they are well worth the effort and a good way to find out how much you&#8217;ve learned and still need to learn in your career as a web professional.</p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fsoapbox%2Fcertified-internet-web-professionals%2F', 'Certified+Internet+Web+Professionals')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/soapbox/certified-internet-web-professionals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rounded Corners (Method 1)</title>
		<link>http://www.matsays.com/misc/tricks/rounded-corners-1/</link>
		<comments>http://www.matsays.com/misc/tricks/rounded-corners-1/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 20:23:20 +0000</pubDate>
		<dc:creator>Mat</dc:creator>
				<category><![CDATA[IMD223 Advanced Scripting]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.mobimeet.com/tricks/rounded-corners-1</guid>
		<description><![CDATA[I have been asked many times to post an article on creating rounded corner boxes like the ones I use in the sidebar of Mobimeet.  There are actually several ways to do it using both CSS as well as regular HTML.  However, as W3C begins shifting more and more towards XHTML, we&#8217;re going to focus [...]]]></description>
			<content:encoded><![CDATA[<p>I have been asked many times to post an article on creating rounded corner boxes like the ones I use in the sidebar of Mobimeet.  There are actually several ways to do it using both CSS as well as regular HTML.  However, as W3C begins shifting more and more towards XHTML, we&#8217;re going to focus here on the CSS versions.  Here is one&#8230;</p>
<p><span id="more-47"></span></p>
<p>As always, I emphasize that building good code is largely a matter of imagination and planning more than it is execution.  So to begin, first imagine what it is that you are building.  A box can be thought of as the sum of several parts.  For this example, let&#8217;s say that the box really has 4 parts, the upper left corner, the right hand pane, the side and bottom left pane and the main body.  We also know that with CSS we can place images into the background and even more than that, we can force the image to align as needed.</p>
<p>The example here (which is directly off the sidebars) is downloadable at the foot of this article.  Download and unzip it so that you can get a feel for the images and construction of the code.</p>
<p>First, begin with idealizing what the construction of the box is in (X)HTML.  We know that in order to encapsulate it, we&#8217;ll want to create a &lt;DIV&gt;.  Next we know that because there is a header that we want to emphasize, we&#8217;ll insert 2 &lt;DIV&gt;s inside the container.  Hence your code should look something like this:</p>
<table style="background-color: #eeeeee; border: black 1px solid">
<tr>
<td style="padding: 8px"><code><br />
&lt;div class="sidebox"&gt;<br />
&lt;div class="boxhead"&gt;<br />
&lt;h3&gt;200px Box&lt;/h3&gt;<br />
&lt;/div&gt;<br />
&lt;div class="boxbody"&gt;<br />
Your content goes in here. Because we've set it to<br />
no specific sizing, it can stretch as long as you<br />
need it to.<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
</code></td>
</tr>
</table>
<p>Next, let&#8217;s construct the CSS.  You can place the CSS inline or embedded &#8211; it doesn&#8217;t really matter.  What counts is how you visualize it.  Your CSS might look something like this:</p>
<table style="background-color: #eeeeee; border: black 1px solid">
<tr>
<td style="padding: 8px"><code><br />
.sidebox {<br />
margin: 0 auto;<br />
width: 17.5em;<br />
background: url('images/sbbody-r.gif') no-repeat bottom right;<br />
font-size: 100%;<br />
}<br />
.boxhead {<br />
background: url('images/sbhead-r.gif') no-repeat top right;<br />
margin: 0;<br />
padding: 0;<br />
text-align: left;<br />
}<br />
.boxhead h3 {<br />
background: url('images/sbhead-l.gif') no-repeat top left;<br />
margin: 0;<br />
padding: 8px 30px 8px;<br />
font-weight: bold;<br />
font-size: 1.2em;<br />
line-height: .8em;<br />
}<br />
.boxbody {<br />
background: url('images/sbbody-l.gif') no-repeat bottom left;<br />
margin: 0;<br />
padding: 10px 10px 10px 10px;<br />
}<br />
</code></td>
</tr>
</table>
<p>Note that there are 4 classes: sidebox, boxhead, boxhead H3 and boxbody. </p>
<p><strong>Sidebox</strong> is the class for creating the container.  The <em>margin</em> attribute forces it to be centered &#8211; therefore if there are a long string of them in a parent &lt;DIV&gt;, it will cause them to float left. The <em>background</em> attribute pulls the right body image and forces the bottom right corner into the bottom right corner of the &lt;DIV&gt;.  The remaining attributes &#8211; <em>width </em>and <em>font</em> &#8211; are simply formatting values to retain any information from the body class.</p>
<p><strong>Boxhead</strong> defines the top portion of the box. The <em>background</em> attribute pulls in and image that covers the one pulled in by sidebox, but we force it to the upper right corner.  The <em>margin</em> and <em>padding</em> attributes allow us to force the corner without the background image in sidebox showing through.  The <em>text-align</em> is optional but forces the next class to the left.</p>
<p><strong>Boxhead H3</strong> defines the header text.  Note that this is a sub-class of boxhead and how it looks in the HTML.  First, it pulls in a small image to create the upper left corner with the <em>background</em> attribute, but note that it has a no-repeat value which causes it to only appear once.  The <em>padding</em> attribute causes the text to have padding of 30px on both the right and left (note that this is the width of the background image) and 8px on the top and bottom &#8211; ostensibly vertically aligning it to the middle. The remaining attributes are simply to force the look of the text and can be modified.</p>
<p><strong>Boxbody</strong> defines the actual container.  The <strong>background</strong> attribute pulls in the left hand pane image, covering the background defined in sidebox, with no-repeat values, and forces the bottom left corner into the bottom left portion of the sidebox &lt;DIV&gt;.  The <em>padding</em> attribute forces a padding so that our text avoids the sides of the main content area.</p>
<p>Put it all together and try it!</p>
<p><a href="http://www.mobimeet.com/wp-content/uploads/2007/03/rounded-corner-box.zip" title="Download Code and Images"><strong>Download Code and Images</strong></a></p>
<script type="text/javascript">
addthis_pub = 'mobimeet';
</script><a href="http://www.addthis.com/bookmark.php" onMouseOver="return addthis_open(this, '', 'http%3A%2F%2Fwww.matsays.com%2Fmisc%2Ftricks%2Frounded-corners-1%2F', 'Rounded+Corners+%28Method+1%29')" onMouseOut="addthis_close()" onClick="return addthis_sendto()"><img src="http://www.matsays.com/images/addthis-plusblue.png" width="28" height="16" border="0" alt="Share this post on digg, del.icio.us, facebook, blah blah blah" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://www.matsays.com/misc/tricks/rounded-corners-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
